Phase Estimation in a Michelson Interferometer

A continuous measurement with an analytically known score is to be reported through a fixed number of bins KK. One parameter is of interest and the others are nuisances. The bins should preserve as much Fisher information as possible.

1. The Michelson interferometer​

A Michelson interferometer splits a coherent beam of light into two perpendicular arms. Each beam is reflected by a mirror, returns to the beam splitter, and the two beams are recombined on a detector. Their relative phase is set by the difference in optical path length between the arms.

Michelson interferometer benchLight from the source splits at the beam splitter into two arms, each folded back by a mirror, and the recombined beam falls on a segmented detector of 6 counters.mirrorsourcemirrorbeam splitterdetectorsegmented detector, 6 counters
Schematic optical layout. The segmented detector shows the equal-width baseline.

The beams have a finite transverse width, so they overlap over an area rather than at a point. If the two wavefronts are slightly tilted with respect to each other, the relative phase varies with position across the detector, and the intensity alternates between bright and dark bands. These are interference fringes, or simply fringes.

For a nearly linear phase variation along one detector coordinate uu,

I(u)∝1+Vcos⁡(ku+φ),I(u)\propto 1+V\cos(ku+\varphi),

where VV is the fringe visibility (the contrast of the pattern), kk is the spatial fringe frequency, and φ\varphi is the phase offset. A change in the optical path difference shifts φ\varphi and moves the whole pattern across the detector. The tilt is only what produces spatial fringes; it is not a parameter of the statistical model below.

Albert A. Michelson introduced the instrument in the late nineteenth century. Gravitational-wave detectors such as LIGO use the same interference principle with far more elaborate optics.

2. Why bin the measurement?​

A real interferometric detector is not the ideal model above. Illumination, detector efficiency, fringe visibility, background, optical aberrations and calibration errors all vary with position. Describing them at full detector resolution can require a large nuisance model that is hard to validate.

Binning replaces point-by-point response modelling with the integrated response of a small number of regions. The nuisance model then has a few calibrated quantities instead of one per pixel.

Once the measurement is described by KK bins, the bins still have to be defined. Different partitions preserve different amounts of information.

3. Measurement model​

The detector is described by a dimensionless coordinate uu, scaled so that one fringe period has length 2π2\pi. The detector spans 4 fringes, so

u∈[0,8π).u\in[0,8\pi).

The position of one detected photon has density

p(u∣φ,ϵ)∝1+Vcos⁡ ⁣((1+ϵ)u+φ).p(u\mid\varphi,\epsilon) \propto 1+V\cos\!\bigl((1+\epsilon)u+\varphi\bigr).

Here φ\varphi is the phase, ultimately the parameter of interest. The visibility is fixed at V=V={}0.60. The parameter ϵ\epsilon is a small fractional error in the spatial fringe frequency: it changes the fringe spacing across the detector, so an unknown ϵ\epsilon can partly imitate a phase shift.

All scores and information matrices are evaluated at the reference point

(φ0,ϵ0)=(0,0).(\varphi_0,\epsilon_0)=(0,0).
Fringe intensity along the apertureFringe intensity across 4 fringes, overlaid with 6 equal detector segments.1.600.4002π4π6π8πPosition along the aperture, in fringes
Photon density along the detector at visibility 0.60, over 4 fringe periods. The 6 equal-width bins are the baseline readout.

4. The analytic score​

ScoreQuant works with the score of each observation, the gradient of the log density with respect to the parameters. Here it is known in closed form. At the reference point,

sφ(u)=−Vsin⁡u1+Vcos⁡u,sϵ(u)=u sφ(u)−V.s_\varphi(u) = -\frac{V\sin u}{1+V\cos u}, \qquad s_\epsilon(u) = u\,s_\varphi(u)-V.

The phase score is largest in magnitude on the slopes of a fringe, where a small phase shift changes the intensity most, and vanishes at the bright and dark extrema. The frequency score is the same local sensitivity multiplied by uu, because a frequency error accumulates across the detector. Its constant term −V-V is the derivative of the normalization of the density with respect to ϵ\epsilon; without it the score would not have zero mean and the Fisher matrix would be wrong.

Phase score along the detector: a periodic curve over the four fringe periods, reaching about plus and minus 0.75 on the fringe slopes and crossing zero at every bright and dark extremum.
Phase score sφ(u)s_\varphi(u) along the detector.

The score is supplied to ScoreQuant as a function of the observation. Fixed model constants are uppercase; computed arrays are lowercase.

import numpy as np
import scorequant as sq

EXECUTION = sq.ExecutionConfig(backend="numpy", precision="float64", device="cpu")

VISIBILITY = 0.60
N_FRINGES = 4
U_MAX = 2.0 * np.pi * N_FRINGES

SCHEMA = sq.ScoreSchema(("phase", "fringe_frequency"))
INTEREST = SCHEMA.select("phase")


def fringe_density(observations):
"""Normalized photon density along the detector at the reference point."""
u = np.asarray(observations)[:, 0]
return (1.0 + VISIBILITY * np.cos(u)) / U_MAX


def michelson_score(observations):
"""Score (s_phase, s_frequency) at the reference point, in closed form."""
u = np.asarray(observations)[:, 0]
s_phase = -VISIBILITY * np.sin(u) / (1.0 + VISIBILITY * np.cos(u))
return np.column_stack([s_phase, u * s_phase - VISIBILITY])


provider = sq.ScoreFunction(
michelson_score,
provenance=sq.ScoreProvenance(kind="exact", reference_point=(0.0, 0.0)),
schema=SCHEMA,
)

For the finite optimization the detector is represented by a fine deterministic grid. Each node carries the probability mass of its small interval.

N_NODES = 8_000
step = U_MAX / N_NODES

u = (np.arange(N_NODES) + 0.5) * step
observations = u[:, None]
weights = fringe_density(observations) * step
scores = provider.score(observations, execution=EXECUTION)

The arrays scores and weights form the weighted score table used by every finite partition below.

5. Quantization in score space​

The score maps every detector position to a point

u⟼s(u)=(sφ(u), sϵ(u))u \longmapsto s(u)=\bigl(s_\varphi(u),\,s_\epsilon(u)\bigr)

in a two-dimensional score space. The image is a one-dimensional trajectory: one loop per fringe, each loop taller than the last because the frequency score grows with uu.

The Michelson model in score space: the phase score on the horizontal axis against the fringe-frequency score on the vertical, drawn as four narrow loops radiating from a common point near the origin, each successive loop longer and more steeply inclined.
The detector mapped into score space. Each point of the curve is one position uu.

A partition into KK cells with probability masses WbW_b and mean scores μb\mu_b retains the Fisher information

Ibin=∑b=1KWb μbμb⊤,I_{\mathrm{bin}} = \sum_{b=1}^{K} W_b\,\mu_b\mu_b^\top ,

a two-by-two matrix here. The first question is how to divide score space into KK cells if information about both parameters is to be preserved jointly. The standard answer is D-optimality:

max⁡q log⁡det⁡Ibin.\max_{q}\ \log\det I_{\mathrm{bin}} .

The determinant is the volume of information across all directions of score space, so maximizing it preserves information in every direction at once rather than favouring one.

6. D-optimal partition​

With KK fixed, optimize_partition assigns the weighted score table to KK cells by exact single-point exchange: a node is moved between cells whenever the move increases the determinant, until no single move can.

N_BINS = 6

d_partition = sq.optimize_partition(
scores,
weights=weights,
n_bins=N_BINS,
criterion=sq.DOptimality(),
config=sq.DExchangeConfig(seed=4),
execution=EXECUTION,
)
d_labels = d_partition.labels
Three panels. Top left: the raw score plane tinted by six convex cells that meet along straight edges, with the trajectory's four loops coloured by cell and a marked mean point in each cell. Top right: the same cells and trajectory in coordinates whitened by the binned Fisher matrix, where the cells are an ordinary Voronoi diagram of the cell means with perpendicular bisectors. Bottom: the same labels along the detector, a comb of twenty-four intervals above the six equal-width segments.
Top left: the raw score plane shaded by the six cells of the compiled D-optimal rule, the cell means, and the trajectory coloured by cell. Top right: the same cells in coordinates whitened by the binned Fisher matrix, where the rule is an ordinary nearest-mean Voronoi diagram. Bottom: the same labels pulled back to the detector coordinate, above the equal-width segments.

In score space the 6 cells are connected regions with straight boundaries. The raw axes are not directionally uniform: the two scores carry different units and are correlated along the trajectory, so the cells look stretched and their boundaries oblique. Whitening score space by the binned Fisher matrix removes that: in the right-hand panel the same rule is a plain nearest-mean Voronoi diagram, because an exchange-stable D-optimal partition is exactly a Voronoi partition under the inverse binned Fisher metric, and that metric is the identity in whitened coordinates. Along the detector, however, the same labels form a comb. The reason is simple: the one-dimensional score trajectory folds through the same two-dimensional cells several times. A connected cell in score space can therefore correspond to several disconnected intervals in uu, and a brief crossing of a cell produces a narrow detector interval.

This is the geometrically clean case. An exchange-stable D-optimal partition with a nonsingular Fisher matrix is exactly a Mahalanobis–Voronoi partition of score space, with the inverse of the binned Fisher matrix as metric. The theorem and its proof are in D-optimality and exact exchange (opens in a new tab); the shading in the figure is that rule evaluated on a grid.

7. A reusable D-optimal readout​

The finite optimization assigns labels only to the 8,000 grid nodes. For D-optimality, the Voronoi geometry above provides the missing inductive rule: the finite partition can be compiled into a quantizer that assigns a bin to any new score vector.

d_quantizer = d_partition.compile_quantizer(execution=EXECUTION)

new_observations = np.array([[1.0], [7.0], [15.0]])
new_scores = provider.score(new_observations, execution=EXECUTION)
new_bins_d = d_quantizer.predict_scores(new_scores, execution=EXECUTION)

The resulting readout has the form

u  ⟶  s(u)  ⟶  q ⁣(s(u)).u \;\longrightarrow\; s(u) \;\longrightarrow\; q\!\left(s(u)\right).

This distinction between a finite partition and a reusable quantizer is important. optimize_partition solves the assignment problem on a fixed weighted table; a quantizer defines a rule for new observations. For D-optimality the two are connected by the Voronoi geometry. The general distinction is discussed in Two tasks and three optimization levels (opens in a new tab).

8. Treating fringe frequency as a nuisance​

The scientific question now changes. The phase φ\varphi is the result to be reported. The frequency error ϵ\epsilon is estimated only because uncertainty in it can imitate a phase shift.

Partition the binned Fisher matrix,

Ibin=(IφφIφϵIφϵIϵϵ).I_{\mathrm{bin}} = \begin{pmatrix} I_{\varphi\varphi} & I_{\varphi\epsilon}\\ I_{\varphi\epsilon} & I_{\epsilon\epsilon} \end{pmatrix}.

The information about φ\varphi that survives estimating ϵ\epsilon from the same data is the profiled phase information

Iφ∣ϵ=Iφφ−Iφϵ2Iϵϵ.I_{\varphi\mid\epsilon} = I_{\varphi\varphi} - \frac{I_{\varphi\epsilon}^2}{I_{\epsilon\epsilon}}.

The subtracted term is the part of the phase sensitivity that a change in ϵ\epsilon can reproduce. In this model the two scores are strongly correlated, 0.8720 at the reference point, and profiling removes 0.7603 of the unbinned phase information before any binning.

Ordinary D-optimality treats φ\varphi and ϵ\epsilon symmetrically: it spends cells on resolving ϵ\epsilon as carefully as φ\varphi. The profiled criterion DsD_s asks instead how the KK cells should be spent if only φ\varphi will be reported,

max⁡q log⁡Iφ∣ϵbin.\max_{q}\ \log I_{\varphi\mid\epsilon}^{\mathrm{bin}} .

9. Optimizing for phase​

Quality is measured by the fraction of the unbinned profiled phase information that a partition retains,

Rφ=Iφ∣ϵbinIφ∣ϵfull,R_\varphi = \frac{I_{\varphi\mid\epsilon}^{\mathrm{bin}}} {I_{\varphi\mid\epsilon}^{\mathrm{full}}},

with the profiled quantity in both numerator and denominator. profiled_information_report computes exactly that ratio for any labeling.

def phase_retention(labels):
"""Profiled phase information retained, as a fraction of the unbinned value."""
report = sq.profiled_information_report(
scores, labels, interest=INTEREST, weights=weights, n_bins=N_BINS, execution=EXECUTION
)
return report.geometric_mean_retention


equal_labels = np.digitize(u, np.linspace(0.0, U_MAX, N_BINS + 1)[1:-1])
equal_width_retained = phase_retention(equal_labels)
d_retained = phase_retention(d_labels)

For a single parameter of interest, ScoreQuant can also compute a certified upper bound on the profiled information attainable with KK bins. We use the corresponding partition as the starting point of the DsD_s optimization. The construction is described in Nuisance parameters and profiled Ds (opens in a new tab).

bound = sq.efficient_score_bound(
scores, interest=INTEREST, weights=weights, n_bins=N_BINS, execution=EXECUTION
)

ds_partition = sq.optimize_partition(
scores,
weights=weights,
n_bins=N_BINS,
criterion=sq.ProfiledDOptimality(interest=INTEREST),
config=sq.DExchangeConfig(seed=4),
initial_labels=bound.labels,
execution=EXECUTION,
)
ds_labels = ds_partition.labels
ds_retained = phase_retention(ds_labels)
Phase information retained, after profiling, compared across 3 binning methodsHigher is better. The ScoreQuant row is drawn in the accent colour; the dashed line marks Certified ceiling at 0.9483.Equal-width0.2054D-optimal0.7995Profiled Ds0.9483Certified ceiling: 0.948300.2000.4000.6000.8001Phase information retained, after profiling
Phase information retained, after profiling, compared across 3 binning methods
MethodPhase information retained, after profiling
Equal-width0.2054
D-optimal0.7995
Profiled Ds (ScoreQuant)0.9483
Certified ceiling (reference ceiling)0.9483
Three partitions of the same table into 6 bins. The dashed line is the certified ceiling, not a readout.

Equal-width bins retain 0.2054 of the profiled phase information. The D-optimal partition retains 0.7995: much better, but it was built to resolve both parameters. Optimizing the profiled criterion retains 0.9483.

The certified ceiling is 0.948283, compared with 0.948259 for the fitted partition. The difference is small, so there is little room for another 6-bin partition to improve the profiled phase information.

10. What changes under profiling?​

Three panels. Top: the score trajectory's four loops coloured by the six profiled cells, cut across the loops rather than around them, with no shaded cells. Middle: the efficient score along the detector, a periodic curve whose steep zero crossings at the dark fringes are sliced into several thin colour changes. Bottom: three label strips along the detector: the efficient-score initializer, the exchange-stable profiled partition, and the soft-Voronoi rule, the first two carrying a few very narrow intervals near the dark fringes.
Top: the trajectory coloured by the finite profiled-DsD_s labels. Middle: the efficient score s^(u)\hat s(u) along the detector, coloured the same way. Bottom: the labels along the detector, drawn at true width, for the efficient-score initializer, the profiled partition and the reusable rule of the next section.

Profiling changes the structure of the solution. The ordinary D partition spends bins on resolving both score directions, while the profiled criterion concentrates on the part of the phase sensitivity that cannot be reproduced by the nuisance. The resulting labels therefore cut across the score trajectory differently.

Unlike the ordinary D case, a finite profiled-DsD_s partition does not in general define a canonical Voronoi rule. The top panel consequently shows the finite labels on the trajectory without extending them into shaded cells. The underlying geometric distinction is discussed in A profiled optimum outside its geometry (opens in a new tab).

The narrow detector intervals are not mainly created by the exchange solver. They are already present in the efficient-score starting partition: mapping intervals of the scalar efficient score back through the oscillating detector coordinate naturally produces a fragmented comb. The final exchange changes only 0.4% of the nodes and increases retention by 1.9e-04.

Thus the extra phase information comes with a less simple detector segmentation. The next step is to ask for a reusable profiled rule rather than an unrestricted finite labeling.

11. Reusable profiled quantizer​

Because the finite profiled partition has no canonical rule to compile, a deployable profiled readout is fitted directly with fit_quantizer, using the same continuous detector model and analytic score.

source = sq.IntegrationSource(
[[0.0, U_MAX]],
density=fringe_density,
quadrature=sq.GaussLegendreConfig(order=256),
)

Here SoftVoronoiConfig fits a smooth score-space rule and then hardens it into a discrete KK-bin quantizer.

ds_quantizer = sq.fit_quantizer(
source,
provider=provider,
n_bins=N_BINS,
criterion=sq.ProfiledDOptimality(interest=INTEREST),
config=sq.SoftVoronoiConfig(seed=4, initializer_restarts=8, max_steps=1000),
execution=EXECUTION,
)

new_bins_ds = ds_quantizer.predict_scores(new_scores, execution=EXECUTION)

The reusable rule retains 0.8794 of the profiled phase information, compared with 0.9483 for the finite partition, and uses 16 detector intervals instead of 24. This is the practical trade-off: restricting the solution to a reusable, simpler rule costs some information.

For new observations the deployment path is again

u  ⟶  s(u)  ⟶  q ⁣(s(u)).u \;\longrightarrow\; s(u) \;\longrightarrow\; q\!\left(s(u)\right).

12. Interactive bin-budget sweep​

Vary the number of bins and compare equal-width, D-optimal and profiled-DsD_s readouts. The figure shows how much profiled phase information each retains and how the corresponding labels are arranged along the detector. The button reruns the profiled fit in the browser for the selected bin budget.

Counters K
Aperture readout at 6 countersThe profiled rule is a comb of 25 intervals over the aperture and plain D a comb of 25; equal segments are 6 contiguous intervals on the same aperture.Profiled DsPlain DEqual segments01234Position along the aperture, in fringes
Aperture readout at 6 counters
BandStart (u)End (u)Counter
Profiled Ds0.00000.13193
Profiled Ds0.13190.53092
Profiled Ds0.53091.18441
Profiled Ds1.18442.75830
Profiled Ds2.75832.98141
Profiled Ds2.98143.10082
Profiled Ds3.10083.22013
Profiled Ds3.22013.43694
Profiled Ds3.43695.06115
Profiled Ds5.06115.88734
Profiled Ds5.88736.49683
Profiled Ds6.49687.18172
Profiled Ds7.18179.11061
Profiled Ds9.11069.34942
Profiled Ds9.34949.57873
Profiled Ds9.578711.70564
Profiled Ds11.705613.19783
Profiled Ds13.197815.22422
Profiled Ds15.224220.05283
Profiled Ds20.052821.77754
Profiled Ds21.777522.08853
Profiled Ds22.088522.42152
Profiled Ds22.421523.99551
Profiled Ds23.995524.87202
Profiled Ds24.872025.13273
Plain D0.00000.00315
Plain D0.00310.64401
Plain D0.64402.94370
Plain D2.94373.14161
Plain D3.14163.30185
Plain D3.30185.54182
Plain D5.54186.28635
Plain D6.28637.41101
Plain D7.41109.01950
Plain D9.01959.42481
Plain D9.42489.74845
Plain D9.748411.14642
Plain D11.146412.56955
Plain D12.569513.98951
Plain D13.989515.38444
Plain D15.384415.70801
Plain D15.708016.11325
Plain D16.113217.72493
Plain D17.724918.85275
Plain D18.852719.59101
Plain D19.591021.83094
Plain D21.830921.99111
Plain D21.991122.18915
Plain D22.189124.48873
Plain D24.488725.13275
Equal segments0.00004.18770
Equal segments4.18778.37861
Equal segments8.378612.56642
Equal segments12.566416.75413
Equal segments16.754120.94504
Equal segments20.945025.13275
Score space at 6 counters, profiled Ds against plain DThe same two labellings drawn in the space they were optimized in: the score curve, four loops of growing fringe-frequency score, with each counter a colour. Profiled Ds cuts across the loops to separate the phase score; plain D spends cells resolving the loops from one another.fringe-frequency scoreProfiled Dsphase score-0.7500.750-17017Plain Dphase score-0.7500.750-17017
The same two labellings drawn in the space they were optimized in: the score curve, four loops of growing fringe-frequency score, with each counter a colour. Profiled Ds cuts across the loops to separate the phase score; plain D spends cells resolving the loops from one another.
Phase information retained, after profiling, compared across 3 binning methodsHigher is better. The ScoreQuant row is drawn in the accent colour; the dashed line marks Certified ceiling at 0.9483.Equal segments0.2054Plain D0.7995Profiled Ds0.9483Certified ceiling: 0.948300.2000.4000.6000.8001Phase information retained, after profiling
Phase information retained, after profiling, compared across 3 binning methods
MethodPhase information retained, after profiling
Equal segments0.2054
Plain D0.7995
Profiled Ds (ScoreQuant)0.9483
Certified ceiling (reference ceiling)0.9483
All three partitions use 6 counters on the same node table; the dashed line is the certified ceiling, not a partition you could choose. Higher is better.
Committed result0.9483Committed profiled retention at 6 counters

Fetches the same node table the study used and runs optimize_partition with the profiled criterion for phase, the exact exchange solver, seed 4, and the efficient-score-bound start -- exactly how the committed sweep row was produced. The value should agree to the digits shown; summation order can differ in the last places.

13. Summary​

The score maps the detector coordinate into the space that matters for inference. Ordinary D-optimality uses that space to preserve information about both parameters and produces a clean Mahalanobis–Voronoi quantizer.

When only the phase is of interest, profiling the fringe-frequency nuisance changes the objective. With 6 bins, the retained profiled phase information rises from 0.7995 for the D-optimal readout to 0.9483 for the profiled partition.

The example also illustrates the distinction between two ScoreQuant tasks: optimizing labels on a finite weighted table and fitting a reusable rule for new observations. For ordinary D the first can be compiled into the second; for profiled DsD_s the reusable rule must be fitted explicitly.

Where the theory is. The exchange algorithm, the Voronoi theorem and the compile bridge: D-optimality and exact exchange (opens in a new tab). The profiled criterion, the efficient score and the certified ceiling: Nuisance parameters and profiled Ds (opens in a new tab). The two tasks: Two tasks and three optimization levels (opens in a new tab).