The SVGD method [1]} iteratively moves forward an empirical distribution given by an ensemble \(\lbrace {\theta }^{[i]}_t\rbrace _{i = 1}^N\)  from time \(t\)  to time \(t + \delta \)  via a map \({\phi }_t({\theta }) = {\theta }- \delta {g}_t({\theta })\) , where \(\delta \)  is a step size and \({g}_t : \Theta \rightarrow {\mathbb {R}}^d\)  is a vector field. SVGD chooses \({g}_t\)  from a vector-valued reproducing kernel Hilbert space (RKHS) \(\mathcal {H}^d\)  with kernel \(K: {\mathbb {R}}^d \times {\mathbb {R}}^d \rightarrow {\mathbb {R}}\)  via a functional gradient descent step on the KL divergence (cf. (REF ) in Appendix ). Denote the distribution of the particles at time \(t\)  as \(\mu _t\)  and define the functional \(J_t({g}) = \operatorname{KL}((I - {g})_{\#} \mu _t || \eta )\) , where \((I - {g})_{\#}\mu _t\)  denotes the pushfoward measure. Then, SVGD chooses the gradient by setting \({g}_t = \nabla J_t(0)\) , where 0 is the zero function. Using the RKHS formulation, there is a closed form expression for \(\nabla J_t({0})\) , so that during the gradient descent the particles evolve according to the ordinary differential equation (ODE)
\(\dot{{\theta }}^{[i]}_t= -\nabla J_t({0}) \left({\theta }^{[i]}_t \right)= \mathbb {E}_{{\theta }^{\prime } \sim \mu _t}\left[ K({\theta }^{\prime }, {\theta }^{[i]}_t)\nabla \log \eta ({\theta }^{\prime }) + \nabla _1 K({\theta }^{\prime }, {\theta }^{[i]}_t) \right] \, ,\) 
