Skip to content

Commit 5e981fe

Browse files
authored
Update 2016-06-04-from-sne-to-tsne-to-largevis.md
1 parent af358f5 commit 5e981fe

1 file changed

Lines changed: 48 additions & 13 deletions

File tree

_posts/2016-06-04-from-sne-to-tsne-to-largevis.md

Lines changed: 48 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -186,31 +186,66 @@ SNE算法中还有一个细节是关于高维空间中以点$x_i$为中心的正
186186

187187
SNE算法的思路是不错的,但是它的可视化效果大家也看到了,存在很大改进空间。如何改进它呢?我们一步一步来,先看看如何解决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

Comments
 (0)