1、深度学习的预备知识
- 数据集,包括样本与特征,样本是研究的对象,特征是区别样本的一些描述
- 学习方法分类
1、监督学习算法——有正确答案,也就是样本有标签 2、无监督学习算法——没有正确答案的,也就是样本没有标签 3、半监督学习算法——有一些数据是有标签的,有一部分的数据没有标签,用过对有标签的数据进行训练来给无标签的数据加上标签 4、强化学习——会和环境不断进行交互,达到优化算法的一个结果,比如如果算法运行契合,就会有奖励,否则加以惩罚,这样不断训练就会得到一个不断优化的算法
- 凹凸函数——损失函数(达到最小值)
1、连接任意的集合中的两个点,如果这些点都在集合中,说明这是一个凸集,如果有一些点不在集合中,说明这是一个凹集 2、相同的连接函数上任意两个点,如果函数上的点都在连线的上面,说明这只一个凸函数,否则这是一个凹函数。 3、非凸函数转换凸函数 在非凸函数中我们想要找到一个最优点,可能会受到很多局部最优点的干扰,这个时候,转换成凸函数,有局部最优点变成全局最优点。 4、凸优化
- 损失函数——希望找到一个最小值
1、神经网络中使用的代价函数被称为损失函数Loss Function。损失函数衡量了评分函数的预测与真实标签的吻合度。 2、Loss的值会都设置为与吻合程度负相关,如果算法公式是正相关的,定义损失函数的时候会加上负号,调整为负相关。 3、交叉熵损失函数Cross Entropy/Softmax Loss:
- 梯度下降法:对交叉熵损失函数的迭代优化,理解梯度下降法,w为权重
1、批量梯度下降BGD:每一次更新权重的时候使用所有训练的数据,但是数据量很大的时候效率太低,但是能取到全局的最优点 2、随机梯度下降SGD:随机挑选一个样本,有可能达到的是局部最优,这种方式容易对噪声敏感 3、小批量梯度下降MBGD:每次只随机选一部分数据,对权重进行更新。
2、人工神经网络ANN
2.1、神经元与神经网络
- 神经元:线性函数(累加)+激活函数
人工神经网络主要由多个神经元连接而成,主要有以下三个方面的问题 1、神经网络的拓扑结构,不同的神经元之间的连接方式是不一样的。 2、激活的规则,神经元输入到输出之间的映射关系,一般用激活函数(非线性函数)进行映射 3、学习算法,通过训练数据来学习神经网络的参数,使得损失值达到最小
- 神经网络的拓扑结构
1、前馈网络:每层神经元为一组,每一组神经元只接收上一组的输出,并为下一组提供输入,所有的信息都是按照一个方向进行传输的。可以用有向无环图进行表示。这样的网络结构比较简单,易于实现。 2、反馈网络RNN:每一层神经元不仅仅可以接收其他的神经元的信号,还可以接收自己的输出。与前馈网络相比,反馈网络可以看做一个程序,有更强的计算能力。 3、图网络:定义在图结构上的神经网络,节点之间可以是有向的,也可以是无向的,每一个节点只接收其邻居节点的输出,或者接收自身的信息,图网络是前馈网络和反馈网络的一个泛化,有图卷积网络,消息传递网络等。
2.2、感知器
- 感知器可以用来接收多个信号,输出一个信号(由多个神经元组成),每一个输入信号具有一定的权重,计算多个输入信号的值于权重的乘积累加求和,根据这个结果与指定的阈值进行比较,来决定神经元是否被激活。它可以用来实现一个二分类问题(要么激活神经元,要么不激活神经元唯二选择问题)
- 感知器问题其实是在寻找多维平面的一个可以完美划分两类的超平面。就好像在一维线上划分两类,只需要找到一个点,二维平面划分两类找一条线,三维平面划分两类找一个平面,在多维度的面中寻找一个超平面,使得数据可以完美划分为两类,是感知器的任务。
→怎么界定多维空间的两个超平面的好与坏,这个需要定义感知器的损失函数
- 损失函数:也就是期望是误分类的所有样本到超平面的距离之和最小;其中 M:误分类的点的集合(凸函数),w:权重,b:偏置
→更新步骤
→线性不可分问题:XOR问题 在如下左图中,无法使用一个平面来使得1和0分为两类,可以采用投影的办法,把其中一个1投影到另一面中,就可以实现可分的情况。
2.3、激活函数
上面讲到单层感知器是无法解决XOR问题的,所以我们引入了非线性的激活函数。
- Sigmoid:单调连续函数,有界,收敛,求导容易,远离中心点的位置(左右两边)求导几乎为0,出现梯度消失的问题,一般深度大于5就会出现梯度消失的问题
- tanh双曲正切函数:和Sigmoid有同样的缺点,但是它的函数是关于0点对称,比Sigmoid函数求导后更加趋向0,可以减低迭代的次数。
- ReLU函数:在0出不可导,会出现拐点而不够平滑,在某一些回归问题上也会出现不够平滑的现象;正无穷出无上限,训练比较容易发散;
在训练中relu函数容易死亡(训练过程中有一个参数不恰当更新后,第一个隐藏层的某一个神经元在所有的训练数据下都不能被激活,则这个神经元自身的参数梯度永远为0,就是这个神经元永远不会被激活,就会出现死亡现象,统称死亡ReLU问题) relu函数在随机梯度下降中可以快速实现收敛,而且函数计算简单,而且它可以有效的解决梯度消失问题。在无监督学习中也可以有比较好的表现。 - ReLU函数2:
针对上面ReLU问题提出的变化:给小于零部分添加一个斜率,使得在小于零的时候可以更新权重,不会出现永远不能被激活的现象。 ELU和softplus:平滑版的relu函数 - softmax函数:对于多分类问题常用的激活函数
3、深度前馈网络
3.1、神经网络
- 我们知道,单个感知器是不能解决XOR问题的,但是为了解决XOR问题,我们可以采用两个感知器。同样的,当面对的是复杂的,可以采用多个感知器进行多维度的划分,形成种类繁多的非线性曲面,从而解决问题。
3.2、深度前馈网络
- 深度学习:
- 深度前馈网络:也叫前馈神经网络或者多层感知机MLP,是典型的深度学习模型。
1、深度前馈网络是一种全连接式的网络,也就是说当前节点与下一层中的每一个节点都有连接关系,x1与yi(i=1,2……n)都有关系。 2、深度前馈网络的传播是单向的,就是所有的传播都是响下传播而不会反向。
4、反向传播
- 如何训练神经网络?
- 反向传播原理:链式求导法则
- 反向传播算法是神经网络的重要算法,它使用链式求导法则将输出层的误差反向传回给网络,使得神经网络的权重有了比较简单的梯度计算实现方法。
- 通过反向传播算法可以使得变成实现神经网络权重的梯度,从而使用梯度下降法完成神经网络的训练。
- 成熟的深度学习框架如TensorFlower,会自动完成反向传播和求导的部分,在使用的时候只需要定义前向运算
- 整体流程:
- 正向传播
输入值也就是e 正向传播得到一个y的预测值 - 误差反向传播
通过真实值与预测值做差计算误差 - 权重更新
根据学习率,对e求偏导求△x
- 梯度消失和梯度爆炸
梯度消失,简单理解就是速率为0的情况
5、神经网络的架构设计
5.1、神经网络深度的影响
如下所示,深度越大,一开始准确率是快速增长,慢慢后面缓慢增长,但是总体而言,深度越大,模型准确率越高,泛化能力越强
5.2、神经网络参数数量的影响
不增加神经网络的层数,只是增加一些参数数量,测试集的精度没有明显变化,效果不好,更深层的神经网络,参数越多。
5.3、神经网络连接的影响
思考题
答案:B
|