看之前Autoencoder什么时候,我做了一些练习这里:http://ufldl.stanford.edu/wiki/index.php/Exercise:Sparse_Autoencoder 。其实 从11月开始做。有没有经过调试,后来,加班太多,我没有那么做。抽出时间调了一天。最终顺利完毕了。又拖到这周末才開始把实验结果整理成文。看来,做事还得趁热打铁,一气呵成。时间一久。积极性就没了。

最初依照练习中的建议,先实现了一个主要的代价函数。没有增加权值惩处项和稀疏约束项。梯度检查都过了,跑出来的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更清晰?

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHVhd2VpbWVtYmVy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" width="280" height="245" alt="">

a                                                                                              b

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHVhd2VpbWVtYmVy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" width="280" height="245" alt="">

c

画画3

版权声明:本文博客原创文章,博客,未经同意,不得转载。

最新文章

  1. C#多线程之线程池篇3
  2. Javaweb学习笔记——使用Jdom解析xml
  3. 在Eclipse中使用Junit进行单元测试练习 实现最大子数组和算法
  4. WPF中的Invoke
  5. 客户端安全-xss-2解决方案
  6. iOS的触摸事件
  7. js中添加事件 attachEvent 与 addEventListener
  8. 关于js的一些总结
  9. javascript screen对象
  10. 在Activity之间传递数据—获取Activity返回的数据
  11. Ajax的简单实用实例
  12. 浅谈OGNL表达式
  13. OpenFlow交换机的实现总结
  14. echo 0000
  15. 开源数字媒体资产管理系统:Razuna
  16. Redis学习——数据结构介绍(四)
  17. 修复运行 tasklist 命令时提示 ERROR: Not found
  18. SparkContext.union 与 RDD.union
  19. UI5-学习篇-6-SAP创建OData服务-RFC
  20. OneZero第四周第二次站立会议(2016.4.12)

热门文章

  1. api接口安全以及https
  2. [PReact] Reduce the Size of a React App in Two Lines with preact-compat
  3. [Angular2 Form] Angular 2 Template Driven Form Custom Validator
  4. ping localhost 没反应解决方式
  5. gdb查看线程堆栈信息
  6. JavaScript的Math对象
  7. stl变易算法(一)
  8. 转载:使用bat命令来快速安装和卸载Service服务
  9. css3-7 如何让页面元素水平垂直都居中(元素定位要用css定位属性)
  10. android环境安装