Deep Learning 学习随记(五)Deep network 深度网络
这一个多周忙别的事去了,忙完了,接着看讲义~
这章讲的是深度网络(Deep Network)。前面讲了自学习网络,通过稀疏自编码和一个logistic回归或者softmax回归连接,显然是3层的。而这章则要讲深度(多层)网络的优势。
Deep Network:
为什么要使用深度网络呢?使用深度网络最主要的优势在于,它能以简洁的方式来表达比浅层网络大得多的函数集合。正式点说,可以找到一些函数,它们能够用k层网络简洁的表达出来(这里的简洁指的是使用隐层单元的数目与输入单元数目是多项式关系),但是对一个只有(k-1)层的网络而言,除非它使用与输入单元数目呈指数关系的隐层单元数目,否则不能简洁表达这些函数。
在处理对象是图像的情况下,能够通过使用深度网络学习到“部分-整体”的分解关系。例如,第一层可以学习将图像中的像素组合在一起来检测边缘(正如我们在前面的练习中做的那样)。第二层可以将边缘组合起来检测更长的轮廓或者简单的“目标的部件”。在更深的层次上,可以将这些轮廓进一步组合起来以检测更为复杂的特征。这个可以参考CSDN上的一篇博文(以前看到的,有点印象,就找了找)http://blog.csdn.net/abcjennifer/article/details/7804962
Deep Network无疑具有很大的优势,但是也很显然的就是训练的时候是非常困难的。讲义中讲了3方面的原因:数据难获取(标注数据量非常少),局部极值问题和梯度弥散问题。(这里就不具体写了,容易理解)。为了训练好深度网络,讲义中提到用逐层贪婪训练的方法:每次只训练一层网络,即我们首先训练一个只有一层隐层的网络,仅当这层网络训练结束之后才开始训练一个有两层隐层的网络,以此类推。在每一步中,我们把已经训练好的前K层固定,然后增加第K-1层(也就是将我们已经训练好的前的输出作为输入)。每一层的训练可以是有监督的(例如,将每一步的分类误差作为目标函数),但是更经常是无监督的(例如自动编码器)。下面就是一种逐层贪婪训练方法的介绍:
Stacked Autoencoders:
栈式自编码神经网络。这节中,我们将会学习如何将自编码器以贪心分层的方式栈化,从而预训练(或者说初始化)深度神经网络的权重。
关于这个栈式自编码神经网络,其实就是前面说的稀疏自编码神经网络一层一层叠起来。即先训练一个自编码神经网络,得到参数W,b后将原始数据通过W,b转化成由隐藏单元响应组成的向量,假设该向量为A,接着把A作为第二层的输入,继续训练得到第二层的参数W,b。对后面的各层同样采用将前层的输出作为下一层输入的方式依次训练。
在上述所有预训练完成后,再通过一次反响传播,调整所有层的参数。这个过程叫做微调(fine-tuning)。
讲义举了MINIST手写库识别的例子,感觉看这个例子就很清楚了:
首先,需要用原始输入x(k)训练第一个自编码器,它能够学习得到原始输入的一阶特征表示 h(1)(k)(如下图所示)。
接着,把所有原始数据输入到训练好的自编码器中,得到输出向量h(1)(k),然后将此输出向量作为下一个自编码器的输入,来得到二阶特征:
最后,经过几次以后,再用softmax分类器进行分类即可。
这样就得到了一个深度的神经网络结构。例如,叠加两个自编码器的情况:
Finetuning:
微调。前面提到了,要使结果更好,最后可以进行一次微调,利用反向传播法对所有层的参数进行一次调整。反向传播前面已经看过了,这里差别不大,直接把讲义上的复制过来了:
练习:
最后就是练习了。篇幅太长了,写在下篇吧。
Deep Learning 学习随记(五)Deep network 深度网络的更多相关文章
- 深度学习笔记之关于总结、展望、参考文献和Deep Learning学习资源(五)
不多说,直接上干货! 十.总结与展望 1)Deep learning总结 深度学习是关于自动学习要建模的数据的潜在(隐含)分布的多层(复杂)表达的算法.换句话来说,深度学习算法自动的提取分类需要的低层 ...
- Deep Learning 学习随记(五)深度网络--续
前面记到了深度网络这一章.当时觉得练习应该挺简单的,用不了多少时间,结果训练时间真够长的...途中debug的时候还手贱的clear了一下,又得从头开始运行.不过最终还是调试成功了,sigh~ 前一篇 ...
- Deep Learning学习随记(一)稀疏自编码器
最近开始看Deep Learning,随手记点,方便以后查看. 主要参考资料是Stanford 教授 Andrew Ng 的 Deep Learning 教程讲义:http://deeplearnin ...
- Deep Learning 学习随记(八)CNN(Convolutional neural network)理解
前面Andrew Ng的讲义基本看完了.Andrew讲的真是通俗易懂,只是不过瘾啊,讲的太少了.趁着看完那章convolution and pooling, 自己又去翻了翻CNN的相关东西. 当时看讲 ...
- Deep Learning 学习随记(六)Linear Decoder 线性解码
线性解码器(Linear Decoder) 前面第一章提到稀疏自编码器(http://www.cnblogs.com/bzjia-blog/p/SparseAutoencoder.html)的三层网络 ...
- Deep Learning 学习随记(四)自学习和非监督特征学习
接着看讲义,接下来这章应该是Self-Taught Learning and Unsupervised Feature Learning. 含义: 从字面上不难理解其意思.这里的self-taught ...
- Deep Learning学习随记(二)Vectorized、PCA和Whitening
接着上次的记,前面看了稀疏自编码.按照讲义,接下来是Vectorized, 翻译成向量化?暂且这么认为吧. Vectorized: 这节是老师教我们编程技巧了,这个向量化的意思说白了就是利用已经被优化 ...
- Deep Learning 学习随记(七)Convolution and Pooling --卷积和池化
图像大小与参数个数: 前面几章都是针对小图像块处理的,这一章则是针对大图像进行处理的.两者在这的区别还是很明显的,小图像(如8*8,MINIST的28*28)可以采用全连接的方式(即输入层和隐含层直接 ...
- Deep Learning 学习随记(三)Softmax regression
讲义中的第四章,讲的是Softmax 回归.softmax回归是logistic回归的泛化版,先来回顾下logistic回归. logistic回归: 训练集为{(x(1),y(1)),...,(x( ...
随机推荐
- 14.6.2 Configuring InnoDB for Read-Only Operation
14.6.2 Configuring InnoDB for Read-Only Operation 配置InnoDB只读操作 你可以查询InnoDB 表MySQL 数据目录是一个只读介质,通过启用 - ...
- [PHP] 跳转以及回到原来的地址
回到原来的地址: 1.PHP(PHP代码) Header('Location:'.$_SERVER["HTTP_REFERER"]); 2.JavaScript(相当于后退按钮,- ...
- python 正则表达式(一)
正则表达式(regular exprssion)是一种形式化语法描述的文本匹配模式.模式被解释为一组指令,然后会执行这组指令.以一个字符串作为输入,生成一个匹配的子集或源字符串的修改版本. 表达式可以 ...
- 2013=7=29 nyist 13题
Fibonacci数 时间限制:3000 ms | 内存限制:65535 KB 难度:1 描述 无穷数列1,1,2,3,5,8,13,21,34,55...称为Fibonacci数列,它可以递归地 ...
- CentOS添加swap分区
在多个VPS上尝试. 1.进入目录 cd /var/ 2.获取要增加的SWAP文件块(这里以1GB为例) dd if=/dev/zero of=swapfile bs=1024 count=10383 ...
- Validate XML using a XSD (XML Schema)
Consider this XML file howto.xml : <?xml version="1.0" encoding="ISO-8859-1"? ...
- SharePoint 2013的100个新功能之网站管理(二)
一:SharePoint 2013的网站策略 网站策略指的是自动关闭或删除网站的条件.有四个选项:不自动关闭或删除网站.自动删除网站.自动关闭并删除网站和运行一个工作流来关闭.删除网站. 二:新的主题 ...
- UVa12063 Zeros and Ones
神坑 1竟然还要取模 在后面填数多好的 #include<cstdio> #include<cstring> #include<cstdlib> #include& ...
- 用bootstrap结合php搭建MIS系统框架【转载】
bootstrap目前比较火,抽空简单了解一下 官方介绍:Bootstrap, from Twitter基于HTML,CSS,JAVASCRIPT的简洁灵活的流行前端框架及交互组件集 http://t ...
- struts 2学习笔记—浅谈struts的线程安全
Sruts 2工作流程: Struts 1中所有的Action都只有一个实例,该Action实例会被反复使用.通过上面Struts 2 的工作流程的红色字体部分我们可以清楚看到Struts 2中每个A ...