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

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

c∗=argminc−2xTDc+cTDTDc

\boldsymbol{c}^\ast=\rm{\mathop{argmin}_{c}}-2\boldsymbol{x}^T\boldsymbol{Dc}+\boldsymbol{c}^T\boldsymbol{D}^T\boldsymbol{Dc}

=argminc−2xTDc+cTIlc

=\rm{\mathop{argmin}_{c}}-2\boldsymbol{x}^T\boldsymbol{Dc}+\boldsymbol{c}^T\boldsymbol{I_lc}(对 D\boldsymbol{D}施加正交和单位范数约束)

=argminc−2xTDc+cTc

=\rm{\mathop{argmin}_{c}}-2\boldsymbol{x}^T\boldsymbol{Dc}+\boldsymbol{c}^T\boldsymbol{c}我们可以用矢量微积分解决这个最优化问题(该部分内容参见4.3):

∇(−2xTDc+cTc)=0

\nabla\rm(-2\boldsymbol{x}^T\boldsymbol{Dc}+\boldsymbol{c}^T\boldsymbol{c})=0

−2DTx+2c=0

-2\rm\boldsymbol{D}^T\boldsymbol{x}+2\boldsymbol{c}=0

c=DTx(2.2)

\boldsymbol{c}=\rm\boldsymbol{D}^T\boldsymbol{x}\tag{2.2}这是一个好消息:我们可以只用一个矩阵向量操作来最优化编码 x\boldsymbol{x} 。为了编码一个向量,我们应用编码函数:

f(x)=DTx

f(x)=\rm\boldsymbol{D}^T\boldsymbol{x}进一步使用矩阵乘法,我们也可以定义PCA重构操作:

r(x)=g(f(x))=DDTx

r(\boldsymbol{x})=g(f(\boldsymbol{x}))=\rm\boldsymbol{DD}^T\boldsymbol{x}接下里,我们需要选择编码矩阵 D\boldsymbol{D}。要做到这一点,我们需要回顾最小化输入和重构之间 L2\boldsymbol{L}^2距离的想法。然而,因为我们使用相同的矩阵来解码所有点,我们就不能孤立考虑每个点。我们必须最小化误差矩阵的Frobenius范数:

D∗=argminD∑i,j(x(i)j−r(x(i))j)2‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾√其中DTD=Il(2.3)

\boldsymbol{D^\ast}=\rm {\mathop{argmin}_D}\sqrt{\sum_{i,j}(\boldsymbol{x}_{j}^{(i)}-r(\boldsymbol{x^{(i)}})_j)^2} 其中\boldsymbol{D^\rm{T}D}=\boldsymbol{I_l}\tag{2.3}为了导出寻找 D∗\boldsymbol{D^\ast}的算法,我们先考虑 l=1l=1的情况。在这种情况下, D\boldsymbol{D}只是一个单一的矢量 d\boldsymbol{d}。将2.2代入2.3,并将 D\boldsymbol{D}化为 d\boldsymbol{d}

d∗=argmind∑i||x(i)−ddTx(i)||22其中||d||2=1

\boldsymbol{d^\ast}=\rm \mathop{argmin}_d\sum_{i}||\boldsymbol{x}^{(i)}-\boldsymbol{dd^\rm{T}x^{(i)}}||_2^2 其中||\boldsymbol{d}||_2=1上面是带入之后最直接的化简方式,但是对于写等式来说风格不悦目。它把标量放在了矢量的右边。而更方便的方式是将标量洗漱放在矢量的左边。因此,我们通常将等式写成下面的形式:

d∗=argmin∑i||x(i)−dTx(i)d||22其中||d||2=1

\boldsymbol{d^\ast}=\rm argmin\sum_{i}||\boldsymbol{x^{(i)}}-\boldsymbol{d^\rm{T}x^{\rm{(i)}}d}||_2^2其中||\boldsymbol{d}||_2=1或者,根据标量的转置等于本身

d∗=argmin∑i||x(i)−x(i)dd||22其中||d||2=1

\boldsymbol{d^\ast}=\rm argmin\sum_{i}||\boldsymbol{x^{(i)}}-\boldsymbol{x^{\rm{(i)}}dd}||_2^2其中||\boldsymbol{d}||_2=1上面的方式使得我们能够用更紧凑的符号来表示。让 X∈Rm×n\boldsymbol{X}\in\rm{R^{m\times n}}表示所有用来描述点的向量所定义的矩阵,这样的话 Xi,:=x(i)\boldsymbol{X_{i,:}=x^{(\rm i)}}。我们现在将问题重写为:

d∗=argmin||X−XddT||2F其中||d||2=1

\boldsymbol{d^\ast}=\rm argmin||\boldsymbol{X-Xdd^{\rm T}}||_F^2其中||\boldsymbol{d}||_2=1暂时忽略限制,我们可以将Frobenius范数化为:

argmin||X−XddT

\rm argmin||\boldsymbol{X-Xdd^{\rm T}}

=argminTr((X−XddT)T(X−XddT))

=\rm argmin Tr((\boldsymbol{X-Xdd^{\rm T}})^T(\boldsymbol{X-Xdd^{\rm T}}))(Frobenius范数的另一种定义)

=argminTr(XTX−XTXddT−ddTXTX+ddTXTXddT)

=\rm argminTr(\boldsymbol{X^{\rm T}X-X^{\rm T}Xdd^{\rm T}-dd^{\rm T}X^{\rm T}X}+\boldsymbol{dd^{\rm T}X^{\rm T}Xdd^{\rm T}})

=argminTr(XT−Tr(XTXddT)−Tr(ddTXTX+Tr(ddTXTXddT)

=\rm argminTr(\boldsymbol{X^{\rm T}}-Tr(\boldsymbol{X^{\rm T}Xdd^{\rm T}})-Tr(\boldsymbol{dd^{\rm T}X^{\rm T}X}+Tr(\boldsymbol{dd^{\rm T}X^{\rm T}Xdd^{\rm T}})

=argmin−Tr(XTXddT)−Tr(ddTXTX+Tr(ddTXTXddT)

=\rm argmin-Tr(\boldsymbol{X^{\rm T}Xdd^{\rm T}})-Tr(\boldsymbol{dd^{\rm T}X^{\rm T}X}+Tr(\boldsymbol{dd^{\rm T}X^{\rm T}Xdd^{\rm T}})(因为第一项与 d\boldsymbol{d}无关,不会影响最小化)

=argmin−2Tr(XTXddT)+Tr(ddTXTXddT)

=\rm argmin-2Tr(\boldsymbol{X^{\rm T}Xdd^{\rm T}})+Tr(\boldsymbol{dd^{\rm T}X^{\rm T}Xdd^{\rm T}})(因为在迹中我们可以循环矩阵的顺序)

=argmin−2Tr(XTXddT)+Tr(XTXddTddT)

=\rm argmin-2Tr(\boldsymbol{X^{\rm T}Xdd^{\rm T}})+Tr(\boldsymbol{X^{\rm T}Xdd^{\rm T}dd^{\rm T}})(同样利用上面的性质)。现在,加上限制:

=argmin−2Tr(XTXddT)+Tr(XTXddTddT)其中||d||2=1

=\rm argmin-2Tr(\boldsymbol{X^{\rm T}Xdd^{\rm T}})+Tr(\boldsymbol{X^{\rm T}Xdd^{\rm T}dd^{\rm T}})其中||\boldsymbol{d}||_2=1

=argmin−2Tr(XTXddT)+Tr(XTXddT)其中||d||2=1

=\rm argmin-2Tr(\boldsymbol{X^{\rm T}Xdd^{\rm T}})+Tr(\boldsymbol{X^{\rm T}Xdd^{\rm T}})其中||\boldsymbol{d}||_2=1(由于限制条件)

=argmin−Tr(XTXddT)其中||d||2=1

=\rm argmin-Tr(\boldsymbol{X^{\rm T}Xdd^{\rm T}})其中||\boldsymbol{d}||_2=1

=argmaxTr(XTXddT)其中||d||2=1

=\rm argmaxTr(\boldsymbol{X^{\rm T}Xdd^{\rm T}})其中||\boldsymbol{d}||_2=1

=argmaxTr(dTXTXd)其中||d||2=1

=\rm argmaxTr(\boldsymbol{d^{\rm T}X^{\rm T}Xd})其中||\boldsymbol{d}||_2=1这个最优化问题可以用特征分解解决。特别地,最优解 d\boldsymbol{d}由 XTX\boldsymbol{X^{\rm T}X}对应于最大特征值的特征向量给出。

对于一般情况l>1l>1,D\boldsymbol{D}由对应于最大特征值的l<script type="math/tex" id="MathJax-Element-30180">l</script>特征向量给出。这个可以用归纳法证明。

2.12 主成分分析(下)相关推荐

  1. Ubuntu 12.04 下编译Android 4.0.3

    在Ubuntu 12.04 下编译了Android 4.0.3发现了一大堆错误,网上找了一堆的更改源码啊,Android.mk的解决方法,虽然可以编译成功,但都有点坑爹的成分,为了不误人子弟就分享出来 ...

  2. android studio3.12,Android Studio V3.12环境下TV开发教程(六)提供卡片视图

    Android Studio V3.12环境下TV开发教程 文章源自:光谷佳武 https://blog.csdn.net/jiawuhan/article/details/80619656 在上一课 ...

  3. Ubuntu 12.04下安装Oracle Express 11gR2

    Ubuntu 12.04下安装Oracle Express 11gR2 [我的笔记] 参考1:http://www.linuxidc.com/Linux/2012-09/71382.htm 参考2:h ...

  4. linux ubuntu 12.04 下默认是安装了openjdk的

    ubuntu 12.04 下默认是安装了openjdk的,不过这个jdk问题比较多,因为你甚至无法启动Eclipse,所以还是需要自己安装jdk的. 1.下载jdk6 jdk6下载地址为:http:/ ...

  5. Ubuntu 12.04下搭建Web服务器 (MySQL+PHP+Apache)(转)

    看了网上很多关于用linux操作系统搭建网站服务器的教程,于是我自己也测试了很多,但今天所测试的 Ubuntu 12.04下搭建Web网站服务器 (MySQL+PHP+Apache环境),感觉这个适合 ...

  6. 通过pyenv在Mac OS X 10.12.3下安装Python-3.6.0及“*** [install] Error 1”错误的解决方法

    通过pyenv在Mac OS X 10.12.3下安装Python-3.6.0及"*** [install] Error 1"错误的解决方法 参考文章: (1)通过pyenv在Ma ...

  7. mysql webmail ubuntu12.04 imap_Ubuntu 12.04下搭建Web网站服务器 (MySQL+PHP+Apache环境)教程...

    前言 看了网上很多关于用linux操作系统搭建网站服务器的教程,于是我自己也测试了很多,但今天所测试的 Ubuntu 12.04下搭建Web网站服务器 (MySQL+PHP+Apache环境),感觉这 ...

  8. edup无线网卡驱动安装linux,EDUP EP-N8513 (RTL8188CUS芯片)在Ubuntu 12.10下的wifi不能连接问题解决方法...

    EDUP EP-N8513这款USB微型无线网卡在我刚装上的64位Ubuntu 12.10下虽然能被系统识别出来,但是并不能正常连接无线AP,具体表现为可以看到AP列表,尝试连接后不停的询问密码,即使 ...

  9. 3070网卡驱动linux教程,Ubuntu 12.04下RT5370无线网卡驱动安装

    之前买了个水星150U的无线网卡,一直没在Ubuntu下安装好驱动?今天再次在Ubuntu 12.04下尝试安装尽然成功了.以前我一直以为是RT2870的芯片的,今天拆开了一看原来是5370N,晕到R ...

  10. Android电视切换回放,Android Studio V3.12环境下TV开发教程(五)建立电视回放应用...

    Android Studio V3.12环境下TV开发教程 文章源自:光谷佳武 https://blog.csdn.net/jiawuhan/article/details/80619382 浏览和播 ...

最新文章

  1. 聊聊服务治理中的路由设计
  2. Chord 弦 - 一个现代音乐播放器
  3. 数据结构与算法JavaScript描述——使用队列
  4. Java常见内存溢出(OOM)解决方案
  5. java中412是什么错_HTTP 412 错误 – 先决条件失败 (Precondition failed)
  6. mq补偿机制java代码_RocketMQ源码分析之消息消费机制-消费端消息负载均衡机制与重新分布 - Java 技术驿站-Java 技术驿站...
  7. 程序员里面开源_如何以开源程序员的身份开始
  8. WinForm DataGridView 中的小bug.
  9. 如何用最简单的方法将PCweb改成适合各种设备的web
  10. cvLoadImage()的调用参数设置
  11. VS2015下安装Visual_Assist_x破解版
  12. SpringBoot+websocket 实现web聊天功能(单聊、保存消息)
  13. NPN、PNP型三极管的常见问题
  14. php tp gii,TP电商项目:使用GII制作品牌管理
  15. 学习Java用英文教材
  16. 2.4G wifi 的频道/信道 20M 40M的概念
  17. Android手机 通过NFC读取二代证
  18. HTML5+CSS3小实例:DNA双螺旋动画
  19. 医疗项目 开源_开源医疗IT的未来
  20. oracle 查询unlock,oracle account lock/unlock

热门文章

  1. ABBYY FineReader中的OCR选项怎样运用好
  2. (转)Java线程:新特征-线程池
  3. [转载]【Java EE】Struts2.1.6与Spring2.5.6框架整合
  4. TypeScript 基础类型 1
  5. 通过腾讯地图、高德地图、百度地图开发接口获取坐标对应的周边相关信息
  6. android gridview 按钮事件处理,Android TV gridview 的按键事件响应巧变 事件分发机制...
  7. 使用FastReport报表工具生成图片格式文档
  8. Docker Compose 简介、安装、初步体验
  9. 【Python】BMI指数 计算器
  10. 【C语言】创建一个函数,将输入的2个数排序