深度学习总结

神经网络:

目的:

           对自然界的某种函数的逼近。例如:一张图片和该图片的语义(即该图片的内容)之间是一种函数关系,只要能找到这个函数,机器就能识别一张图片内容。

    支撑点:

           能力+效率

 

/*********************************分割线******************************************/

如何模拟出这个函数呢?

       原理:可以对输入数据进行不同角度的分析,能得到对客观事物整体的认识。

 

       线性部分: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的门是如果解决梯度消失问题的?