## 2 Method
### Feature Mapping Network
According to the bias-variance tradeoff theory, reducing the variance error will, in effect, give a high bias model as the model's error decomposes into bias and variance errors. Therefore, adding variant targets for the same input encourages the network's output to be a smooth function of the input. To feed the regressors with different target outputs for the same latent representation, we pair the features of each example with \(m\) examples of the same class. We experimented with different values for \(m\), but we found that pairing each example with all other examples of the same class (\(m=|D_{k}|\)) gives better results. The pairing algorithm can be described as getting the Cartesian Product for each set of samples \(D_{k}\) belonging to the same class with itself. Identical ordered pairs are excluded. \[T_{CP}=D_{k}\times D_{k}=\{(a,\ b)\ |\ a\in D_{k}\ and\ b\in\{D_{k}-\{a\}\}\}\ \forall\ k\in K \tag{5}\]  
As described in Algorithm 1, we do the Cartesian product of each class \(k\) set of samples by pairing each sample with all other samples of the same class \(k\), such that if we have \(m\) examples in a class, we end up having \(m\times(m-1)\) samples per class in the Cartesian product set \(T_{CP}\). We form two sets \(T_{1}\) and \(T_{2}\) from the ordered pairs of the Cartesian product set \(T_{CP}\) such that \(T_{1}=\{a_{i}\}\), \(i=0,\ 1,\dots,\ m\) and \(T_{2}=\{b_{j}\}\), \(j=0,\ 1,\dots,\ m\) and \(i\
eq j\), i.e., we form two sets, \(T_{1}\) for the first elements and \(T_{2}\) for the second elements of the ordered pairs. The pairing algorithm is applied to the training set \(D^{Tr}\) where we group the training samples by labels \(\mathcal{L}_{\text{Tr}}\), and results in two sets \(T_{\text{r1}}\) and \(T_{\text{r2}}\) (ground truth training set for the feature mapping network) with repeated examples in each, where \(|T_{\text{r1}}|=|T_{\text{r2}}|=m\times(m-1)\times K\). ```
1:\(D^{Tr}\), \(\mathcal{L}_{\text{Tr}}\), \(K\)
2:\(Group\ D^{Tr}\) by \(\mathcal{L}_{\text{Tr}}\)
3:\(Tr_{1}\leftarrow[\ ]\), \(T_{2}\leftarrow[\ ]\), \(\mathcal{L}_{\text{Tr1}}\leftarrow[\ ]\), \(\mathcal{L}_{\text{Tr2}}\leftarrow[\ ]\)
4:\(st=0\)
5:for\(k\gets 0\) to \(K-1\)do
6:\(m\gets getClassLength(k)\)
7:for\(i\gets 0\) to \(m\)do
8:for\(j\gets 0\) to \(m\), \(j\
eq i\)do
9: append \(D^{Tr}_{[st+i]}\) to \(T_{\text{r1}}\)
10: append \(D^{Tr}_{[st+j]}\) to \(T_{\text{r2}}\)
11: append \(\mathcal{L}_{\text{Tr}[st+i]}\) to \(\mathcal{L}_{\text{Tr1}}\)
12: append \(\mathcal{L}_{\text{Tr}[st+j]}\) to \(\mathcal{L}_{\text{Tr2}}\)
13:end
14:\(st=st+m\)
15:end
16:end
17:end
18:end
```  
**Algorithm 1** The Pairing Algorithm. After we have our two training sets (\(T_{T1},\ T_{T2}\)) from the pairing algorithm, we extract the features \(Z_{1}\) and \(Z_{2}\) (ground truth latent features) for the two sets \(T_{T1}\) and \(T_{T2}\) using our trained autoencoder \(AE\) from the previous module. For the mapping network, we train a set of MLP regressors \(\left\{MLP_{1},\ MLP_{2},\ \dots,\ MLP_{N_{f}}\right\}\) where \(N_{f}\) is the number of embedded features \(|Z_{2}|\), such that each MLP regressor corresponds to one latent feature \(z_{2,\ i}^{s}\) of the \(N_{f}\) features in \(Z_{2}\), and we use \(Z_{1,\ i}\) as the same input for all MLP regressors. We can either train the \(N_{f}\) MLP regressors serially or in parallel as they correspond to independent outputs, so we choose to train them in parallel to speed up the training process.