PCA目的:这里举个例子,如果假设我有m个点,{x(1),...,x(m)},那么我要将它们存在我的内存中,或者要对着m个点进行一次机器学习,但是这m个点的维度太大了,如果要进行机器学习的话参数太多,或者说我要存在内存中会占用我的较大内存,那么我就需要对这些个点想一个办法来降低它们的维度,或者说,如果把这些点的每一个维度看成是一个特征的话,我就要减少一些特征来减少我的内存或者是减少我的训练参数。但是要减少特征或者说是减少维度,那么肯定要损失一些信息量。这就要求我在减少特征或者维度的过程当中呢,尽可能少的损失信息量,这就是PCA算法的目的。

  也就是说,对于我的每一个点我要找到一个新的表达形式,也相当于找到一个函数,让f(x)=c。

  对于恢复来说,我们这里选择最简单的矩阵相乘的形式让我们的新的表达c变回n维。即,这里

  这里我们加一个约束,那就是D的列向量互相时间是正交的(注意:如果不是l=n的情况,D是不能说成是正交矩阵的)。

  接下来我们就要将我们的想法转变为可以实施的算法了。

  我们都知道在机器学习中,有一种函数叫做代价函数,英文是cost function, 这个函数的作用就是用来评估你模型的输入和输出之间的差距的。如果你的模型输出和输入的差距越大,这个cost function的值就越大。

  我们借用这样一个思想,如果我要找到一个可以尽可能损失信息的c的表达,那我就让g(c)尽可能的和x相同,也就是构造了一个代价函数,我们的目的就是让这个代价函数的值变成最小。数学表达式如下:

      

  我们这里将这个欧几里得距离加上一个平方,我的理解是方便计算,反正增减性啊都是一样的。

  那我们的表达式就变成了这样:

       

  等式右边这一项等于:

      

  这里是因为x和g(c)都是n维向量,的结果是一个标量,就是一个数,转置自然等于自身啦。

  那么现在我们的问题变成了这样:

  然后我们把g(c)带入公式中:

            

              

  还记得D的约束吗?D的列向量相互之间是正交的,所以DTD=I。

  那么到现在为止,我就可以得到我这个式子的结果了,对上面这个表达式对C求导:

    

  现在我们发现,要想对x进行PCA处理,我们只需要找到这个矩阵D,然后让它的转置乘以X就好了。

  即PCA和解码的过程就是:

  那么现在我们来算这个矩阵D。

  

  还是根据代价函数的思想,我们得到了上述公式。

  为了得到这个算法,我们首先考虑最简单的l=1的情况。也就是说,D中只包含了一个向量d。

  这样我们得到:

  我们将这个公式美化一下:

  然后我们将所有的x点都带入进去,统一用X表达,X就是一个m*n的矩阵。

  

  经过一个等价变化我们得到了有关于矩阵的迹的表达式:

        

  

  这中间我们去掉了与d无关的项。

      

      

  然后我们进行一下化简:

       

        

  那现在这个问题就可以根据特征值来求解了。得到的d就是XTX的最大的特征值对应的特征向量。

  那么对于l>1的情况,DD就是最大l个特征值对应的特征向量的组合。

  参考自:Deep Learning 。作者:Yoshua Bengio, Ian Goodfellow, Aaron Courville

  

  

  

  

深度学习笔记——PCA原理与数学推倒详解的更多相关文章

  1. Linux防火墙iptables学习笔记(三)iptables命令详解和举例[转载]

     Linux防火墙iptables学习笔记(三)iptables命令详解和举例 2008-10-16 23:45:46 转载 网上看到这个配置讲解得还比较易懂,就转过来了,大家一起看下,希望对您工作能 ...

  2. 基于OpenCL的深度学习工具:AMD MLP及其使用详解

    基于OpenCL的深度学习工具:AMD MLP及其使用详解 http://www.csdn.net/article/2015-08-05/2825390 发表于2015-08-05 16:33| 59 ...

  3. (转)live555学习笔记10-h264 RTP传输详解(2)

    参考: 1,live555学习笔记10-h264 RTP传输详解(2) http://blog.csdn.net/niu_gao/article/details/6936108 2,H264 sps ...

  4. 学习笔记--Grunt、安装、图文详解

    学习笔记--Git安装.图文详解 安装Git成功后,现在安装Gruntjs,官网:http://gruntjs.com/ 一.安装node 参考node.js 安装.图文详解 (最新的node会自动安 ...

  5. Pytorch学习笔记08----优化器算法Optimizer详解(SGD、Adam)

    1.优化器算法简述 首先来看一下梯度下降最常见的三种变形 BGD,SGD,MBGD,这三种形式的区别就是取决于我们用多少数据来计算目标函数的梯度,这样的话自然就涉及到一个 trade-off,即参数更 ...

  6. lucene学习笔记(四)lucene分词详解

    分词器的核心类 Analyzer SimpleAnalyzer StopAnalyzer WhitespaceAnalyzer StandardAnalyzer TokenStream 分词器做好处理 ...

  7. JQuery学习笔记系列(一)----选择器详解

    笔者好长时间没有更新过博客园的笔记了,一部分原因是去年刚刚开始工作一段时间忙碌的加班,体会了一种每天加班到凌晨的充实感,之后闲暇时间了也因为自己懒惰没有坚持记笔记的习惯,现在重新拾起来. 借用古人的一 ...

  8. 【Java学习笔记之三十四】超详解Java多线程基础

    前言 多线程并发编程是Java编程中重要的一块内容,也是面试重点覆盖区域,所以学好多线程并发编程对我们来说极其重要,下面跟我一起开启本次的学习之旅吧. 正文 线程与进程 1 线程:进程中负责程序执行的 ...

  9. 【精选】Nginx模块Lua-Nginx-Module学习笔记(二)Lua指令详解(Directives)

    源码地址:https://github.com/Tinywan/Lua-Nginx-Redis Nginx与Lua编写脚本的基本构建块是指令. 指令用于指定何时运行用户Lua代码以及如何使用结果. 下 ...

随机推荐

  1. asp.net中缓存的使用介绍一

    asp.net中缓存的使用介绍一 介绍: 在我解释cache管理机制时,首先让我阐明下一个观念:IE下面的数据管理.每个人都会用不同的方法去解决如何在IE在管理数据.有的会提到用状态管理,有的提到的c ...

  2. rxjs5.X系列 —— filter系列 api 笔记

    欢迎指导与讨论 :) 前言 本文是笔者翻译 RxJS 5.X 官网各类operation操作系列的的第二篇 -- filter转换.如有错漏,希望大家指出提醒O(∩_∩)O.更详细的资料尽在rxjs官 ...

  3. python2.7高级编程 笔记一(Python中的with语句与上下文管理器学习总结)

    0.关于上下文管理器上下文管理器是可以在with语句中使用,拥有__enter__和__exit__方法的对象. with manager as var: do_something(var) 相当于以 ...

  4. [LeetCode] Evaluate Division 求除法表达式的值

    Equations are given in the format A / B = k, where A and B are variables represented as strings, and ...

  5. Visual Stdio 无法直接启动带有“类库输出类型”的项目若要调试此项目,请在此解决方案中添加一个引用库项目的可执行项目。将这个可执行项目设置为启动项目!

    j解决方法:项目-属性-应用程序-输出类型-Windows应用程序

  6. Freemarker中空值 null的处理++++定义数组

    http://blog.java-zone.org/archives/800.html <#list listBlogPost as blogPost> </#list> 如果 ...

  7. SVO原理解析

    最近空闲时间在研究Semi-Direct Monocular Visual Odometry(SVO)[1,2],觉得它值得写一写.另外,SVO的运算量相对较小,我想在手机上尝试实现它. 关于SVO的 ...

  8. STM32用JLINK 烧写程序时出现NO Cortex-m device found in JTAG chain现象和解决方案

    现象 CPU: STM32107VC 用JLINK 烧写程序时出现NO Cortex-m device found in JTAG chain 如图无法查找到硬件就是CPU 提示1:NO Cortex ...

  9. 调戏OpenShift:一个免费能干的云平台

    一.前因后果 以前为了搞微信的公众号,在新浪sae那里申请了一个服务器,一开始还挺好的 ,有免费的云豆送,但是一直运行应用也要消费云豆,搞得云豆也所剩无几了.作为一名屌丝,日常吃土,就单纯想玩一玩微信 ...

  10. pandas read table

    http://pandas.pydata.org/pandas-docs/stable/10min.html import pandas as pd res = pd.read_table(" ...