SlowGuess/NeurIPS_2023_OCR huggingface dataset:
$$
\begin{array}{l} = \sum_ {i = 1} ^ {m} p (y = i | x _ {t}) g _ {i, t} ^ {2} \nabla_ {x _ {t}} \left(\log \omega_ {i} + \log p _ {i, t} \left(x _ {t}\right) - \log p _ {M, t} \left(x _ {t}\right)\right) (103) \\ = \sum_ {i = 1} ^ {m} p (y = i | x _ {t}) g _ {i, t} ^ {2} \left(\nabla_ {x _ {t}} \log p _ {i, t} \left(x _ {t}\right) - \nabla_ {x _ {t}} \log p _ {M, t} \left(x _ {t}\right)\right) (104) \\ = \left(\sum_ {i = 1} ^ {m} p (y = i | x _ {t}) g _ {i, t} ^ {2} s _ {i, t} \left(x _ {t}\right)\right) - g _ {M, t} ^ {2} \left(x _ {t}\right) \nabla_ {x _ {t}} \log p _ {M, t} \left(x _ {t}\right). (105) \\ \end{array}
$$
Substituting the last expression in (99), we notice that the term  $g_{M,t}^2 (x_t)\nabla_{x_t}\log p_{M,t}(x_t)$  cancels out, and, after simple algebraic manipulations, we arrive at (20).
D.6 Proof of Theorem A.2
We prove Theorem A.2 in the assumptions of Section D.5. In Section D.5 we established that the mixture diffusion process has the forward SDE
$$
d x _ {t} = f _ {M, t} \left(x _ {t}\right) d t + g _ {M, t} \left(x _ {t}\right) d w _ {t}. \tag {106}
$$
and the backward SDE
$$
d x _ {t} = \left[ f _ {M, t} \left(x _ {t}\right) - \nabla_ {x _ {t}} \left(g _ {M, t} ^ {2} \left(x _ {t}\right)\right) - g _ {M, t} ^ {2} \left(x _ {t}\right) \nabla_ {x _ {t}} \log p _ {M, t} \left(x _ {t}\right) \right] d t + g _ {M, t} \left(x _ {t}\right) d \bar {w} _ {t}. \tag {107}
$$
We apply classifier guidance with classifier  $\widetilde{p}(y_1, \ldots, y_n | x_t)$  to the mixture diffusion process, following Song et al. [34] (see equations (48)-(49) in [34]). The backward SDE of the classifier-guided mixture diffusion is
$$
\begin{array}{l} d x _ {t} = \left[ f _ {M, t} \left(x _ {t}\right) - \nabla_ {x _ {t}} \left(g _ {M, t} ^ {2} \left(x _ {t}\right)\right) - g _ {M, t} ^ {2} \left(x _ {t}\right) \left(\nabla_ {x _ {t}} \log p _ {M, t} \left(x _ {t}\right) + \nabla_ {x _ {t}} \log \widetilde {p} \left(y _ {1}, \dots , y _ {n} \mid x _ {t}\right)\right) \right] d t (108) \\ + g _ {M, t} \left(x _ {t}\right) d \bar {w} _ {t}. (109) \\ \end{array}
$$
Finally, we arrive at (23) by substituting (105) in the above, canceling out the term  $g_{M,t}^2(x_t)\nabla_{x_t}\log p_{M,t}(x_t)$ , and applying simple algebraic manipulations.
E Implementation Details
E.1 Classifier Guidance in GFlowNets
Classifier guidance in GFlowNets (14) is realized through modification of the base forward policy via the multiplication by the ratio of the classifier outputs  $p(y|s') / p(y|s)$ . The ground truth (theoretically optimal) non-terminal state classifier  $p(y|s)$  by Proposition 5.2 satisfies (13) which ensures that the guided policy (14) is valid, i.e. for any state  $s \in S$
$$
\begin{array}{l} \sum_ {s ^ {\prime}: (s \rightarrow s ^ {\prime}) \in \mathcal {A}} p _ {F} \left(s ^ {\prime} \mid s, y\right) = \sum_ {s ^ {\prime}: (s \rightarrow s ^ {\prime}) \in \mathcal {A}} p _ {F} \left(s ^ {\prime} \mid s\right) \frac {p \left(y \mid s ^ {\prime}\right)}{p \left(y \mid s\right)} (110) \\ = \frac {1}{p (y \mid s)} \underbrace {\sum_ {s ^ {\prime} : \left(s \rightarrow s ^ {\prime}\right) \in \mathcal {A}} p _ {F} \left(s ^ {\prime} \mid s\right) p \left(y \mid s ^ {\prime}\right)} _ {= p (y \mid s) \text {b y P r o p o s i t i o n 5 . 2}} = 1. (111) \\ \end{array}
$$
In practice, the ground truth values of  $p(y|s)$  are unavailable. Instead, an approximation  $Q_{\phi}(y|s) \approx p(y|s)$  is learned. Equation (13) might not hold for the learned classifier  $Q_{\phi}$ , but we still wish to use  $\widetilde{Q}_{\phi}$  for classifier guidance in practice. In order to ensure that the classifier-guided policy is valid in practice even when the approximation  $Q_{\phi}(y|s)$  of the classifier  $p(y|s)$  is used, we implement guidance as described below.
First, we express the guided policy (14) in terms of log-probabilities:
$$
\log p _ {F} \left(s ^ {\prime} \mid s, y\right) = \log p _ {F} \left(s ^ {\prime} \mid s\right) + \log p \left(y \mid s ^ {\prime}\right) - \log p (y \mid s). \tag {112}
$$
Parameterizing distributions through log-probabilities is common practice in probabilistic modeling: GFlowNet forward policies [36, 58] and probabilistic classifiers are typically parameterized by deep neural networks that output logits (unnormized log-probabilities).
Second, in the log-probability parameterization the guided policy (14) can be equivalently expressed as
$$
\begin{array}{l} \left. p _ {F} \left(s ^ {\prime} \mid s, y\right) = \left[ \operatorname {s o f t m a x} \left(\log p _ {F} (\cdot \mid s) + \log p (y \mid \cdot) - \log p (y \mid s)\right) \right] _ {s ^ {\prime}} \right. (113) \\ = \frac {\exp \left(\log p _ {F} \left(s ^ {\prime} \mid s\right) + \log p (y \mid s ^ {\prime}) - \log p (y \mid s)\right)}{\sum_ {s ^ {\prime \prime} : (s \rightarrow s ^ {\prime \prime}) \in A} \exp \left(\log p _ {F} \left(s ^ {\prime \prime} \mid s\right) + \log p (y \mid s ^ {\prime \prime}) - \log p (y \mid s)\right)}. (114) \\ \end{array}
$$
In theory, the softmax operation can be replaced with simple exponentiation, i.e. the numerator in (114) is sufficient on its own since Proposition 5.2 ensures that the sum in the denominator equals to 1. However, using the softmax is beneficial in practice when we substitute learned classifier  $Q_{\phi}(y|s)$  instead of the ground truth classifier  $p(y|s)$ . Indeed when  $Q_{\phi}(y|s)$  does not satisfy (13), the softmax operation ensures that the guided policy
$$
\left. p _ {F} \left(s ^ {\prime} \mid s, y\right) = \left[ \operatorname {s o f t m a x} \left(\log p _ {F} (\cdot \mid s) + \log Q _ {\phi} (y \mid \cdot) - \log Q _ {\phi} (y \mid s)\right) \right] _ {s ^ {\prime}} \right. \tag {115}
$$
is valid (i.e. probabilities sum up to 1 over  $s'$ ). The fact the softmax expression is valid in theory ensures that policy (115) guided by  $Q_{\phi}(y|s)$  approaches the ground truth policy (guided by  $p(y|s)$ ) as  $Q_{\phi}(y|s)$  approaches  $p(y|s)$  throughout training.
F.1 2D Distributions with GFlowNets
The base GFlowNet forward policies  $p_{i,F}(s'|s;\theta)$  were parameterized as MLPs with 2 hidden layers and 256 units in each hidden layer. The cell coordinates of a state  $s$  on the  $2\mathrm{D}32\times 32$  grid were one-hot encoded. The dimensionality of the input was  $2\cdot 32$ . The outputs of the forward policy network were the logits of the softmax distribution over 3 action choices: 1) move down; 2) move right; 3) stop.
We trained base GFlowNets with the trajectory balance loss [58]. We fixed the uniform backward policy in the trajectory balance objective. We used Adam optimizer [59] with learning rate 0.001, and pre-train the base models for 20000 steps with batch size 16 (16 trajectories per batch). The log of the total flow  $\log Z_{\theta}$  was optimized with Adam with a learning rate 0.1. In order to promote exploration in trajectory sampling for the trajectory balance objective, we used the sampling policy which takes random actions (uniformly) with probability 0.05 but, otherwise, follows the current learned forward policy.
The classifier was parameterized as MLP with 2 hidden layers and 256 units in each hidden layer. The inputs to the classifier were one-hot encoded cell coordinates, terminal state flag  $(\{0,1\})$ , and  $\log^{(\alpha /(1 - \alpha))}$  (in the case of parameterized operations). The classifier outputs were the logits of the joint label distribution  $\widetilde{Q}_{\phi}(y_1,\ldots ,y_n|s)$  for non-terminal states  $s$  and the logits of the marginal label distribution  $\widetilde{Q}_{\phi}(y_1|x)$  for terminal states  $x$ .
We trained the classifier with the loss described in Section 5.2. We used Adam with learning rate 0.001. We performed 15 000 training steps with batch size 64 (64 trajectories sampled from each of the base models per training step). We updated the target network parameters  $\overline{\phi}$  as the exponential moving average (EMA) of  $\phi$  with the smoothing factor 0.995. We linearly increased the weight  $\gamma$  (step) of the non-terminal state loss from 0 to 1 throughout the first 3 000 steps and kept constant  $\gamma = 1$  afterward. For the  $\alpha$ -parameterized version of the classifier (Section B), we used the following sampling scheme for  $\alpha$ :  $\hat{z} \sim U[-3.5, 3.5]$ ,  $\hat{\alpha} = \frac{1}{1 + \exp(-\hat{z})}$ .
Quantitative evaluation. For each of the composite distributions shown in Figure 2 we evaluated the L1-distance  $L_{1}(p_{\mathrm{method}}, p_{\mathrm{GT}}) = \sum_{x \in \mathcal{X}} |p_{\mathrm{method}}(x) - p_{\mathrm{GT}}(x)|$  between the distribution  $p_{\mathrm{method}}$  induced by the classifier-guided policy and the ground-truth composition distribution  $p_{\mathrm{GT}}$  computed from the known base model probabilities  $p_{i}$ . The evaluation results are presented below.
Figure 2 top row.  $p_1 \otimes p_2 \colon L_1 = 0.071$ ;  $p_1 \oplus p_2 \colon L_1 = 0.086$ ;  $p_1 \oplus_{0.95} p_2 \colon L_1 = 0.167$ .
Figure 2 bottom row.  $\widetilde{p}(x|y_1 = 1, y_2 = 2)$ :  $L_1 = 0.076$ ;  $\widetilde{p}(x|y_1 = 1, y_2 = 2, y_3 = 3)$ :  $L_1 = 0.087$ ;  $\widetilde{p}(x|y_1 = 2, y_2 = 2)$ :  $L_1 = 0.112$ ;  $\widetilde{p}(x|y_1 = 2, y_2 = 2, y_3 = 2)$ :  $L_1 = 0.122$ .
Figure G.6 shows the distance between the composition and the ground truth as a function of the number of training steps for the classifier as well as the terminal and non-terminal classifier learning curves.
F.2 Molecule Generation
**Domain.** In the molecule generation task [36], the objects  $x \in \mathcal{X}$  are molecular graphs. The non-terminal states  $s \in S \setminus \mathcal{X}$  are incomplete molecular graphs. The transitions from a given non-terminal state  $s$  are of two types: 1) fragment addition  $s \to s'$ : new molecular graph  $s'$  is obtained by attaching a new fragment to the molecular graph  $s$ ; 2) stop action  $s \to x$ : if  $s \neq s_0$ , then the generation process can be terminated at the molecular graph corresponding to the current state (note that new terminal state  $x \in \mathcal{X}$  is different from  $s \in S \setminus \mathcal{X}$ , but both states correspond to the same molecular graph).
Rewards. We trained GFlowNets using 3 reward functions: SEH, a reward computed by an MPNN [60] that was trained by Bengio et al. [36] to estimate the binding energy of a molecule to the soluble epoxide hydrolase protein; SA, an estimate of synthetic accessibility [61] computed with tools from RDKit library [62]; QED, a quantitative estimate of drug-likeness [63] which is also computed with RDKit. We normalized all reward functions to the range [0, 1]. Higher values of SEH, SA, and QED correspond to stronger binding, higher synthetic accessibility, and higher drug-likeness respectively. Following Bengio et al. [36], we introduced the parameter  $\beta$  which controls the sharpness (temperature) of the target distribution:  $p(x)\propto R(x)^{\beta}$ , increasing  $\beta$  results in a distribution skewed towards high-reward objects. We experimented with two  $\beta$  values, 32 and 96 (Figure 3(a),3(d)).
Reward normalization. We used the following normalization rules for SEH, SA, and QED rewards in the molecule domain.
-  $\mathrm{SEH} = \mathrm{SEH}_{\mathrm{raw}} / 8$
SA = 10-SAraw;
- QED = QEDraw.
Training and evaluation. After training the base GFlowNets with the reward functions described above, we trained classifiers with Algorithm A.1. The classifier was parameterized as a graph neural network based on a graph transformer architecture [64]. Compared to the 2D grid domain (Section 6, "2D distributions via GFlowNet"), we can not directly evaluate the distributions obtained by our approach. Instead, we analyzed the samples generated by the composed distributions. We sampled 5000 molecules from each composed distribution obtained with our approach as well as the base GFlowNets. We evaluated the sample collections with the two following strategies. Reward evaluation (Figure 3, Table 1) we analyzed the distributions of rewards across the sample collections. The goal is to see whether the composition of GFlowNets trained for different rewards leads to noticeable changes in reward distribution. Distribution distance evaluation (Figure 4, Table G.5): we used the samples to estimate the pairwise distances between the distributions. Specifically, for a given pair of distributions represented by two collections of samples  $D_A = \{x_{A,i}\}_{i=1}^n$ ,  $D_B = \{x_{B,i}\}_{i=1}^n$  we computed the earth mover's distance  $d(D_A, D_B)$  with ground molecule distance given by  $d(x,x') = (\max\{s(x,x'), 10^{-3}\})^{-1} - 1$ , where  $s(x,x') \in [0,1]$  is the Tanimoto similarity over Morgan fingerprints of molecules  $x$  and  $x'$ .
Training details and hyperparameters. The base GFlowNet policies were parameterized as graph neural networks with Graph Transformer architecture [64]. We used 6 transformer layers with an embedding of size 128. The input to the Graph Transformer was the graph of fragments with node attributes describing fragments and edge attributes describing attachment points of the edges.
The base GFlowNets were trained with trajectory balance loss. We used Adam optimizer. For the policy network  $p_F(s'|s;\theta)$ , we set the initial learning rate 0.0005 and exponentially decayed with the factor  $2^{\mathrm{step} / 20000}$ . For the log of the total flow  $\log Z_{\theta}$  we set the initial learning rate 0.0005 and
exponentially decayed with the factor  $2^{\text{step}/50000}$ . We trained the base GFlowNets for 15 000 steps with batch size 64 (64 trajectories per batch). In order to promote exploration in trajectory sampling for the trajectory balance objective, we used the sampling policy which takes random actions (uniformly) with probability 0.1 but, otherwise, follows the current learned forward policy.
The classifier was parameterized as a graph neural network with Graph Transformer architecture. We used 4 transformer layers with embedding size 128. The inputs to the classifier were the fragment graph, terminal state flag ( $\{0,1\}$ ), and  $\log^{(\alpha/(1-\alpha))}$  (in case of parameterized operations). The classifier outputs were the logits of the joint label distribution  $\widetilde{Q}_{\phi}(y_1,\ldots,y_n|s)$  for non-terminal states  $s$  and the logits of the marginal label distribution  $\widetilde{Q}_{\phi}(y_1|x)$  for terminal states  $x$ .
We trained the classifier with the loss described in Section 5.2. We used Adam with learning rate 0.001. We performed 15 000 training steps with batch size 8 (8 trajectories sampled from each of the base models per training step). We updated the target network parameters  $\overline{\phi}$  as the exponential moving average (EMA) of  $\phi$  with the smoothing factor 0.995. We linearly increased the weight  $\gamma$  (step) of the non-terminal state loss from 0 to 1 throughout the first 4 000 steps and kept constant  $\gamma = 1$  afterward. For the  $\alpha$ -parameterized version of the classifier (Section B), we used the following sampling scheme for  $\alpha$ :  $\hat{z} \sim U[-5.5, 5.5]$ ,  $\hat{\alpha} = \frac{1}{1 + \exp(-\hat{z})}$ .
F.3 Colored MNIST Generation via Diffusion Models
The colored MNIST experiment in Section 6 ("Colored MNIST generation via diffusion models") follows the method for composing diffusion models introduced in Appendix A.2. The three base diffusion models were trained on colored MNIST digits generated from the original MNIST dataset. These colored digits were created by mapping MNIST images from their grayscale representation to either the red or green channel, leaving the other channels set to 0. For Figure 5 we post-processed the red and green images generated by the base models and compositions into beige and cyan respectively, which are more accessible colors for colorblind people.
Models, training details, and hyperparameters. The base diffusion models were defined as VE SDEs [34]. Their score models were U-Net [65] networks consisting of 4 convolutional layers with 64, 128, 256, and 256 channels and 4 matching transposed convolutional layers. Time was encoded using 256-dimensional Gaussian random features [66]. The score model was trained using Adam optimizer [59] with a learning rate decreasing exponentially from  $10^{-2}$  to  $10^{-4}$ . We performed 200 training steps with batch size 32.
The first classifier  $\widetilde{Q}(y_1, y_2 | x_t)$  was a convolutional network consisting of 2 convolutional layers with 64 and 96 channels and three hidden layers with 512, 256 and 256 units. This classifier is time-dependent and used 128-dimensional Gaussian random features to embed the time. The output was a  $3 \times 3$  matrix encoding the predicted log-probabilities. The classifier was trained on trajectories sampled from the reverse SDE of the base diffusion models using the AdaDelta optimizer [67] with a learning rate of 1.0. We performed 700 training steps with batch size 128. For the first 100 training steps the classifier was only trained on terminal samples.
The second conditional classifier  $\widetilde{Q}(y_3 | y_1, y_2, x_t)$  was a similar convolutional network with 2 convolutional layers with 64 channels and two hidden layers with 256 units. This classifier is conditioned both on time and on  $(y_1, y_2)$ . The time variable was embedded used 128-dimensional Gaussian random features. The  $(y_1, y_2)$  variables were encoded using a 1-hot encoding scheme. The output of the classifier was the three predicted log-probabilities for  $y_3$ . Contrary to the first classifier, this one was not trained on the base diffusion models but rather on samples from the posterior  $\widetilde{p}(x | y_1, y_2)$ . It's loss function was:
$$
\mathcal {L} _ {c} (\phi) = \underset {(\hat {x} _ {0}, \hat {x} _ {t}, \hat {y} _ {2}, \hat {y} _ {1}, t) \sim \widetilde {p} (x _ {0}, x _ {t} | y _ {1}, y _ {2}) \widetilde {p} (y _ {1}) \widetilde {p} (y _ {2}) p (t)} {\mathbb {E}} \left[ \sum_ {\hat {y} _ {3} = 1} ^ {m} - w _ {\hat {y} _ {3}} (\hat {x} _ {0}) \log \tilde {Q} _ {\phi} (\hat {y} _ {3} | \hat {y} _ {1}, \hat {y} _ {2}, \hat {x} _ {t}) \right] \tag {116}
$$
where  $w_{\hat{y}_3}(\hat{x}_0)$  is estimated using the first classifier. The classifier was trained using the AdaDelta optimizer [67] with a learning rate of 0.1. We performed 200 training steps with batch size 128.
Sampling. Sampling from both the individual base models and the composition was done using the Predictor-Corrector sampler [34]. We performed sampling over 500 time steps to generate the
(c)  $p_1\otimes p_2$
Figure G.1: Diffusion model composition on colored MNIST. (a,b) samples from base diffusion models. (c-e) samples from the resulting harmonic mean and contrast compositions.
samples shown in Figure 5. The samples used to train the classifier were generated using the same method.
When sampling from the composition we found that using scaling for the classifier guidance was generally necessary to achieve high-quality results. Without scaling, the norm of the gradient over the first and second classifier was too small relative to the gradient predicted by the score function, and hence did not sufficiently steer the mixture towards samples from the posterior. Experimentally, we found that scaling factor 10 for the first classifier and scaling factor 75 for the second produced high quality results.
G Additional Results
G.1 Binary Operations for MNIST Digit Generation via Diffusion Models
Here we present a variant of the colored digit generation experiment from Section 6 ("Colored MNIST generation via diffusion models"). using 2 diffusion models. This allows us to better illustrate the harmonic mean and contrast operations on this image domain. In a similar fashion to the experiment in Section 6 ("Colored MNIST generation via diffusion models"), we trained two diffusion models to generate colored MNIST digits.  $p_1$  was trained to generate red and green 0 digits and  $p_2$  was trained to generate green 0 and 1 digits. As before, we used post-processing to map green to cyan and red to beige.
Implementation details. The diffusion models used in this experiment and their training procedure were exactly the same as in Section F.3. The sampling method used to obtain samples from the base models and their compositions was also the same. We found that scaling the classifier guidance was generally required for high-quality results, and used a scaling factor of 20 in this experiment.
The classifier was a convolutional network with 2 convolutional layers consisting of 32 and 64 channels and two hidden layers with 512 and 128 units. The classifier's time input was embedded using 128-dimensional Gaussian random features. The output was a  $2 \times 2$  matrix encoding the predicted log-probabilities  $\widetilde{Q}(y_1, y_2 \mid x_t)$ . The classifier was trained on trajectories, sampled from the reverse SDE of the base diffusion models, using the AdaDelta optimizer [67] with a learning rate of 0.1 and a decay rate of 0.97. We performed 200 training steps with batch size 128. For the first 100 training steps, the classifier was only trained on terminal samples.
Results. Figure G.1 shows samples obtained from the two trained diffusion models  $p_1$ ,  $p_2$  and from the harmonic mean and contrast compositions of these models. We observe that the harmonic mean generates only cyan zero digits, because this is the only type of digit on which both  $p_1$  and  $p_2$  have high density. The contrast  $p_1 \oplus p_2$  generates beige zero digits from  $p_1$ . However, unlike  $p_1$ , it does not generate cyan zero digits, as  $p_2$  has high density there. The story is similar for  $p_1 \oplus p_2$ , which generates cyan one digits from  $p_2$ , but not zero digits due to  $p_1$  having high density over those.
G.2 MNIST Subset Generation via Diffusion Models
We report in this section on additional results for composing diffusion models on the standard MNIST dataset. We trained two diffusion models:  $p_{\{0,\dots,5\}}$  was trained to generate MNIST digits 0 through 5,
(a)  $p_{\{0,\dots ,5\}}$
(b)  $p_{\{4,\dots ,9\}}$
Figure G.2: Diffusion model composition on MNIST. (a,b) samples from base diffusion models. (c-e) samples from the resulting harmonic mean and contrast compositions.
(c)  $p_{\{0,\dots ,5\}}\otimes p_{\{4,\dots ,9\}}$
(d)  $p_{\{0,\dots ,5\}}\bullet p_{\{4,\dots ,9\}}$
(e)  $p_{\{0,\dots ,5\}}\bullet p_{\{4,\dots ,9\}}$
and  $p_{\{4,\dots,9\}}$  to generate MNIST digits 4 through 9. The training procedure and models used in this experiment were the same as in Section G.1.
Figure G.2 shows samples obtained from the two diffusion models, from the harmonic mean, and from the contrast compositions of these models. We observe that the harmonic mean correctly generates mostly images on which both diffusion models' sampling distributions have high probability, i.e. digits 4 and 5. For the contrasts we see that in both cases digits are generated that have high probability under one model but low probability under the other. We observe some errors, namely some 9's being generated by the harmonic mean and some 4's being generated by the contrast  $p_{\{0,\dots,5\}} \odot p_{\{4,\dots,9\}}$ . This is likely because 4 and 9 are visually similar, causing the guiding classifier to misclassify them, and generate them under the wrong composition.
We also present binary operations between three distributions. In Figure G.3 and G.4,  $p_0$  models even digits,  $p_1$  models odd digits, and  $p_2$  models digits that are divisible by 3. We color digits {0,6} purple, {3,9} blue, {4,8} orange, and {1,5,7} beige. In Figure G.3, harmonic mean of  $p_0$  and  $p_2$  generates the digit 0 and 6, whereas the contrast of  $p_0$  with  $p_2$  shows even digits non-divisible by 3  $(p_0 \oplus p_2 = \{4,8\})$ , and odd numbers that are divisible by 3  $(p_0 \oplus p_2 = \{3,9\})$ . We observe that the samples from  $p_0 \otimes p_2$  inherit artifacts from the base generator for  $p_2$  (the thin digit 0), which shows the impact that the base models have on the composite distribution. In Figure G.4 we present similar results between odd digits (\{5,3,5,7,9\}). We noticed that samples from both  $p_1 \oplus p_2$  and  $p_1 \oplus p_2$  includes a small number of the digit 3.