[深度学习-原理]BP神经网络

前言

BP(back propagation)神经网络

1. 什么是人工神经网络?

首先给出一个经典的定义:“神经网络是由具有适应性的简单单元组成的广泛并行互连网络,它的组织能够模拟生物神经系统对真实世界物体所作出的交互反应”[Kohonen, 1988]。

这种说法虽然很经典,但是对于初学者并不是很友好。比如我在刚开始学习的时候就把人工神经网络想象地很高端,以至于很长一段时间都不能理解为什么神经网络能够起作用。类比最小二乘法线性回归问题,在求解数据拟合直线的时候,我们是采用某种方法让预测值和实际值的“偏差”尽可能小。同理,BP神经网络也做了类似的事情——即通过让“偏差”尽可能小,使得神经网络模型尽可能好地拟合数据集。

2. 神经网络初探

2.1 神经元模型

神经元模型是模拟生物神经元结构而被设计出来的。典型的神经元结构如下图1所示:
在这里插入图片描述
【图1 典型神经元结构 (图片来自维基百科)】
神经元大致可以分为树突、突触、细胞体和轴突。树突为神经元的输入通道,其功能是将其它神经元的动作电位传递至细胞体。其它神经元的动作电位借由位于树突分支上的多个突触传递至树突上。神经细胞可以视为有两种状态的机器,激活时为“是”,不激活时为“否”。神经细胞的状态取决于从其他神经细胞接收到的信号量,以及突触的性质(抑制或加强)。当信号量超过某个阈值时,细胞体就会被激活,产生电脉冲。电脉冲沿着轴突并通过突触传递到其它神经元。(内容来自维基百科“感知机”)

同理,我们的神经元模型就是为了模拟上述过程,典型的神经元模型如下:
在这里插入图片描述
【图2 典型神经元模型结构 (摘自周志华老师《机器学习》第97页)】

这个模型中,每个神经元都接受来自其它神经元的输入信号,每个信号都通过一个带有权重的连接传递,神经元把这些信号加起来得到一个总输入值,然后将总输入值与神经元的阈值进行对比(模拟阈值电位),然后通过一个“激活函数”处理得到最终的输出(模拟细胞的激活),这个输出又会作为之后神经元的输入一层一层传递下去。

2.2 神经元激活函数

  1. 激活函数总结(Sigmoid, Tanh, Relu, leaky Relu, PReLU, Maxout, ELU, Softmax,交叉熵函数)
  2. 为什么用激励函数

2.3 神经网络结构

我们使用如下神经网络结构来进行介绍,第0层是输入层(3个神经元), 第1层是隐含层(2个神经元),第2层是输出层:
在这里插入图片描述

在这里插入图片描述
激活函数使用符号σ\sigma表示,因此,第lthl^{th} 层中第jthj^{th} 神经元的激活为:
在这里插入图片描述

现在,我们使用矩阵形式重写这个公式:定义w[l]w^{[l]} 表示权重矩阵,它的每一个元素表示一个权重,即每一行都是连接第lll层的权重,用上图举个例子就是:
在这里插入图片描述
同理,

在这里插入图片描述
在这里插入图片描述

输入层

在这里插入图片描述

输出层

在这里插入图片描述

识别手写字体的一个整体BP神经网络结构图

在这里插入图片描述

3. 损失函数和代价函数

说实话,**损失函数(Loss Function)和代价函数(Cost Function)**并没有一个公认的区分标准,很多论文和教材似乎把二者当成了差不多的东西。

为了后面描述的方便,我们把二者稍微做一下区分(这里的区分仅仅对本文适用,对于其它的文章或教程需要根据上下文自行判断含义):
损失函数主要指的是对於单个样本的损失或误差;代价函数表示多样本同时输入模型的时候总体的误差——每个样本误差的和然后取平均值。
举个例子,如果我们把单个样本的损失函数定义为:
在这里插入图片描述
那么对于m个样本,代价函数则是:
在这里插入图片描述
在这里插入图片描述

4. 反向传播

4.1 求梯度矩阵

在这里插入图片描述

4.2 学习率

在这里插入图片描述

4.3 梯度下降

在这里插入图片描述

4.4 梯度方向

在这里插入图片描述

不能保证是是最小值

在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章