一、神经元(Neuron)
一个简单的神经元数学模型如下:
一个神经元由多个输入x、一个偏置项b和一个输出组成。每个输入对输出的影响都不一样,用权限w表示,多个输入和对应权重w的卷积,为神经元的直接输入值,然后经过激励函数映射得到输出值。
输入: 输出:
二、激励函数
假设激励函数为线性函数f=x,且假设神经元只有一个输入,那么节点输入可以退化为一条线:y=wx+b,如果神经元由两个输入,那么节点输入退化为一个面:y=w1*x1+w2*x2+b,以此递推任意多个输入,节点输入则是一个高度复杂的超平面,偏置项b则是超平面与y=0轴的截距。
实际过程中,激励函数很多是非线性的,可以将简单的线性输入转化为复杂的非线性输出。常见的激励函数参考1、2。
三、神经网络
神经网络是由任意多个神经元组成的神经元网络,由输出层、隐藏层、输出层组成。
网络层数=隐藏层数+2(输入层和隐藏层)。
1989年Robert Hecht-Nielsen证明了对于任何闭区间内的一个连续函数都可以用一个隐含层的BP网络来逼近,这就是万能逼近定理。所以一个三层的BP网络就可以完成任意的m维到n维的映射。即这三层分别是输入层(I),隐含层(H),输出层(O)。既然三层神经网络就能进行逼近,为什么还要多层网络呢?因为隐藏数增多,则可以减少隐藏层神经元节点个数。且多层网络从仿生学来说,更加贴合大脑中的神经网络结构。
四、BP算法推导
BP算法是求解神经网络的常用方法。它是利用误差反向传播,来调节神经网络中的权重和偏置项,从而达到求解网络的算法。深度了解BP算法必须要掌握以下知识点:
1) 梯度下降法;
2) 复合求导;
3) 损失函数基本概念;
4.1梯度下降法
梯度下降法是BP算法的核心,利用梯度下降更新权重和偏置项。梯度下降核心思想是沿着梯度下降的方向更新变量,就能找到最小值。详细介绍可以参考3.
4.2样本数据
假设有样本集合,有n个样本,其中输入
,输出
。输入有m个特征值组成,输出由p个输出组成。如第i个样本为
,输出为
。
4.3 损失函数
利用梯度下降法必须要有目标函数(或者损失函数),算法的目的是使得目标最小。对于某个样本输入,对应的输入为
,假设输入样本在神经网络中输出的期望值为
。那么本次的损失可以表示为:
n个样本的损失可以表示为:
4.4 BP算法思想
对于某个输入样本X,计算其对应的期望输出D,让后求出输出层每个节点的误差,L-1层的误差又可以由输出层得到,以此递推,可以求得整个网络神经元的误差,再根据误差调整网络中的权重和偏置项。遍历所有样本最终得到整个网络的w,b。
4.5 符号定义
假设网络层数为L,表示第
层第i个神经元,
表示神经元
与神经元
的连接权重,
表示神经元
的偏置项。
4.6详细推导
根据梯度下降法原理,需要求损失函数J对w,b的偏导数,因为每次输入样本后求误差,所以只需要用单个样本的损失函数进行求导即可。
先考虑输入层(L层):
对求偏导(第L层第k个神经元连接第L-1层第j个神经元权重):
再分析第L-1层:
求第L-1层第i个神经元连接到第L-2层第j个神经元
的权重
。
4.7 总结