AutoEncoder的一些实验结果和思考

之前看Autoencoder的时候,做了一下这里的练习:http://ufldl.stanford.edu/wiki/index.php/Exercise:Sparse_Autoencoder 。其实 从1月份就开始做了,当时没有调试通过,后来又加班太多,一直没有接着做。直到上上周末抽空调了一天,终于顺利完成了,又拖到这周末才开始把实验结果整理成文。看来,做事还得趁热打铁,一气呵成。时间一久,积极性就没了。

最初按照练习中的建议,先实现了一个基本的代价函数,没有加入权值惩罚项和稀疏约束项,梯度检查都过了,跑出来的cost看起来也很收敛,可是权值的可视化结果就是不对,见图1 。为了验证代码的正确性,还利用AE代码实现了一个8维输入的BC编码器,结果也是很理想;又怀疑训练样本采样策略不够随机,从网上找了个代码换了下,结果还是不行。反复看了代码也没发现问题,想到加上权值惩罚项和稀疏约束项,还是不对,这下疯了。后来又折腾好久,终于OK了,原来加上权值惩罚项和稀疏约束项就能解决,只不过之前,修改的文件,不是MATLAB真正运行的文件。。。

AE的原理就不说了,现成代码在网上也可以找到,把几个实验结果贴一下,供参考。图1a是没有加稀疏项的可视化权值,图 1b是没有加权值惩罚项的结果,看起来都是无规律的。图1加了权值惩罚项和稀疏约束项,得到了符合预期的权值结果,根据材料中的解释就是图像的边缘。对于简单的BC编码,这两个约束项似乎没有影响。但通常来说,权值惩罚项是为了约束W的取值以防止过拟合。而稀疏项的存在则是为了更好的表示特征。

a                                                                                     b

c

图1

AE实验最初来至于对人类视觉的研究,所以取的训练图像都是一些自然风景图片。按照《Natural Image Statistics》这本书的说法,之所以选取自然图像,是因为这些自然图像促进了人类视觉的进化,也就说人类视觉是在适应自然图像的过程中得到进化的,对自然图像中的结构特征是敏感的。而像建筑,汽车这些包含现代物体的图像,则没有起到类似的作用。

虽然这么说没错,但人类毕竟还是能识别汽车这些物体的,于是我做了个实验验证了一下:拿包含汽车,地铁2号线,东方明珠的一些图像训练同样的AE,结果见图2。

图2

和拿风景图像做出来的结果并没有太大不同,虽然看起来稍有不同,但即使同一训练集中选出的不同样样本得到的结果也是不同的,所以可以认为是一样的吧。可见图像内容的影响并没有那本书中说得那么玄乎(实践,才是检验真理的唯一标准啊)。尝试解释一下,虽然人类视觉是为了自然环境而进化的,但显然其适应能力只受限于物理层面的因素,如光波强度,频率等,至于内容是一辆车,还是一头牛,其图像形成的低层物理特征并没有统计上的区别,因此对于视觉低层处理是一样的(或许对高层级的处理有影响)。再发散一下,对于完全人造的图像,如屏幕截图,网页页面截图等,是否应该具有不同于普通光影图像的特征?是否无法训练出像图1c那样的边缘来?我还没尝试,有兴趣的同志可以验证一下。

无聊又验证了一下样本数对于训练结果的影响。图3a,图3b,图3c分别是100个样本,10 0000个样本和100 0000个样本训练的结果。看来,100个样本对于成功抽取特征显然是不够的。貌似图c比图b更清晰?

a                                                                                              b

c

图3

AutoEncoder的一些实验结果和思考

时间: 2024-10-15 05:37:37

AutoEncoder的一些实验结果和思考的相关文章

Machine Learning Yearning - Andrew NG

链接(1~12章): https://gallery.mailchimp.com/dc3a7ef4d750c0abfc19202a3/files/Machine_Learning_Yearning_V0.5_01.pdf链接(第13章): https://gallery.mailchimp.com/dc3a7ef4d750c0abfc19202a3/files/Machine_Learning_Yearning_V0.5_02.pdf链接(第14章): https://gallery.mailc

博士五年的一些学术研究心得体会

学术研究的一些心得体会 当我们开始高校研究生活时,我们就踏上了学术研究之路.这是一条探索未知世界,追求知识真理之路.这条道路上布满荆棘,充满了冒险和乐趣.本文通过分享自己在博士学习阶段亲身经历的研究经验和体会(主要涉及到文献检索.文献阅读.实验设计和论文写作这四个方面),希望能帮助一些入门研究不久的同学对学术研究有新的认识,能在研究道路上少走弯路,迈向自己的成功之路. 1 引言 2014年9月,我提着行李箱一个人来到大连这陌生的城市开启了在大工的博士研究生涯.我是从大四毕业设计就已经开始接触自己

AutoEncoder一些实验结果,并考虑

看之前Autoencoder什么时候,我做了一些练习这里:http://ufldl.stanford.edu/wiki/index.php/Exercise:Sparse_Autoencoder .其实 从11月开始做.有没有经过调试,后来,加班太多,我没有那么做.抽出时间调了一天.最终顺利完毕了.又拖到这周末才開始把实验结果整理成文.看来,做事还得趁热打铁,一气呵成.时间一久.积极性就没了. 最初依照练习中的建议,先实现了一个主要的代价函数.没有增加权值惩处项和稀疏约束项.梯度检查都过了,跑出

降噪自动编码器(Denoising Autoencoder)

降噪自动编码器(Denoising Autoencoder) 起源:PCA.特征提取.... 随着一些奇怪的高维数据出现,比如图像.语音,传统的统计学-机器学习方法遇到了前所未有的挑战. 数据维度过高,数据单调,噪声分布广,传统方法的“数值游戏”很难奏效.数据挖掘?已然挖不出有用的东西. 为了解决高维度的问题,出现的线性学习的PCA降维方法,PCA的数学理论确实无懈可击,但是却只对线性数据效果比较好. 于是,寻求简单的.自动的.智能的特征提取方法仍然是机器学习的研究重点.比如LeCun在1998

自然语言处理一些读书笔记和自己的思考。

在知乎上搜索相关问题,有人推荐<数学之美>,之前粗略看过一次,这次想重新看一下并且做个读书笔记.下面是关于自然语言理解方面的一些读书笔记和自己的思考. 一. 自然语言处理历史: 自然语言处理最初发展的20多年里,相关科学家都极力通过电脑模拟人脑,试图用这种方式来处理人类语言,但是这种方式被证明是行不通的,成功几乎为零.NLP发展的第二阶段是70年代之后,科学家们终于找到了基于数学模型和统计的方法. 第一阶段的时候,学术界对人工智能和自然语言理解的普遍认识是:要让机器完成翻译或者语音识别等等,必

list add元素覆盖之前元素问题思考

最近码墙时发现了一个很有意思的问题,定义一个引用对象,如果在循环外面定义对象,在循环里list.add(对象),最后的结果却是所有的对象值都是一样的,即每add一次,都会把之前所有的数据覆盖掉,蛮有趣的,在网上轻松的搜到了答案,把对象在循环里new就行了,问题虽然解决了,但感觉这里面包含了一些.net底层存储的知识,有关于引用类型和值类型的存储方式问题,写了个demo总结了一下,水平,有大牛发现demo中有不足之处还请指正. 如下面两图: 图1:在外面定义对象a,调试界面中可以看到,i=4时,之

UFLDL实验报告2:Sparse Autoencoder

Sparse Autoencoder稀疏自编码器实验报告 1.Sparse Autoencoder稀疏自编码器实验描述 自编码神经网络是一种无监督学习算法,它使用了反向传播算法,并让目标值等于输入值,比如 .自编码神经网络尝试学习一个 的函数.换句话说,它尝试逼近一个恒等函数,从而使得输出 接近于输入 .当我们为自编码神经网络加入某些限制,比如给隐藏神经元加入稀疏性限制,那么自编码神经网络即使在隐藏神经元数量较多的情况下仍然可以发现输入数据中一些有趣的结构.稀疏性可以被简单地解释如下.如果当神经

无监督学习之RBM和AutoEncoder

几种学习方式 半监督学习 Transfer Learning Self-talk Learning RBM RBM的类别 Boltzmann Machine Restricted Boltzmann Machine Evaluation Inference Training 网络结构 训练过程 概率分布计算与Gibbs Sampling 对比散度Contrastive Divergence 泛化 实例 AutoEncoder 特点 实例 有标签的数据固然好,可是一方面打标签的代价太高,另一方面大

(转)Deep learning:四十二(Denoise Autoencoder简单理解)

前言: 当采用无监督的方法分层预训练深度网络的权值时,为了学习到较鲁棒的特征,可以在网络的可视层(即数据的输入层)引入随机噪声,这种方法称为Denoise Autoencoder(简称dAE),由Bengio在08年提出,见其文章Extracting and composing robust features with denoising autoencoders.使用dAE时,可以用被破坏的输入数据重构出原始的数据(指没被破坏的数据),所以它训练出来的特征会更鲁棒.本篇博文主要是根据Benig