文章目录[隐藏]
论文链接
总结
这篇文章提出了deep embedded regularIzed clustering (DEPICT)的方法,从网络架构上来讲是很多种trick的集成体。
网络
整体还是autoencoder的思路,变化主要有以下几点:
- 因为是图像,所以将中间层从linear层换成了conv层;
- 加入了去噪机制;
- 对loss的形式有所优化;
- 重构误差从‘用常见的只用初始层和输出层计算’转变到了‘将中间每一层对称的输入输出都做一次计算’。
架构
首先从上面图片的网络结构说起。这幅图应该自顶向下来看。
1. Noisy Encoder
这一部分与普通的autoencoder无甚区别,只是将输入变成了加入了噪音的输入且中间层变为了卷积层而已。最后这一部分的输出就是
z
~
3
\tilde{z}^3
z~3(这里的上标代表着是第几层,如输入部分的
x
~
\tilde{x}
x~就是
z
~
0
\tilde{z}^0
z~0)。这个
z
~
3
\tilde{z}^3
z~3就是一般autoencoder的中间表达。然后这部分的末尾接了一个softmax层,这一部分的工作不仅仅是一个softmax,还包含了一个linear层,将
z
~
3
\tilde{z}^3
z~3的特征维度映射到
k
k
k维,
k
k
k是簇的数量。然后就得到了每一个输入对应的簇,在图中用
p
^
\hat{p}
p^表示。
2. Decoder
这一部分使用第一部分的
z
~
3
\tilde{z}^3
z~3作为输入,使用逆卷积层将
z
~
3
\tilde{z}^3
z~3重构。网络架构恰好与上一部分相反,与传统autoencoder的decoder部分也没有什么不同的。
3. Clean Encoder
这一部分使用未加入噪音的原始输入
x
x
x,直接使用Noisy Enocder部分训练出来的encoder,得到原始输入对应的
z
,
p
z,p
z,p。
损失函数
这一部分作者提出了两种损失函数,第二种的形式相对较为简单,是第一种方式的‘化简’。下面将分别对它们进行介绍。
构成
文中提出的损失函数分为两个部分:聚类部分和重构部分。重构部分相同,所以先介绍重构部分。
重构损失
这一部分相对于传统的重构误差(只使用decoder的输出
x
^
\hat{x}
x^与原始的输入
x
x
x)有所不同,它是对decoder和clean encoder中间每一层(包括初始输入和最后的输出)的临时向量
z
^
l
、
z
l
(
l
=
0
,
1...
)
\hat{z}^l、z^l(l=0,1...)
z^l、zl(l=0,1...)都计算一个重构误差,然后对它们求均值。数学表达式如下:
在图中的话就是红色的
L
2
L_2
L2。
聚类误差
原始形式
(推导式第二行的后半部分疑似有误,从KL散度的定义和上下文来看,应该是不存在系数
1
N
\frac{1}{N}
N1的)
原始的聚类损失函数由两部分组成。
前半部分中q代表着Clean Encoder的输出
p
p
p,p代表着Noisy Encoder的输出
p
~
\tilde{p}
p~,这一部分的作用是让Noisy Encoder输出的分布尽可能接近Clean Encoder输出的分布。
后半部分中
u
u
u代表着均匀分布,它可以被替换为任意符合簇分布的先验分布。而
f
k
=
1
N
∑
i
q
i
k
f_k = \frac{1}{N}\sum\limits_i q_{ik}
fk=N1i∑qik,这代表着每一簇的分配概率。这一部分的作用是使簇分布尽量接近于
u
u
u,使样本点不致全部落在一个簇里。
简化形式
原始形式的式子经化简后得到上图中的式子,与交叉熵数学表达式相同。(只有当N足够大的时候才能写成这种形式,而文中正是采用的这种形式)
数学推导(这部分不看不影响论文的阅读)
这一部分暂未完成,我没有推导出来。
有以下几个问题:
- 中间求偏导部分的第一个式子的分母,文中并没有
u
k
u_k
- 并没有看出来
q
i
k
q_{ik}
首先,原始形式那部分的损失函数形式如下:
L
=
1
N
∑
i
=
1
N
∑
k
=
1
K
(
q
i
k
l
o
g
q
i
k
p
i
k
+
q
i
k
l
o
g
f
k
u
k
)
L=\frac{1}{N}\sum\limits^N_{i=1}\sum\limits^K_{k=1}(q_{ik}log\frac{q_{ik}}{p_{ik}} + q_{ik}log\frac{f_k}{u_k})
L=N1i=1∑Nk=1∑K(qiklogpikqik+qiklogukfk)
上式中log和ln的含义相同。
合并得:
L
=
1
N
∑
i
=
1
N
∑
k
=
1
K
q
i
k
l
o
g
q
i
k
f
k
p
i
k
u
k
L = \frac{1}{N}\sum\limits^N_{i=1}\sum\limits^K_{k=1}q_{ik}log\frac{q_{ik}f_k}{p_{ik}u_k}
L=N1i=1∑Nk=1∑Kqiklogpikukqikfk
而
q
i
k
q_{ik}
qik的loss则为:
L
q
i
k
=
q
i
k
l
o
g
q
i
k
f
k
p
i
k
u
k
L_{q_{ik}} = q_{ik}log\frac{q_{ik}f_k}{p_{ik}u_k}
Lqik=qiklogpikukqikfk
然后对
q
i
k
q_{ik}
qik求偏导(
q
i
k
q_{ik}
qik的梯度):
∂
L
q
i
k
∂
q
i
k
=
l
o
g
q
i
k
f
k
p
i
k
u
k
+
q
i
k
∑
i
′
N
q
i
′
k
+
1
\frac{\partial L_{q_{ik}}}{\partial q_{ik}} = log\frac{q_{ik}f_k}{p_{ik}u_k} + \frac{q_{ik}}{\sum\limits_{i'}^Nq_{i'k}} + 1
∂qik∂Lqik=logpikukqikfk+i′∑Nqi′kqik+1
当N足够大时,式子第二项的值就可以忽略不计。
令梯度(
L
q
i
k
L_{q_{ik}}
Lqik)为0(即达到局部最优解的时候),且忽略第二项,则可得到如下等式:
于是损失函数化为:
总损失函数
即简化版聚类损失加上重构损失。
BS3_1 11th
版权声明:本文为CSDN博主「吾道长存」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/eternal_city/article/details/121205283
暂无评论