[机器学习] UFLDL笔记 - ICA(Independent Component Analysis)(Code)

来源:互联网 发布:诺基亚n86软件下载 编辑:程序博客网 时间:2024/05/30 07:12

引言

 机器学习栏目记录我在学习Machine Learning过程的一些心得笔记,涵盖线性回归、逻辑回归、Softmax回归、神经网络和SVM等等,主要学习资料来自Standford Ag老师的教程,同时也查阅并参考了大量网上的相关资料(在后面列出)。

 本文主要记录我在学习ICA(独立成分分析)过程中的心得笔记,对于ICA模型的理解和疑问,也纠正网络上一些Tutorial、资料和博文中的错误,欢迎大家一起讨论。
 全文共分为两个部分:
 Representation:ICA的模型描述;
 Code:ICA的代码实现。

前言

 本文主要介绍ICA的训练过程、代码以及实验结果(对应UFLDL的课后练习),源自于我在学习ICA过程中的笔记资料,包括了我个人对ICA模型的理解和代码实现,引用部分我都会标注出来,文章小节安排如下:
 1)实验基础
 2)实验结果
 3)实验代码
 4)参考资料
 5)结语

 关于ICA模型的基础知识可以参考:
 [机器学习] 笔记 - ICA(Independent Component Analysis)(Representation)
 

实验基础

 实验主要是基于UFLDL Tutorial中ICA部分的练习:Exercise:Independent Component Analysis,大家可以先参考该练习自己尝试完成实验。
 实验数据:STL-10 dataset

 ICA的目标函数:
 
 ICA的目标函数

 通过使用近似值“平滑” L1 范数,将ICA模型如下,
 标准正交ICA的目标函数
 
 标准正交ICA的目标函数
 
 标准正交ICA的目标函数对W的梯度
 标准正交ICA的目标函数对W的梯度

注意事项:
(1)基底线性独立
 因为要学习到一组标准正交基,所以基向量的个数必须小于输入数据的维度。

(2)正交化
 注意一点,正交化通过来完成,其实现为:
 这里写图片描述
 而不是
 这里写图片描述

(3)白化
 对于标准正交ICA,样本数据必须经过无正则 ZCA 白化,即 ε 设为 0。

(4)均值化
 代价值和梯度必须除以样本数。

实验结果

(1)优化过程中采用Batch gradient descent,即梯度下降中利用全样本计算代价值及梯度
>>迭代输出:

 Iteration         Cost        time   1000        0.599483      62.35046   2000        0.579602      158.1045   3000        0.567833      222.5326   4000        0.560265      287.4616   5000        0.554130      349.7853   ………………………………………………  16000        0.513359      1051.224  17000        0.511163      1115.36  18000        0.509213      1178.468  19000        0.507456      1242.144  20000        0.505815      1305.169   ………………………………………………  36000        0.493431      2337.619  37000        0.493253      2401.839  38000        0.493097      2466.276  39000        0.492961      2531.151  40000        0.492841      2594.416   ………………………………………………  46000        0.492322      2980.948  47000        0.492257      3044.261  48000        0.492197      3107.959  49000        0.492144      3172.782  50000        0.492096      3237.636

>>可视化:
迭代次数=10000

迭代次数=20000

迭代次数=30000

迭代次数=40000

迭代次数=50000

(2)优化过程中采用Mini-Batch Gradient Descent,即梯度下降中利用随机小批量样本计算代价值及梯度
>>迭代输出:
Iteration Cost t time
1000 0.609892 10.68158 4.643359
2000 0.587216 11.39067 9.270881
3000 0.576038 13.49648 13.96519
4000 0.550711 15.99159 18.70056
5000 0.559629 18.94798 23.6164
……………………………………………………………………
16000 0.454444 14.88662 79.16564
17000 0.492942 15.87485 84.36821
18000 0.491434 16.92869 89.44777
19000 0.467292 16.24724 94.3471
20000 0.496667 15.59322 99.20195
……………………………………………………………………
26000 0.481736 13.54037 138.9745
27000 0.508776 14.43924 144.397
28000 0.462674 15.39777 149.7803
29000 0.524727 11.97014 155.0663
30000 0.480356 12.76477 160.018
……………………………………………………………………
36000 0.500814 15.20478 190.5871
37000 0.470674 13.13345 195.8069
38000 0.481720 14.0053 200.8657
39000 0.501621 12.09737 205.682
40000 0.536511 15.92648 210.5624
……………………………………………………………………
46000 0.478799 12.44678 240.977
47000 0.487278 14.74783 246.0048
48000 0.465347 14.15417 250.7841
49000 0.493228 13.5844 255.54
50000 0.495050 14.48619 260.2548

可视化:

分析
采用Mini-Batch Gradient Descent 可以在保证训练效果的同时,显著加快训练速度。

采用Batch Gradient Descent和Mini-Batch Gradient Descent的最终效果对比如下:    VS    

实验代码

在UFLDL - Exercise:Independent Component Analysis 基础上,我分别实现了Batch Gradient Descent和Mini-Batch Gradient Descent,并对参数 alpha 进行调整以实验不同参数下的训练情况。需要重点说明的是,第一,我在ICA优化过程中去除了线性搜索部分(代码中的while 1循环),因为我觉得这段线性搜索代码有些问题,因此非常容易陷入死循环。如果有朋友能理解这部分代码实现,务必请留言交流。第二,在orthonormalICACost函数中添加了一个miniBatchSize参数,用于实现Mini-Batch Gradient Descent。关于参数设置,迭代次数 iteration 和 学习率 alpha 的设置对训练速度和效果有直接的影响,对于本文中实现的ICA算法,实验了下面几种设置,1)alpha = 0.5,iteration = 10000, 20000, 500002)alpha = 1.0,iteration = 10000, 20000, 500003)alpha = 2.0,iteration = 10000, 20000, 500004)alpha = 4.0,iteration = 10000, 20000, 500002)alpha = 16.0,iteration = 10000, 20000, 50000可以发现随着 alpha 的增大,收敛速度越快,基本上 (alpha = 16.0,iteration = 10000) 就可以达到 (alpha = 0.5,iteration = 50000) 的效果。以下给出代码关键部分的实现:

参考资料

结语

·

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 苹果6s系统占12g怎么办 百度网盘下载的压缩包打不开怎么办 三星手机微信安装包解析错误怎么办 下身流出来的东西有异味很重怎么办 鞋脚底总有一股酸臭的味道怎么办 腋窝总是有股酸臭的味道应该怎么办 房间里总是有灰尘的味道怎么办 香水喷多了衣服味道太呛怎么办 香水喷在衣服上变黄了怎么办 84喷在白衣服上变红怎么办 夏季高温多肉山地玫瑰砍头了怎么办 海水缸爆藻有些石头不出绿藻怎么办 不小心把b原来的壁纸删了怎么办 注册简历时没有固定电话必填怎么办 申诉找回微信账号密码验证码怎么办 激活淘宝时显示注册账号过多怎么办 科学上网之后电脑上不了网怎么办 阴阳师地域鬼王定位在非洲怎么办 网吧忘记下机有小孩玩我号怎么办 等了三年老公还是不跟小三断怎么办 小三生孩子老公为责任断不了怎么办 没离婚去医院生孩子刷身份证怎么办 小孩早晨起床鼻子痒有鼻涕怎么办 孩子鼻梁上方和眼眶磕肿了怎么办 宝宝开空调冻的流鼻涕打喷嚏怎么办 狼人杀带耳机麦没声音怎么办 王者荣耀边境突围使刘邦大招怎么办 如果有个恶毒又有心机的后妈怎么办 qq炫舞的好忘了怎么办 百度网盘别人发我一个链接我怎么办 感觉地下和墙壁里有蚂蚁怎么办? 射像头监控摄像头家用卡满了怎么办 微乐贵阳捉鸡麻将不显示头像怎么办 苹果6p用久了卡怎么办 小猪民宿平台限制三天上线怎么办 交易猫买家申请了仲裁我的钱怎么办 雷达石英手表表里面有小灰尘怎么办 电脑宽带用户名和密码忘记了怎么办 腾讯会员不让别人在异地登录怎么办 中毒后电脑文件后缀是lnk怎么办 wps逗号隔的空不一样大怎么办