zoukankan      html  css  js  c++  java
  • Unsupervised Feature Learning and Deep Learning(UFLDL) Exercise 总结


    7.27 暑假开始后,稍有时间,“搞完”金融项目,便开始跑跑 Deep Learning的程序

    Hinton 在Nature上文章的代码 跑了3天 也没跑完 后来Debug 把batch 从200改到20 勉强跑出结果

    后来开始看 文章等  感觉晕晕乎乎 

    又翻到:Deep Learning Tutorials 装Theano等,但是python 代码 Debug真是好生恶心

    再后来翻到 UFLDL,看着有Exercise 便做了起来。

    用了5天刷了9个Exercises。


    大概年后吧,在微博上看到 @邓侃 组织翻译 Andrew Ng 执笔的 Deep Learning 系列(UFLDL)


    当时 就泼了冷水 那个时候在读 Machine Learning的书 清一色英文 觉得英文不是问题  为什么要翻译呢?

    我觉得读书 应该读经典 读好书;国内很多书的内容质量大家都懂的。

    学习一个新方向(比如ML/CV/IP等)我的方法是:先找一本中文书(可以是翻译的)熟悉知识的框架/关键字;然后找些经典书籍(多数是英文,偶尔会有不错的中文书)来读,再深入就要 Code 读Paper等;Code也可以在读书的时候进行,我在读PRML的时候,看完一章节,就合上书自己推导/Code,收获很多。

    现在来看邓前辈组织的翻译,特别符合我入门DL的需求,而且Ng的Exercise做得很用心,难度不大。

    为一开始的不敬,愧疚。向翻译团队致敬!

    ============================================

    1.Sparse Autoencoder 

    关于Sparse/Low-rank  model,看过20多篇计算机视觉的文章,还Code过几个算法。

    在Neural Networks中,通过约束隐含层的平均激活度 来实现稀疏


    Exercise Result:


    展示的是 第一层系数W每一行 reshape成 patch 大小的图像。联想到了EignFaces...

    -----------------------------------------------------------------------------------------

    2.Vectorization 

    向量化编程;matlab中for循环很慢,如果在cost函数中包含for循环,那么优化将变得很慢。

    一开始我不以为意,没去做这事;在后面的一个Exercise中,程序跑得很慢,便优化了Sparse Autoencoder的代码,去掉了所有for循环,速度提高了8倍左右。

    -----------------------------------------------------------------------------------------

    3.PCA and Whitening 

    Whitening部分对我来说虽然较新,却不难;做降维的时候,PCA就是一个主要方法;PCA重建这事自己也探索过;

    白化在PRML上看到过,没太留意。图形的预处理还是很重要的。


    -----------------------------------------------------------------------------------------

    4.Softmax Regression

    Logistic Regression 多分类的直接推广。关于这个还有个小故事,曾经以对LR的理解,看出了豆瓣某工程师对SR推导的错误。

    MNIST:


    这个准确率 跟前段时间 玩Kaggle时用 one-vs-all logistic regression差不多(91.x%)

    -----------------------------------------------------------------------------------------

    5.Self-Taught Learning

    使用5-9的MNIST数据 train 一个 Autoencoder 得到参数W1 b1

    reshape W1:


    使用W1 b1 来 Extract 0-4的Features

    接着使用softmax regression训练一个分类器(偷了个懒 Autoencoder只迭代了200次)


    -----------------------------------------------------------------------------------------

    6.Implement Deep Learning Networks for Digital Classification

    真正意义上构建的的第一个深层网络:前两层用Sparse Autoencoder训练feature I II,最后使用softmax regression对feature II进行分类。


    迭代的次数 需要自己设定 所以多少有些出入


    -----------------------------------------------------------------------------------------

    7.Linear Decoders with Autoencoders

    由于sigmoid/tanh函数的取值范围限制,输入数据x也只能在相同范围内

    在输出端 使用线性激励函数 就可以克服此问题.


    -----------------------------------------------------------------------------------------

    8.Convolution and pooling



    -----------------------------------------------------------------------------------------

    9.Sparse Coding

    稀疏模型 不多说了 搞过;咔咔,解析解需要用到矩阵求导 利用trace(AA')求导即可 加入收敛条件

    从其提供的代码来看,cost function的第一项重建差 需要除以patch数目,其实这种除可以相应scale lambda gamma达到一样的效果,cosnt*f(x)与f(x)最优解是一致的。


    ================================================

    再次感谢 翻译团队 对母语的理解 还是要比英文顺畅得多


    在此之前 只code过一次 Neuron Network,

    ——做Exercise6的时候,胸口疼了一会,真正在做多层网络啦!


    接下来 读一些 readlist 上的文章,丰富Neuron Networks的知识。

    Autoencoder知识UF的一种...




  • 相关阅读:
    react脚手架搭建及配置
    mac使用技巧
    nginx配置
    vue常见前端UI库
    自定义指令
    代码缩进修改
    webpack学习入门
    webpack使用extract-text-webpack-plugin打包时提示错误
    webpack未成功全局安装
    基于jQuery的AJAX实现三级联动菜单
  • 原文地址:https://www.cnblogs.com/pangblog/p/3253591.html
Copyright © 2011-2022 走看看