style: html to md syntax
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
|
||||
# 前言
|
||||
|
||||
与前面的一些工作不同,SwAV<strong>不再进行个体判别任务</strong>,而是提出了新的任务————<strong>聚类</strong>
|
||||
与前面的一些工作不同,SwAV**不再进行个体判别任务**,而是提出了新的任务————**聚类**
|
||||
|
||||
并在训练的模型结构上也做了相应改动,而非只调整训练方法。
|
||||
|
||||
@@ -26,17 +26,17 @@
|
||||
|
||||
## 聚类中心?
|
||||
|
||||
首先我们有个新的东西<strong>prototypes</strong>,它是<strong>聚类中心的集合</strong>,也就是许多作为聚类中心的向量构成的矩阵。
|
||||
首先我们有个新的东西**prototypes**,它是**聚类中心的集合**,也就是许多作为聚类中心的向量构成的矩阵。
|
||||
|
||||
这些聚类中心是我设定在超球面上的,离散的一些点,我希望让不同的特征向它们靠拢以进行区分(也就是所谓聚类)。
|
||||
|
||||
更直白地讲,我在地上撒了一把面包屑,地上本来散乱的蚂蚁会向面包屑聚集,形成一个个<strong>小团体</strong>。蚂蚁就是<strong>不同图像的特征</strong>,面包屑就是<strong>我设定的聚类中心</strong>
|
||||
更直白地讲,我在地上撒了一把面包屑,地上本来散乱的蚂蚁会向面包屑聚集,形成一个个**小团体**。蚂蚁就是**不同图像的特征**,面包屑就是**我设定的聚类中心**
|
||||
|
||||
## 聚类中心我知道了,然后呢?
|
||||
|
||||
先说我拿他干了什么,再一步步讲为什么要这么做吧。
|
||||
|
||||
首先我们手里有抽取出来的特征<strong>z1</strong>,<strong>z2</strong>,以及一个我随机初始化的<strong>聚类中心矩阵 c</strong>。我分别求这个<strong>矩阵</strong>和<strong>z1</strong>,<strong>z2</strong>的内积,并<strong>进行一些变换</strong>得到 Q1,Q2。当 z1,z2 都是正样本时,我希望<strong>Q1 与 z2 相近</strong>,<strong>Q2 与 z1 相近</strong>。如果有一个是负样本则尽可能远离。也就是拿 Q 当 ground-truth 做训练。最后这步前面已经讲过 NCEloss 等损失函数了,用它们就可以达成这个任务。
|
||||
首先我们手里有抽取出来的特征**z1**,**z2**,以及一个我随机初始化的**聚类中心矩阵 c**。我分别求这个**矩阵**和**z1**,**z2**的内积,并**进行一些变换**得到 Q1,Q2。当 z1,z2 都是正样本时,我希望**Q1 与 z2 相近**,**Q2 与 z1 相近**。如果有一个是负样本则尽可能远离。也就是拿 Q 当 ground-truth 做训练。最后这步前面已经讲过 NCEloss 等损失函数了,用它们就可以达成这个任务。
|
||||
|
||||
而我们的优化要采用 [K-means](https://zhuanlan.zhihu.com/p/78798251)(不懂可以看这里)的类似做法,先对聚类中心进行优化,再对特征进行优化。
|
||||
|
||||
@@ -46,13 +46,13 @@ so,why?相信你现在肯定是一脸懵,不过别急,希望我能为你
|
||||
|
||||
## 首先是第一步,为什么要求内积?
|
||||
|
||||
如果你有好好了解线性代数的几何性质,应当了解<strong>两个向量的内积就是一个向量在另一个向量上的投影</strong>,而一个向量与一个矩阵的内积,<strong>就是把这个向量投影到这个矩阵代表的基空间中</strong>。
|
||||
如果你有好好了解线性代数的几何性质,应当了解**两个向量的内积就是一个向量在另一个向量上的投影**,而一个向量与一个矩阵的内积,**就是把这个向量投影到这个矩阵代表的基空间中**。
|
||||
|
||||
我做的第一步就是把<strong>抽出来的特征 z 用聚类中心的向量表示,这样更加方便对比聚类成功与否</strong>。
|
||||
我做的第一步就是把**抽出来的特征 z 用聚类中心的向量表示,这样更加方便对比聚类成功与否**。
|
||||
|
||||
## 然后是第二步,我说的变换是什么呢?
|
||||
|
||||
我们现在求内积是为了把特征投影到聚类中心空间,为了避免模型训练坍塌(就是网络把特征全部聚到同一个点,<del>开摆~</del>)我要保证每个聚类中心被<strong>"使用"</strong>的次数,所以我们请出了<strong>Sinkhorn-Knopp 算法。</strong>这个算法比较硬核,我在这里不展开了,大家知道它是干啥的就行,具体的推导可以看我后面贴的视频,那里面有讲。
|
||||
我们现在求内积是为了把特征投影到聚类中心空间,为了避免模型训练坍塌(就是网络把特征全部聚到同一个点,<del>开摆~</del>)我要保证每个聚类中心被**"使用"**的次数,所以我们请出了**Sinkhorn-Knopp 算法。**这个算法比较硬核,我在这里不展开了,大家知道它是干啥的就行,具体的推导可以看我后面贴的视频,那里面有讲。
|
||||
|
||||
## 第三步应该不用怎么讲了吧?
|
||||
|
||||
@@ -64,7 +64,7 @@ so,why?相信你现在肯定是一脸懵,不过别急,希望我能为你
|
||||
|
||||
# 总结
|
||||
|
||||
主要贡献是上面我说的三步聚类算法以及后面的小 trick,<strong>Sinkhorn-Knopp 算法难度较高,大家有兴趣的话自行观看后面这个视频理解哈~</strong>
|
||||
主要贡献是上面我说的三步聚类算法以及后面的小 trick,**Sinkhorn-Knopp 算法难度较高,大家有兴趣的话自行观看后面这个视频理解哈~**
|
||||
|
||||
# 相关资料
|
||||
|
||||
|
||||
Reference in New Issue
Block a user