2.12 主成分分析(下)

声明:该文章翻译自MIT出版的《DEEP LEARNING》,博主会定期更新文章内容。由于博主能力有限,中间有过错之处希望大家给予批评指正,一起学习交流。

为了进一步分析,我们必须替换 g(c) 的定义:

c=argminc2xTDc+cTDTDc
=argminc2xTDc+cTIlc
(对 D 施加正交和单位范数约束)
=argminc2xTDc+cTc
我们可以用矢量微积分解决这个最优化问题(该部分内容参见4.3):
(2xTDc+cTc)=0
2DTx+2c=0
c=DTx(2.2)
这是一个好消息:我们可以只用一个矩阵向量操作来最优化编码 x 。为了编码一个向量,我们应用编码函数:
f(x)=DTx
进一步使用矩阵乘法,我们也可以定义PCA重构操作:
r(x)=g(f(x))=DDTx
接下里,我们需要选择编码矩阵 D 。要做到这一点,我们需要回顾最小化输入和重构之间 L2 距离的想法。然而,因为我们使用相同的矩阵来解码所有点,我们就不能孤立考虑每个点。我们必须最小化误差矩阵的Frobenius范数:
D=argminDi,j(x(i)jr(x(i))j)2DTD=Il(2.3)
为了导出寻找 D 的算法,我们先考虑 l=1 的情况。在这种情况下, D 只是一个单一的矢量 d 。将2.2代入2.3,并将 D 化为 d
d=argmindi||x(i)ddTx(i)||22||d||2=1
上面是带入之后最直接的化简方式,但是对于写等式来说风格不悦目。它把标量放在了矢量的右边。而更方便的方式是将标量洗漱放在矢量的左边。因此,我们通常将等式写成下面的形式:
d=argmini||x(i)dTx(i)d||22||d||2=1
或者,根据标量的转置等于本身
d=argmini||x(i)x(i)dd||22||d||2=1
上面的方式使得我们能够用更紧凑的符号来表示。让 XRm×n 表示所有用来描述点的向量所定义的矩阵,这样的话 Xi,:=x(i) 。我们现在将问题重写为:
d=argmin||XXddT||2F||d||2=1
暂时忽略限制,我们可以将Frobenius范数化为:
argmin||XXddT
=argminTr((XXddT)T(XXddT))
(Frobenius范数的另一种定义)
=argminTr(XTXXTXddTddTXTX+ddTXTXddT)
=argminTr(XTTr(XTXddT)Tr(ddTXTX+Tr(ddTXTXddT)
=argminTr(XTXddT)Tr(ddTXTX+Tr(ddTXTXddT)
(因为第一项与 d 无关,不会影响最小化)
=argmin2Tr(XTXddT)+Tr(ddTXTXddT)
(因为在迹中我们可以循环矩阵的顺序)
=argmin2Tr(XTXddT)+Tr(XTXddTddT)
(同样利用上面的性质)。现在,加上限制:
=argmin2Tr(XTXddT)+Tr(XTXddTddT)||d||2=1
=argmin2Tr(XTXddT)+Tr(XTXddT)||d||2=1
(由于限制条件)
=argminTr(XTXddT)||d||2=1
=argmaxTr(XTXddT)||d||2=1
=argmaxTr(dTXTXd)||d||2=1
这个最优化问题可以用特征分解解决。特别地,最优解 d XTX 对应于最大特征值的特征向量给出。

对于一般情况 l>1 D 由对应于最大特征值的 l 特征向量给出。这个可以用归纳法证明。

你可能感兴趣的:(PRML)