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 <script type="math/tex" id="MathJax-Element-30180">l</script>特征向量给出。这个可以用归纳法证明。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值