神经网络的相关基础:
神经网络里面的相关分类:
神经网络的几个特点:
能够充分逼近复杂的非线性关系;
可以并行分布处理;
具有高度的鲁棒性和容错能力;
具有学习能力和自组织能力;
类比神经元结构,得到人工神经网络:
权重的大小:训练神经网络让权重值调整到最佳值,使整个网络预测效果最好!
人工神经网络模仿生物神经系统建立数学模型,大量网络结点互相连接,选择不同的网络连接方式或拓扑结构,每个结点都有特定输出函数,即激活函数。
激活函数:
兴奋状态:细胞膜电位>动作电位的阈值–>神经冲动
抑制状态:细胞膜电位>动作电位的阈值
每个神经元的阈值不同,不同位置反映不同,神经元不希望传递微小的噪声信号。两结点之间连接都有权重,模拟神经细胞的记忆,不同权值和不同激活函数,因此神经网络模型可以模拟各种复杂问题,对算法逻辑策略的表达。
注意:深度学习本质就是改变神经元之间的连接强度,神经网络表示知识不是一个参数,而是网络参数的变化。
激活函数控制状态: 1、兴奋 2、抑制。
激活函数可以取阶跃函数(如下图),为1表示激活状态,为0表示抑制状态或者未激活状态。
阶跃函数具有不连续,不光滑等不好性质,很少采
用,一般会用阶跃函数光滑后的函数作为阶跃函数,
后续详细讨论激活函数的点火特性
偏置b(截距)也叫偏置项或者截距项,b可以看作是+1的权值。输出值y是wi和b的函数。
下面是一个实例:
从此图中可以看出:线性分类器:可实现逻辑与、或、非,可解决线性分类和线性回归问题。
2. 网络结构
神经元不同的连接方式构成不同的网络结构。每个神经元都有自己的权重和偏置参数。
若没有激活函数,网络模型即使再多隐层,也等价单层网络,不具备1非线性建模能力。
为什么要引入激活函数?
1)线性模型表达力不够,激活函数可增加非线性因素!
2)为了增强网络的表达能力,我们需要激活函数来将线性函数->非线性函数.
3)非线性的激活函数需要有连续性。因为连续非线性激活函数可以可导的,所以可以用最优化的方法来求解.
常用激活函数概图:
激活函数应该具有什么性质?
非线性:线性激活层对于深层神经网络没有作用;仍为线性变换;
连续可微:梯度下降法要求满足连续可微;
范围最好不饱和:有饱和区间段时,系统优化时梯度似为0,网络的学习会停止;
单调性:当激活函数单调时,单层神经网络的误差函数为凸,易优化; • 原点处近似线性:当权值初始化为接近0的随机值时,网络学习较快;
几种典型的激活函数(传输函数、输出变换函数):
(1)阶跃函数(硬极限函数):最早M-P模型采用的激活函数,但光滑性不好。
f = { 1 z ⩾ 0 0 z < 0 f=\left\{ \begin{array}{rcl} 1 & & {z \geqslant 0}\\ 0 & & {z < 0} \end{array} \right. f={10z⩾0z<0
特点: 开关特性,超过阈值兴奋,低于阈值抑制,瞬间实现,简单,但数学处理角度不简单,无法求导,不易工程实现。
(2)对称阶跃函数(对称硬极限函数): 光滑性不好。
f = { 1 z ⩾ 0 − 1 z < 0 f=\left\{ \begin{array}{rcl} 1 & & {z \geqslant 0}\\ -1 & & {z < 0} \end{array} \right. f={1−1z⩾0z<0
(3)sigmoid函数(S型函数、实用广泛): 连续易求导,可微性和单调性,饱和性。
f ( x ) = 1 1 + e − x l i m x → ∞ f ′ ( x ) = 0 f(x)=\frac{1}{1+e^{-x}}\\\\lim_{x\rightarrow \infty }f^{'}(x)=0 f(x)=1+e−x1limx→∞f′(x)=0
缺点: 饱和性。正负无穷,sigmoid导数趋近0,而参数更新,计算代价函数是参数(激活函数导数)的偏导数,即参数无法更新,导致下一层传递梯度变小——梯度消失。
(3)Tanh函数(双曲正切S型函数): 可微性和单调性,饱和性。输出范围-1到+1,输出均值0。收敛速度比 sigmoid 快,减少迭代次数。
f ( x ) = e x − e − x e x + e − x = 1 − e − 2 x 1 + e − 2 x f(x)=\frac{e^{x}-e^{-x}}{e^{x}+e^{-x}}=\frac{1-e^{-2x}}{1+e^{-2x}} f(x)=ex+e−xex−e−x=1+e−2x1−e−2x
缺点: 梯度消失。
(5)ReLU函数(线性整流单元rectified linear units): 克服饱 和性问题,分段函数形式,当大于等于0时返回输入值自身;当小于0时返回0,缓解梯度消失问题。
f = { x x ⩾ 0 0 x < 0 f=\left\{ \begin{array}{rcl} x & & {x \geqslant 0}\\ 0 & & {x < 0} \end{array} \right. f={x0x⩾0x<0
神经元坏死: 当小于0区域,同样会造成权重无法更新,影响网络的收敛性,改进的RELU函数。
(6)Softplus函数: 值域0——无穷大,是Relu函数的光滑近似,接近脑神经元的激活频率函数。
f ( x ) = l n ( 1 + e x ) f(x)=ln(1+e^{x}) f(x)=ln(1+ex)
神经网络的结构如何复杂呢? (三要素)
(1)前馈型神经网络( 前向型)BP-非动力学
- 每个神经元只与前一层的神经元相连;
- 当前层只接收前一层的输出;
- 当前层自身的输出只能输出给下一层
- 各层之间没有反馈;
- 注意:前馈神经网络中偏置单元可不输入;
- 网络为非线性映射,静态映射,非动力学系统。
- 每个神经元同时将自身输出作为输入信号反馈给其他神经元,网络的连接图中具有回路,需要工作一段时间后才能稳定。
神经网络的工作方式 :
- 同步(并行)方式:任一时刻神经网络中所有神经元同时调整状态。
- 异步(串行)方式:任一时刻只有一个神经元调整状态,而其它神经元的状态保持不变。
- 一般差异大情况下考虑同步和异步方式。
神经网络使用步骤:
- 建立模型
1)选择什么样的网络结构
2)选择多少层数,每层选择多少神经元- 损失函数——结果最大值
1)选择常用损失函数,平方误差,交叉熵….- 参数学习
1)梯度下降
2)反向传播算法
神经网络模型步骤:
• 定义代价函数(损失函数);
• 根据样本数据和标签采用梯度下降法进行学习;
• 求得权重等参数;
• 对测试数据进行预测;
损失函数具体步骤:
• 用随机值初始化前向计算公式参数;
• 代入样本,计算输出预测值;
• 用损失函数计算预测值和标签值误差;
• 根据损失函数的导数,沿梯度最小方向将误差回传,修正前向计算公式中的各个权重值;
• 重复,直到损失函数达到满意值就停止迭代;
网络模型参数学习——关键代价函数选择。
网络模型参数学习的关键就是让感知器学习,学习如何找到权值w和偏置b,使得所有输入样本所对应的输出都是正确的,或者错误尽量少。w和b应该使得下面的函数最小:
0-1损失函数:一种常用于分类任务的损失函数。
平方损失函数比0-1损失函数能够反映多的信息,在手写数字识别实例中更有利于参数调整。
均方误差作为损失函数的优点是形式简单、易懂,但容易出现饱和现象,易限于局部极值,改进采用交叉熵;
熵是美国数学家香浓引入信息论中的,用来度量不确定的程度,变量的不确 定性程度越大,熵越大;
交叉熵代价函数定义为: J ( θ ) = − 1 n ∑ x [ y ^ l n ( y ) + ( 1 − y ^ ) l n ( 1 − y ) ] J(\theta )=-\frac{1}{n}\sum_{x}[{\hat{y} ln(y)+(1-\hat{y})ln(1-y)}] J(θ)=−n1x∑[y^ln(y)+(1−y^)ln(1−y)]
- 采用“交叉熵”作为代价函数,代价函数关于权值偏导数,不出现 σ \sigma σ'(z)
- 留下了误差项 σ \sigma σ ( z N ) (z^{N}) (zN)- ( ^ y ) \hat(y) (^y)
- 如果误差越大,修正项就越大,参数更新越快,训练速度越快。
通过损失函数能定量神经网络预测结果的好坏,如何根据评价结果优化参数呢? 不可能枚举所有的可能的取值。梯度下降法保证得到局部最优值,不是全局最优值。(也称为批量梯度下降法或最速下降法)
梯度下降法?
神经网络模型学习的本质是找到能最小化损失函数的参数(权重和偏置),即求解损失函数关于参数的极值问题,为了解决这一优化问题,采取梯度下降法(批量梯度下降法、最速下降法)。
在损失函数确定情况下,优化网络的任务交给了优化器。
优化器代表了调整网络参数,使损失函数达到最小的过程。
不同的优化器有不同的算法,改变损失函数的过程和效率也各不相同。
选取不同的初始值,可能到达不同的局部最小值。
感知器学习的本质即为不断迭代过程,通常采用
误差校正的学习规则,不断更新权值和偏置,直
至迭代停止。
梯度:表示函数在某一点变化最快的方向,图中w点的梯度方向就是黄色的切线
梯度下降法: 类似下山,可见度低,下山路径无法确定最低点,看不到全局,利用周围信息寻找路径,即采用梯度下降法下山。
选择一个初始值w,Random,以当前所处位置为基础
计算梯度值 寻找位置最陡峭(保证快速减少)的地方,朝着山下降(保证损失函数减少)地方走;
模型收敛条件:误差小于某个预先设定较小的值,两次迭代之间的权值变化很小,设定最大迭代次数。
← − δ \delta δL/ δ \delta δw;
迭代 直到 δ \delta δL/ δ \delta δw 非常小(更新很小),得到损失函数的最小值;
权值调整量与误差梯度反方向成正比
η “学习率”(梯度下降算法的搜索步长,下山一小步)不能太小(权值调整慢,迭代次数多),也不能太大(权值调整不稳定),可以多尝试一些值,0.1 ,0.03,0.01,0.003,0.001,0.0003…,一般取值0-1之间。
• 网络模型的学习需要大训练集来得到好的泛化能力。
• 梯度下降法需要在每一迭代中对每个样本进行计算,所有样本的平均值作为当前迭代的梯度,当训练样本量大时,计算时间过长。
• 实际计算中,改用小规模样本的梯度值替代或仅根
据一个样本的梯度近似替代,产生了随机梯度下降
算法和小批量梯度下降算法。
- 学习率难以选取,太大会产生震荡,太小收敛缓慢。
- 容易陷入局部最优解(局部极小值)
梯度下降法每一步都要降低高度,一旦进入次低点,很难再出来,损失函数到了一定小的程度就不能再小,即损失函数次优解,若不满足要求则再选择其他优化算。
- 优化器调整网络参数,使得损失函数达到最小。
- 不同的优化算法的计算过程和效率也不相同。
- 梯度下降算法是最常用也是最有效的优化算法。
1)随机梯度下降算法 SGD
2)小批量梯度下降算法 MBGD
小批量梯度下降算法 MBGD :
具体而言,从训练集中随机抽出一个小批量样本{x(1),…,x(m)},对应的标签为{y(1),…,y(m)}。损失函数的梯度近似为所抽取样本的梯度期望。
- 其中的求和只对随机抽样出来的样本进行的。小批量梯度下降法在迭代的每一步,参数的更新只用了小批量样本的信息。
- 相对于整个样本数据集来说,小批量样本的数目m相对于样本总数n要小得多,计算量大大减少,计算速度也可以极大地提升。
- 小批量梯度下降法是以迭代次数换取算法的运行速度。
- 随机梯度下降算法是小批量梯度下降法的一个特例,即m=1的情况。
- 小批量梯度下降法和随机梯度下降法虽然每一次迭代的计算量大大减少,但每次迭代方向不一定是模型整体最优的方向,但算法收敛可能需要更多的迭代次数。
反向传播算法——参数以梯度下降法进行调整的顺序
- 通过多层神经网络得出结果与实际标签的结果进行比较,得到了差值损失函数。
- 根据梯度下降的方法,从输出层将当前的损失函数往前反馈给之前的各层神经网络隐藏层,并调整各层网络参数的权值,不断训练,达到一个最小化的损失函数,这个过程称为反向传播。
- 调整系数w可以调整输出值。
- 前一层的神经元激活值越大,表示越有可能看到某些与数字相关的特征。
- 调整激活值大(亮)的神经元的参数,影响比调整激活值小的参数要大。
- 调整输入量。
- 增加原始参数W是正值的神经元的激活值,减少原始参数W是负值的神经元激活值,增加和减少的程度与参数W大小相关。
- 但无法直接改变每个神经元的激活值,将每个输出需要改变的大小叠加之后,能够得到总的该变量。
- 从最后一层到倒数第二层的传播,不断层层传播回去,最后得到如何修改整个网络的参数。
- 海量参数从随机赋值开始,经过梯度下降法和反向传播训练,手写数字识别准确率10%提升到93%(2300次训练)。
反向传播算法(维基百科): 是“误差反向传播”的简称(Backpropagation BP),是一种与最优化方法(如梯度下降法)结合使用的,用来训练人工神经网络的常见方法。该方法对网络中所有权重计算损失函数的梯度,这个梯度会反馈给最优化方法,用来更新权值以最小化损失函数。
正向传播求损失+反向传播传误差+链式求导规则
注意: 神经网络每层的每个神经元都可以根据误差信号修正每层的权重!
输出y是本次前向传播神经网络计算的结果(预测结果),但预测结果不一定正确,要与真实的标签z比较,计算预测结果与真实标签的误差。
多层感知器动因:单层感知器对非线性分类问题无能为力,但大量问题是非线性的,因此在输入层与输出层之间引入隐层作为输入样本的内部表示,变成多层感知器(解决异或问题)。
训练样本集的准备:数据选择的科学合理性以及数据表示的合理性对于我们的网络设计具有极为重要的影,感知器的分类能力和网络的训练能力相关。
(1)训练集设计: 样本的选择与组织要注意以下两点。
a. 样本的选择:样本类别均衡且每类样本数量大致相等,“平均主义”。
b.样本的组织:不同类别样本交叉输入,以避免网络训练出现振荡。
(2)输入输出量选择: 输出量可以是系统的性能指标、分类问题的类别归属、非线性函数的函数值等。输入量必须选择那些对输出影响大且能够检测或提取的变量,各输入变量之间互不相关或相关性很小。
(3)输入量提取与表示: 从输入、输出量的性质来看,可分为两类:
a.数值变量的值是数值确定的连续量或离散量。
b.语言变量是用自然语言表示的概念,其语言值是用自然语言表示的事物的各种属性。当选用语言变量作为网络的输入或输出变量时,需将其语言值转换为离散的数值量。
c. 曲线输入——按照一定时间间隔进行采样,采样得到的n个序列值作为网络输入向量。
d.函数自变量输入——一般有几个输入量就设几个分量,1个输入分量对应1个输入层节点。如:下面为3个输入量,对应3个输入节点。图像输入。极少直接将图像的每个像素点灰度值作为网络输入,提取图像特征参数作为输入量,有几个特征对应几个输入节点。
(4)输出量的表示。
a. n中取1表示法:令输出向量的分量数等于类别数,对应的输出分量取1,其余n-1个分量全取0。例如:用0001,0010,0100和1000表示优、良、中、差4个类。
b. n-1表示法:用n-1个全为0的输出向量表示某个类型,则可以节省一个输出节点。 例如:用000,001,010和100表示优、良、中、差4个类。
c. 数值表示法:对于渐进式的分类,可以将语言值转化为二值之间的数值表示,并根据实际意义拉开距离。例:质量等级差、较差、中等、较好、好用0,0.25,0.5,0.75,1来表示。
(5)输入输出数据预处理: 归一化处理(0~1或-1`1之间)是数据预处理中方法。
a. 网络的各个输入数据常具有不同的物理意义和不同的量纲,归一化给各输入分量以同等重要的地位;
b. BP网的神经元采用Sigmoid转移函数,变换后可防止因净输入的绝对值过大而使神经元输出饱和,继而使权值调整进入误差曲面的平坦区;
网络初始权值的设置: 决定了网络训练从误差曲面的哪一个点开始,对于缩短网络训练时间至关重要。神经元的变化函数一般都关于0点对称的,以一个均值为0的随机分布设置网络初始权值,不能全是0,最好不同,随机任意小值(灵敏区、网络学习速度快)。
隐层:初始权值足够小,远离转移函数的饱和区。
输出层:使初始权值为+1和-1的权值数相等,增大网络训练初期的调整量。
一般先考虑设一个隐层,当一个隐层的节点数很多仍不能改善网络性能时,才考虑再增加一个隐层。隐层节点数的确定:
(1)采用经验公式:其中,m为隐层节点数,n为输入层节点数,l为输出节点数,a为常数1-10.m= n + l + α \sqrt{n+l}+\alpha n+l+α,m= n l \sqrt{nl} nl,m= l o g 2 n log_2n log2n
(2)试凑法:在经验公式确定的隐层节点初始值的基础上,训练网络并逐渐增加隐层节点数,用同一样本集进行训练,从中确定网络。
- 反向传播从输出层方向计算到第一个隐层,按连接权值修正公式向误差减小方向调整网络的各个连接权值。取出另一组样本重复上述步骤,直到N组输入输出样本的误差达到要求。
- 网络的性能好坏主要看其是否具有很好的泛化能力,对泛化能力的测试不能用训练集的的数据进行,而要用训练集以外的测试数据来进行检验。
- 多层前向网络(输入层、隐层、输出层)。
- 连接权值通过Delta学习算法进行修正。
- 神经元传输函数采用S型函数。
- 学习算法采用正向传播和反向传播。
- 层与层之间的连接是单向的,信息的传播是双向的。
- 优点:较好的逼近特性、较强的泛化能力、较好的容错性。
- 缺点:收敛速度慢、局部极值、难以确定隐层的层数和结点数。
Detla 规则简单来讲就是:若神经元实际输出比期望输出大,则减少输入为正的连接的权重,增大所有输入为负的连接的权重。反之,则增大所有输入为正的连接权的权重,减少所有输入为负的连接权的权重。
上图是一个四层的神经网络,有三个隐藏层。我们可以看到,第一层(即左边数过去第二层,因为输入层是第0层)有5个神经元数目,第二层5个,第三层3个。
- 每个数字用9x7网格表示,灰色像素代表0,黑色像素代表1。每个网格表示为0,1的长位串。位映射由左上角向下直到网格的整个一列,然后重复。
- 该分类问题有10类,每个目标向量应该是这10个向量中的一个。目标值由1-9的9个向量表示,0是所有结点的输出全为0表示。
- 选择BP网络结构为63-6-9。9*7个输入结点,对应上述网格的映射。9个输出结点对应10种分类。
- 学习步长为0.3,训练1000个周期,如果输出结点的值大于0.9,则取为1,如果输出结点的值小于0.1,则取为0。(学习步长:太小收敛慢,冲不快;太大收敛快,震荡。(大-小))
- 当训练成功后,对如图测试数据进行测试。测试数据都有一个或者多个位丢失。
对于数字8,神经网络的第6个结点的输出值为0.53,第8个结点的输出值为0.41,表明第8个样本是模糊的,可能是数字6,也可能是数字8,但也不完全确信是两者之一。
欠拟合和过拟合的解决方法:
正则化方法:通过引入额外的新信息(模型复杂性带来的惩罚度)来解决过拟合问题。常用在损失函数中增加权值的L1或L2正则项。
Dropout方法:深度网络学习的训练过程中,对于神经网络单元,按照一定概率将其暂时从网络中丢弃。即每个神经元按照一定的概率不参与工作。
局部最优与全局最优:梯度下降法中,若目标函数为凸函数,则可以找到全局最优解。但由于非线性激活函数的问题,损失函数往往非凸,且网络参数量大,因此梯度下降法难以达到全局最优。高维空间中,鞍点(梯度为0)存在的概率会远远大于局部极值点的概率,误以为鞍点处迭代收敛。
1、 梯度消失:反向传播算法中每层的误差项都包含激活函数的导数,若某层中某个激活函数导数小于1,则随着递推公式,误差项会逐层指数级减小,导致最终损失函数的梯度接近于0。例如:sigmoid激活函数。
2、 梯度爆炸:若某个激活函数的导数大于1,则最终会导致损失函数的梯度很大,最终接近于无穷大。
解:
图一:0.90.2-0.20.5+10.1=0.18,经过激活函数后,输出+1;
图二:0.20.2-0.60.5+10.1=-0.16,经过激活函数后,输出0.
若用BP神经网络解决四分类问题,则神经网络的输出层可以用(4)或(3)节点。
判断题。
1)BP神经网络训练样本的选择应类别均衡且每类样本数量大致相等。(对)
2)BP神经网络训练时,样本输入时应按不同类别样本顺序输入,以避免网络训练出现振荡。(错,不应该是顺序输入,而是交叉)
3)BP神经网络的输入量必须选择那些相关性强,对输出影响大且能够检测或提取的变量。(对)
4)对输入量进行归一化处理可以消除量纲的影响。(对)
5)网络的性能好坏主要看其是否具有很好的泛化能力。(对)
6)单层感知器能对线性可分的数据集进行分类,能够解决逻辑问题异或。(错,单层不能解决异或,多层可以)
7)在某种意思上,小批量梯度下降算法是以迭代次数换取算法的运行速度。(对)
8)神经网络中的神经元有两个状态:兴奋、抑制。这两个状态由阈值决定。(对)
9)前馈式神经网络层间有反馈。(错,没有反馈)
10)小批量梯度下降法在迭代的每一步中,参数的更新只使用了小批量样本的信息。(对)
11)小批量梯度下降法和随机梯度下降算法收敛可能需要更多的迭代次数。(对)
12)网络权值初始化方法与缩短网络训练时间无关。(错)
在用于分类问题时,单层感知器只能解决(线性可分)问题,而多层感知器可以解决(线性不可分)问题,这是因为(多层感知器在输入层和输出层之间引入隐层作为输入样本的内部表示)。
根据误差梯度下降法,权值调整量与误差梯度(反)方向成正比。
BP学习算法的基本思想是信号(前向)传播,误差(反向)传播。
非线性机器学习算法具有以下的什么特性(D)。
A. 针对难以用准则来描述的复杂模型。
B. 能够达到更深层次的抽象
C. 能够进行广泛使用的分类算法
D. 以上都是
使用均方误差作为代价函数,有什么特点(多选)(ABCD)
A. 形式简单
B. 通俗易懂
C. 容易出现饱和现象
D. 容易陷入局部最优解
感知器可以解决以下哪些问题(多选)(ABCD)
A. 实现逻辑关系中的与
B. 实现逻辑关系中的或
C. 实现逻辑关系中的非
D. 线性分类和线性回归问题
在(反馈)模型中,每个神经元同时将自身的输出作为输入信号反馈给其他神经元。
神经网络的学习步骤包括:1、求权重等系数。2、定义代价函数。3、对测试数据进行预测。4、根据样本数据和标签采用梯度下降法进行学习。步骤的正确顺序为:(B)
A. 4213
B. 2413
C. 2143
D. 4123
以下会造成梯度消失的激活函数有(AB)。
A. sigmoid函数
B. tanh函数
C. Relu函数
D. softplus函数