【机器学习】ICA特征提取
看完了ICA的一整套原理介绍后,感觉完整的介绍和andrew ng的课程中的ICA特征提取关系不是很大;在ICA的理论中,主要用于盲源分离的,也就是混合的观测数据X,通过一个正交的且其范数为1的分离矩阵W(其实是实现旋转变换),分解为相互独立的原始信号数据S=WX。(这里要求S,W,X都为n*n的矩阵)
学习完成后自己有一些理解和不解。
数据处理
在实际的造作过程中,先通过均值削减和白化操作(也可通过PCA降维),把观测数据X变为一个,各个维数之间相互独立的新数据Z;让Z通过矩阵W分解为S,S=WZ;这样处理数据可以加快数据的收敛性;减低计算的复杂度。
模型转化
1,感觉利用极大似然估计算法时,利用sigmoid函数特有的性质,来近似代替原始数据的的概率分布Ps(t),感觉这个很神奇,以前只知道期望均值,可以用平均数来代替,例如本例中也通过均值来近似估计对数似然期望;没想到连概率密度函数都可以“蒙”;通过转化把一个函数优化问题,最后通过梯度下降算法来求解最优值。
2,利用负熵转化时,感觉这个也很神奇,通过信息论中熵的概念,中心极限定理,最大熵原理,KL散度,互信息定义出了变量间相互独立行的度量,通过度量目标函数,来优化找到最佳W。
ICA进行图像特征提取
下面该进入正题了,就是利用ICA进行图像特征提取了;在ICA提取提取图像特征,这里先引用一段tornadomeet的介绍:
在sparse coding模型中,学习到的基是超完备集的,也就是说基集中基的个数比数据的维数还要大,那么对一个数据而言,将其分解为基的线性组合时,这些基之间本身就是线性相关的。如果我们想要得到线性无关的基集,那么基集中元素的个数必须小于或等于样本的维数,本节所讲的ICA(Independent
Component Analysis,独立成分分析)模型就可以完成这一要求,它学习到的基之间不仅保证线性无关,还保证了相互正交。
ICA特征提取本质上是对原始数据X,通过矩阵W,来实现一个线性变换;这里要求W为正交阵,变换后数据Y(Y=WX)之间线性无关,且正交;而且可以通过变换W矩阵的维度,来控制学习的特征的个数。
在模型变换上面,ICA特征提取并没有用上面提到的似然估计,熵等方法,而是通过类似autoencoder的方式,让自己和自己比较,是原始数据和重构数据误差达到最小;然后通过变换W矩阵,是W正交化。我们知道autoencoder是通过simoid(WX+B)来重构数据的,这个过程有两个变换,线性变换部分:WX+b;非线性部分:sigmoid部分;由于sigmoid非线性变换的存在,所以最后没有约束权值矩阵W必须为正交阵;所以通过autoencoder学习到的特征之间有相关性的。
所以利用ICA提取特征应该叫做,ICA autoencoder 或者 正交线性 autoencoder
ICA图像特征提取过程,由于tornadomeet大牛写的很好就直接copy了。
给出的代价函数却为:
(线性重构误差)
代价函数的偏导公式(这样实现时,可以偷懒不用推导了),只不过它给出的公式有一个小小的错误,我把正确的公式整理如下:
错误就是公式右边第一项最左边的那个应该是W,而不是它的转置W’,否则程序运行时是有矩阵维数不匹配的情况。
4. 最后就是对参数W进行迭代优化了,由于要使W满足正交性这一要求,所以不能直接像以前那样采用lbfgs算法,而是每次直接使用梯度下降法进行迭代,迭代完成后采用正交化步骤让W变成正交矩阵。只是此时文章中所说的学习率alpha是个动态变化的,是按照线性搜索来找到的。W正交性公式为:
5. 如果采用上面的代价函数和偏导公式时,用Ng给的code是跑不起来的,程序在线搜索的过程中会陷入死循环。(线搜索没有研究过,所以完全不懂)。最后在Deep Learning高质量交流群内网友”蜘蛛小侠”的提议下,将代价函数的W加一个特征稀疏性的约束,(注意此时的特征为Wx),然后把Ng的code中的迭代次数改大,比如5000,
其它程序不用更改,即可跑出结果来。
稀疏代价函数:
偏导为:
其中一定要考虑样本的个数m,否则即使通过了代价函数和其导数的验证,也不一定能通过W正交投影的验证。
程序代码:
参见tornadomeet的博客
http://www.cnblogs.com/tornadomeet/archive/2013/04/25/3041963.html
其中有个错误:就是在orthonormalICACost.m函数中,grad项的后面忘记除以样本总数num_samples了;如果不处理程序会陷入死循环。
应该是:
grad = ……+...
(weightMatrix*patches./sqrt((weightMatrix*patches).^2+epsilon))*patches'/ num_samples
【机器学习】ICA特征提取的更多相关文章
- 机器学习---文本特征提取之词袋模型(Machine Learning Text Feature Extraction Bag of Words)
假设有一段文本:"I have a cat, his name is Huzihu. Huzihu is really cute and friendly. We are good frie ...
- sklearn机器学习-特征提取1
scikit-learn机器学习的特征提取部分较多nlp内容,故学到一半学不下去,看完nltk再来补上 scikit-learn机器学习的特征提取这一章感觉讲的不是特别好,所以会结合着来看 首先是Di ...
- paper 156:专家主页汇总-计算机视觉-computer vision
持续更新ing~ all *.files come from the author:http://www.cnblogs.com/findumars/p/5009003.html 1 牛人Homepa ...
- paper 61:计算机视觉领域的一些牛人博客,超有实力的研究机构等的网站链接
转载出处:blog.csdn.net/carson2005 以下链接是本人整理的关于计算机视觉(ComputerVision, CV)相关领域的网站链接,其中有CV牛人的主页,CV研究小组的主页,CV ...
- 相似度度量:欧氏距离与余弦相似度(Similarity Measurement Euclidean Distance Cosine Similarity)
在<机器学习---文本特征提取之词袋模型(Machine Learning Text Feature Extraction Bag of Words)>一文中,我们通过计算文本特征向量之间 ...
- 关于国内外CV领域牛人的博客链接 .
此文为转载文章,尊重知识产权http://blog.csdn.net/carson2005/article/details/6601109此为原文链接,感谢作者! 以下链接是关于计算机视觉(Compu ...
- 计算机视觉(ComputerVision, CV)相关领域的站点链接
关于计算机视觉(ComputerVision, CV)相关领域的站点链接,当中有CV牛人的主页.CV研究小组的主页,CV领域的paper,代码.CV领域的最新动态.国内的应用情况等等. (1)goog ...
- 一文看懂AI深度学习丨曼孚科技
深度学习(Deep Learning)是机器学习的一种,而机器学习是实现人工智能的必经途径. 目前大部分表现优异的AI应用都使用了深度学习技术,引领了第三次人工智能的浪潮. 一. 深度学习的概念 深度 ...
- 小匠第二周期打卡笔记-Task05
一.卷积神经网络基础 知识点记录: 神经网络的基础概念主要是:卷积层.池化层,并解释填充.步幅.输入通道和输出通道之含义. 二维卷积层: 常用于处理图像数据,将输入和卷积核做互相关运算,并加上一个标量 ...
随机推荐
- 51nod 1989 竞赛表格 (爆搜+DP算方案)
题意 自己看 分析 其实统计出现次数与出现在矩阵的那个位置无关.所以我们定义f(i)f(i)f(i)表示iii的出现次数.那么就有转移方程式f(i)=1+∑j+rev(j)=if(j)f(i)=1+\ ...
- PHP mysqli_next_result() 函数
定义和用法 mysqli_next_result() 函数为 mysqli_multi_query() 准备下一个结果集. 语法 mysqli_next_result(connection); 执 ...
- 【转载】C++ STL priority_queue用法
priority_queue 对于基本类型的使用方法相对简单.他的模板声明带有三个参数,priority_queue<Type, Container, Functional> Type 为 ...
- 线程的interrupt()
官网解释 If this thread is blocked in an invocation of the wait(), wait(long), or wait(long, int) method ...
- flask 部署
学习 Flask,写完一个 Flask 应用需要部署的时候,就想着折腾自己的服务器.根据搜索的教程照做,对于原理一知半解,磕磕碰碰,只要运行起来了,谢天谢地然后不再折腾了,到下一次还需要部署时,这样的 ...
- oracle 中INSTR 函数和SUBSTR函数的使用
INSTR (源字符串, 目标字符串, 起始位置, 匹配序号) 在Oracle/PLSQL中,instr函数返回要截取的字符串在源字符串中的位置.只检索一次,就是说从字符的开始 到字符的结尾就结束. ...
- logserver 日志服务项目发布
logserver是使用logback.light-4j.commons-exec等构建的简单日志服务,参考项目logbackserver和light4j,支持跟踪日志.分页查看.搜索定位.下载文件等 ...
- LeetCode 84. 柱状图中最大的矩形(Largest Rectangle in Histogram)
题目描述 给定 n 个非负整数,用来表示柱状图中各个柱子的高度.每个柱子彼此相邻,且宽度为 1 . 求在该柱状图中,能够勾勒出来的矩形的最大面积. 以上是柱状图的示例,其中每个柱子的宽度为 1,给定的 ...
- QObject 的拷贝构造和赋值操作
QOject 中没有提供一个拷贝构造函数和赋值操作符给外界使用,其实拷贝构造和赋值的操作都是已经声明了的,但是它们被使用了Q_DISABLE_COPY () 宏放在了private区域.因此所有继承自 ...
- UTC ISO 8601
如果时间在零时区,并恰好与协调世界时相同,那么(不加空格地)在时间最后加一个大写字母Z.Z是相对协调世界时时间0偏移的代号.如下午2点30分5秒表示为14:30:05Z或143005Z:只表示小时和分 ...