神经网络运作过程分为学习和工作两种状态。
神经网络的学习主要是指使用学习算法来调整神经元间的连接权,使得网络输出更符合实际。学习算法主要分为监督学习算法和非监督学习算法两类。监督学习算法是将一组训练集送入网络,根据网络的实际输出与期望输出间的差别来调整连接权。非监督学习算法抽取样本集合中蕴含的统计特性,并以神经元之间的连接权的形式存于网络中。
监督学习算法的主要步骤如下:
(1)从样本集合中取一个样本(A_i, B_i),其中A_i是输入,B_i是期望输出;
(2)计算网络的实际输出O;
(3)求D= B_i-O;
(4)根据D调整权矩阵W;
(5)对每个样本重复上述过程,直到误差对整个样本集来说不超过规定范围为止。
监督学习算法: Delta 学习规则
Delta学习规则是一种简单的监督学习算法,该算法根据神经元的实际输出与期望输出之间的差别来调整连接权,其数学表示如下:
w_ij (t+1)= w_ij (t)+a(d_i - y_i)x_j(t)
式中,w_ij表示神经元j到神经元i的连接权: d_i 是神经元i的期望输出: y_i是神经元i的实际输出; x_j表示神经元j的状态,若神经元j 处于激活态则 x_j为1,若处于抑制状态则 x_j为0或-1 (根据激活函数而定); a是表示学习速度的常数(学习率)。假设 x_j为1,若d_i比y_i大,那么w_ij将增大;若d_i比y_i小,那么w_ij将变小。
简单地说,Delta 学习规则就是:若神经元实际输出比期望输出大,则减小所有输入为正的连接的权重,增大所有输入为负的连接的权重:反之,若神经元实际输出比期望输出小,则增大所有输入为正的连接的权重,减小所有输入为负的连接的权重。
若神经元间的连接权保持不变,则神经网络处于工作状态,作为分类器、预测器等使用。
梯度下降算法通常也叫最速下降算法,是一种最优化算法,它基于这样一个事实:如果实值函数f(x)在点x处可微且有定义,那么函数f(x)在x点沿着负梯度(梯度的反方向)下降最快。梯率下降算法就是沿着梯度下降方向求解最小值的。
梯度下降算法主要用来优化单个参数的取值,而反向传播算法给出了一个高效的方式在所有参数上使用梯度下降算法,从而使神经网络模型在训练数据上的损失函数尽可能小。反向传播算法是训练神经网络的核心算法,它可以根据定义好的损失函数优化神经网络中参数的取值,从而使神经网络模型在训练数据集上的损失函数达到一个较小值。
常用的梯度下降算法可以分为:批量梯度下降算法、小批量梯度下降算法和随机梯度下降算法。
批量梯度下降(BGD) 算法
批量梯度下降法针对的是整个数据集,通过对所有的样本的计算来求解梯度的方向。每次迭代都要使用到所有的样本,对于数据量特别大的情况,如大规模的机器学习应用,每次迭代求解所有样本需要花费大量的计算成本。
小批量梯度下降(MBGD) 算法
小批量梯度下降算法在每次的迭代过程中利用部分样本代替所有的样本。假设训练集中的样本个数为100, 且每个小批量中含有10 个样本,这样整个训练数据集可以分为10个小批量。
随机梯度下降(SGD)算法
随机梯度下降算法可以看成小批量梯度下降算法的一个特殊情形,即在该算法中每次仅根据一个样本对模型中的参数进行调整。这种算法的速度比较快,但收敛性能不太好。
TensorFlow的主要梯度下降函数有3种
tf.train.GradientDescentOptimizer(learning_rate)
创建一般梯度下降优化器
tf.train.AdamOptimizer(learning_rate)
创建Adam优化器
tf.train.MomentumOptizer(learning_rate)
创建Momentum优化器
1985年Rumelhart等人提出BP网络的误差反向传播(Back Propagation, BP)学习算法。该算法利用输出后的误差来估计输出层的直接前导层的误差,再用这个误差估计更前一层的误差,如此一一层层地反传下去, 就获得了所有其他各层的误差估计。它是一种目前最常用的神经网络算法。
BP神经网络算法的主要思想是:对于n个输入学习样本x1, x2, …, xn,已知与其对应的m个输出样本为t1, t2, … , tm;用网络的实际输出(z1,Z2, …,zm)与目标矢量(t,12,…, tm)之间的误差来修改其权值,使z l(l=1,2, …,m)与期望的tl尽可能地接近。
BP神经网络的学习过程主要由4部分组成:输入模式顺传播、输出误差逆传播、循环记忆训练、学习结果判别。这个算法的学习过程,由正向传播和误差反向传播组成。在正向传播过程中,输入信息从输入层经隐藏层单元逐层处理,并传向输出层,每一层神经元的状态只影响下一层神经元的状态。如果在输出层不能得到所期望的输出,则转入误差反向传播,将误差信号沿原来的连接通路返回,通过修改各层神经元的权值,使得误差信号减小;然后转入正向传播过程。反复迭代,直到误差小于给定的值为止。
采用BP学习算法的前馈型神经网络通常被称为BP网络。BP网络具有很强的非线性映射能力,一个三层BP神经网络能够实现对任意非线性函数的逼近。
梯度下降法+复合函数的链式求导法则=BP算法
梯度下降法对应单个参数,反向传播算法对应所有参数