Paper · 2021-02-03 · cs.LG, cs.CV
Trusted Multi-View Classification
Each view gets its own network that outputs class evidence. The evidence becomes a Dirichlet opinion with an uncertainty mass, and Dempster's rule fuses the views in one pass. Training adds a digamma cross-entropy and an annealed KL term. Author-reported accuracy beats the best single-view uncertainty baselines on all six datasets, e.g. 67.74% vs 52.96% on Scene15.
Evidential deep learningUncertainty estimationMultimodal fusionuncertaintyevidential-learningmulti-view-learningdempster-shafer
arXivPDFCodeMarkdown12 min read
AI-compiled by claude-haiku-5-5 on 2026-11-06, not yet reviewed by a human. Every claim cites its source; check it when a detail matters.
In plain words
Many classifiers that combine several sensors or feature sets (called views here) give each view equal say and output one probability per class. This method instead gives each view its own network, which reports how much evidence it has for each class. Evidence is turned into class probabilities plus an uncertainty amount, so the model can say how sure it is.
The views' answers are merged with a rule from Dempster-Shafer evidence theory. The merged answer lets a view that is confident count for more than one that is unsure. Training pushes the correct class to collect evidence and the wrong classes towards zero. The authors report higher accuracy than the single-view uncertainty baselines they compare with, and better behaviour on unusual inputs. All of these numbers are the authors' own.
TL;DR
- Use this when inputs come from several views or modalities and you need a per-prediction uncertainty, not only a class.
- One forward pass gives the fused class probabilities and an uncertainty; no sampling or ensembles are needed.
- Reported gains are on six multi-view benchmarks, with author-reported numbers, and the released code covers only the Handwritten dataset.
- Several implementation details differ between paper and code (see Paper vs code).
Problem
Multi-view models usually fuse views at the feature or output level, and they assume that each view's reliability is the same for every sample §1. Softmax confidence tends to be high even for wrong predictions, so it is a poor uncertainty signal §3, opening paragraph. Bayesian and ensemble methods give uncertainty but are costly, and the single-view uncertainty methods do not extend to fusing several views §1 §2.
Method
The method has three parts: (i) evidence and a Dirichlet opinion per view §3.1; (ii) fusion of the per-view opinions with Dempster's rule §3.2; (iii) a training loss that makes the evidence learnable §3.3. The optimisation loop is Algorithm 1 alg. 1 (app. A.2).
1. Evidence and opinions per view §3.1
- Each view
vhas a network whose last layer outputs one non-negative evidence valuee_k^vper classk(the softmax is replaced by a non-negative activation) §3.3. - The Dirichlet parameters are
alpha_k^v = e_k^v + 1§3.1. - With
S^vthe Dirichlet strength, the belief mass per class isb_k^v = e_k^v / S^v, and the uncertainty mass isu^v = K / S^v. The masses sum to one eq. 1 eq. 2. - The expected class probability is
alpha_k^v / S^v§3.1.
2. Fusion across views §3.2
- Dempster's rule combines two opinions. The conflict
Cis the belief mass the two opinions give to different classes. The joint belief isb_kand the joint uncertainty isueq. 3 eq. 4. - Views are combined in turn,
M = M^1 ⊕ M^2 ⊕ … ⊕ M^Veq. 5. - The joint opinion is turned back into Dirichlet parameters:
S = K / u,e_k = b_k S,alpha_k = e_k + 1eq. 6.
3. Loss §3.3
- The conventional cross-entropy eq. 7 is replaced by its expectation under the Dirichlet, written with digamma functions eq. 8.
- A KL term to the uniform Dirichlet,
Dir(1), penalises evidence for wrong classes. The parameters in the KL arealpha_tilde = y + (1 - y) * alpha, so the true-class evidence is not penalised eq. 9. - The per-sample loss is the expected cross-entropy plus
lambda_ttimes the KL term.lambda_t > 0is a balance factor that is increased gradually from 0 towards 1 eq. 10 §3.3 app. A.6. - The total loss sums that per-sample loss over all samples and over the fused opinion and each single view eq. 11.
4. Optimisation alg. 1 (app. A.2)
- Loop until convergence: compute each view's
alpha^v, form each view's opinion, fuse them into the jointalpha, compute the loss in eq. 11, and take a gradient step on all networks alg. 1. The paper gives no convergence test. - At test time, the joint belief masses and the uncertainty mass give the prediction and its uncertainty alg. 1 §3.2.
# One training step of trusted multi-view classification [alg. 1]
# Input: views: list of V tensors (B, D_v); labels: (B,) class ids
# Output: scalar loss to minimise
def training_step(views, labels, epoch):
# Non-negative evidence per view and class [§3.1] [§3.3]
evidences = [net(x) for net, x in zip(view_nets, views)]
# Dirichlet parameters per view [§3.1]
alphas = [evidence + 1 for evidence in evidences]
# Fuse the view opinions into one joint Dirichlet [§3.2] [eq. 5] [eq. 6]
joint_alpha = fuse_opinions(alphas)
# Sum the loss over each view and the joint opinion [eq. 11]
loss = 0
for alpha in alphas + [joint_alpha]:
loss = loss + sample_loss(labels, alpha, epoch)
return loss# Per-sample loss: cross-entropy plus KL term [eq. 8] [eq. 9] [eq. 10]
# Input: labels: (B,); alpha: (B, K); epoch: int
# Output: (B,) loss per sample
def sample_loss(labels, alpha, epoch):
# One-hot targets [§3.3]
one_hot = one_hot_encode(labels, num_classes)
# Dirichlet strength per sample [§3.1]
strength = sum over classes of alpha
# Expected cross-entropy under Dir(alpha) [eq. 8]
cross_entropy = sum over classes of (
one_hot * (digamma(strength) - digamma(alpha)))
# Keep the true-class evidence, shrink the other classes [§3.3]
alpha_tilde = one_hot + (1 - one_hot) * alpha
# Balance factor; it rises from 0 towards 1 [§3.3] [app. A.6]
weight = min(1.0, epoch / annealing_epochs)
return cross_entropy + weight * kl_to_uniform(alpha_tilde)# Dempster's rule for two Dirichlet opinions [eq. 2] [eq. 3] [eq. 4]
# Input: alpha_1, alpha_2: (B, K); K is the number of classes
# Output: (B, K) Dirichlet parameters of the combined opinion
def fuse_two(alpha_1, alpha_2):
# Belief masses and uncertainty of each opinion [eq. 2]
belief_1 = (alpha_1 - 1) / strength(alpha_1)
belief_2 = (alpha_2 - 1) / strength(alpha_2)
unc_1 = K / strength(alpha_1)
unc_2 = K / strength(alpha_2)
# Conflict: belief given to different classes [eq. 4]
conflict = (sum(belief_1) * sum(belief_2)
- sum(belief_1 * belief_2))
# Combined belief and uncertainty, renormalised [eq. 4]
belief = (belief_1 * belief_2 + belief_1 * unc_2
+ belief_2 * unc_1) / (1 - conflict)
unc = unc_1 * unc_2 / (1 - conflict)
# Back to Dirichlet parameters [eq. 6]
return belief * (K / unc) + 1Key equations:
u^v + \sum_{k=1}^{K} b_k^v = 1 eq. 1
b_k^v = \frac{e_k^v}{S^v} = \frac{\alpha_k^v - 1}{S^v}, \qquad u^v = \frac{K}{S^v} eq. 2
b_k = \frac{1}{1-C}\left(b_k^1 b_k^2 + b_k^1 u^2 + b_k^2 u^1\right), \qquad u = \frac{1}{1-C} u^1 u^2, \qquad C = \sum_{i \neq j} b_i^1 b_j^2 eq. 4
\mathcal{L}_{ace}(\boldsymbol{\alpha}_i) = \sum_{j=1}^{K} y_{ij}\left(\psi(S_i) - \psi(\alpha_{ij})\right) eq. 8
\mathcal{L}(\boldsymbol{\alpha}_i) = \mathcal{L}_{ace}(\boldsymbol{\alpha}_i) + \lambda_t \, KL\!\left[D(\mathbf{p}_i \mid \tilde{\boldsymbol{\alpha}}_i) \,\|\, D(\mathbf{p}_i \mid \mathbf{1})\right] eq. 10
\mathcal{L}_{overall} = \sum_{i=1}^{N}\left[\mathcal{L}(\boldsymbol{\alpha}_i) + \sum_{v=1}^{V} \mathcal{L}(\boldsymbol{\alpha}_i^v)\right] eq. 11
Figures are described in words only. fig. 1 is the overview with the four steps (evidence, Dirichlet, opinion, fusion) and the combination of two belief sets. fig. 2 shows Dirichlet densities for a confident case, an out-of-distribution case, a high-uncertainty case, and the opinion on the simplex §3.1. fig. 3 plots accuracy against an uncertainty threshold §4.2. fig. 4 plots accuracy under increasing noise on half the views §4.2. fig. 5 shows uncertainty densities for in-distribution and noisy samples §4.2. fig. 6 is the end-to-end feature-fusion setup app. A.7.
Hyperparameters
Paper values are cited to the paper; the code column reports the released defaults, and the differences are listed in Paper vs code.
| Name | Value | Where | Notes |
|---|---|---|---|
Number of classes K | Handwritten 10, CUB 10, HMDB 51, Caltech101 101, Scene15 15 | app. A.3 | CUB uses the first 10 of its 200 categories app. A.3. PIE is described as 68 subjects; the class target is not stated |
Number of views V | Handwritten 6, CUB 2, PIE 3, HMDB 2, Caltech101 2, Scene15 3 | app. A.3 | |
| Evidence activation | ReLU (paper); Softplus (code) | §3.3 | model.py |
| Network | "fully connected networks"; depth and width not stated | §4.1 | Code: one linear layer per view, then Softplus. Handwritten input dims 240, 76, 216, 47, 64, 6 train.py |
| Optimiser | Adam | §4.1 app. A.6 | train.py |
| Learning rate | selected by 5-fold CV from {3e-3, 1e-3, 3e-4, 1e-4}; per-dataset result not stated | §4.1 | Code default 3e-4 train.py; no CV code |
| L2 regularisation | trade-off 0.0001 | §4.1 | Code: Adam weight_decay=1e-5 train.py |
Balance factor lambda_t | starts at 0, "slowly increases" to 1; schedule not stated | §3.3 app. A.6 | Code: min(1, epoch / 50), epoch counted from 1 model.py train.py |
| Batch size | not stated | §4.1 | Code default 200 train.py |
| Epochs | not stated | §4.1 | Code default 500 train.py |
| Test split | 20% of samples | §4.1 | Code reads the split stored in the .mat file; the ratio was not checked |
| Repeats | 30 runs; mean and standard deviation reported | §4.1 | Code sets no random seed |
| End-to-end backbones | ResNet-152 (image) and BERT (text) for Food101; ResNet-50 for RGB and depth for NYUD | app. A.6 | ImageNet pre-training is stated for ResNets |
| End-to-end training | Adam with learning-rate decay; rate and decay schedule not stated; 10 runs | app. A.6 | |
| Food101 split | 60,101 train, 5,000 validation, 21,695 test | app. A.6 | Food101 is UMPC-FOOD101 in the paper |
| NYUD split | 2,186 train, 1,200 validation, 1,201 test | app. A.6 | 19 object classes app. A.6 |
| Handwritten size | 2,000 samples, 10 classes, 200 per class | app. A.3 | |
| Noise test | Gaussian noise on half the views in the multi-view comparison (levels in the figure only); OOD test with sigma = 10 on 50% of test samples | §4.2 | Noise levels not stated in the text |
Results
Author-reported. Setup: six multi-view datasets app. A.3; each uncertainty baseline is reported with its best single view for both accuracy and AUROC §4.2. Values are mean ± standard deviation over 30 runs §4.1. Bold marks the best value per row in the paper.
Main comparison with single-view uncertainty methods tab. 1 §4.2:
| Data | Metric | MCDO | DE | UA | EDL | Ours |
|---|---|---|---|---|---|---|
| Handwritten | ACC | 97.37±0.80 | 98.30±0.31 | 97.45±0.84 | 97.67±0.32 | 98.51±0.15 |
| Handwritten | AUROC | 99.70±0.07 | 99.79±0.05 | 99.67±0.10 | 99.83±0.02 | 99.97±0.00 |
| CUB | ACC | 89.78±0.52 | 90.19±0.51 | 89.75±1.43 | 89.50±1.17 | 91.00±0.42 |
| CUB | AUROC | 99.29±0.03 | 98.77±0.03 | 98.69±0.39 | 98.71±0.03 | 99.06±0.03 |
| PIE | ACC | 84.09±1.45 | 70.29±3.17 | 83.70±2.70 | 84.36±0.87 | 91.99±1.01 |
| PIE | AUROC | 98.90±0.31 | 95.71±0.88 | 98.06±0.56 | 98.74±0.17 | 99.69±0.05 |
| Caltech101 | ACC | 91.73±0.58 | 91.60±0.82 | 92.37±0.72 | 90.84±0.56 | 92.93±0.20 |
| Caltech101 | AUROC | 99.91±0.01 | 99.94±0.01 | 99.85±0.05 | 99.74±0.03 | 99.90±0.01 |
| Scene15 | ACC | 52.96±1.17 | 39.12±0.80 | 41.20±1.34 | 46.41±0.55 | 67.74±0.36 |
| Scene15 | AUROC | 92.90±0.31 | 74.64±0.47 | 85.26±0.32 | 91.41±0.05 | 95.94±0.02 |
| HMDB | ACC | 52.92±1.28 | 57.93±1.02 | 53.32±1.39 | 59.88±1.19 | 65.26±0.76 |
| HMDB | AUROC | 93.57±0.28 | 94.01±0.21 | 91.68±0.69 | 94.00±0.25 | 96.18±0.10 |
The text reports gains of about 7.6% (PIE) and 14.8% (Scene15) in accuracy over the second-best method, which is EDL or MCDO §4.2.
Comparison with CCA-based methods, linear SVM on the learned representation, accuracy, 30 runs tab. 2 (app. A.4). Not bolded in the paper:
| Data | CCA | DCCA | DCCAE | BCCA | Ours |
|---|---|---|---|---|---|
| Handwritten | 97.25±0.01 | 97.55±0.38 | 97.35±0.35 | 95.75±1.23 | 98.51±0.13 |
| CUB | 85.83±1.97 | 82.00±3.15 | 85.50±1.39 | 77.67±2.99 | 90.83±3.23 |
| PIE | 80.88±0.95 | 80.59±1.52 | 82.35±1.04 | 76.42±1.37 | 91.91±0.11 |
| Caltech101 | 90.50±0.00 | 88.84±0.41 | 89.97±0.41 | 88.11±0.40 | 92.93±0.20 |
| Scene15 | 55.77±0.22 | 54.85±1.00 | 55.03±0.34 | 53.82±0.24 | 67.74±0.36 |
| HMDB | 54.34±0.75 | 46.73±0.97 | 49.16±1.07 | 49.12±1.01 | 65.26±2.52 |
Removing one view, accuracy, 30 runs tab. 3 (app. A.5). "None" is all views:
| Data | Removed view 1 | Removed view 2 | Removed view 3 | None |
|---|---|---|---|---|
| PIE | 87.06±0.36 | 89.56±0.55 | 84.12±0.36 | 91.99±1.01 |
| Scene15 | 63.65±0.43 | 55.66±0.55 | 64.41±0.53 | 67.74±0.36 |
End-to-end on multi-modal data, accuracy, 10 runs tab. 4 (app. A.7). "Best view" uses one backbone; "feature fusion" concatenates the two backbone outputs:
| Method | Food101 | NYUD |
|---|---|---|
| MCDO (best view) | 74.87±1.04 | 55.83±1.67 |
| DE (best view) | 83.27±0.36 | 57.95±1.42 |
| UA (best view) | 84.49±0.34 | 56.04±1.16 |
| EDL (best view) | 87.40±0.48 | 57.81±0.79 |
| MCDO (feature fusion) | 79.49±1.54 | 58.73±2.34 |
| DE (feature fusion) | 86.45±0.44 | 62.47±1.86 |
| UA (feature fusion) | 88.50±0.47 | 63.04±1.37 |
| EDL (feature fusion) | 90.50±0.32 | 64.49±1.14 |
| Ours | 91.30±0.21 | 66.24±0.69 |
Uncertainty behaviour is described in words: higher-accuracy datasets have lower in-distribution uncertainty, and noisy out-of-distribution samples get much higher uncertainty on all datasets §4.2 fig. 5. Accuracy on the retained predictions rises as their uncertainty decreases fig. 3 §4.2. The noise curves fig. 4 are only in the figure and were not transcribed.
Paper vs code
Code: official repository Han-Zongbo/TMC at a3272b8746861c76a3461943b5eee51df5b5a8fe, folder TMC ICLR/. The repository's README links this paper README.md. The repository has no LICENSE file, so no code is quoted; citations are path and line only. The repository's ETMC TPAMI/ folder is the code of a different paper (arXiv 2204.11423) and is not used here.
Search: no code link in the paper text or in the arXiv abstract page. GitHub search for "trusted multi-view classification" and "TMC zongbo" returned Han-Zongbo/TMC, whose README cites this paper and gives the first author's address; the owner is treated as the authors' repository.
Discrepancies found:
- Evidence activation. The paper uses ReLU §3.3. The code applies Softplus after the last linear layer model.py. Softplus never gives exactly zero evidence, so the KL term drives evidence towards zero but not to it.
- Network. The paper says "fully connected networks" without depth or width §4.1. For Handwritten the code uses one linear layer per view, from the view's dimension to the class count, followed by Softplus, with no hidden layer model.py train.py.
- Balance factor. The paper says
lambda_t"slowly increases" from 0 to 1 §3.3 app. A.6. The code usesmin(1, epoch / annealing)withannealing = 50model.py train.py, and the epoch starts at 1 train.py. - Regularisation. The paper says an L2 trade-off of 0.0001 §4.1. The code uses Adam with
weight_decay=1e-5train.py. These are not the same quantity. - Learning rate. The paper selects the learning rate by 5-fold CV from a grid §4.1. The code fixes 3e-4 as the default and has no CV code train.py.
- Loss reduction. The paper sums the loss over samples eq. 11. The code averages over the batch model.py. The scale changes the balance against the weight-decay term.
- Normalisation. The paper does not describe feature scaling. The code fits a min-max scaler separately on the training split and on the test split data.py data.py, so test features are scaled with their own minimum and maximum.
- Training length. The paper's loop runs "while not converged" alg. 1. The code runs a fixed 500 epochs with batch size 200 train.py train.py.
- Repeats. The paper reports 30 runs §4.1. The code sets no random seed, so repeated runs are not reproducible from the repository.
- Coverage. The paper reports six datasets and an end-to-end setting §4.1 app. A.6. The repository contains only
handwritten_6views.matand the Handwritten training script data.py. The other datasets and the end-to-end experiment are not in the repository. - Unused loss.
mse_lossis defined but not used in the training path model.py model.py. The paper does not mention it. - Matches. The digamma cross-entropy eq. 8 matches model.py. The KL term eq. 9 matches model.py. Dempster's rule eq. 4 and the conversion back to alpha eq. 6 match model.py. The code folds the views pairwise, which is the same as the chained rule in eq. 5 model.py.
Pitfalls
- Conflict and numerics. The normalising factor
1/(1 - C)diverges when the conflictCapproaches 1 eq. 4. The paper does not say how to handle this, and the code adds no epsilon or clamp model.py. Small combined uncertainty gives a large joint strengthS = K/ueq. 6, which can overflow in float32. - Notation typo. The text says
alpha_i^v = e^i_i + 1§3.3. The index should bee^v_i. - Overclaim. The text says the method "outperforms other methods on all datasets" §4.2. Table 1 shows MCDO best on CUB AUROC and DE best on Caltech101 AUROC tab. 1. The "all datasets" claim holds for accuracy only.
- Inconsistent tables. The "Ours" values differ between the main table and the CCA table: CUB 91.00±0.42 vs 90.83±3.23, PIE 91.99±1.01 vs 91.91±0.11, HMDB 65.26±0.76 vs 65.26±2.52, Handwritten 98.51±0.15 vs 98.51±0.13 tab. 1 tab. 2. The means differ for CUB and PIE. Use the main table and flag this.
- Baseline protocol. Single-view baselines are scored at their best view, which is not the same protocol as the fused comparison that concatenates features §4.2 app. A.7. Compare like with like.
- Hyperparameters not stated. Batch size, epochs, network depth and width, the
lambda_tschedule, and per-dataset learning rates are not in the paper. The code values above are defaults in a script, not the paper's settings. - Noise levels. The noise levels for the multi-view comparison are not in the text, only in fig. 4. Use the code's noise procedure only after checking the script; no such script is in the repository.
- Numbering. Equation, table, figure and appendix numbers were counted from the LaTeX source in source order, not read from a rendered PDF. Float placement could change table and figure numbers in the compiled paper. Where unsure, cite the section.
- Environment. The code hard-codes CUDA:
os.environ["CUDA_VISIBLE_DEVICES"] = "1"train.py and.cuda()calls model.py. - Requirements. The README lists PyTorch 1.3.0 and Python 3 README.md. The code was not run for this card.
Lineage
- Builds on: evidential deep learning and subjective logic, which the paper uses to define the per-view opinions and the loss §1 §3.1 §3.3.
- Compared against: MC dropout (MCDO), deep ensembles (DE), uncertainty-aware attention (UA), evidential deep learning (EDL) §4.1; CCA, DCCA, DCCAE and BCCA app. A.4.
- Extended by: a TPAMI 2022 paper, "Trusted Multi-View Classification with Dynamic Evidential Fusion" (arXiv 2204.11423), named in the repository README README.md. It has no card in this wiki.
Source and license
Adapted from “Trusted Multi-View Classification” by Zongbo Han, Changqing Zhang, Huazhu Fu, Joey Tianyi Zhou (arXiv:2102.02051), used under CC BY 4.0. Changes: condensed and restructured for implementation, with tables, equations and algorithms taken from the paper and its code, each cited to its source. Not affiliated with or endorsed by the authors. Code citations refer to https://github.com/Han-Zongbo/TMC at commit a3272b874686 (none (no LICENSE file in repository)). Any quoted code is shown under that license.