@@ -186,31 +186,66 @@ SNE算法中还有一个细节是关于高维空间中以点$x_i$为中心的正
186186
187187SNE算法的思路是不错的,但是它的可视化效果大家也看到了,存在很大改进空间。如何改进它呢?我们一步一步来,先看看如何解决SNE中的不对称问题。
188188
189- ## 对称SNE
189+ ## 对称SNE (Symmetric SNE)
190190
191- 在原始的SNE中,$p _ {i\mid j}$与 $p_ {j\mid i}$是不相等的,低维空间中 $q_ {i\mid j}$与 $q_ {j\mid i}$ 也是不相等的。所以如果能得出一个更加通用的联合概率分布更加合理,即分别在高维和低维空间构造联合概率分布$P$和$Q$,使得对任意$i,j$,均有$p _ {ij}=p _ {ji},q _ {ij}=q _ {ji}$ 。
191+ 在原始的SNE中,衡量数据点相似度使用的是条件概率。由于每个数据点所在区域的数据密度不同,原版SNE为每个点 $x_i$ 分配了不同的高斯方差 $\sigma_i$。因此,高维空间中的 $p _ {j|i}$ 与 $p_ {i|j}$ 通常是不相等的;同理,低维空间中的 $q_ {j|i}$ 与 $q_ {i|j}$ 也是不相等的。这种不对称性不仅使得代价函数的梯度形式十分复杂,也增加了优化的难度 。
192192
193- 在低维空间中,我们可以这样定义$ q_ {ij}$:
193+ 如果能得出一个更加通用的联合概率分布,模型会更加合理:即分别在高维和低维空间构造联合概率分布 $P$ 和 $Q$,使得对任意 $i,j$,均有 $p _ {ij}=p _ {ji}$ 和 $ q_ {ij}=q _ {ji}$。同时, ** 必须引入一个严格的边界条件:设定 $p _ {ii} = 0$ 且 $q _ {ii} = 0$ ** ,即排除数据点与自身的相似度计算。
194194
195- $$ q_{ij}=\frac{\exp (-\left \| y_i-y_j \right \|^2)}{\sum_{k \neq l}\exp (-\left \| y_k-y_l \right \|^2)} $$
195+ 在低维空间中,我们可以这样定义联合概率 $ q_ {ij}$:
196196
197- 在高维空间呢?是不是可以想当然的写出:
197+ $$ q_{ij}=\frac{\exp (-\| y_i-y_j \|^2)}{\sum_{k \neq l}\exp (-\| y_k-y_l \|^2)} $$
198198
199- $$ p_{ij}=\frac{\exp (-\left \| x_i-x_j \right \|^2/2\sigma^2)}{\sum_{k \neq l}\exp (-\left \| x_k-x_l \right \|^2/2\sigma^2)} $$
199+ 在高维空间呢?是不是可以想当然地写出如下公式:
200200
201- 但是如果这样定义$p_ {ij}$又会遭遇刚才的问题,考虑一个离群点$x_i$,它与所有结点之间的距离都较大,那么对所有$j$,$p_ {ij}$的值均较小,所以无论该离群点在低维空间中的映射点$y_i$处在什么位置,惩罚值都不会太高,这显然也不是我们希望看到的。所以这里采用一种更简单直观的方式定义$p_ {ij}$:
201+ $$ p_{ij}=\frac{\exp (-\| x_i-x_j \|^2/2\sigma^2)}{\sum_{k \neq l}\exp (-\| x_k-x_l \|^2/2\sigma^2)} $$
202+
203+ 但是如果这样定义 $p_ {ij}$ 会遭遇** “离群点问题 (Outlier Problem)”** 。考虑一个离群点 $x_i$,它与所有节点之间的距离都极大,那么对所有 $j$,$p_ {ij}$ 的值均极小。这意味着,无论该离群点在低维空间中的映射点 $y_i$ 处在什么位置,它对整体代价函数的贡献都微乎其微,模型将无法有效约束这个点的位置。这显然不是我们希望看到的。
204+
205+ 所以这里采用一种更简单直观的强制对称化方式定义 $p_ {ij}$:
202206
203207$$ p_{ij}=\frac{p_{j|i}+p_{i|j}}{2n} $$
204208
205- 其中$n$为数据点的总数,这样定义即满足了对称性,又保证了$x_i$的惩罚值不会过小。此时可以利用KL距离写出如下代价函数:
209+ 其中 $n$ 为数据点的总数。这样定义既满足了对称性,又保证了对于所有的点 $x_i$,都有 $\sum_ {j}p_ {ij} > \frac{1}{2n}$,从而确保了即使是离群点,也能对代价函数产生足够显著的惩罚值/贡献。
210+
211+ 此时,可以利用 KL 散度写出对称SNE的代价函数:
212+
213+ $$ C=KL(P||Q)=\sum_i \sum_{j \neq i} p_{ij}\log \frac{p_{ij}}{q_{ij}} $$
214+
215+ ### 核心梯度详细推导过程
216+
217+ 为了求解梯度 $\frac{\partial C}{\partial y_i}$,我们需要将代价函数展开并剥离与 $y_i$ 无关的常数项:
218+
219+ $$ C = \sum_{i} \sum_{j \neq i} p_{ij} \log p_{ij} - \sum_{i} \sum_{j \neq i} p_{ij} \log q_{ij} $$
220+
221+ 第一项完全由高维数据决定,对 $y_i$ 求导时为常数 0。我们只需关注第二项。
222+ 令低维概率的归一化分母为 $Z = \sum_ {k \neq l} \exp(-\| y_k - y_l\| ^2)$。
223+ 那么 $\log q_ {ij} = -\| y_i - y_j\| ^2 - \log Z$。代入代价函数的第二项,并利用概率性质 $\sum_ {i,j} p_ {ij} = 1$(包含 $p_ {ii}=0$ 的前提):
224+
225+ $$ C' = \sum_{i,j} p_{ij} \|y_i - y_j\|^2 + \log Z $$
226+
227+ 现在对特定的低维坐标 $y_i$ 求偏导,该求导可分为两部分进行:
228+
229+ ** 1. 对第一部分(距离加权和)求导:**
230+ $$ \frac{\partial}{\partial y_i} \left[ \sum_{a,b} p_{ab} \|y_a - y_b\|^2 \right] $$
231+ 在所有 $a,b$ 的组合中,只有当 $a=i$ 或 $b=i$ 时,该项才包含 $y_i$。得益于对称性 $p_ {ij} = p_ {ji}$,包含 $y_i$ 的项可以合并为 $2 \sum_j p_ {ij} \| y_i - y_j\| ^2$。应用链式法则对其求导:
232+ $$ 2 \sum_j p_{ij} \frac{\partial \|y_i - y_j\|^2}{\partial y_i} = 4 \sum_j p_{ij} (y_i - y_j) $$
233+
234+ ** 2. 对第二部分($\log Z$)求导:**
235+ $$ \frac{\partial \log Z}{\partial y_i} = \frac{1}{Z} \frac{\partial Z}{\partial y_i} $$
236+ 展开 $Z$,同样只看求和项中包含 $y_i$ 的部分(即 $k=i$ 或 $l=i$):
237+ $$ \frac{\partial Z}{\partial y_i} = 2 \sum_j \frac{\partial}{\partial y_i} \exp(-\|y_i - y_j\|^2) = -4 \sum_j \exp(-\|y_i - y_j\|^2) (y_i - y_j) $$
238+ 将求导结果与外层的 $\frac{1}{Z}$ 相乘,注意观察 $\frac{\exp(-\| y_i - y_j\| ^2)}{Z}$ 正好就是我们定义的 $q_ {ij}$:
239+ $$ \frac{1}{Z} \frac{\partial Z}{\partial y_i} = -4 \sum_j q_{ij} (y_i - y_j) $$
206240
207- $$ C=KL(P||Q)=\sum_i \sum_j p_{ij}\log \frac{p_{ij}}{q_{ij}} $$
241+ ** 3. 合并得出最终梯度:**
242+ 将上述两部分求导结果相加,即得到最终极其优雅的梯度公式:
208243
209- 梯度变为:
244+ $$ \frac{\partial C}{\partial y_i} = 4 \sum_{j} p_{ij} (y_i - y_j) - 4 \sum_{j} q_{ij} (y_i - y_j) = 4 \sum_{j} (p_{ij} - q_{ij}) (y_i - y_j) $$
210245
211- $$ \frac{\delta C}{\delta y_i}=4\sum_{j} (p_{ij}-q_{ij})(y_i-y_j) $$
246+ 相比原版 SNE 冗长且带有不对称项的公式,这个梯度不仅更加简化,计算效率更高,其物理意义也更直观:点与点之间的受力就像弹簧,引力或斥力的方向由 $(y_i-y_j)$ 决定,而弹簧的劲度系数则是高低维概率的差值 $ (p_ {ij}-q_ {ij})$。
212247
213- 相比刚才定义的公式,这个梯度更加简化,计算效率更高。但是别高兴的太早,虽然我们解决了SNE中的不对称问题, 得到了一个更为简单的梯度公式,但是Maaten指出,对称SNE的效果只是略微优于原始SNE的效果,依然没有从根本上解决问题 。
248+ 但是别高兴得太早。虽然我们解决了 SNE 中的不对称和离群点问题, 得到了一个更为简单的梯度公式,但是原论文作者指出,对称 SNE 生成的映射图仅仅与非对称 SNE 差不多,甚至只是略微好一点点。它依然没有从根本上解决由高斯分布特性带来的“拥挤问题 (Crowding Problem)”。这也是后续需要引入 Student-t 分布的根本动机 。
214249
215250## 拥挤问题(The Crowding Problem)
216251
@@ -444,4 +479,4 @@ $$O=\sum_{(i,j) \in E}w_{ij}(p(e_{ij}=1)+\sum_{k=1}^M\ _{E_{j_k}\sim P_n(j)}\gam
444479- [ Characterizing a Distribution] ( http://work.thaslwanter.at/Stats/html/statsDistributions.html#t-distribution )
445480- [ An illustrated introduction to the t-SNE algorithm] ( https://www.oreilly.com/learning/an-illustrated-introduction-to-the-t-sne-algorithm )
446481- [ 浅谈流形学习] ( http://blog.pluskid.org/?p=533 )
447- - [ word2vec 中的数学原理详解(五)基于 Negative Sampling 的模型] ( http://blog.csdn.net/itplus/article/details/37998797 )
482+ - [ word2vec 中的数学原理详解(五)基于 Negative Sampling 的模型] ( http://blog.csdn.net/itplus/article/details/37998797 )
0 commit comments