深度学习总结
神经网络:
目的:
对自然界的某种函数的逼近。例如:一张图片和该图片的语义(即该图片的内容)之间是一种函数关系,只要能找到这个函数,机器就能识别一张图片内容。
支撑点:
能力+效率
/*********************************分割线******************************************/
如何模拟出这个函数呢?
原理:可以对输入数据进行不同角度的分析,能得到对客观事物整体的认识。
线性部分:w*x+b=z
因为每个角度对认识事物的贡献值不同,因此需要有个权重w来衡量,同时需要偏置量b来调整该“线性函数“的位置,从而拟合目标函数。
非线性部分/**函数(必要性):
1、处理非线性模型。**函数给神经元引入了非线性因素,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用到众多的非线性模型中。
2、进行数据归一化。想让y+表示实际值y等于1的机率的话,那么y+的取值应该是(0,1)
线性部分+非线性部分:神经元/感知器。
神经网络其实就是按照一定规则连接起来的多个神经元
网络架构:能力+效率
为了提高该网络的表达能力,即模拟目标函数的能力,需要从两方面来考虑:
1、增加神经元个数
2、增加隐层数,如果是线性模型,只需一层就够了。
从表达能力来讲,我们希望有效的神经元个数和有效的隐层数越多越好,但是这样意味着训练的w和b就越多,学习时间越长。
如何衡量该网络架构模型的能力呢?
损失函数:每个样本的计算值和目标值的误差;
代价函数是对m个样本的损失函数求和然后除以m;
我们用代价函数表征该模型能力,总代价越小,能力越强,所以在训练模型时候,就是要找到合适的w和b,来让代价函数的总代价降到最低。
如何提高该模型的学习效率?
我们的目标是找到代价函数的最小值,且以较快的速度;
函数在某点沿着梯度方向下降最快,因此我们需要知道当前在哪一点(正向传播),需要知道该点的梯度,即J对个变量的偏导(反向传播)。
/*********************************分割线******************************************/
卷积神经网络:如何提高表达能力、学习效率
问题:
在图像识别任务中,如果使用全连接神经网络,会有以下几个方面的问题:
1、参数数量太多
2、没有利用到图像空间上的局部相关性
例如我们想要做一个房价预测,我们选取面积、卧室个数、邮政编码等作为特征,如果以同样的方法去识别图片,把每一个像素点的像素值作为我们的选取特征,每个像素点都有一个权值w,会有大量的参数,并且每个像素点是孤立的,并没有利用到图像空间上的局部相关性。
3、网络层数限制
解决:
1、减少参数
参数共享:特征检测如垂直边缘检测如果适用于图片的某个区域,那么它也可能适用于图片的其他区域。
稀疏连接: 进行局部连接,每个神经元不再和上一层的所有神经元相连,而只和一小部分神经元相连。这样就减少了很多参数。
2、增加网络层数
Relu函数作为**函数,有效解决梯度消失问题
结构:
卷积层+池化层+全连接层
卷积层:
f(输入图像*filter+b)=Feature Map
过滤器用来检测图像中特定的特征的,如果图像的某一区域与过滤器检测的特征很相似,那么当过滤器经过该区域时,就会**该过滤器,得到一个很高的值,反之,如果图像的某一区域与过滤器检测的特征很不相似时,就不会**该过滤器或者得到的数值很低。
Feature Map反应的就是该特征在原图片的位置分布。
池化层:
Pooling层主要的作用是下采样,通过去掉Feature Map中不重要的样本,提取主要特征,进一步减少参数数量。
全连接层:
连接所有的特征,得到输出值
/*********************************分割线******************************************/
循环神经网络RNN:处理序列模型,如何提高表达能力
问题:
以语音转文本为例,对于每个词,单单从该单词语音的各个角度数据进行分析,如音频、音幅、音高、响度等,来识别该单词可不可以呢?当然是可以的,但是我们发现对于某个词的识别,不仅可以从单词本身的发音进行推测,也能根据上下文推测,例如当前推测的单词可能是“言”、“盐”等,如果上一个词是“语”,那么“言”的可能性要比“盐”的可能性要大的多。
解决:
把上下文信息也作为推测该词的因素。
结构:
输入:语音Xt+上文St-1,St=f(UXt+WSt-1+b)
输出:o=g(VSt)
/*********************************分割线******************************************/
长短时记忆网络LSTM:效率
问题:
RNN认为经过处理的信息对接下来的信息有影响,所以之前处理过的全都抛给接下来处理的程序,这样一来会造成梯度消失,使学习效率变低,所以RNN对短期的信息比较敏感,但对较前面的信息记不住
解决:
不能再像RNN那样把前面的信息都记住了,提取重要的信息
增加一个状态c,让它来保存长期的关键信息
结构:
输入:语音Xt+短期ht-1+长期Ct-1
输出:ht、Ct
对于两种时态信息, LSTM是如何提取重要信息的呢?
LSTM通过门来“提取”这两种时态的信息, 通过“门”结构来去除或者增加信息到细胞状态。门是一种让信息选择式通过的方法。他们包含一个 sigmoid神经网络层和一个按位的乘法操作。
遗忘门:决定了上一时刻的Ct-1有多少保留到当前时刻Ct
输入门:决定了当前时刻的输入Xt有多少保存到当前时刻Ct
遗忘门+输入门举例:当前输入新的主语“它”,Ct就会把之前的主语“他”“遗忘”掉,”记忆“新的主语”它“
输出门:控制当前时刻的Ct有多少输出到LSTM的当前输出值ht,即t 时刻的状态信息
对LSTM的疑问:
1、梯度消失为何不用RELU函数,而要大费周章使用门设计出这么麻烦的结构?
2、LSTM的门是如果解决梯度消失问题的?