一、深度学习概念

1.什么是深度学习

深度学习(Deep Learning)是机器学习的一种形式,概念源于人工神经网络的研究。含多隐层的多层感知器就是一种深度学习结构。深度学习通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示。它是机器学习研究中的一个新的领域,其动机在于建立、模拟人脑进行分析学习的神经网络,它模仿人脑的机制来解释数据。

深度神经网络dnn教程 深度神经网络通俗理解_权重

 

2.基本变换(层的概念)

神经网络是由一层一层构建的,那么每层究竟在做什么?

  • 数学式子:,其中是输入向量,是输出向量,是偏移向量,是权重矩阵,是激活函数。每一层仅仅是把输入经过如此简单的操作得到。
  • 数学理解:通过如下5种对输入空间(输入向量的集合)的操作,完成 输入空间 —> 输出空间 的变换 (矩阵的行空间到列空间)。 注:用“空间”二字的原因是被分类的并不是单个事物,而是一类事物。空间是指这类事物所有个体的集合。
  • 1. 升维/降维
  • 2. 放大/缩小
  • 3. 旋转
  • 4. 平移
  • 5. “弯曲” 这5种操作中,1,2,3的操作由完成,4的操作是由完成,5的操作则是由来实现。

深度神经网络dnn教程 深度神经网络通俗理解_神经网络_02

每层神经网络的数学理解:用线性变换跟随着非线性变化,将输入空间投向另一个空间。

线性可分视角:神经网络的学习就是学习如何利用矩阵的线性变换加激活函数的非线性变换,将原始输入空间投向线性可分/稀疏的空间去分类/回归。 
增加节点数:增加维度,即增加线性转换能力。 
增加层数:增加激活函数的次数,即增加非线性转换次数。

 

3.模型训练

   学习过程就是学习控制着空间变换方式(物质组成方式)的权重矩阵后,接下来的问题就是如何学习每一层的权重矩阵 W 。通过比较当前网络的预测值和我们真正想要的目标值,再根据两者的差异情况来更新每一层的权重矩阵(比如,如果网络的预测值高了,就调整权重让它预测低一些,不断调整,直到能够预测出目标值)。因此就需要先定义“如何比较预测值和目标值的差异”,这便是损失函数或目标函数(loss function or objective function),用于衡量预测值和目标值的差异的方程。loss function的输出值(loss)越高表示差异性越大。那神经网络的训练就变成了尽可能的缩小loss的过程。所用的方法是梯度下降(Gradient descent):通过使loss值向当前点对应梯度的反方向不断移动,来降低loss。一次移动多少是由学习速率(learning rate)来控制的。

 

4.梯度下降

梯度下降的问题:

 然而使用梯度下降训练神经网络拥有两个主要难题。

其中之一:局部极小值

梯度下降寻找的是loss function的局部极小值,而我们想要全局最小值。如下图所示,我们希望loss值可以降低到右侧深蓝色的最低点,但loss有可能“卡”在左侧的局部极小值中。

深度神经网络dnn教程 深度神经网络通俗理解_梯度下降_03

试图解决“卡在局部极小值”问题的方法分两大类:

  • 调节步伐:调节学习速率,使每一次的更新“步伐”不同。常用方法有:
  • 随机梯度下降(Stochastic Gradient Descent (SGD):每次只更新一个样本所计算的梯度
  • 小批量梯度下降(Mini-batch gradient descent):每次更新若干样本所计算的梯度的平均值
  • 动量(Momentum):不仅仅考虑当前样本所计算的梯度;Nesterov动量(Nesterov Momentum):Momentum的改进
  • Adagrad、RMSProp、Adadelta、Adam:这些方法都是训练过程中依照规则降低学习速率,部分也综合动量
  • 优化起点:合理初始化权重(weights initialization)、预训练网络(pre-train),使网络获得一个较好的“起始点”,如最右侧的起始点就比最左侧的起始点要好。常用方法有:高斯分布初始权重(Gaussian distribution)、均匀分布初始权重(Uniform distribution)、Glorot 初始权重、He初始权、稀疏矩阵初始权重(sparse matrix)

第二个难题:梯度的计算

机器学习所处理的数据都是高维数据,该如何快速计算梯度、而不是以年来计算。 其次如何更新隐藏层的权重? 解决方法是:计算图:反向传播算法  需要知道的是,反向传播算法是求梯度的一种方法。如同快速傅里叶变换(FFT)的贡献。 而计算图的概念又使梯度的计算更加合理方便。

 

二、前馈神经网络


前馈神经网络(feedforward neural network),是ANN的一种。在该神经网络中,各神经元从输入层开始,接收前一级输入,并输出到下一级,直至输出层。整个网络中无反馈,可用一个有向无环图表示。

前馈神经网络采用一种单向多层结构。其中每一层包含若干个神经元,同一层的神经元之间没有互相连接,层间信息的传送只沿一个方向进行。其中第一层称为输入层。最后一层为输出层.中间为隐含层,简称隐层。隐层可以是一层。也可以是多层。

深度神经网络dnn教程 深度神经网络通俗理解_神经网络_04


 

  • 网络结构:2维输入 →→1维输出

深度神经网络dnn教程 深度神经网络通俗理解_神经网络_05

深度神经网络dnn教程 深度神经网络通俗理解_梯度下降_06


深度神经网络dnn教程 深度神经网络通俗理解_梯度下降_07

深度神经网络dnn教程 深度神经网络通俗理解_权重_08

 

深度神经网络dnn教程 深度神经网络通俗理解_权重_09


深度神经网络dnn教程 深度神经网络通俗理解_权重_10

深度神经网络dnn教程 深度神经网络通俗理解_神经网络_11

深度神经网络dnn教程 深度神经网络通俗理解_权重_12

深度神经网络dnn教程 深度神经网络通俗理解_权重_13

深度神经网络dnn教程 深度神经网络通俗理解_梯度下降_14

三、循环神经网络(RNN)

 前馈网络:window size为3帧的窗处理后的前馈网络

  • 动态图:左侧是时间维度展开前,右侧是展开后(单位时刻实际工作的只有灰色部分。)。前馈网络的特点使不同时刻的预测完全是独立的。我们只能通过窗处理的方式让其照顾到前后相关性。

深度神经网络dnn教程 深度神经网络通俗理解_权重_15

 

深度神经网络dnn教程 深度神经网络通俗理解_梯度下降_16


深度神经网络dnn教程 深度神经网络通俗理解_神经网络_17

深度神经网络dnn教程 深度神经网络通俗理解_权重_18

递归神经网络是在时间结构上存在共享特性的神经网络变体。

时间结构共享是递归网络的核心中的核心。