神经网络和BP算法推导

Posted 爆浆大鸡排

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了神经网络和BP算法推导相关的知识,希望对你有一定的参考价值。

我的原文:https://www.hijerry.cn/p/53364.html

感知机

感知机(perceptron)于1957年由Rosenblatt提出,是一种二分类线性模型。感知机以样本特征向量作为输入,输出为预测类别,取正、负两类。感知机最终学习到的是将输入空间(特征空间)划分为正、负两类的分离超平面,属于判别模型。为此,使用误分类作为损失函数,利用梯度下降优化该函数,可求得感知机模型。感知机是神经网络与支持向量机的基础。

单层感知机

i i i 个样本的预测值 y i ^ = f ( w ⃗ ⋅ x i ⃗ + b ) \\haty_i = f(\\vecw \\cdot \\vecx_i + b) yi^=f(w xi +b) ,其中 f ( ⋅ ) f(\\cdot) f() 称为激活函数,$ f(\\cdot) \\in -1, 1$ ,损失为 L i = 1 2 ( y i ^ − y i ) 2 L_i=\\frac12(\\haty_i-y_i)^2 Li=21(yi^yi)2 。单层感知机的目的就是习得合适的 w ⃗ \\vecw w b b b ,使得所有样本的损失之和 ∑ x i ∈ X L i \\sum_x_i \\in X L_i xiXLi 最小。

如果我们令 z = w ⃗ ⋅ x i ⃗ + b z = \\vecw \\cdot \\vecx_i + b z=w xi +b 即感知机的输入。那么当 z &lt; 0 z &lt; 0 z<0 时, f ( z ) = − 1 f(z) = -1 f(z)=1;当$ z > 0$ 时, f ( z ) = 1 f(z)=1 f(z)=1 。因为 z z z x x x 线性组合,所以最终得到的是一个超平面 w ⃗ ⋅ x ⃗ + b = 0 \\vecw \\cdot \\vecx+b=0 w x +b=0 ,超平面将输入样本分为了 y i = 1 y_i=1 yi=1 y i = y_i= yi= -1两类。

当输入 x = ( x 1 , x 2 ) x=(x_1, x_2) x=(x1,x2) 是二维向量时,用红点表示 + 1 +1 +1 的数据,黑点表示 − 1 -1 1 的数据,最终习得的是一条直线,将两个数据分离开,如下图所示。

因为单层感知机最终习得是超平面,所以只能用于解决线性可分问题。对于下面这样的数据,单层感知机无能为力。

多层感知机

多层感知机也叫MLP,可以看做是一个有向图。MLP由多层节点组成,每一层全连接到下一层,除输入节点外,每个节点都是一个带有非线性激活函数的神经元(unit)。多层感知机可用于解决线性不可分问题。

因为神经网络的和多层感知器是一个意思,所以下面直接对单层前馈神经网络进行详细说明。

单层前馈神经网络

下图是一个输入层节点数为3,隐藏层节点数为2,输出层节点数为2的前馈神经网络,该网络可用于解决二分类问题。

单层前馈神经网络本质上是一个多层感知机,有以下几个特点:

  1. 全连接。每一层的节点都与右边层的所有节点通过权重连接。
  2. 隐藏层只有一层。所以称之为单层
  3. 数据单向流动。每一层节点只作用于其之后的层,所以叫作前馈
  4. 本质是数学函数。神经网络可以明确的用数学语言表达。

神经元

我们拿出隐藏层的一个神经元(unit)放大来看:

神经元的任务就是接受输入,产生输出

z 表示神经元的输入,a 是神经元的输出。

输入怎么得来?就是上一层的神经元输出与权重 的乘积之和再加上偏置

输出怎么得来?把输入值带入激活函数 得到。

写成数学表达式就是:

$ z^(2)_1 = w(1)_11a(1)_1+w(1)_21a(1)_2+w(1)_31a(1)_3+b^(1)_1$

a 1 ( 2 ) = f ( z 1 ( 2 ) ) a^(2)_1=f(z^(2)_1) a1(2)=f(z1(2))

f ( ⋅ ) f(\\cdot) f() 是激活函数,常见的有sigmoid、tanh、ReLU。

Sigmoid函数

Sigmoid的表达式为 S ( x ) = 1 1 + e − x S(x)=\\frac11+e^-x S(x)=1+ex1,定义域为 R R R ,值域为 ( 0 , 1 ) (0, 1) (0,1)

x = 0 x=0 x=0 处,函数值为 1 2 \\frac12 21,其函数图像如下:

sigmoid函数有许多优美的性质,如:

  1. e x e^x ex 的复合函数, e e e 又名自然常数

  2. 1阶导函数 S ′ ( x ) = S ( x ) ( 1 − S ( x ) ) S&#x27;(x)=S(x)(1-S(x)) S(x)=S(x)(1S(x)) 。即函数在某一点的导数可由函数在这一点的函数值求得

  3. 曲线光滑,定义域内处处可导,且可以无限次求导

  4. 可以把任意输入压缩到 ( 0 , 1 ) (0, 1) (0,1) 范围内

在反向传播算法(BP算法)中,性质2、3起到了极大的作用,性质4起到了防溢出的作用。

前向传播原理

现考虑一个样本$ (x, y)$ ,其中 x ∈ R 3 x \\in R^3 xR3 是输入数据, y ∈ [ 0 , 1 ] , [ 1 , 0 ] y \\in \\[0,1],[1,0]\\ y[0,1],[1,0]是实际值。我们现在来手动计算 x x x 预测值 y ^ \\haty y^。预测值 y ^ \\haty y^ 的计算过程是从输入层开始从左往右计算的,所以这个过程也叫作前向传播。

下图表示,为了得到 a 1 ( 3 ) a^(3)_1 a1(3) ,有哪些神经元被激活了。

为了方便表述,用 w i j ( l ) w^(l)_ij wij(l) 表示第 l l l 层的第 i i i 个神经元与第 l + 1 l+1 l+1 层的第 j j j 个神经元相连的权重,用 b j ( l ) b^(l)_j bj(l) 表示第 l + 1 l+1 l+1 层第 BP神经网络算法推导

BP神经网络算法推导

神经网络——BP学习算法:反向传播算法推导

神经网络 误差逆传播算法推导 BP算法

神经网络和BP算法推导

神经网络——BP学习算法推导