降维系列之 SNE与t-SNE

article/2025/9/28 23:56:46

t-SNE是一种经典的降维和可视化方法,是基于SNE(Stochastic Neighbor Embedding,随机近邻嵌入)做的,要了解t-SNE就要先了解SNE。本文同样既是总结,又是读论文笔记。

SNE 随机近邻嵌入

SNE的的第一步是用条件概率来表示高维空间中样本点之间用欧氏距离度量的相似度。假设样本选择其近邻的概率与与以自身为中心的高斯分布的概率密度成正比,SNE用 p j ∣ i p_{j|i} pji来表示高维空间样本 x i x_i xi会选择 x j x_j xj作为其近邻的概率,二范数距离越近, p j ∣ i p_{j|i} pji越大,二范数距离越远, p j ∣ i p_{j|i} pji越小。回忆一下高斯分布的概率密度函数:
f ( x ) = 1 2 π σ exp ⁡ ( − ( x − μ ) 2 2 σ 2 ) f(x)=\frac{1}{\sqrt{2 \pi}\sigma}\exp(-\frac{(x-\mu)^2}{2\sigma^2}) f(x)=2π σ1exp(2σ2(xμ)2)

p j ∣ i p_{j|i} pji定义为:
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)} pji=k=iexp(xixk2/2σi2)exp(xixj2/2σi2)

其中 σ i 2 \sigma_i^2 σi2是以 x i x_i xi为中心的高斯分布的方差,其取值后面再给出。由于只对成对样本的相似性感兴趣,SNE令 p i ∣ i = 0 p_{i|i}=0 pii=0
对于 x i , x j x_i,x_j xi,xj对应的低位表示 y i , y j y_i,y_j yi,yj,用 q j ∣ i q_{j|i} qji表示含义相似的条件概率,不同的是这里方差取 1 / 2 1/\sqrt{2} 1/2 ,因此:
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)} qji=k=iexp(yiyk2)exp(yiyj2)

同样令 q j ∣ i = 0 q_{j|i}=0 qji=0。如果 y i , y j y_i,y_j yi,yj能够正确地表征高维样本 x i , x j x_i,x_j xi,xj之间的相似性, p j ∣ i , q j ∣ i p_{j|i},q_{j|i} pji,qji就应该相等,因此SNE的目标就是寻找恰当的高维样本的低维表示使得 p j ∣ i , q j ∣ i p_{j|i},q_{j|i} pji,qji之间的比例失当最小。损失函数 C C C用Kullback-Leibler divergence(K-L散度,互熵,文中说此处的kl熵等价于交叉熵加了一个参数)来表示:
C = ∑ i K L ( P i ∣ ∣ Q i ) = ∑ i ∑ j p j ∣ i log ⁡ p j ∣ i q j ∣ i (1) C=\sum_i KL(P_i||Q_i)=\sum_i\sum_j p_{j|i} \log \frac{p_{j|i}}{q_{j|i}} \tag{1} C=iKL(PiQi)=ijpjilogqjipji(1)

然后SNE用梯度下降法来求解。由于K-L散度不是对称的, C ( p ∥ q ) ≠ C ( q ∥ p ) C(p\|q)\neq C(q\|p) C(pq)=C(qp),因此低维映射中成对的距离的不同类型误差不是以同一权重度量的。从 C C C的定义来看, p j ∣ i p_{j|i} pji较大时,期望寻找的 q j ∣ i q_{j|i} qji也是较大的, p j ∣ i p_{j|i} pji较小时则无所谓。这说明SNE关注的主要还是如何保持局部结构(如果方差 σ i 2 \sigma_i^2 σi2取值合适的话)。

接下来的问题就是设置方差值 σ i 2 \sigma_i^2 σi2。SNE认为,在样本点分布比较稠密的区域,应该选择更小的方差值,否则反之。SNE设置了一个由用户调节的参数 P e r p ( P i ) Perp(P_i) Perp(Pi)来衡量混乱度,其定义为:
P e r p ( P i ) = 2 H ( P i ) H ( P i ) = − ∑ j p j ∣ i log ⁡ 2 p j ∣ i Perp(P_i)=2^{H(P_i)} \\ H(P_i)=-\sum_j p_{j|i}\log_2p_{j|i} Perp(Pi)=2H(Pi)H(Pi)=jpjilog2pji

H ( P i ) H(P_i) H(Pi) P i P_i Pi以二进制度量的香农熵。这是什么意思呢,我感觉意思就是由用户给定一个 P e r p ( P i ) Perp(P_i) Perp(Pi)值,然后SNE给出了 P e r p ( P i ) Perp(P_i) Perp(Pi) p j ∣ i p_{j|i} pji的关系,根据这个关系,用二分查找的方法来确定 σ i 2 \sigma_i^2 σi2
混乱度参数可以平滑地度量有效的近邻数量,典型取值范围在5到50之间,从实验效果来看,SNE对混乱度参数的取值比较鲁棒。

SNE最小化公式 ( 1 ) (1) (1)的过程是用梯度下降法来实现的,其导数惊人的简单:
∂ C ∂ y i = 2 ∑ j ( p j ∣ i − q j ∣ i + p i ∣ j − q i ∣ j ) ( y i − y j ) \frac{\partial C}{\partial y_i}=2\sum_j(p_{j|i}-q_{j|i}+p_{i|j}-q_{i|j})(y_i-y_j) yiC=2j(pjiqji+pijqij)(yiyj)

我来试着求一下:
∂ C ∂ q j ∣ i = − p j ∣ i q j ∣ i p j ∣ i ⋅ p j ∣ i q j ∣ i 2 = − p j ∣ i q j ∣ i q j ∣ i = exp ⁡ ( − ∥ y i − y j ∥ 2 ) ∑ k ≠ i exp ⁡ ( − ∥ y i − y k ∥ 2 ) ∂ q j ∣ i ∂ y i = exp ⁡ ′ ( − ∥ y i − y j ∥ 2 ) ⋅ ∑ k ≠ i exp ⁡ ( − ∥ y i − y k ∥ 2 ) − ∑ k ≠ i ′ exp ⁡ ( − ∥ y i − y k ∥ 2 ) ⋅ exp ⁡ ( − ∥ y i − y j ∥ 2 ) [ ∑ k ≠ i exp ⁡ ( − ∥ y i − y k ∥ 2 ) ] 2 = ∑ k ≠ i exp ⁡ ( − ∥ y i − y k ∥ 2 ) ( 2 y i − 2 y k ) ⋅ exp ⁡ ( − ∥ y i − y j ∥ 2 ) − exp ⁡ ( − ∥ y i − y j ∥ 2 ) ( 2 y i − 2 y j ) ⋅ ∑ k ≠ i exp ⁡ ( − ∥ y i − y k ∥ 2 ) [ ∑ k ≠ i exp ⁡ ( − ∥ y i − y k ∥ 2 ) ] 2 p j ∣ i q j ∣ i ∂ q j ∣ i ∂ y i = p j ∣ i ∑ k ≠ i exp ⁡ ( − ∥ y i − y k ∥ 2 ) ( 2 y i − 2 y k ) − ( 2 y i − 2 y j ) ⋅ ∑ k ≠ i exp ⁡ ( − ∥ y i − y k ∥ 2 ) ∑ k ≠ i exp ⁡ ( − ∥ y i − y k ∥ 2 ) = p j ∣ i [ ∑ k ≠ i q k ∣ i 2 ( y i − y k ) − 2 ( y i − y j ) ] = 2 p j ∣ i [ q j ∣ i − 1 ] ( y i − y j ) + p j ∣ i ∑ k ≠ i , j q k ∣ i 2 ( y i − y k ) q i ∣ j = exp ⁡ ( − ∥ y j − y i ∥ 2 ) ∑ k ≠ j exp ⁡ ( − ∥ y j − y k ∥ 2 ) ∂ q i ∣ j ∂ y i = exp ⁡ ( − ∥ y j − y i ∥ 2 ) ( 2 y j − 2 y i ) ⋅ exp ⁡ ( − ∥ y j − y i ∥ 2 ) − exp ⁡ ( − ∥ y j − y i ∥ 2 ) ( 2 y j − 2 y i ) ⋅ ∑ k ≠ j exp ⁡ ( − ∥ y j − y k ∥ 2 ) [ ∑ k ≠ j exp ⁡ ( − ∥ y j − y k ∥ 2 ) ] 2 p i ∣ j q i ∣ j ∂ q i ∣ j ∂ y i = p i ∣ j ( 2 y j − 2 y i ) exp ⁡ ( − ∥ y j − y i ∥ 2 ) − ( 2 y j − 2 y i ) ⋅ ∑ k ≠ j exp ⁡ ( − ∥ y j − y k ∥ 2 ) ∑ k ≠ j exp ⁡ ( − ∥ y j − y k ∥ 2 ) = p i ∣ j [ ( 2 y j − 2 y i ) q i ∣ j − 2 ( y j − y i ) ] = 2 p i ∣ j ( q i ∣ j − 1 ) ( y j − y i ) ∂ C ∂ y i = − ∑ j ( p j ∣ i q j ∣ i ∂ q j ∣ i ∂ y i + p i ∣ j q i ∣ j ∂ q i ∣ j ∂ y i ) \frac{\partial C}{\partial q_{j|i}}=-p_{j|i}\frac{q_{j|i}}{p_{j|i}}\cdot \frac{p_{j|i}}{q_{j|i}^2}=- \frac{p_{j|i}}{q_{j|i}} \\ \ \\ q_{j|i}=\frac{\exp(- \|y_i-y_j \|^2)}{\sum_{k\neq i}\exp(-\|y_i-y_k\|^2)} \\ \frac{\partial q_{j|i}}{\partial y_i} =\frac{ \exp '(- \|y_i-y_j \|^2)\cdot \sum_{k\neq i}\exp(-\|y_i-y_k\|^2)-\sum_{k\neq i}'\exp(-\|y_i-y_k\|^2)\cdot \exp(- \|y_i-y_j \|^2)}{[\sum_{k\neq i}\exp(-\|y_i-y_k\|^2)]^2} \\ = \frac{\sum_{k\neq i}\exp(-\|y_i-y_k\|^2)(2y_i-2y_k) \cdot \exp (- \|y_i-y_j \|^2)-\exp (- \|y_i-y_j \|^2)(2y_i-2y_j) \cdot \sum_{k\neq i}\exp(-\|y_i-y_k\|^2)}{[\sum_{k\neq i}\exp(-\|y_i-y_k\|^2)]^2}\\ \frac{p_{j|i}}{q_{j|i}}\frac{\partial q_{j|i}}{\partial y_i} = p_{j|i} \frac{\sum_{k\neq i}\exp(-\|y_i-y_k\|^2)(2y_i-2y_k) -(2y_i-2y_j) \cdot \sum_{k\neq i}\exp(-\|y_i-y_k\|^2)}{\sum_{k\neq i}\exp(-\|y_i-y_k\|^2)}\\ = p_{j|i}[\sum_{k\neq i} q_{k|i}2(y_i-y_k)-2(y_i-y_j)] \\ = 2p_{j|i}[ q_{j|i} -1](y_i-y_j)+p_{j|i}\sum_{k\neq i,j} q_{k|i}2(y_i-y_k) \\ \ \\ q_{i|j}=\frac{\exp(- \|y_j-y_i \|^2)}{\sum_{k\neq j}\exp(-\|y_j-y_k\|^2)} \\ \frac{\partial q_{i|j}}{\partial y_i}=\frac{ \exp(-\|y_j-y_i\|^2)(2y_j-2y_i)\cdot \exp(- \|y_j-y_i \|^2) -\exp(- \|y_j-y_i \|^2)(2y_j-2y_i)\cdot \sum_{k\neq j}\exp(-\|y_j-y_k\|^2) }{[\sum_{k\neq j}\exp(-\|y_j-y_k\|^2)]^2} \\ \frac{p_{i|j}}{q_{i|j}}\frac{\partial q_{i|j}}{\partial y_i} =p_{i|j} \frac{ (2y_j-2y_i)\exp(- \|y_j-y_i \|^2) -(2y_j-2y_i)\cdot \sum_{k\neq j}\exp(-\|y_j-y_k\|^2) }{\sum_{k\neq j}\exp(-\|y_j-y_k\|^2)} \\ = p_{i|j}[(2y_j-2y_i)q_{i|j}- 2(y_j-y_i)] \\ = 2p_{i|j}(q_{i|j}-1)(y_j-y_i) \\ \ \\ \frac{\partial C}{\partial y_i}=-\sum_j (\frac{p_{j|i}}{q_{j|i}}\frac{\partial q_{j|i}}{\partial y_i}+\frac{p_{i|j}}{q_{i|j}}\frac{\partial q_{i|j}}{\partial y_i}) \\ qjiC=pjipjiqjiqji2pji=qjipji qji=k=iexp(yiyk2)exp(yiyj2)yiqji=[k=iexp(yiyk2)]2exp(yiyj2)k=iexp(yiyk2)k=iexp(yiyk2)exp(yiyj2)=[k=iexp(yiyk2)]2k=iexp(yiyk2)(2yi2yk)exp(yiyj2)exp(yiyj2)(2yi2yj)k=iexp(yiyk2)qjipjiyiqji=pjik=iexp(yiyk2)k=iexp(yiyk2)(2yi2yk)(2yi2yj)k=iexp(yiyk2)=pji[k=iqki2(yiyk)2(yiyj)]=2pji[qji1](yiyj)+pjik=i,jqki2(yiyk) qij=k=jexp(yjyk2)exp(yjyi2)yiqij=[k=jexp(yjyk2)]2exp(yjyi2)(2yj2yi)exp(yjyi2)exp(yjyi2)(2yj2yi)k=jexp(yjyk2)qijpijyiqij=pijk=jexp(yjyk2)(2yj2yi)exp(yjyi2)(2yj2yi)k=jexp(yjyk2)=pij[(2yj2yi)qij2(yjyi)]=2pij(qij1)(yjyi) yiC=j(qjipjiyiqji+qijpijyiqij)

不好意思我求不出来。

继续看论文。物理上看,这个梯度可以理解为 y i y_i yi和所有其他的 y j y_j yj之间存在的“流(spring)”合在一起构成的合力,所有的流构成了沿着 y i − y j y_i-y_j yiyj方向的合力。 y i , y j y_i,y_j yi,yj之间的流是否抵制或吸引样本点,取决于二者之间的距离是否会过大或过小地表示 x i , x j x_i,x_j xi,xj之间的距离。
为了避免局部最优解,SNE还给梯度添加了一项很大的动量项。换句话来讲,当前的梯度被加上了一项指数衰减的之前的梯度:
Y ( t ) = Y ( t − 1 ) + η ∂ C ∂ Y + α ( t ) ( Y ( t − 1 ) − Y ( t − 2 ) ) \mathcal{Y}^{(t)}=\mathcal{Y}^{(t-1)}+\eta \frac{\partial C}{\partial \mathcal{Y}}+\alpha(t)(\mathcal{Y}^{(t-1)}-\mathcal{Y}^{(t-2)}) Y(t)=Y(t1)+ηYC+α(t)(Y(t1)Y(t2))

其中 Y ( t ) \mathcal{Y}^{(t)} Y(t)表示当前迭代轮次的解, η \eta η为学习率, α ( t ) \alpha(t) α(t)表示当前迭代轮次的动量。
在优化刚开始的时候,每次迭代都会给样本点添加高斯噪声,可以起到一个退火的效果,避免局部最优解。如果噪声的方差改变缓慢,SNE就可以寻找到更好的全局最优解。然而这对噪声数量和衰减速率很敏感,往往需要在一个数据集上训练多次以寻找合适的参数,从这个意义上讲SNE不如一些可以遵循凸优化原则的方法,如果能找到一种不需要额外计算和参数的方法就更好了。这样就引出了t-SNE。

Hinton发明的这个SNE跟神经网络的一些做法都很相似了。t-SNE作者在论文里对SNE的批评也和对多数神经网络的批评一样。我读着这些东西都快要走到深度学习的路上去了。

对称SNE

t-SNE(t-Distributed Stochastic Neighbor Embedding,t分布的SNE)的目标是优化SNE的上述缺点。与SNE不同的是,t-SNE的损失函数(1)是对称的,且有更简单的梯度;(2)使用t分布(Student-t distribution)而非高斯分布来样本在低维空间的相似性。t-SNE在低维空间使用重尾分布(heavy-tailed distribution)来缓解SNE的弊端。

C C C的定义不变:
C = ∑ i K L ( P i ∣ ∣ Q i ) = ∑ i ∑ j p i j log ⁡ p i j q i j C=\sum_i KL(P_i||Q_i)=\sum_i\sum_j p_{ij} \log \frac{p_{ij}}{q_{ij}} C=iKL(PiQi)=ijpijlogqijpij

同样令 p i i = q i i = 0 p_{ii}=q_{ii}=0 pii=qii=0,不过t-SNE希望 p i j = p j i , q i j = q j i p_{ij}=p_{ji},q_{ij}=q_{ji} pij=pji,qij=qji,即具有对称性。因此定义:
p i j = exp ⁡ ( − ∥ x i − x j ∥ 2 / 2 σ 2 ) ∑ k ≠ l exp ⁡ ( − ∥ x k − x l ∥ 2 / 2 σ 2 ) q i j = exp ⁡ ( − ∥ y i − y j ∥ 2 ) ∑ k ≠ l exp ⁡ ( − ∥ y k − y l ∥ 2 ) 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)} \\ q_{ij}=\frac{\exp(-\|y_i-y_j\|^2)}{\sum_{k\neq l} \exp(-\|y_k-y_l\|^2)} pij=k=lexp(xkxl2/2σ2)exp(xixj2/2σ2)qij=k=lexp(ykyl2)exp(yiyj2)

但是这样会造成一个问题,如果 x i x_i xi是个outlier(即如果所有其他样本距离它的距离都很远), p i j p_{ij} pij就会很小,此时 x i x_i xi C C C就只有很小的影响,也就是说除了 y i y_i yi的位置并没有很好地被其他样本影响。为了规避这个问题,令 p i j = p j ∣ i + p i ∣ j 2 n p_{ij}=\frac{p_{j|i}+p_{i|j}}{2n} pij=2npji+pij,这样对于所有的样本点 x i x_i xi都保证了 ∑ j p i j > 1 2 n \sum_j p_{ij}>\frac{1}{2n} jpij>2n1,每个样本点都能对损失函数 C C C产生显著影响。而且这样一来梯度公式就会更简单:
∂ C ∂ y i = 4 ∑ j ( p i j − q i j ) ( y i − y j ) \frac{\partial C}{\partial y_i}=4\sum_j(p_{ij}-q_{ij})(y_i-y_j) yiC=4j(pijqij)(yiyj)

我来试着求一下:
∂ C ∂ y i = − ∑ j ( p i j q i j ∂ q i j ∂ y i + p j i q j i ∂ q j i ∂ y i ) ∂ q i j ∂ y i = − q i j ⋅ 2 ( y i − y j ) ∂ q j i ∂ y i = − q j i ⋅ 2 ( y j − y i ) = q j i ⋅ 2 ( y i − y j ) ∂ C ∂ y i = ∑ j [ p i j ⋅ 2 ( y i − y j ) − p j i ⋅ 2 ( y i − y j ) ] = 2 ∑ j ( p i j − p j i ) ( y i − y j ) \frac{\partial C}{\partial y_i}=-\sum_j (\frac{p_{ij}}{q_{ij}}\frac{\partial q_{ij}}{\partial y_i}+\frac{p_{ji}}{q_{ji}}\frac{\partial q_{ji}}{\partial y_i}) \\ \ \\ \frac{\partial q_{ij}}{\partial y_i}= -q_{ij} \cdot 2(y_i-y_j) \\ \frac{\partial q_{ji}}{\partial y_i}=-q_{ji}\cdot 2(y_j-y_i) =q_{ji}\cdot 2(y_i-y_j) \\ \frac{\partial C}{\partial y_i} = \sum_j [p_{ij}\cdot 2(y_i-y_j) - p_{ji}\cdot 2(y_i-y_j)] =2\sum_j (p_{ij}-p_{ji})(y_i-y_j)\\ yiC=j(qijpijyiqij+qjipjiyiqji) yiqij=qij2(yiyj)yiqji=qji2(yjyi)=qji2(yiyj)yiC=j[pij2(yiyj)pji2(yiyj)]=2j(pijpji)(yiyj)

还是求不出来。后面再看看吧。继续读论文。

文章提出了一个开创性的观点:“crowding problems”:如果高维空间中有许多点均匀地分布在样本 i i i周围,并且现在希望将这些点映射到二维空间中,那么在二维空间中可得的能够容纳适度远的点的区域将没有可以容纳临近点的区域大。因此,如果我们希望在二维空间准确地描述较小的距离,就必须把样本 i i i周围适当距离的点放到二维空间更远的距离上。

t-SNE

t-SNE使用的是只有一个自由度的Student t分布(与柯西分布相同)来定义 q i j q_{ij} qij
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+yl2)1(1+yiyj2)1

这东西的好处在于,使得联合概率的表示对于样本在高维和低维空间距离尺度的变化几乎不敏感,而且大的比较分散的点集就像独立的点一样互相作用,其优化操作与SNE和对称SNE相同,但是尺度更合适。一种理论支持是,Student t分布是高斯分布的无穷混合,与高斯分布非常接近。而且由于没有指数项,Student t分布也会让计算更方便。偏导直接给出:
∂ C ∂ y i = 4 ∑ j ( 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 (p_{ij}-q_{ij})(y_i-y_j)(1+\|y_i-y_j\|^2)^{-1} yiC=4j(pijqij)(yiyj)(1+yiyj2)1

t-SNE总体流程如下:
在这里插入图片描述
文章说t-SNE的效果还可以通过两个trick进一步提高。一是“提前压缩”,即在优化开始前令样本全都聚集在一起,这样便于样本簇互相移动穿越,并且更便于寻找全局最优。


http://chatgpt.dhexx.cn/article/D8HHnyi6.shtml

相关文章

t-SNE算法详解

前言 此处只作为自己学习理解的笔记之用,转载于https://blog.csdn.net/sinat_20177327/article/details/80298645 t-SNE(t-distributed stochastic neighbor embedding)是用于降维的一种机器学习算法,是由 Laurens van der Maaten 和 Geoffrey Hinton在…

t-SNE数据降维可视化

t-SNE数据降维可视化 – 潘登同学的Machine Learning笔记 文章目录 t-SNE数据降维可视化 -- 潘登同学的Machine Learning笔记 t-SNE的基本思想SNE(Stochastic Neighbor Embedding)SNE的主要缺点距离不对称存在拥挤现象 如何确定 σ \sigma σ总结t-sne代码实现 对比t-sne与UMAP…

【机器学习】基于t-SNE数据可视化工程

一、说明 t-SNE (t-Distributed Stochastic Neighbor Embedding)是一种常用的非线性降维技术。它可以将高维数据映射到一个低维空间(通常是2D或3D)来便于可视化。Scikit-learn API提供TSNE类,以使用T-SNE方法可视化数据。在本教程中,我们将简要学习如何在 Python 中使用 TS…

t-SNE:如何理解与高效使用

摘要 尽管t-SNE对于可视化高维数据非常有用,但有时其结果可能无法解读或具有误导性。通过探索它在简单情况下的表现,我们可以学会更有效地使用它。 探索高维数据的一种流行方法是t-SNE,由 van der Maaten 和 Hinton[1] 在 2008 年提出。该技术…

How to Use t-SNE Effectively.(翻译:如何高效地使用t-SNE)

Translation: How to use t-SNE effectively 1. 这些超参数真的很重要2. 在t-SNE图中,簇大小没有任何意义3. 集群之间的距离可能没有任何意义4. 随机噪声并不总是随机的。5. 有时你会看到一些形状6. 对于拓扑,你可能需要多个绘图7. 结论 尽管t-SNE在可视…

t-SNE原理与推导

t-SNE(t-distributed stochastic neighbor embedding)是用于降维的一种机器学习算法,由 Laurens van der Maaten 和 Geoffrey Hinton在08年提出。t-SNE 作为一种非线性降维算法,常用于流形学习(manifold learning)的降维过程中并与LLE进行类比&#xff0…

t-SNE降维

t-SNE(t-distributed stochastic neighbor embedding)是用于降维的一种机器学习算法,是由 Laurens van der Maaten 和 Geoffrey Hinton在08年提出来。此外,t-SNE 是一种非线性降维算法,非常适用于高维数据降维到2维或者3维,进行可…

t-SNE 可视化

背景 t-SNE(t-Distributed Stochastic Neighbor Embedding)是一种非常流行的非线性降维技术,主要用来对高维数据进行可视化,了解和验证数据或者模型。t-SNE属于流行学习(manifold learning),假…

用于语义分割模型的t-SNE可视化

前言 在之前的博客t-SNE可视化-Python实现中,对t-SNE的原理进行了一个简单的介绍,也给出了一个简单的使用案例。这篇博客在之前的基础上实现在语义分割模型上的t-SNE可视化。 语义分割模型中使用t-SNE的目的是,从模型的特征层面进行一定的可…

T SNE降维matlab程序,关于t-SNE降维方法

关于t-SNE降维方法 论文原图是这样的: image.png 1. 什么是t-SNE: 全名是t-distributed Stochastic Neighbor Embedding(t-SNE),翻译过来应该可以叫学生t分布的随机邻点嵌入法。 t-SNE将数据点之间的相似度转换为概率。原始空间中的相似度由高斯联合概率表示,嵌入空间的相似…

t-SNE可视化-Python实现

t-SNE 本文主要是对An Introduction to t-SNE with Python Example博客的翻译记录,和一些入门的Python代码,可以的话推荐阅读原文。 主要参考 介绍: An Introduction to t-SNE with Python Example GitHub: sas-python-work/tS…

t-SNE完整笔记

t-SNE(t-distributed stochastic neighbor embedding)是用于降维的一种机器学习算法,是由 Laurens van der Maaten 和 Geoffrey Hinton在08年提出来。此外,t-SNE 是一种非线性降维算法,非常适用于高维数据降维到2维或者3维,进行可…

机器学习笔记:t-SNE

0 前言 t-SNE(t-Distributed Stochastic Neighbor Embedding)是一种非常常用的数据降维,常用于数据可视化t-SNE/SNE的基本原理是: 在高维空间构建一个概率分布拟合高维样本点间的相对位置关系 在低维空间,也构建 一个…

图像异常检测

点击上方“小白学视觉”,选择加"星标"或“置顶” 重磅干货,第一时间送达在机器学习中,处理异常检测任务是很常见的。数据科学家经常遇到必须显示,解释和预测异常的问题。在这篇文章中,我们主要讲述&#xff…

python进行图像边缘检测

边缘检测 图像边缘是指图像中表达物体的周围像素灰度发生阶跃变化的那些像素集合。 图像中两个灰度不同的相邻区域的交界处,必然存在灰度的快速过渡或称为跳变,它们与图像中各区域边缘的位置相对应,边缘蕴含了丰富的内在信息,如方…

用CNN识别CT图像检测肺癌

用CNN识别CT图像检测肺癌 原文:2nd place solution for the 2017 national datascience bowl 翻译参考:知乎用户王小新 Kaggle百万美元大赛优胜者:用CNN识别CT图像检测肺癌 概要 本文为2017年由Kaggle举办的数据科学竞赛的第二名获奖者Juli…

机场航拍图像检测软件(Python+YOLOv5深度学习模型+清新界面)

摘要:机场航拍图像检测软件使用深度学习技术检测机场航拍图像中的飞机目标等,识别航拍目标等结果并记录和保存,辅助机场智能管理运行。在介绍算法原理的同时,给出Python的实现代码、训练数据集,以及PyQt的UI界面。机场…

半监督学习+3D医疗图像检测 FocalMix

目录 Abstract 1.Contributions Introduction 2. Background and Preliminaries背景和准备工作 2.1.1 Anchor boxes 2.1.2 Focal Loss 2.2. Semi-supervised Learning 3. Methodology 3.1. Soft-target Focal Loss 3.2. Anchor-level Target Prediction 3.3. MixUp A…

检测 图像中得直线

Radon 变换 介绍 图像投影,就是说将图像在某一方向上做线性积分(或理解为累加求和)。如果将图像看成二维函数f(x, y),则其投影就是在特定方向上的线性积分,比如f(x, y)在垂直方向上的线性积分就是其在x轴上的投影&…

遥感图像目标检测研究综述

遥感图像目标检测 遥感图像特殊性一、目标检测研究综述1.介绍2.传统目标检测3.基于深度学习目标检测R-CNN系列为代表的两阶段算法YOLO、SSD为代表的一阶段算法 二、多尺度目标检测研究综述1.基于图像金字塔的多尺度目标检测基于尺度生成网络的图像金字塔基于尺度归一化的图像金…