← PROVA‑MG overview
PROVA‑MG  /  A guided climb from basic algebra

Understanding PROVA‑MG, one symbol at a time

If you can read “\(x + 2 = 5\), so \(x = 3\)”, you already know enough to start. This page adds exactly one new idea at a time until the final, novel formula at the bottom is something you can read out loud and actually mean.

How to read this page

Every formula in the thesis is built from a handful of small ideas stacked on top of each other. We introduce those ideas in order. Nothing below assumes more than school algebra; every new piece of notation gets defined the moment it appears.

Each step has four parts: the new idea in words, the symbol written in real mathematical notation, a worked micro‑example with actual numbers, and a plain‑English reading so you never decode a formula alone. A running “what we can read so far” bar tracks your progress.

The destination The goal of the whole project: teach a computer to turn Malagasy speech into written text, even though almost no labelled Malagasy audio exists. The final formula is the rule the system follows so it can teach itself from unlabelled audio without fooling itself.
Step 0

A letter is just a box that holds a value

In algebra, \(x\) is a placeholder for something we don’t know yet. That is the only trick, and it never goes away — it only gets dressed up. In this project the placeholders hold richer things than plain numbers:

SymbolWhat is in the box
\(x\)the audio — the sound recording (a chunk of speech)
\(y\)the text — the transcription of what was said
\(d\)the dialect (Merina, Betsimisaraka, Sakalava, …)
\(r\)the register (read aloud, broadcast, conversation, ceremony)
\(c\)the code‑switching tag (Malagasy, French, or mixed)
\(\theta\)(“theta”) all the knobs of the model — the numbers learning will adjust

Whenever you see one of these letters, say its plain name in your head: \(x\) → “the audio”, \(y\) → “the text”. Greek letters are not special — they are just letters used so we don’t run out: \(\theta\) (theta), \(\alpha\) (alpha), \(\beta\) (beta), \(\tau\) (tau), \(\epsilon\) (epsilon), \(\eta\) (eta), \(\lambda\) (lambda), \(\phi\) (phi), \(\mu\) (mu) all appear below, and each is introduced where it is first used.

So far we can read: \(x, y, d, r, c, \theta\) — six labelled boxes.
Step 1

A function is a machine: put something in, get something out

You already met functions as \(f(x)\) — “\(f\) of \(x\)” — a machine that takes \(x\) and returns a value. Read the parentheses as “applied to”. Everything later of the form \(g(\text{stuff})\) means exactly this: a machine applied to whatever sits in the parentheses.

$$f(x) = 2x + 1$$
Worked example Put in \(x = 3\): \(f(3) = 2\cdot 3 + 1 = 7\). Put in \(x = 10\): \(f(10) = 21\). A function is a promise: the same input always gives the same output.

A function can take several inputs at once, separated by commas: \(g(a, b)\) is “\(g\) applied to \(a\) and \(b\) together.” Later we will see \(\operatorname{conf}_{\mathrm{cal}}(y, x)\), which is simply a machine fed two boxes — a text and an audio — returning one number.

So far we can read: boxes, and \(f(\cdot)\) = a machine applied to whatever sits in the parentheses.
Step 2

Probability: a number between 0 and 1 for “how likely”

We write \(p(\cdot)\) for “the probability of”. It is just a function whose output is always in the range \([0, 1]\): \(0\) means impossible, \(1\) means certain, \(0.5\) means coin‑flip.

$$0 \le p(y) \le 1 \qquad\text{where } p(y) \text{ means “how likely is the text } y\text{?”}$$

Two short extensions you must recognise, both ordinary algebra:

These are tied together by one rule you may remember — the definition of conditional probability:

$$p(y \mid x) = \frac{p(x, y)}{p(x)}$$
Worked example Of all recordings, suppose \(2\%\) are a particular sentence and a clear recording: \(p(x,y) = 0.02\). Suppose \(10\%\) of recordings are that clear: \(p(x) = 0.10\). Then given a clear recording, the chance it is that sentence is \(p(y\mid x) = 0.02 / 0.10 = 0.20\), i.e. \(20\%\).
Read it out loud \(p(y \mid x)\) = “the chance the text is \(y\), given the recording \(x\).” This single object — chance of the text given the sound — is what every ASR system is ultimately trying to compute.
So far we can read: \(p(y)\) a chance, \(p(x,y)\) chance of both, \(p(y\mid x)\) chance of \(y\) given \(x\).
Step 3

Multiplying chances = a chain of “and”s — the generative model

When several things all have to happen, you multiply their chances. Two coins both landing heads: \(0.5 \times 0.5 = 0.25\). More precisely, a joint probability can always be unrolled into a chain of conditionals (the “chain rule”):

$$p(a, b) = p(a)\, p(b \mid a)$$

The thesis imagines how a recording is “born”, one factor at a time, and multiplies them. This is the first real formula from the paper — the generative model:

$$p(x, y, d, r, c) = p(d)\,p(r)\,p(c \mid r, d)\,p(y \mid d, r, c)\,p(x \mid y, d, r)$$
Reading it left to right (comma = “and”, bar = “given”) “The chance of this whole situation = pick a dialect \(p(d)\) × pick a register \(p(r)\) × decide the language mix given dialect & register \(p(c\mid r,d)\) × produce the text given all that \(p(y\mid d,r,c)\) × finally produce the sound given the text, dialect and register \(p(x\mid y,d,r)\).”

The shape of this product encodes real modelling choices: dialect \(d\) and register \(r\) are written as independent factors \(p(d)\,p(r)\) because a Merina speaker can be recorded either reading aloud or chatting; but the language mix \(c\) is conditioned on both, \(p(c \mid r, d)\), because code‑switching is socially structured.

Plain comparison: it is like subtitling that simultaneously guesses what was said, in which accent, in which setting (radio? chat?), and whether the sentence mixes French and Malagasy. Each guess feeds the next, and we multiply how likely each guess is.

So far we can read: a product of chances describing how audio+text is generated. One full paper formula down.
Step 4

Logarithms: turn hard multiplication into easy addition

Multiplying many tiny probabilities gives absurdly small numbers that computers round to zero. The fix is the logarithm, written \(\log\). Its one magic property is all you need:

$$\log(A \times B) = \log A + \log B \qquad\text{and}\qquad \log\!\frac{A}{B} = \log A - \log B$$
Worked example Three probabilities \(0.5 \times 0.5 \times 0.5 = 0.125\). In logs (base 10): \(\log 0.5 \approx -0.30\), so the sum is \(-0.30 - 0.30 - 0.30 = -0.90\), and indeed \(\log 0.125 \approx -0.90\). A messy product became a clean sum.
Why we bother “log of a product = sum of the logs.” So every multiplication from Step 3 becomes a tidy addition. That is the only reason \(\log\) appears everywhere below — it is a convenience, not a new concept.

One side note: probabilities are below \(1\), so their logs are negative. “Bigger” (closer to \(0\)) still means “more likely”. Don’t let the minus signs scare you: \(-0.9\) is more likely than \(-5.0\).

So far we can read: \(\log\) turns \(\times\) into \(+\), so “most likely” becomes “biggest sum”.
Step 5

Decoding: add up the evidence and keep the best text

Now combine Steps 2–4. To transcribe, the system scores each candidate text by adding three kinds of log‑evidence. This is the project’s decoding rule:

$$\log P(y \mid x) \;\propto\; \log P_{\mathrm{acoustic}}(x \mid y) \;+\; \alpha \log P_{\mathrm{LM\text{-}MG}}(y) \;+\; \beta \log P_{\mathrm{typ}}(y)$$
PiecePlain meaning
\(\log P_{\mathrm{acoustic}}(x \mid y)\)“does the sound match this text?”
\(\log P_{\mathrm{LM\text{-}MG}}(y)\)“is this good Malagasy on its own?”
\(\log P_{\mathrm{typ}}(y)\)“does it fit the cousin languages (Indonesian, Malay, Tagalog…)?”
\(\alpha, \beta\)plain dials (just numbers \(\ge 0\)) setting how much to trust the last two clues
\(\propto\)“proportional to” — equal up to a constant we don’t care about when ranking
Worked example Two candidate texts \(y_1, y_2\). Say the sound favours \(y_1\) (\(-2.0\) vs \(-2.3\)), but \(y_2\) is far better Malagasy (\(\alpha\log P_{\text{LM}}\): \(-0.2\) vs \(-1.5\)). With \(\alpha = 1, \beta = 0\): score\((y_1) = -3.5\), score\((y_2) = -2.5\). So \(y_2\) wins — the language clue overruled a slightly better sound match.
In words “A text’s score = how well it matches the sound + (a little) how Malagasy it sounds + (a little) how Austronesian its shape is.” The \(\alpha\) and \(\beta\) dials balance the three voices. Comparison: learning Italian faster by leaning on Spanish and Portuguese.
So far we can read: a weighted sum of log‑evidence that ranks candidate transcriptions.
Step 6

argmax and argmin: “which choice wins?”

Two pieces of notation that look intimidating but mean something everyday.

$$\hat{y} = \operatorname*{argmax}_{y}\ \big[\, \text{score}(y) \,\big]$$
Worked example If score\((y_1) = -3.5\), score\((y_2) = -2.5\), score\((y_3) = -4.1\), then \(\max\) of the scores is \(-2.5\), but \(\operatorname{argmax}\) is \(y_2\) — the text, not the number. The little \(y\) under the operator says “we are choosing among the \(y\)’s.” The hat in \(\hat y\) means “our chosen estimate”.
In words “Out of all possible texts \(y\), hand me the one with the highest score.” That is decoding: \(\operatorname{argmax}\) over the rule from Step 5.
So far we can read: \(\operatorname{argmax}\) = the choice that wins; \(\operatorname{argmin}\) = the choice that loses‑least.
Step 7

Sums and the average machine \(\mathbb{E}\) (expected value)

First, the summation sign \(\sum\) is just “add these up.” \(\sum_{i} a_i = a_1 + a_2 + a_3 + \dots\) Nothing more.

The symbol \(\mathbb{E}\) (a fancy E) means average — the typical outcome if you weight every possibility by how likely it is. In plain algebra it is exactly a weighted sum of value \(\times\) chance:

$$\mathbb{E}_{q}\big[ s(y) \big] \;=\; \sum_{y} q(y)\, s(y)$$
Worked example A die pays \(s = 1\) on a six and \(s = 0\) otherwise, with fair odds \(q = \tfrac{1}{6}\) each face. Then \(\mathbb{E}_q[s] = \tfrac{1}{6}\cdot 1 + \tfrac{5}{6}\cdot 0 = \tfrac{1}{6} \approx 0.17\) — the long‑run average payout.
In words “If you tried this many times following the odds \(q\), what would you get on average?” The little \(q\) under \(\mathbb{E}\) just says which set of odds to average with.
So far we can read: \(\sum\) = add up; \(\mathbb{E}_{q}[\cdot]\) = the average of something under the odds \(q\).
Step 8

KL: a number for “how different are two opinions?”

Often we have two sets of odds — the model’s guess \(q\) and some target \(p\) — and want to know how far apart they are. The KL divergence \(\mathrm{KL}(q \,\|\, p)\) is that gap as a single number. It is built from the pieces you already have (a sum, a log, an average):

$$\mathrm{KL}\big( q \,\|\, p \big) \;=\; \sum_{y} q(y)\, \log\frac{q(y)}{p(y)} \;=\; \mathbb{E}_{q}\!\left[ \log\frac{q(y)}{p(y)} \right] \;\ge\; 0$$

The key facts: it is never negative, and it equals exactly \(0\) only when \(q\) and \(p\) are identical. Bigger means more disagreement. (The double bar \(\|\) is just punctuation separating the two distributions.)

Worked example If \(q = p\) everywhere, each term is \(q(y)\log 1 = 0\), so \(\mathrm{KL} = 0\) — no disagreement. The more \(q\) puts weight where \(p\) does not, the larger the positive total grows.
In words “How surprised would you be if you trusted \(q\) but reality followed \(p\)?” You don’t need to memorise the formula — only that it is a distance between two probability opinions, never negative, zero when they match.
So far we can read: \(\mathrm{KL}(q\,\|\,p)\) = how far guess \(q\) is from target \(p\) (\(0\) = perfect match).
Step 9a

A safety net under the goal: the ELBO

We would love to maximise \(\log p(x, y)\) directly — “make the data the model actually saw as likely as possible.” But the hidden variables \(d, r, c\) make that sum impossible to compute exactly. The standard trick is to maximise a guaranteed lower floor beneath it instead, called the evidence lower bound (ELBO):

$$\log p(x, y) \;\ge\; \mathcal{L}_{\mathrm{ELBO}}(\theta, \phi) \;=\; \underbrace{\mathbb{E}_q\big[ \log p_\theta(x, y, d, r, c) \big]}_{\text{fit the data well}} \;-\; \underbrace{\mathrm{KL}\big( q_\phi \,\|\, p \big)}_{\text{stay honest}}$$
\(\ge\)“is at least” — the ELBO sits below the thing we want, so pushing it up drags the real goal up too
\(\theta\)the knobs of the generative model (Step 3)
\(\phi\)(“phi”) the knobs of the guesser \(q\) — the network that proposes the hidden answers
In words “Raise a floor you can compute, made of two pieces: a reward for fitting the data (first term) minus a penalty for the guesser drifting away from what’s plausible (the KL term). Push the floor up and the true goal rises with it.”
So far we can read: the ELBO = (fit the data) − (KL honesty penalty), a floor we maximise instead of the impossible exact goal.
Step 9b

EM: guess the hidden parts, then improve — repeat

Here is the engine that climbs that floor. We have audio but, for most of it, no human transcription — and we never directly see the dialect, register or language‑mix. Those are hidden. The EM algorithm handles “learn from data with missing pieces” by alternating two moves until things settle:

$$\begin{aligned} \textbf{E-step:}\quad & q^* = \operatorname*{argmin}_{q}\ \mathrm{KL}\big( q \,\|\, p_\theta(\,\cdot \mid x) \big) \\ \textbf{M-step:}\quad & \theta \leftarrow \operatorname*{argmax}_{\theta}\ \mathbb{E}_{q^*}\big[ \log p_\theta(x, y, d, r, c) \big] \end{aligned}$$
\(q^*\)the best current guess of the hidden pieces (the star \({}^*\) = “the winning one”)
\(p_\theta(\cdot \mid x)\)what the model, with knobs \(\theta\), currently believes about the hidden pieces given \(x\)
\(\leftarrow\)“becomes” — replace the old knobs with this new value
In words E‑step: “with today’s knobs, make the best guess of the missing answers.” M‑step: “turn the knobs so those guesses become as likely as possible.” Loop. Comparison: a student grading their own homework to improve — each round a little better. Every loop is guaranteed not to lower the ELBO of Step 9a.
So far we can read the whole EM loop: guess hidden answers (E), then retune knobs \(\theta\) to fit them (M), repeat.
Step 10

The danger that makes this hard: self‑delusion

A student who grades their own homework can drift into confidently marking wrong answers right, then studying from them — getting surer and worse at the same time. In machine learning this is called collapse, and it is exactly what kills naive self‑training: the model’s confidence inflates while its accuracy degrades. The novel contribution of PROVA‑MG is to bolt four guard‑rails onto the E‑step so the loop cannot fool itself.

The whole idea in one line Keep EM’s self‑teaching power, but only let it learn from guesses that are (C1) honestly confident, (C2) not a wild swing from last round, (C3) backed by other models, and (C4) shaped like a real Austronesian word.
Step 11

The four guard‑rails, each a small inequality

Each guard‑rail is just an algebra inequality (\(\ge\) “at least”, \(\le\) “no more than”). Together they define a set of allowed guesses, written \(C\). Read each one slowly — you already know every symbol.

Bundle all four into one name: \(C = \{\, q : q \text{ satisfies C1 and C2 and C3 and C4} \,\}\) — “the set of guesses that pass every guard‑rail.”

So far we can read: four plain inequalities C1–C4, and the allowed‑guess set \(C\) = all four at once.
Step 12 — The summit

The final, novel formula — read it like a sentence

Everything you have learned now snaps together. Take the EM loop from Step 9b, and in the E‑step add three little symbols under the \(\operatorname{argmin}\): \(q \in C\) — “choose only among guesses that obey the four guard‑rails.” That single restriction is the contribution.

$$\boxed{\;\begin{aligned} \textbf{E-step:}\quad & q^* = \operatorname*{argmin}_{q \,\in\, C}\ \mathrm{KL}\big( q \,\|\, p_\theta(\,\cdot \mid x) \big) \\[4pt] \textbf{M-step:}\quad & \theta \leftarrow \operatorname*{argmax}_{\theta}\ \mathbb{E}_{q^*}\big[ \log p_\theta(x, y, d, r, c) \big] + \lambda\, R(\theta) \end{aligned}\;}$$
Now read the whole thing in plain English E‑step: “Among only the guesses that are honestly confident, not a wild swing, backed by other models, and shaped like a real word (\(q \in C\)), pick the one (\(\operatorname{argmin}\)) closest (smallest \(\mathrm{KL}\)) to what the model currently believes about the audio.”

M‑step: “Then turn the model’s knobs \(\theta\) (\(\operatorname{argmax}\)) so those trusted guesses become as likely (highest average log‑chance) as possible — plus a tidiness term \(\lambda R(\theta)\) that stops the knobs from going to extremes.”

Then loop. Because of \(q \in C\), every round can only learn from trustworthy guesses, so it gets better without the self‑delusion of Step 10.
Last new symbolsPlain meaning
\(q \in C\)the novel part: “\(q\) must be inside the allowed‑guess set \(C\)” — obey all four guard‑rails
\(\lambda\, R(\theta)\)a gentle “don’t overdo it” penalty: \(R\) scores how extreme the knobs are, \(\lambda\) (lambda) sets how strict that penalty is
What makes it novel Plain EM has been known for decades. The contribution is the two characters \(\in C\): forcing the self‑teaching loop to draw only from guesses that pass four independent sanity checks — calibrated confidence (C1), bounded drift (C2), cross‑model agreement (C3), and typological plausibility (C4). That turns a loop that usually collapses into one that is provably stable for low‑resource Malagasy.
You can now read the final formula end to end:
boxes \((x,y,d,r,c,\theta)\) → functions \(f(\cdot)\) → chances \(p(\cdot)\) → products of chances → \(\log\) turns \(\times\) into \(+\) → weighted‑sum decoding → \(\operatorname{argmax}/\operatorname{argmin}\) pick the winner → \(\sum\) and \(\mathbb{E}\) average → \(\mathrm{KL}\) measures disagreement → ELBO floor → EM guesses-then-improves → four guard‑rails \(C\) → constrained variational EM.
Bonus — where the calibrated confidence comes from

One more formula you can now read: calibration

Guard‑rail C1 relied on a calibrated confidence. Where does that honesty come from? A small extra model \(g_\phi\) is trained so its reported confidence matches the real hit‑rate. Its training objective is, once more, only pieces you know — a sum of logs plus a tidiness penalty:

$$\mathcal{L}_{\mathrm{cal}}(\phi) = -\!\!\sum_{(x,y) \in D_{\mathrm{sup}}}\!\! \log g_\phi\big( \operatorname{features}(x),\, \mathbb{1}[\, \hat{y}(x) = y \,] \big) + \mu \, \| g_\phi \|^2$$
\(D_{\mathrm{sup}}\)the small supervised set where we do have correct transcripts to check against
\(\mathbb{1}[\hat y(x) = y]\)an “indicator”: \(1\) if the guess was right, \(0\) if wrong
\(\mu \, \| g_\phi \|^2\)(“mu”) the same kind of tidiness penalty as \(\lambda R(\theta)\), keeping the calibrator smooth
In words “Tune the confidence‑model \(\phi\) so that, on the cases where we know the answer, its stated confidence lines up with how often it’s actually right — and keep it simple.” This is what makes C1’s threshold \(\tau\) meaningful.
One‑line summary

Three teacher models + cousin‑language hints + honest confidence, combined by an EM loop that may only learn from guesses passing four guard‑rails \(C\) — which is what makes its self‑training provably non‑collapsing.

Where to go next Ready for the full treatment? See Chapter III — The PROVA‑MG Methodology for the complete derivation, complexity analysis and pseudocode, or the essential FR summary for the same ideas in French.