NO 1 神经网络

基本神经网络涉及的知识点:
1,神经网络的结构
2,激活函数与损失函数
3,神经网络的训练
4,梯度下降法与优化器(Optimizer)
5,神经网络的特殊结构
只谈理论,不谈python算法实现。

一、神经网络的结构
先看下面的几张神经网络的结构图:
人工神经元模型
线性神经网络结构模型的数学表达式,f为激活函数
多层神经网络的俯瞰上图中每一个节点都被视为一个神经元,基于神经元构建的神经元模型(M=P模型)有三个功能:
1),能够接收n个M-P模型传递过来的信号;
2),能够在信号的传递过程中为信号分配权重;
3),能够将得到的信号进行汇总(加权)、变换(激活)并输出(传递给下个M-P模型)。
对于多层神经网络模型,上一层的输出即是下一层的输入,原始输入x经过一层一层变换层的变换得到输出。
因此,神经网络算法包含了如下三个部分:
1,根据输入x,权值矩阵w,偏置量b,通过前向传导算法,得到输出G(x)
2,通过将输出和真值代入损失函数,并计算损失函数的梯度
3,利用得到的这个梯度来更新模型的各个参数,主要是wi和bi,i为层数
4,接1,2,3,实现循环训练,得到使损失函数达到最小的各个参数,并对最终的输出作预测y_pred

注:主流人工神经网络是以“层(Layer)”,而不是以“节点”,为基本单位的。
输入(层)、变换层和输出(层)都可以想象为由若干M-P神经元“排列在一起”而组成的“神经层”,从而整张神经网络即为由若干神经层“堆叠而成”的一个结构。
在这种情况下,同一层中的所有M-P神经元回共享激活函数f()和偏置量b,所以我们会针对层结构定义f()和b,而不是针对神经元定义f()和b

二、前向传导算法
准备:数据集(x,y),权值矩阵w,偏值量b,激活函数f(),损失函数L(x)
1,权值矩阵w能把从激活函数得到的函数值(输出值)线性映射到另一个维度的空间(下一神经层)上;
2,偏置量b能在此基础上再进行一步平移操作。
因为激活函数全是中心对对称的函数,为了打破这种对称性,引入了偏置量。
3,激活函数(Activation Function)
所谓激活函数,正是整个结构中非线性扭曲力。
常用的激活函数有逻辑函数Sigmoid、正切函数Tanh、线性整流函数ReLU、ELU函数、Softplus函数、恒同映射Identity
注:如何理解激活函数,可以将之视为对数据x的非线性变换,使得数据更加容易处理。
4,损失函数(Cost Function)
损失函数是模型对数据拟合程度的反映。拟合得越差,损失函数的值就应该越大。
同时满足损失函数的函数值比较大(即模型的表现越差)时,它对应的梯度也要比较大(即更新参数的幅度也要比较大)。
对于神经网络而言,梯度下降可谓是训练的全部,时至今日也没能出现能与之抗衡的其余算法,最多只是变形。
损失函数经常需要结合激活函数来讨论的,以下是常用的几种损失函数:
距离损失函数(最小平方误差,MSE,即均方误差),这个学过统计的都知道。
交叉熵损失函数,交叉熵(Cross Entropy)是信息论的一个概念。
定义L(y,G(x))=-[y*lnG(x)+(1-y)*ln(1-G(x))],要求输出量G(x)在(0,1)内,进一步要求G(x)是一个概率向量。
注:任意一个向量U如果它内部的各个元素为非负数,而且总和等于1,则此向量称为概率向量。
log-likehood损失函数,L(y,G(x))=-lnv(k),要求G(x)是一个概率向量,v(k)是其中的第k个元素。
5,有了上述定义,下面进行前向传导。
神经元层数,每层的神经元个数,激活函数,偏置量,层与层之间的权值矩阵,前层中神经元与后层中神经元之间的权值,为权值矩阵中的一个元素。每一层对应的输入和输出。模型的输入和输出,样本数N,损失函数L。
公式不好写,没写

三、反向传播算法 Backpropation,BP
BP算法的目的是利用梯度来更新结构中的参数以使得损失函数最小化。
涉及两个问题:1,如何获得(局部)梯度;2,如何使用梯度进行更新。
1,获取局部梯度
局部梯度的概念:损失函数对各层输入值的偏导数,计算结果应是Nxn的矩阵
步骤:1),先得到损失函数的梯度;2),局部梯度的反向传播过程
损失函数的选择:
BP算法的第一步所计算的局部梯度正是由损失函数对模型输出v的梯度和激活函数的导数通过element wise操作得到的。
因此,对于固定的损失函数而言,会有相对“适合它”的激活函数。组合如下:
1),Sigmoid系以外的激活函数+距离损失函数(MSE)
MSE不能使用Sigmoid系激活函数是因为Sigmoid系激活函数在图像两端都非常平缓,从而回引起梯度消失的现象。
MSE这个损失函数无法处理这种梯度消失。
梯度消失,正是由于激活函数在接近饱和时变化过缓所引发的现象。
2),Sigmoid + Cross Entropy
可以完美地解决梯度消失问题。
3),Softmax + Cross Entropy/log-likelihood
Softmax比起一个激活函数来说,更像是一个(针对向量的)变换,它具有相当好的直观:能把模型的输出向量通过指数函数归一化成一个概率向量。
2,参数的更新
如何使用梯度下降来更新参数:
1)更新反向不是简单地取为梯度
2)学习速率不是简单地取为常值
参数的更新过程常常会被单独抽象成若干个模型,我们常常会称这些模型为“优化器(Optimizer)”。
优化器能够根据模型的参数和损失来“优化”模型。
具体来说,优化器至少需要能够利用各种算法并根据输入的参数与对应的梯度进行参数的更新。
优化器的框架应包括:
1)接收欲更新的参数,并进行相应处理的方法;
2)利用梯度和自身属性来更新参数的方法;
3)在完成参数更新后,更新自身属性的方法。
下面简介其中的几种方法:
1)Vanilla Update (朴素更新),就是最普通的梯度下降法;
2)Momentum Update
通过尝试模拟物体运动时的“惯性”,以期望增加算法收敛的速度和稳定性。公式见书本
思想:
认为训练刚开始时的梯度会比较大而训练后期时梯度会变小,通过逐步调大惯性p,我们能够使更新的步伐一致保持在比较大的水平
认为当我们接近谷底时,我们应该尽量减少“动力”即梯度,带来的影响而保持原有的方向前进。因为如果每一步都直接往谷底方向走的话,很容易由于动力(梯度)大小难以拿捏而引发震荡。
3)Nesterov Momentum Update
它在凸优化问题下的收敛性比传统的Momentum Update要更好,而在实际任务中的表现也常常是更优的。
它的核心思想在于想让算法具有‘前瞻性’。即它会利用“下一步”的梯度而不是“这一步”的梯度来合成最终的更新步伐。
4)RMSProp
RMSProp是通过实时调整学习速率来进行优化的。
5)Adam
Adam算法像是Momentum系算法和RMSProp算法的结合。

四、特殊的层结构
SubLayer附加层,是一种特殊的Layer结构,它们不会独立地存在,而会“依附”在某个Layer之后实现某种特定的功能。
目的是为了在Layer的输出的基础上进行一些变换以得到更好的输出,即SubLayer可以优化Layer的输出。
CostLayer正是这样一个特殊的SubLayer:它附加在输出层的后面,能够根据输出进行相应的变换并得到模型的损失。
不同于更新参数时使用的优化器,通过更新模型参数来优化模型,SubLayer是通过变换Layer的输出来优化模型的。
先定义层与层结构之间的“关联”:
1)Layer与Layer之间的关联即为相应的权值矩阵w;
2)SubLayer之间的关联,即SubLayer与Root Layer之间的关联都只是“占位符”,它们没有任何实际的作用。
SubLayer的所有行为可以概括如下:
1,在前向传导中,它会根据自身的属性和算法来优化从父层处得到的更新。
2,在反向传播中,他会有如下三种行为:
1)SubLayer之间的关联以及SubLayer和Root Layer之间的关联不会被更新,因为它们仅仅只是占位符
2)SubLayer作为“局部优化器”,本身可能会有 一些参数。这些参数则可能会被BP算法更新,但影响域仅在该SubLayer的内部(Normalize会是一个很好的例子);
3)Layer之间关联更新是通过Leaf Layer完成的。具体而言,第i层的Leaf Layer会利用Li的激活函数来完成局部梯度的计算。
典型的SubLayer有Dropout和Normalize:
Dropout的核心思想在于提高模型的泛化能力:它会在每次迭代中依概率去掉对应Layer的某些神经元,从而每次迭代中训练的都是一个小的神经网络。
Normalize的核心思想在于把父层的输出进行“归一化”,从而期望能够解决由于网络结构过深而引起的“梯度消失”等问题。
详细的Dropout和Normalize会在卷积神经网络中细说。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值