t-SNE: 基于信号分离的降维技术详解
引言
t-SNE(t-distributed Stochastic Neighbor Embedding)是一种广泛应用于高维数据可视化的非线性降维技术,由Laurens van der Maaten和Geoffrey Hinton于2008年提出。与传统的降维方法相比,t-SNE特别擅长保留数据的局部结构,使得降维后的数据在低维空间中能够更好地展现高维数据的聚类特性。
t-SNE的核心思想
t-SNE的核心思想是将高维空间中点与点之间的相似度转换为条件概率,然后在低维空间中构建相似的概率分布,并通过最小化这两个分布之间的差异来优化低维表示。高维空间中,样本点 x i x_i xi和 x j x_j xj之间的相似度被定义为条件概率 p j ∣ i p_{j|i} pj∣i,表示如果以高斯分布选取邻居, x i x_i xi会选择 x j x_j xj作为邻居的概率:
p j ∣ i = exp ( − ∥ x i − x j ∥ 2 / 2 σ i 2 ) ∑ k ≠ i exp ( − ∥ x i − x k ∥ 2 / 2 σ i 2 ) p_{j|i} = \frac{\exp(-\|x_i - x_j\|^2/2\sigma_i^2)}{\sum_{k \neq i}\exp(-\|x_i - x_k\|^2/2\sigma_i^2)} pj∣i=∑k=iexp(−∥xi−xk∥2/2σi2)exp(−∥xi−xj∥2/2σi2)
这里 σ i \sigma_i σi是以点 x i x_i xi为中心的高斯分布的方差,由困惑度(perplexity)参数决定。为了简化计算,t-SNE将条件概率对称化:
p i j = p j ∣ i + p i ∣ j 2 N p_{ij} = \frac{p_{j|i} + p_{i|j}}{2N} pij=2Npj∣i+pi∣j
其中 N N N是样本点的数量。
t-SNE与信号分离的联系
从信号分离的角度理解,t-SNE实际上在做一种特殊的信号分离任务。我们可以将高维数据视为混合的复杂信号,t-SNE试图从中分离出能够保留原始信号结构特征的低维表示。
1. 信号表示转换
高维数据中的信号特征被转换为概率分布 P P P,表示为:
P = { p i j } i , j = 1 N ∈ R N × N P = \{p_{ij}\}_{i,j=1}^N \in \mathbb{R}^{N \times N} P={pij}i,j=1N∈RN×N
而低维空间中,点 y i y_i yi和 y j y_j yj之间的相似度采用t分布定义为:
q i j = ( 1 + ∥ y i − y j ∥ 2 ) − 1 ∑ k ≠ l ( 1 + ∥ y k − y l ∥ 2 ) − 1 q_{ij} = \frac{(1 + \|y_i - y_j\|^2)^{-1}}{\sum_{k \neq l}(1 + \|y_k - y_l\|^2)^{-1}} qij=∑k=l(1+∥yk−yl∥2)−1(1+∥yi−yj∥2)−1
引入规范化常数 Z Z Z可以将上式写为:
q i j = ( 1 + ∥ y i − y j ∥ 2 ) − 1 Z , Z = ∑ k ≠ l ( 1 + ∥ y k − y l ∥ 2 ) − 1 q_{ij} = \frac{(1 + \|y_i - y_j\|^2)^{-1}}{Z}, \quad Z = \sum_{k \neq l}(1 + \|y_k - y_l\|^2)^{-1} qij=Z(1+∥yi−yj∥2)−1,Z=k=l∑(1+∥yk−yl∥2)−1
从自由度为 ν \nu ν的多变量t分布的角度看,上述公式可以看作是自由度 ν = 1 \nu=1 ν=1的特例,其概率密度函数:
q ν ( x ) = Γ ( ν + d 2 ) Γ ( ν 2 ) ν d 2 π d 2 ( 1 + ∥ x ∥ 2 ν ) ν + d 2 q_{\nu}(x) = \frac{\Gamma(\frac{\nu+d}{2})}{\Gamma(\frac{\nu}{2})\nu^{\frac{d}{2}}\pi^{\frac{d}{2}}(1+\frac{\|x\|^2}{\nu})^{\frac{\nu+d}{2}}} qν(x)=Γ(2ν)ν2dπ2d(1+ν∥x∥2)2ν+dΓ(2ν+d)
其中 d d d是维度, Γ \Gamma Γ是伽马函数。当 ν = 1 \nu=1 ν=1时,简化为柯西分布形式。
2. 信号分离目标
t-SNE的目标是最小化高维空间分布 P P P与低维空间分布 Q Q Q之间的KL散度(Kullback-Leibler divergence):
C = K L ( P ∣ ∣ Q ) = ∑ i ≠ j p i j log p i j q i j C = KL(P||Q) = \sum_{i \neq j} p_{ij} \log \frac{p_{ij}}{q_{ij}} C=KL(P∣∣Q)=i=j∑pijlogqijpij
展开可得:
C = ∑ i ≠ j p i j log p i j − ∑ i ≠ j p i j log q i j = const − ∑ i ≠ j p i j log ( 1 + ∥ y i − y j ∥ 2 ) − 1 Z C = \sum_{i \neq j} p_{ij} \log p_{ij} - \sum_{i \neq j} p_{ij} \log q_{ij} = \text{const} - \sum_{i \neq j} p_{ij} \log \frac{(1 + \|y_i - y_j\|^2)^{-1}}{Z} C=i=j∑pijlogpij−i=j∑pijlogqij=const−i=j∑pijlogZ(1+∥yi−yj∥2)−1
C = const − ∑ i ≠ j p i j log ( 1 + ∥ y i − y j ∥ 2 ) − 1 + ∑ i ≠ j p i j log Z C = \text{const} - \sum_{i \neq j} p_{ij} \log(1 + \|y_i - y_j\|^2)^{-1} + \sum_{i \neq j} p_{ij} \log Z C=const−i=j∑pijlog(1+∥yi−yj∥2)−1+i=j∑pijlogZ
C = const + ∑ i ≠ j p i j log ( 1 + ∥ y i − y j ∥ 2 ) + log Z ∑ i ≠ j p i j C = \text{const} + \sum_{i \neq j} p_{ij} \log(1 + \|y_i - y_j\|^2) + \log Z\sum_{i \neq j} p_{ij} C=const+i=j∑pijlog(1+∥yi−yj∥2)+logZi=j∑pij
由于 ∑ i ≠ j p i j = 1 \sum_{i \neq j} p_{ij} = 1 ∑i=jpij=1,可以进一步简化为:
C = const + ∑ i ≠ j p i j log ( 1 + ∥ y i − y j ∥ 2 ) + log Z C = \text{const} + \sum_{i \neq j} p_{ij} \log(1 + \|y_i - y_j\|^2) + \log Z C=const+i=j∑pijlog(1+∥yi−yj∥2)+logZ
从信息论角度,KL散度测量了两个分布之间的信息损失,优化t-SNE相当于在低维空间中重构出尽可能保留原始信息的分布。
t-SNE算法的数学推导
梯度推导
为了最小化KL散度,我们需要计算KL散度对低维空间坐标 y i y_i yi的梯度。首先对 q i j q_{ij} qij求导:
∂ q i j ∂ y i = ∂ ∂ y i [ ( 1 + ∥ y i − y j ∥ 2 ) − 1 Z ] \frac{\partial q_{ij}}{\partial y_i} = \frac{\partial}{\partial y_i}\left[\frac{(1 + \|y_i - y_j\|^2)^{-1}}{Z}\right] ∂yi∂qij=∂yi∂[Z(1+∥yi−yj∥2)−1]
应用商法则:
∂ q i j ∂ y i = 1 Z ∂ ∂ y i ( 1 + ∥ y i − y j ∥ 2 ) − 1 − ( 1 + ∥ y i − y j ∥ 2 ) − 1 Z 2 ∂ Z ∂ y i \frac{\partial q_{ij}}{\partial y_i} = \frac{1}{Z}\frac{\partial}{\partial y_i}(1 + \|y_i - y_j\|^2)^{-1} - \frac{(1 + \|y_i - y_j\|^2)^{-1}}{Z^2}\frac{\partial Z}{\partial y_i} ∂yi∂qij=Z1∂yi∂(1+∥yi−yj∥2)−1−Z2(1+∥yi−yj∥2)−1∂yi∂Z
对第一项:
∂ ∂ y i ( 1 + ∥ y i − y j ∥ 2 ) − 1 = − 2 ( y i − y j ) ( 1 + ∥ y i − y j ∥ 2 ) − 2 \frac{\partial}{\partial y_i}(1 + \|y_i - y_j\|^2)^{-1} = -2(y_i - y_j)(1 + \|y_i - y_j\|^2)^{-2} ∂yi∂(1+∥yi−yj∥2)−1=−2(yi−yj)(1+∥yi−yj∥2)−2
对第二项:
∂ Z ∂ y i = ∂ ∂ y i ∑ k ≠ l ( 1 + ∥ y k − y l ∥ 2 ) − 1 = ∑ k ≠ l : k = i or l = i ∂ ∂ y i ( 1 + ∥ y k − y l ∥ 2 ) − 1 \frac{\partial Z}{\partial y_i} = \frac{\partial}{\partial y_i}\sum_{k \neq l}(1 + \|y_k - y_l\|^2)^{-1} = \sum_{k \neq l: k=i \text{ or } l=i}\frac{\partial}{\partial y_i}(1 + \|y_k - y_l\|^2)^{-1} ∂yi∂Z=∂yi∂k=l∑(1+∥yk−yl∥2)−1=k=l:k=i or l=i∑∂yi∂(1+∥yk−yl∥2)−1
∂ Z ∂ y i = ∑ j ≠ i − 2 ( y i − y j ) ( 1 + ∥ y i − y j ∥ 2 ) − 2 \frac{\partial Z}{\partial y_i} = \sum_{j \neq i}-2(y_i - y_j)(1 + \|y_i - y_j\|^2)^{-2} ∂yi∂Z=j=i∑−2(yi−yj)(1+∥yi−yj∥2)−2
综合这两项,得到完整的梯度表达式:
∂ C ∂ y i = 4 ∑ j ≠ i ( p i j − q i j ) ( y i − y j ) ( 1 + ∥ y i − y j ∥ 2 ) − 1 \frac{\partial C}{\partial y_i} = 4\sum_{j \neq i}(p_{ij} - q_{ij})(y_i - y_j)(1 + \|y_i - y_j\|^2)^{-1} ∂yi∂C=4j=i∑(pij−qij)(yi−yj)(1+∥yi−yj∥2)−1
这个梯度可以被解释为一系列的力。将上式改写成:
∂ C ∂ y i = 4 ∑ j ≠ i F i j \frac{\partial C}{\partial y_i} = 4\sum_{j \neq i}F_{ij} ∂yi∂C=4j=i∑Fij
其中:
F i j = ( p i j − q i j ) ( y i − y j ) ( 1 + ∥ y i − y j ∥ 2 ) − 1 F_{ij} = (p_{ij} - q_{ij})(y_i - y_j)(1 + \|y_i - y_j\|^2)^{-1} Fij=(pij−qij)(yi−yj)(1+∥yi−yj∥2)−1
从物理角度解释, F i j F_{ij} Fij可以被视为点 j j j对点 i i i施加的力。如果高维空间中两点相似度高于低维空间( p i j > q i j p_{ij} > q_{ij} pij>qij),则产生吸引力;反之则产生排斥力。为了更深入理解这个力的特性,我们可以将其分解为吸引力和排斥力两部分:
F
i
j
attr
=
p
i
j
(
y
i
−
y
j
)
(
1
+
∥
y
i
−
y
j
∥
2
)
−
1
F_{ij}^{\text{attr}} = p_{ij}(y_i - y_j)(1 + \|y_i - y_j\|^2)^{-1}
Fijattr=pij(yi−yj)(1+∥yi−yj∥2)−1
F
i
j
rep
=
−
q
i
j
(
y
i
−
y
j
)
(
1
+
∥
y
i
−
y
j
∥
2
)
−
1
F_{ij}^{\text{rep}} = -q_{ij}(y_i - y_j)(1 + \|y_i - y_j\|^2)^{-1}
Fijrep=−qij(yi−yj)(1+∥yi−yj∥2)−1
总力为: F i j = F i j attr + F i j rep F_{ij} = F_{ij}^{\text{attr}} + F_{ij}^{\text{rep}} Fij=Fijattr+Fijrep
优化过程
t-SNE采用梯度下降法优化低维表示:
y i ( t ) = y i ( t − 1 ) − η ∂ C ∂ y i + α ( t ) ( y i ( t − 1 ) − y i ( t − 2 ) ) y_i^{(t)} = y_i^{(t-1)} - \eta \frac{\partial C}{\partial y_i} + \alpha(t)(y_i^{(t-1)} - y_i^{(t-2)}) yi(t)=yi(t−1)−η∂yi∂C+α(t)(yi(t−1)−yi(t−2))
其中 η \eta η是学习率, α ( t ) \alpha(t) α(t)是动量项。为了避免局部最优解,t-SNE通常会在早期迭代中添加一个比较大的动量项。梯度下降的收敛性可以通过莱斯利条件(Lyapunov function)来分析。定义能量函数:
E ( Y ) = K L ( P ∣ ∣ Q ) E(Y) = KL(P||Q) E(Y)=KL(P∣∣Q)
则梯度下降的迭代可以表示为:
Y ( t + 1 ) = Y ( t ) − η ∇ E ( Y ( t ) ) + α ( t ) ( Y ( t ) − Y ( t − 1 ) ) Y^{(t+1)} = Y^{(t)} - \eta\nabla E(Y^{(t)}) + \alpha(t)(Y^{(t)} - Y^{(t-1)}) Y(t+1)=Y(t)−η∇E(Y(t))+α(t)(Y(t)−Y(t−1))
对于适当选择的 η \eta η和 α ( t ) \alpha(t) α(t),可以证明:
E ( Y ( t + 1 ) ) ≤ E ( Y ( t ) ) E(Y^{(t+1)}) \leq E(Y^{(t)}) E(Y(t+1))≤E(Y(t))
即能量函数单调递减,保证了算法的收敛性。
困惑度参数的深入理解
困惑度(perplexity)是t-SNE中一个重要的超参数,定义为:
Perp ( P i ) = 2 H ( P i ) \text{Perp}(P_i) = 2^{H(P_i)} Perp(Pi)=2H(Pi)
其中 H ( P i ) H(P_i) H(Pi)是以 i i i为条件的概率分布 P i = { p j ∣ i } P_i = \{p_{j|i}\} Pi={pj∣i}的Shannon熵:
H ( P i ) = − ∑ j p j ∣ i log 2 p j ∣ i H(P_i) = -\sum_j p_{j|i} \log_2 p_{j|i} H(Pi)=−j∑pj∣ilog2pj∣i
通过固定困惑度来求解 σ i \sigma_i σi的过程实际上是一个熵最大化问题。给定困惑度 Perp ∗ \text{Perp}* Perp∗,求解方程:
Perp ( P i ) = Perp ∗ \text{Perp}(P_i) = \text{Perp}* Perp(Pi)=Perp∗
这是一个关于 σ i \sigma_i σi的非线性方程,通常使用二分搜索求解。将困惑度约束表示为拉格朗日方程:
L ( σ i , λ ) = H ( P i ) − λ ( Perp ( P i ) − Perp ∗ ) \mathcal{L}(\sigma_i, \lambda) = H(P_i) - \lambda(\text{Perp}(P_i) - \text{Perp}*) L(σi,λ)=H(Pi)−λ(Perp(Pi)−Perp∗)
求解使得 ∂ L ∂ σ i = 0 \frac{\partial \mathcal{L}}{\partial \sigma_i} = 0 ∂σi∂L=0的 σ i \sigma_i σi值。困惑度的选择直接影响条件概率 p j ∣ i p_{j|i} pj∣i的分布形状。困惑度越大, σ i \sigma_i σi越大,概率分布越平坦;困惑度越小, σ i \sigma_i σi越小,概率分布越集中。
t-SNE与其他降维方法的数学比较
t-SNE与PCA的理论联系
主成分分析(PCA)是一种线性降维方法,它寻找数据方差最大的方向。其数学表达为:
max W Tr ( W T X T X W ) , s.t. W T W = I \max_W \text{Tr}(W^T X^T X W), \text{ s.t. } W^T W = I WmaxTr(WTXTXW), s.t. WTW=I
其中 X ∈ R N × D X \in \mathbb{R}^{N \times D} X∈RN×D是数据矩阵, W ∈ R D × d W \in \mathbb{R}^{D \times d} W∈RD×d是投影矩阵。从概率模型角度,PCA可以被看作是最大化似然估计问题:
max μ , W , σ 2 ∑ n = 1 N log p ( x n ∣ μ , W , σ 2 ) \max_{\mu, W, \sigma^2} \sum_{n=1}^N \log p(x_n | \mu, W, \sigma^2) μ,W,σ2maxn=1∑Nlogp(xn∣μ,W,σ2)
其中 p ( x ∣ μ , W , σ 2 ) = N ( x ∣ μ , W W T + σ 2 I ) p(x | \mu, W, \sigma^2) = \mathcal{N}(x | \mu, WW^T + \sigma^2I) p(x∣μ,W,σ2)=N(x∣μ,WWT+σ2I)。相比之下,t-SNE通过最小化概率分布之间的KL散度来优化低维表示:
min Y K L ( P ∣ ∣ Q ) = ∑ i ≠ j p i j log p i j q i j \min_Y KL(P||Q) = \sum_{i \neq j} p_{ij} \log \frac{p_{ij}}{q_{ij}} YminKL(P∣∣Q)=i=j∑pijlogqijpij
可以证明,当 p i j p_{ij} pij和 q i j q_{ij} qij都由高斯分布定义时,t-SNE的目标函数与从概率角度解释的PCA有一定的数学联系。
t-SNE与SNE的理论区别
t-SNE是对原始SNE(Stochastic Neighbor Embedding)的改进。SNE在低维空间也使用高斯分布定义点之间的相似度:
q j ∣ i = exp ( − ∥ y i − y j ∥ 2 ) ∑ k ≠ i exp ( − ∥ y i − y k ∥ 2 ) q_{j|i} = \frac{\exp(-\|y_i - y_j\|^2)}{\sum_{k \neq i}\exp(-\|y_i - y_k\|^2)} qj∣i=∑k=iexp(−∥yi−yk∥2)exp(−∥yi−yj∥2)
而t-SNE使用自由度为1的t分布:
q i j = ( 1 + ∥ y i − y j ∥ 2 ) − 1 ∑ k ≠ l ( 1 + ∥ y k − y l ∥ 2 ) − 1 q_{ij} = \frac{(1 + \|y_i - y_j\|^2)^{-1}}{\sum_{k \neq l}(1 + \|y_k - y_l\|^2)^{-1}} qij=∑k=l(1+∥yk−yl∥2)−1(1+∥yi−yj∥2)−1
t分布具有比高斯分布更厚的尾部,这意味着在处理中等距离和长距离时,t-SNE产生的排斥力更强,有助于缓解"拥挤问题"。从理论上分析,如果低维空间中的距离 ∥ y i − y j ∥ \|y_i - y_j\| ∥yi−yj∥很大,则t分布给出的概率 q i j ∝ ∥ y i − y j ∥ − 2 q_{ij} \propto \|y_i - y_j\|^{-2} qij∝∥yi−yj∥−2,而高斯分布给出的概率 q j ∣ i ∝ exp ( − ∥ y i − y j ∥ 2 ) q_{j|i} \propto \exp(-\|y_i - y_j\|^2) qj∣i∝exp(−∥yi−yj∥2),两者的衰减速率有明显差异。
t-SNE的计算复杂度与优化
标准t-SNE的计算复杂度分析
标准t-SNE的计算复杂度主要来自三个部分:
- 计算高维概率 p i j p_{ij} pij: O ( N 2 D ) O(N^2D) O(N2D),其中 N N N是样本数, D D D是原始维度
- 计算低维概率 q i j q_{ij} qij: O ( N 2 d ) O(N^2d) O(N2d),其中 d d d是目标维度(通常 d ≪ D d \ll D d≪D)
- 计算梯度: O ( N 2 d ) O(N^2d) O(N2d)
总计算复杂度为 O ( N 2 D + T N 2 d ) O(N^2D + TN^2d) O(N2D+TN2d),其中 T T T是迭代次数。
Barnes-Hut t-SNE算法
Barnes-Hut t-SNE算法将计算复杂度从 O ( N 2 ) O(N^2) O(N2)降低到 O ( N log N ) O(N\log N) O(NlogN)。它基于空间划分树结构(如四叉树或八叉树),对远距离的点群进行近似计算。算法的核心在于将低维空间划分为单元格,并计算单元格 C C C的中心质量点 y C y_C yC和总质量 n C n_C nC:
y C = 1 n C ∑ i ∈ C y i , n C = ∣ C ∣ y_C = \frac{1}{n_C}\sum_{i \in C} y_i, \quad n_C = |C| yC=nC1i∈C∑yi,nC=∣C∣
定义单元格 C C C的边长为 r C r_C rC,当点 y i y_i yi到单元格中心的距离 ∥ y i − y C ∥ \|y_i - y_C\| ∥yi−yC∥与 r C r_C rC的比值小于阈值 θ \theta θ时,即 r C ∥ y i − y C ∥ < θ \frac{r_C}{\|y_i - y_C\|} < \theta ∥yi−yC∥rC<θ,可以将单元格内所有点对 y i y_i yi的力近似为单个力:
∑ j ∈ C F i j ≈ n C ⋅ F i C \sum_{j \in C} F_{ij} \approx n_C \cdot F_{iC} j∈C∑Fij≈nC⋅FiC
其中 F i C F_{iC} FiC是点 i i i与单元格 C C C中心之间的力。Barnes-Hut算法的时间复杂度为 O ( N log N ) O(N\log N) O(NlogN),这使得t-SNE能够处理更大规模的数据集。
分层t-SNE
对于超大规模数据,还可以采用分层t-SNE策略。基本思想是:
- 对数据进行聚类,得到 K K K个类别( K ≪ N K \ll N K≪N)
- 对每个类别的代表点运行t-SNE
- 将每个类别内的点映射到代表点的邻域
分层t-SNE的时间复杂度可以降低到 O ( N + K 2 log K ) O(N + K^2\log K) O(N+K2logK)。
数学上,我们定义聚类函数 c : { 1 , 2 , … , N } → { 1 , 2 , … , K } c: \{1,2,\ldots,N\} \rightarrow \{1,2,\ldots,K\} c:{1,2,…,N}→{1,2,…,K},将每个点 i i i映射到其所属的类别 c ( i ) c(i) c(i)。对类别代表点集合 { r 1 , r 2 , … , r K } \{r_1, r_2, \ldots, r_K\} {r1,r2,…,rK}进行t-SNE降维,得到低维表示 { y r 1 , y r 2 , … , y r K } \{y_{r_1}, y_{r_2}, \ldots, y_{r_K}\} {yr1,yr2,…,yrK}。然后对于每个点 i i i,其低维表示可以近似为:
y i ≈ y r c ( i ) + Δ y i y_i \approx y_{r_{c(i)}} + \Delta y_i yi≈yrc(i)+Δyi
其中 Δ y i \Delta y_i Δyi是基于局部PCA的调整项。
t-SNE的实现步骤
-
计算高维空间的条件概率:对每个点 x i x_i xi,计算其与其他点 x j x_j xj的条件概率 p j ∣ i p_{j|i} pj∣i。
具体步骤包括:
- 对每个点 i i i,通过二分搜索确定 σ i \sigma_i σi,使得条件概率分布 P i P_i Pi的熵满足预设的困惑度
- 计算条件概率 p j ∣ i = exp ( − ∥ x i − x j ∥ 2 / 2 σ i 2 ) ∑ k ≠ i exp ( − ∥ x i − x k ∥ 2 / 2 σ i 2 ) p_{j|i} = \frac{\exp(-\|x_i - x_j\|^2/2\sigma_i^2)}{\sum_{k \neq i}\exp(-\|x_i - x_k\|^2/2\sigma_i^2)} pj∣i=∑k=iexp(−∥xi−xk∥2/2σi2)exp(−∥xi−xj∥2/2σi2)
-
对条件概率进行对称化:计算 p i j = p j ∣ i + p i ∣ j 2 N p_{ij} = \frac{p_{j|i} + p_{i|j}}{2N} pij=2Npj∣i+pi∣j。
-
随机初始化低维空间的点:通常从均值为0、小方差的高斯分布中随机采样。
初始化方法为: y i ( 0 ) ∼ N ( 0 , 1 0 − 4 I ) y_i^{(0)} \sim \mathcal{N}(0, 10^{-4}I) yi(0)∼N(0,10−4I)
-
迭代优化:使用梯度下降法最小化KL散度,更新低维点的坐标。
每次迭代中,低维点坐标的更新公式为:
y i ( t ) = y i ( t − 1 ) − η ∂ C ∂ y i + α ( t ) ( y i ( t − 1 ) − y i ( t − 2 ) ) y_i^{(t)} = y_i^{(t-1)} - \eta \frac{\partial C}{\partial y_i} + \alpha(t)(y_i^{(t-1)} - y_i^{(t-2)}) yi(t)=yi(t−1)−η∂yi∂C+α(t)(yi(t−1)−yi(t−2))
其中,学习率 η \eta η通常设置为100-1000之间,动量项 α ( t ) \alpha(t) α(t)在前几次迭代中设为0.5,之后设为0.8。迭代早期(通常前50次迭代)还会使用"早期夸张"技术,将 p i j p_{ij} pij值放大4倍,以产生更明显的聚类结构。
-
收敛判定:当目标函数的变化率小于预设阈值 ϵ \epsilon ϵ或达到最大迭代次数时停止迭代:
∣ C ( t ) − C ( t − 1 ) ∣ ∣ C ( t − 1 ) ∣ < ϵ \frac{|C^{(t)} - C^{(t-1)}|}{|C^{(t-1)}|} < \epsilon ∣C(t−1)∣∣C(t)−C(t−1)∣<ϵ
t-SNE的局限性
尽管t-SNE在可视化高维数据方面表现出色,但它也有一些明显的局限性:
-
非保距性:t-SNE不保留原始数据中的距离信息,因此不能用于距离或密度的解释。具体而言,如果 d i j = ∥ x i − x j ∥ d_{ij} = \|x_i - x_j\| dij=∥xi−xj∥是高维空间中的距离, d ^ i j = ∥ y i − y j ∥ \hat{d}_{ij} = \|y_i - y_j\| d^ij=∥yi−yj∥是低维空间中的距离,则t-SNE不保证 d i j ∝ d ^ i j d_{ij} \propto \hat{d}_{ij} dij∝d^ij。
-
随机性:由于随机初始化和优化过程中的随机性,每次运行可能产生不同的结果。可以通过设置随机种子来部分缓解这个问题: seed = constant \text{seed} = \text{constant} seed=constant
-
计算复杂度高:即使使用优化的算法,处理大规模数据集时仍然计算开销大。渐进时间复杂度为: O ( N log N ) O(N\log N) O(NlogN),空间复杂度为: O ( N 2 ) O(N^2) O(N2)
-
超参数敏感:结果对困惑度等超参数的选择较为敏感。
困惑度的理论有效范围为: 1 < Perp < N 1 < \text{Perp} < N 1<Perp<N
实践中常用范围: 5 ≤ Perp ≤ 50 5 \leq \text{Perp} \leq 50 5≤Perp≤50
-
全局结构保持能力有限:t-SNE主要关注局部结构,可能无法很好地保留数据的全局拓扑结构。为了缓解这个问题,可以采用PCA+t-SNE的组合策略:先用PCA降到中等维度(如50维),再应用t-SNE。