Joint Learning from Partially Labeled Audio Tasks
Audio tasks arrive with different kinds of labels and many missing annotations; Qwen-Audio-Jev packages them in one supervision format and applies only the observed primitive’s matching loss.
Read the paper ↗What it is
- Mixed audio supervision One training format can hold sound-category answers, true-or-false judgments, and ordered ratings, each with its own observed label.
- Missing labels If an example has no reliable annotation for a task, that task contributes no training loss for that example.
- Task exposure How often each kind of question appears in training affects how much relative exposure that task receives.
Why it matters
Real audio datasets often label different recordings in different ways. Matching each observed label to an appropriate objective lets the model learn from that mixture without inventing missing answers or flattening ordered ratings into ordinary categories.
Before getting into the losses, here is the basic idea: I can put different audio questions into one training stream even when their labels have different shapes. Each example says what kind of answer is being requested and includes only the annotation that is actually available. That matters because a missing label should not quietly become a negative example.
-
Heterogeneous labels: A canonical example is asking “Which sound?” with options such as dog, rain, and music. That is a category choice; “Any speech?” is a binary judgment; “How would you rate the audio?” can be an ordered score. They all concern audio, but the labels do not mean the same thing, so I would not force them into one generic target.
-
Partial annotation: Imagine a notebook where some pages have a sound label and others have a quality rating. You can learn from the page that exists without pretending the blank page says “no.” That is the practical point of missing-label handling: an example contributes only the losses supported by its observed, reliable annotation. The notebook analogy stops at the data: the model still receives a task-specific objective, not a physical page.
-
Different notions of error: For a category choice, getting “rain” instead of “dog” is a categorical mistake. For an ordered rating, predicting a nearby level should be distinguishable from predicting a distant one. Before naming the loss, the mechanism is simple: match the annotated answer, and for ratings also account for where probability lands along the ordered scale. The Score objective combines distribution matching with cumulative-distribution and expected-rating terms. In words, it asks both whether the rating distribution matches and how far its mass and average rating drift from the target.
So how does the model know which notion of error to use? Each item carries the active primitive alongside the audio-conditioned question, valid answer criteria, and target. Choice uses categorical cross-entropy over valid candidates; Noul uses binary cross-entropy for the proposition; Score uses an ordinal-aware objective over ordered levels. Those names matter less than the rule: choose the loss that fits the label geometry, rather than pretending all labels are interchangeable.
And what happens when the label is absent? Nothing for that task: it contributes no loss for that example. The training stream still matters, though, because the relative number of Choice, Noul, and Score examples controls their relative exposure. Overall, I like this separation: it keeps sparse annotations useful without making them more complete than they are. But it does not fix imbalanced sampling or inconsistent annotation quality. How much does the training mix shape which task the model becomes best at?
Read the deep dive
Why People Wanted It
An audio dataset rarely gives every recording every kind of answer. One clip may be labeled with a sound category, another with a yes/no judgment, and another with an ordered rating. Treating all of these as if they were the same target either discards useful supervision or asks the model to learn from labels that were never observed.
So the real question was not just how to predict different answers. It was how to put heterogeneous questions into one training stream while making sure each example teaches only what its annotation actually supports.
The Core Move
Represent each supervised item as an audio-conditioned question with an active answer primitive, valid criteria, and an observed target; apply only that primitive’s loss when its target is present.
For example, the same training system can compare a category distribution with a class target, a binary probability with a true/false label, or an ordered rating distribution with a rating annotation. Missing targets contribute no loss.
Why the Supervision Format Can Hold Different Tasks
Now the version for readers who want more of the machinery: an item can be described as audio, question and criteria, active primitive, and target, while its supervision is defined only for the observed target. The active primitive determines how the target is interpreted; the valid criteria specify the answer space for that question. This lets one stream contain categorical, binary, and ordinal examples without pretending they share a label geometry.
For Choice, let be the valid candidates, their logits, and the target mass. The probability is , and the loss is . In words: normalize only over valid answers, then penalize probability assigned away from the target distribution. A hard label is the special case where all target mass sits on one candidate. Unused output positions are excluded and receive no target mass.
For Noul, the binary proposition has probability and observed outcome . Its binary cross-entropy is . In words: reward probability on the observed side of the proposition and penalize probability on the other side; fractional annotations can represent a graded target. The label geometry is now true versus false, not a set of interchangeable categories. What should the loss do when the possible answers have an order?
Why an Ordered Rating Needs More Than Category Matching
Here is the part that gets technical: Score supervises a distribution over ordered levels and combines distribution matching, cumulative-distribution distance, and expected-value error. For levels through , let and be predicted and target probabilities; their means are and . In words: each distribution also implies a scalar rating by averaging its level indices.
The loss is , where matches the level distribution, penalizes differences between cumulative probabilities across ordered thresholds, and applies SmoothL1 to the predicted and target means on the native rating scale. In words: match the annotation, notice how far probability has moved along the order, and keep the expected rating near its target. The coefficients are part of the stated objective; they do not turn the ordered levels into nominal categories. How does this per-example logic scale when annotations are absent or task frequencies differ?
Why Missing Labels and Sampling Change the Objective
Now the exact constraint: each loss reduction processes one observed question, and an example with no reliable target for a primitive contributes no loss for that primitive. If is the active primitive for example , the decision objective is the expectation of its corresponding loss, . In words: each sampled example contributes the objective selected by its own task, rather than an invented target for every possible task.
That makes the training stream’s sampling distribution consequential: the relative exposure of Choice, Noul, and Score is controlled by how often each appears in the stream. The overall SFT objective also includes the backbone’s aggregated load-balancing loss and router z-loss, with auxiliary coefficients; it does not include a next-token or multi-token prediction objective. Missing-label handling prevents unsupported gradients, but it does not by itself balance task exposure. How much of the final behavior comes from annotation coverage, and how much from the sampler?
Minimal Causal Code
A plain loop makes the key rule visible: choose the loss from the observed primitive, and skip examples without an observed target.
import torch
import torch.nn.functional as F
def observed_loss(logits, example):
# Missing targets teach nothing for this example.
if example["target"] is None:
return None
if example["primitive"] == "choice":
valid = example["valid_mask"]
target = example["target"]
log_probs = F.log_softmax(logits[valid], dim=-1)
return -(target[valid] * log_probs).sum()
if example["primitive"] == "noul":
target = torch.as_tensor(example["target"], dtype=logits.dtype)
return F.binary_cross_entropy_with_logits(logits.squeeze(), target)
if example["primitive"] == "score":
target = example["target"]
probs = F.softmax(logits, dim=-1)
levels = torch.arange(logits.numel(), device=logits.device, dtype=logits.dtype)
mean_pred = (probs * levels).sum()
mean_target = (target * levels).sum()
cdf_pred = probs.cumsum(dim=-1)
cdf_target = target.cumsum(dim=-1)
ce = -(target * probs.clamp_min(1e-8).log()).sum()
cdf = (cdf_pred - cdf_target).abs().mean()
mean = F.smooth_l1_loss(mean_pred, mean_target)
return ce + 0.25 * cdf + 0.10 * mean
raise ValueError("unknown primitive")
losses = []
for logits, example in batch:
loss = observed_loss(logits, example)
if loss is not None:
losses.append(loss)
if losses:
batch_loss = torch.stack(losses).mean()
batch_loss.backward()
What You Gain, and What You Lose
The format lets one training stream use categorical, binary, and ordered annotations without converting them into a single misleading target type. Missing annotations are not treated as negatives or guessed labels, and each observed target gets a loss suited to its structure. Ordered ratings can express that nearby levels are less displaced than distant ones through the cumulative and mean terms.
The tradeoff is that task exposure still depends on sampling: a primitive shown less often receives less relative training exposure. The objective also depends on annotation quality and on choices such as the Score loss weights. A unified interface makes mixed supervision manageable; it does not make sparse labels complete, remove task imbalance, or guarantee that ratings from different sources mean the same thing.
One example should teach only what its observed label actually says.