tr()虽然可以计算 但是计算成本时非常高的尤其是在变量 x 很高维或者神经网络层次很深的时候 通常是无法接受的。针对这个情况一般有两种解决方法 分层分数匹配Sliced score matching和降噪分数匹配Denoising score matching。好的这是您提供的文本的 Markdown 版本。分层分数匹配 (Sliced Score Matching)分层匹配使用一个随机投影矩阵可以近似计算tr(∇ₓ s_θ(x))改变后的目标函数为(4.1.57)EpvEpdata(x)[vT∇xsθ(x)v12∥sθ(x)∥22] \mathbb{E}_{p_v} \mathbb{E}_{p_{data}(x)} \left[ v^T \nabla_x s_{\theta}(x) v \frac{1}{2} \| s_{\theta}(x) \|_2^2 \right]EpvEpdata(x)[vT∇xsθ(x)v21∥sθ(x)∥22]其中pvp_vpv是一个简单的随机向量即可比如多元正态分布。其中vT∇xsθ(x)vv^T \nabla_x s_{\theta}(x) vvT∇xsθ(x)v可以直接利用正向模式的自动微分计算但是仍然要四倍的计算量。降噪分数匹配 (Denoising Score Matching)另一种解决分数匹配的方法是降噪分数匹配 (Denoising Score Matching)它是分数匹配算法的一个变种它可以完全避开tr(∇ₓ s_θ(x))的计算。首先在观测数据xxx上添加一些预先设定好的噪声数据得到了新的数据x~\tilde{x}x~这相当于构建了一条件概率分布qσ(x~∣x)q_{\sigma}(\tilde{x}|x)qσ(x~∣x)根据边际化方法边缘分布qσ(x~)q_{\sigma}(\tilde{x})qσ(x~)的计算方法为(4.1.58)qσ(x~)≜∫qσ(x~∣x)pdata(x)dx q_{\sigma}(\tilde{x}) \triangleq \int q_{\sigma}(\tilde{x}|x) p_{data}(x) dxqσ(x~)≜∫qσ(x~∣x)pdata(x)dx然后把分数匹配算法应用在这个加噪后的数据分布上(4.1.59)12Eqσ(x~∣x)[∥sθ(x~)−∇x~logqσ(x~∣x)∥22]12Eqσ(x~∣x)pdata(x)[∥sθ(x~)−∇x~logqσ(x~∣x)∥22] \begin{aligned} \frac{1}{2} \mathbb{E}_{q_{\sigma}(\tilde{x}|x)} [ \| s_{\theta}(\tilde{x}) - \nabla_{\tilde{x}} \log q_{\sigma}(\tilde{x}|x) \|_2^2 ] \\ \frac{1}{2} \mathbb{E}_{q_{\sigma}(\tilde{x}|x)p_{data}(x)} [ \| s_{\theta}(\tilde{x}) - \nabla_{\tilde{x}} \log q_{\sigma}(\tilde{x}|x) \|_2^2 ] \end{aligned}21Eqσ(x~∣x)[∥sθ(x~)−∇x~logqσ(x~∣x)∥22]21Eqσ(x~∣x)pdata(x)[∥sθ(x~)−∇x~logqσ(x~∣x)∥22]这么做的一个前提是如果添加的噪声足够小那么qσ(x~)≈pdata(x)q_{\sigma}(\tilde{x}) \approx p_{data}(x)qσ(x~)≈pdata(x)成立此时有∇x~logqσ(x~)≈∇xlogpdata(x)\nabla_{\tilde{x}} \log q_{\sigma}(\tilde{x}) \approx \nabla_x \log p_{data}(x)∇x~logqσ(x~)≈∇xlogpdata(x)成立这时我们可以用分数匹配算法估计出qσ(x~)q_{\sigma}(\tilde{x})qσ(x~)的分数∇x~logqσ(x~)\nabla_{\tilde{x}} \log q_{\sigma}(\tilde{x})∇x~logqσ(x~)并用它近似表示原数据分布pdata(x)p_{data}(x)pdata(x)的分数。
分数匹配算法(Score Matching)的目标函数“散度+模”计算量大,两种解决方法, 分层分数匹配和降噪分数匹配
tr()虽然可以计算 但是计算成本时非常高的尤其是在变量 x 很高维或者神经网络层次很深的时候 通常是无法接受的。针对这个情况一般有两种解决方法 分层分数匹配Sliced score matching和降噪分数匹配Denoising score matching。好的这是您提供的文本的 Markdown 版本。分层分数匹配 (Sliced Score Matching)分层匹配使用一个随机投影矩阵可以近似计算tr(∇ₓ s_θ(x))改变后的目标函数为(4.1.57)EpvEpdata(x)[vT∇xsθ(x)v12∥sθ(x)∥22] \mathbb{E}_{p_v} \mathbb{E}_{p_{data}(x)} \left[ v^T \nabla_x s_{\theta}(x) v \frac{1}{2} \| s_{\theta}(x) \|_2^2 \right]EpvEpdata(x)[vT∇xsθ(x)v21∥sθ(x)∥22]其中pvp_vpv是一个简单的随机向量即可比如多元正态分布。其中vT∇xsθ(x)vv^T \nabla_x s_{\theta}(x) vvT∇xsθ(x)v可以直接利用正向模式的自动微分计算但是仍然要四倍的计算量。降噪分数匹配 (Denoising Score Matching)另一种解决分数匹配的方法是降噪分数匹配 (Denoising Score Matching)它是分数匹配算法的一个变种它可以完全避开tr(∇ₓ s_θ(x))的计算。首先在观测数据xxx上添加一些预先设定好的噪声数据得到了新的数据x~\tilde{x}x~这相当于构建了一条件概率分布qσ(x~∣x)q_{\sigma}(\tilde{x}|x)qσ(x~∣x)根据边际化方法边缘分布qσ(x~)q_{\sigma}(\tilde{x})qσ(x~)的计算方法为(4.1.58)qσ(x~)≜∫qσ(x~∣x)pdata(x)dx q_{\sigma}(\tilde{x}) \triangleq \int q_{\sigma}(\tilde{x}|x) p_{data}(x) dxqσ(x~)≜∫qσ(x~∣x)pdata(x)dx然后把分数匹配算法应用在这个加噪后的数据分布上(4.1.59)12Eqσ(x~∣x)[∥sθ(x~)−∇x~logqσ(x~∣x)∥22]12Eqσ(x~∣x)pdata(x)[∥sθ(x~)−∇x~logqσ(x~∣x)∥22] \begin{aligned} \frac{1}{2} \mathbb{E}_{q_{\sigma}(\tilde{x}|x)} [ \| s_{\theta}(\tilde{x}) - \nabla_{\tilde{x}} \log q_{\sigma}(\tilde{x}|x) \|_2^2 ] \\ \frac{1}{2} \mathbb{E}_{q_{\sigma}(\tilde{x}|x)p_{data}(x)} [ \| s_{\theta}(\tilde{x}) - \nabla_{\tilde{x}} \log q_{\sigma}(\tilde{x}|x) \|_2^2 ] \end{aligned}21Eqσ(x~∣x)[∥sθ(x~)−∇x~logqσ(x~∣x)∥22]21Eqσ(x~∣x)pdata(x)[∥sθ(x~)−∇x~logqσ(x~∣x)∥22]这么做的一个前提是如果添加的噪声足够小那么qσ(x~)≈pdata(x)q_{\sigma}(\tilde{x}) \approx p_{data}(x)qσ(x~)≈pdata(x)成立此时有∇x~logqσ(x~)≈∇xlogpdata(x)\nabla_{\tilde{x}} \log q_{\sigma}(\tilde{x}) \approx \nabla_x \log p_{data}(x)∇x~logqσ(x~)≈∇xlogpdata(x)成立这时我们可以用分数匹配算法估计出qσ(x~)q_{\sigma}(\tilde{x})qσ(x~)的分数∇x~logqσ(x~)\nabla_{\tilde{x}} \log q_{\sigma}(\tilde{x})∇x~logqσ(x~)并用它近似表示原数据分布pdata(x)p_{data}(x)pdata(x)的分数。