模式识别课堂笔记 ——深度学习

引言:深度学习的浪潮开始于Hinton 的一篇文章 Reducing the Dimensionality of Data with Neural Networks;

代表人物:Geoffery Hinton  链接 :http://www.cs.toronto.edu/~hinton/

Yann LeCun 链接:http://yann.lecun.com/ex/index.html

Yoshua Bengio 链接:http://www.iro.umontreal.ca/~bengioy/yoshua_en/

Andrew Ng 链接:http://www.andrewng.org/

发展历程:

-Hopfield network

–Boltzman machine

–Restricted Boltzman machine

–CNN

–RNN

–LSTM

–Autoencoder

–DBN

–DBM

–Deep Learning

1.CNN

1998年,Yann LeCun设计了一个处理图像的卷积神经网络,并用于文本识别,取得了不错的效果。

目的是要对自然图像,希望直接从图像底层开始进行学习(非结构化特征学习)。即,对于图像识别任务,不必事先提取出人为设计的特征,比如Gabor纹理特征、多尺度小波特征、SIFT特征、HOG特征,等等。(因为这些人为设计的特征有缺点:这些特征具有一些参数,如尺度、梯度方向、频域划分等,其泛化能力不强)

CNN重新设计了多层神经网络的结构(并未改变神经元),原因是如果以图像直接作为输入,并将每个像素看成一个结点,对于200*200大小的图像,则仅输入层就有4万个结点;如果第一隐含层仅仅只包含1000个结点,则权重数量将达到4千万。这显然是一个巨大的计算负担。

为了解决这个问题,CNN采取了三个策略:第一个局部链接,第二个权值共享,第三个下采样(第三个又叫pooling)。

第一个局部链接:每个神经元其实没有必要对全局图像进行感知,只需要对局部进行感知。

第二个权值共享:从图像任何一个局部区域内连接到同一类型的隐含结点,其权重保持不变。

用图像卷积的思想描述上述两个过程就是:使用一个滤波器对图像进行卷积,滤波器的大小和取值并不随区域位置改变,而滤波器的卷积核的权重就是输入层到隐含层的权重。具体如下图所示:

我们大大的减少了需要学习的权重的数量,然后我们就有能力多加几个滤波器了:

这样做之后,隐含层的节点数不是随便选的,而是由原图像的大小,滤波器的大小,滤波器的个数共同决定的。维度较高,容易产生过拟合,所以引进了第三个策略,pooling——对不同位置的特征进行聚合统计,比如,计算图像一个区域上的某个特定特征的平均值(或最大值)

接下来是第一隐层到第二隐层的操作,要注意,是对第一层中多个滤波器的结果进行同时加权处理(也就是用一个立方体滤波器进行下一次滤波),当然局部连接和权值共享还是同样的方式,只不过是相当于作用在4幅图像上了:

接下来的每一层都进行相同的操作(但是卷积核的尺寸与个数是不同的):

–卷积 (Convolution)

•将卷积之和加到下一层

•对卷积之和进行激励 (特别指出:也可以在pooling之后求激励)

–聚合 (Pooling)

•下采样,两种基本的运算:

–2*2窗口取平均(或取最大值)

在最后两层加入全连接的多层感知器:

网络的训练:仍然采用误差反向传播算法。

2.AutoEncoder(自编码器)

目的:卷积神经网络的训练样本是带有标签的,但是很多问题是没有标签的,所以我们的自然想法就是能不能处理这一类问题。

解决的思路:在整个网络中让输出与输入相等,隐含层则可以理解为用于记录数据的特征。

核心思想

–将 input 输入一个 encoder 编码器,就会得到一个 code。这个 code 也就是输入的一个表示。

–通过增加一个 decoder 解码器,并采用信号重构的方式来评价这个 code 的质量。

–理想情况下,希望 decoder 所输出的信息(表达可能不一样,但本质上反应的是同一个模式)与输入信号input 是相同的。

–此时会产生误差,我们期望这个误差最小。

–将第一层输出的 code 当成第二层的输入信号,再次最小化重构误差,得到第二层的权重参数,同时获得第二层的code,即原始号的第二个表达。

–在训练当前层时,其它层固定不动。完成当前编码和解码任务。前一次"编码"和"解码"均不考虑。

–因此,这一过程实质上是一个静态的堆叠(stack)过程

–每次训练可以用BP算法对一个三层前向网络进行训练

在完成 Autoencoder 的学习任务之后,在实际应用中,在解码阶段学习得到的权重将不进行考虑。因此,编码阶段获得的网络系统其实质是一种特征学习。层级越高,结构特征越大越明显。

对于分类任务,可以事先用 Autoencoder 对数据进行学习。然后以学习得到的权值作为始初权重,采用带有标签的数据对网络进行再次学习,即所谓的 fine-tuning。为了实现分类任务,需要在编码阶段的最后一层加上一个分类器,比如一个多层感知器(MLP)。

3.RNN

网络结构如下:(注意这里的标号都是向量和矩阵,代表了一个网络结构,如右侧的图示)

这里的W是产生记忆的源头,将输入按时间顺序展开得到下图(两个图是一样的,只是表示形式不同):

接下来就是如何训练如此庞大的一个网络,所以引进了一个方法LSTM

4.LSTM (Long Short Term Memory)

基本理念:一旦信息得到利用,我们希望该结点能释放(遗忘)这种累积效应,从而使网络更具有灵活性和自主学习性(依赖于学习内容来自我决定)。

它是在RNN网络结构的基础上改变了隐含层神经元的构成,具体如下:

由简单的输入、输出、隐含层自循环增加了三个门单元

-遗忘门:控制对细胞内部状 态的遗忘程度

-输入门:控制对细胞输入的 接收程度

-输出门:控制对细胞输出的 认可程度

对应公式如下:

网络训练的目标是要估计如下矩阵:

截图来源:http://pan.baidu.com/s/1sltG4bj

推荐文章:Yann LeCun、Yoshua Bengio和Geoffrey Hinton合作的一篇综述文章"Deep Learning":http://www.nature.com/nature/journal/v521/n7553/full/nature14539.html ,及其翻译:http://www.csdn.net/article/2015-06-01/2824811

时间: 2024-10-19 15:02:07

模式识别课堂笔记 ——深度学习的相关文章

七月算法--12月机器学习在线班-第十九次课笔记-深度学习--CNN

七月算法--12月机器学习在线班-第十九次课笔记-深度学习--CNN 七月算法(julyedu.com)12月机器学习在线班学习笔记http://www.julyedu.com 1,卷积神经网络-CNN 基础知识 三个要点 1: 首先将输入数据看成三维的张量(Tensor) 2: 引入Convolution(卷积)操作,单元变成卷积核,部分连接共享权重 3:引入Pooling(采样)操作,降低输入张量的平面尺寸 ,1.1 张量(Tensor) 高,宽度,深度,eg:彩色图像:rgb,3个深度,图

七月算法12月机器学习在线班---第二十次课笔记---深度学习--RNN

七月算法12月机器学习在线班---第二十次课笔记---深度学习--RNN 七月算法(julyedu.com)12月机器学习在线班学习笔记http://www.julyedu.com 循环神经网络 复习之前的知识点: 全连接前向网络: 学习出来的是函数 卷积网络:卷积操作,部分链接,共享操作,逐层提取原始图像的特征(语音,NLP) 学习出来的特征 局部相关性 浅层宽网络很难做成神经网络 ? 1.1状态和模型 1, ID数据 ·分类问题 ·回归问题 ·特征表达 2, 大部分数据都不满足ID ·大部分

SVM(1)模式识别课堂笔记

引言:当两类样本线性可分时,针对我们之前学习的感知机而言,存在多个超平面能将数据分开,这里要讨论什么样的分类面最好的问题.为此,我们形式化的定义了最优分类超平面,他有两点特征:1.能将训练样本没有错误的分开:2.在样本中距离超平面最近的样本与超平面之间的距离最大. 1.没有错误的分开: 对尺度影响的消除,可以将第一行式子中的0看成1e-6这种很小的数,而后下一个是式子则是对其进行放缩到1而得到的结果. 2.如果想要距离最大,首先要知道某一个样本点到分类面的距离表达式,(在线性判别函数那章讲过)

模式识别课堂笔记之聚类(1)

1.定义 :将数据分成多个类别,在同一个类内,对象(实体)之间具有较高的相似性,不同类对象之间的差异性较大. 对一批没有类别标签的样本集,按照样本之间的相似程度分类,相似的归为一类,不相似的归为其它类.这种分类称为聚类分析,也称为无监督分类. 2.结果取决于两个因素:第一个是任务的选择,同样的样本不同的任务会得到不同的聚类效果:第二个是相似度度量标准的选择,选择不同的相似度度量直接影响聚类效果的好坏. 3.分类: 按聚类标准分:统计聚类方法 ,概念聚类方法: 按数据类型分:数值型数据聚类.离散型

兄弟连学python 课堂笔记 ---- Redis类型

Redis通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型. String(子串类型) set 命令:设置一个键和值,键存在则只覆盖,返回ok > set 键  值    例如: >set name zhangsan get 命令:获取一个键的值,返回值 > get 键        例如:>get name setnx命令:设置一个不存在的键和值(

兄弟连学python 课堂笔记 ---- Redis基本操作

基本操作 Redis 是 Key-Value 内存数据库,操作是通过各种指令进行的,比如 `SET` 指令可以设置键值对,而 `GET` 指令则获取某一个键的值.不同的数据结构,Redis 有不同的指令,这样指令一共有几十个,下面主要介绍一些常用的指令. Redis 对 Key 也就是键有各种各样的指令,主要有下面的指令(下面的指令中小写字符串都是参数,可以自定义):>keys *  //返回键(key) >keys list*   //返回名以list开头的所有键(key)>exist

Deep Learning(深度学习)学习笔记整理系列七

Deep Learning(深度学习)学习笔记整理系列 声明: 1)该Deep Learning的学习系列是整理自网上很大牛和机器学习专家所无私奉献的资料的.具体引用的资料请看参考文献.具体的版本声明也参考原文献. 2)本文仅供学术交流,非商用.所以每一部分具体的参考资料并没有详细对应.如果某部分不小心侵犯了大家的利益,还望海涵,并联系博主删除. 3)本人才疏学浅,整理总结的时候难免出错,还望各位前辈不吝指正,谢谢. 4)阅读本文需要机器学习.计算机视觉.神经网络等等基础(如果没有也没关系了,没

Deep Learning(深度学习)学习笔记整理系列之(七)

Deep Learning(深度学习)学习笔记整理系列 [email protected] http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04-08 声明: 1)该Deep Learning的学习系列是整理自网上很大牛和机器学习专家所无私奉献的资料的.具体引用的资料请看参考文献.具体的版本声明也参考原文献. 2)本文仅供学术交流,非商用.所以每一部分具体的参考资料并没有详细对应.如果某部分不小心侵犯了大家的利益,还望海涵,并联系博主

Deep Learning(深度学习)学习笔记整理系列之(八)

Deep Learning(深度学习)学习笔记整理系列 [email protected] http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04-08 声明: 1)该Deep Learning的学习系列是整理自网上很大牛和机器学习专家所无私奉献的资料的.具体引用的资料请看参考文献.具体的版本声明也参考原文献. 2)本文仅供学术交流,非商用.所以每一部分具体的参考资料并没有详细对应.如果某部分不小心侵犯了大家的利益,还望海涵,并联系博主