ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

神经网络基础知识总结

2021-06-12 22:01:20  阅读:229  来源: 互联网

标签:总结 150 frac 函数 cdot 基础知识 神经网络 3b partial


1、神经元细胞的数学模型

神经网络由基本的神经元组成,下图就是神经元的数 学/计算模型,便于我们用程序来实现。
在这里插入图片描述

2、神经网络中的三个基本概念

这三大概念是:反向传播,梯度下降,损失函数。
简单总结一下反向传播与梯度下降的基本工作原理:
(1)初始化;
(2)正向计算;
(3)损失函数为我们提供了计算损失的方法;
(4)梯度下降是在损失函数基础上向着损失最小的点靠 近而指引了网络权重调整的方向;
(5)反向传播把损失值反向传给神经网络的每一层,让 每一层都根据损失值反向调整权重;
(6)重复正向计算过程,直到精度足够好(比如损失函 数值小于 0.0010.001)。

3、 线性反向传播

3.1 正向计算的实例

假设有一个函数:

z = x ⋅ y (1) z = x \cdot y \tag{1} z=x⋅y(1)

其中:

x = 2 w + 3 b (2) x = 2w + 3b \tag{2} x=2w+3b(2)

y = 2 b + 1 (3) y = 2b + 1 \tag{3} y=2b+1(3)

计算图如图下。
在这里插入图片描述

注意这里 x , y , z x,y,z x,y,z 不是变量,只是中间计算结果; w , b w,b w,b 才是变量。因为在后面要学习的神经网络中,要最终求解的目标是 w w w 和 b b b 的值,所以在这里先预热一下。

当 w = 3 , b = 4 w = 3, b = 4 w=3,b=4 时,会得到如下图的结果。

在这里插入图片描述

最终的 z z z 值,受到了前面很多因素的影响:变量 w w w,变量 b b b,计算式 x x x,计算式 y y y。

3.2 反向传播求解 w w w

求 w w w 的偏导

目前 z = 162 z=162 z=162,如果想让 z z z 变小一些,比如目标是 z = 150 z=150 z=150, w w w 应该如何变化呢?为了简化问题,先只考虑改变 w w w 的值,而令 b b b 值固定为 4 4 4。

如果想解决这个问题,最笨的办法是可以在输入端一点一点的试,把 w w w 变成 3.5 3.5 3.5 试试,再变成 3 3 3 试试…直到满意为止。现在我们将要学习一个更好的解决办法:反向传播。

从 z z z 开始一层一层向回看,图中各节点关于变量 w w w 的偏导计算结果如下:

因为 z = x ⋅ y z = x \cdot y z=x⋅y,其中 x = 2 w + 3 b , y = 2 b + 1 x = 2w + 3b, y = 2b + 1 x=2w+3b,y=2b+1

所以:

∂ z ∂ w = ∂ z ∂ x ⋅ ∂ x ∂ w = y ⋅ 2 = 18 (4) \frac{\partial{z}}{\partial{w}}=\frac{\partial{z}}{\partial{x}} \cdot \frac{\partial{x}}{\partial{w}}=y \cdot 2=18 \tag{4} ∂w∂z​=∂x∂z​⋅∂w∂x​=y⋅2=18(4)

其中:

∂ z ∂ x = ∂ ∂ x ( x ⋅ y ) = y = 9 \frac{\partial{z}}{\partial{x}}=\frac{\partial{}}{\partial{x}}(x \cdot y)=y=9 ∂x∂z​=∂x∂​(x⋅y)=y=9

∂ x ∂ w = ∂ ∂ w ( 2 w + 3 b ) = 2 \frac{\partial{x}}{\partial{w}}=\frac{\partial{}}{\partial{w}}(2w+3b)=2 ∂w∂x​=∂w∂​(2w+3b)=2
对 w w w 的偏导求解过程如下
在这里插入图片描述

图中其实就是链式法则的具体表现, z z z 的误差通过中间的 x x x 传递到 w w w。如果不是用链式法则,而是直接用 z z z 的表达式计算对 w w w 的偏导数,会怎么样呢?我们来试验一下。

根据公式1、2、3,我们有:

z = x ⋅ y = ( 2 w + 3 b ) ( 2 b + 1 ) = 4 w b + 2 w + 6 b 2 + 3 b (5) z=x \cdot y=(2w+3b)(2b+1)=4wb+2w+6b^2+3b \tag{5} z=x⋅y=(2w+3b)(2b+1)=4wb+2w+6b2+3b(5)

对上式求 w w w 的偏导:

∂ z ∂ w = 4 b + 2 = 4 ⋅ 4 + 2 = 18 (6) \frac{\partial z}{\partial w}=4b+2=4 \cdot 4 + 2=18 \tag{6} ∂w∂z​=4b+2=4⋅4+2=18(6)

公式4和公式6的结果完全一致!所以,请大家相信链式法则的科学性。

求 w w w 的具体变化值

公式4和公式6的含义是:当 w w w 变化一点点时, z z z 会产生 w w w 的变化值18倍的变化。记住我们的目标是让 z = 150 z=150 z=150,目前在初始状态时是 z = 162 z=162 z=162,所以,问题转化为:当需要 z z z 从 162 162 162 变到 150 150 150 时, w w w 需要变化多少?

既然:

Δ z = 18 ⋅ Δ w \Delta z = 18 \cdot \Delta w Δz=18⋅Δw

则:

Δ w = Δ z 18 = 162 − 150 18 = 0.6667 \Delta w = {\Delta z \over 18}=\frac{162-150}{18}= 0.6667 Δw=18Δz​=18162−150​=0.6667

所以:

w = w − 0.6667 = 2.3333 w = w - 0.6667=2.3333 w=w−0.6667=2.3333
x = 2 w + 3 b = 16.6667 x=2w+3b=16.6667 x=2w+3b=16.6667
z = x ⋅ y = 16.6667 × 9 = 150.0003 z=x \cdot y=16.6667 \times 9=150.0003 z=x⋅y=16.6667×9=150.0003

我们一下子就成功地让 z z z 值变成了 150.0003 150.0003 150.0003,与 150 150 150 的目标非常地接近,这就是偏导数的威力所在。

3.3 反向传播求解 b b b

求 b b b 的偏导

这次我们令 w w w 的值固定为 3 3 3,变化 b b b 的值,目标还是让 z = 150 z=150 z=150。同上一小节一样,先求 b b b 的偏导数。

注意,在上一小节中,求 w w w 的导数只经过了一条路:从 z z z 到 x x x 到 w w w。但是求 b b b 的导数时要经过两条路,如图2-7所示:

  1. 从 z z z 到 x x x 到 b b b;
  2. 从 z z z 到 y y y 到 b b b。

对b的偏导求解过程如下在这里插入图片描述

从复合导数公式来看,这两者应该是相加的关系,所以有:

∂ z ∂ b = ∂ z ∂ x ⋅ ∂ x ∂ b + ∂ z ∂ y ⋅ ∂ y ∂ b = y ⋅ 3 + x ⋅ 2 = 63 (7) \frac{\partial{z}}{\partial{b}}=\frac{\partial{z}}{\partial{x}} \cdot \frac{\partial{x}}{\partial{b}}+\frac{\partial{z}}{\partial{y}}\cdot\frac{\partial{y}}{\partial{b}}=y \cdot 3+x \cdot 2=63 \tag{7} ∂b∂z​=∂x∂z​⋅∂b∂x​+∂y∂z​⋅∂b∂y​=y⋅3+x⋅2=63(7)

其中:

∂ z ∂ x = ∂ ∂ x ( x ⋅ y ) = y = 9 \frac{\partial{z}}{\partial{x}}=\frac{\partial{}}{\partial{x}}(x \cdot y)=y=9 ∂x∂z​=∂x∂​(x⋅y)=y=9
∂ z ∂ y = ∂ ∂ y ( x ⋅ y ) = x = 18 \frac{\partial{z}}{\partial{y}}=\frac{\partial{}}{\partial{y}}(x \cdot y)=x=18 ∂y∂z​=∂y∂​(x⋅y)=x=18
∂ x ∂ b = ∂ ∂ b ( 2 w + 3 b ) = 3 \frac{\partial{x}}{\partial{b}}=\frac{\partial{}}{\partial{b}}(2w+3b)=3 ∂b∂x​=∂b∂​(2w+3b)=3
∂ y ∂ b = ∂ ∂ b ( 2 b + 1 ) = 2 \frac{\partial{y}}{\partial{b}}=\frac{\partial{}}{\partial{b}}(2b+1)=2 ∂b∂y​=∂b∂​(2b+1)=2

我们不妨再验证一下链式求导的正确性。把公式5再拿过来:

z = x ⋅ y = ( 2 w + 3 b ) ( 2 b + 1 ) = 4 w b + 2 w + 6 b 2 + 3 b (5) z=x \cdot y=(2w+3b)(2b+1)=4wb+2w+6b^2+3b \tag{5} z=x⋅y=(2w+3b)(2b+1)=4wb+2w+6b2+3b(5)

对上式求b的偏导:

∂ z ∂ b = 4 w + 12 b + 3 = 12 + 48 + 3 = 63 (8) \frac{\partial z}{\partial b}=4w+12b+3=12+48+3=63 \tag{8} ∂b∂z​=4w+12b+3=12+48+3=63(8)

结果和公式7的链式法则一样。

求 b b b 的具体变化值

公式7和公式8的含义是:当 b b b 变化一点点时, z z z 会发生 b b b 的变化值 63 63 63 倍的变化。记住我们的目标是让 z = 150 z=150 z=150,目前在初始状态时是 162 162 162,所以,问题转化为:当我们需要 z z z 从 162 162 162 变到 150 150 150 时, b b b 需要变化多少?

既然:

Δ z = 63 ⋅ Δ b \Delta z = 63 \cdot \Delta b Δz=63⋅Δb

则:

Δ b = Δ z 63 = 162 − 150 63 = 0.1905 \Delta b = \frac{\Delta z}{63}=\frac{162-150}{63}=0.1905 Δb=63Δz​=63162−150​=0.1905

所以:
b = b − 0.1905 = 3.8095 b=b-0.1905=3.8095 b=b−0.1905=3.8095
x = 2 w + 3 b = 17.4285 x=2w+3b=17.4285 x=2w+3b=17.4285
y = 2 b + 1 = 8.619 y=2b+1=8.619 y=2b+1=8.619
z = x ⋅ y = 17.4285 × 8.619 = 150.2162 z=x \cdot y=17.4285 \times 8.619=150.2162 z=x⋅y=17.4285×8.619=150.2162

这个结果也是与 150 150 150 很接近了,但是精度还不够。再迭代几次,直到误差不大于 1e-4 时,我们就可以结束迭代了,对于计算机来说,这些运算的执行速度很快。

4、 梯度下降

4.1 从自然现象中理解梯度下降

在大多数文章中,都以“一个人被困在山上,需要迅速下到谷底”来举例,这个人会“寻找当前所处位置最陡峭的地方向下走”。这个例子中忽略了安全因素,这个人不可能沿着最陡峭的方向走,要考虑坡度。

在自然界中,梯度下降的最好例子,就是泉水下山的过程:

  1. 水受重力影响,会在当前位置,沿着最陡峭的方向流动,有时会形成瀑布(梯度下降);
  2. 水流下山的路径不是唯一的,在同一个地点,有可能有多个位置具有同样的陡峭程度,而造成了分流(可以得到多个解);
  3. 遇到坑洼地区,有可能形成湖泊,而终止下山过程(不能得到全局最优解,而是局部最优解)。

4.2 梯度下降的数学理解

梯度下降的数学公式:

θ n + 1 = θ n − η ⋅ ∇ J ( θ ) (1) \theta_{n+1} = \theta_{n} - \eta \cdot \nabla J(\theta) \tag{1} θn+1​=θn​−η⋅∇J(θ)(1)

其中:

  • θ n + 1 \theta_{n+1} θn+1​:下一个值;
  • θ n \theta_n θn​:当前值;
  • − - −:减号,梯度的反向;
  • η \eta η:学习率或步长,控制每一步走的距离,不要太快以免错过了最佳景点,不要太慢以免时间太长;
  • ∇ \nabla ∇:梯度,函数当前位置的最快上升点;
  • J ( θ ) J(\theta) J(θ):函数。

梯度下降的三要素

  1. 当前点;
  2. 方向;
  3. 步长。

为什么说是“梯度下降”?

“梯度下降”包含了两层含义:

  1. 梯度:函数当前位置的最快上升点;
  2. 下降:与导数相反的方向,用数学语言描述就是那个减号。

5、损失函数

5.1 概念

在各种材料中经常看到的中英文词汇有:误差,偏差,Error,Cost,Loss,损失,代价…意思都差不多,在本书中,使用“损失函数”和“Loss Function”这两个词汇,具体的损失函数符号用 J J J 来表示,误差值用 l o s s loss loss 表示。

“损失”就是所有样本的“误差”的总和,亦即( m m m 为样本数):

损 失 = ∑ i = 1 m 误 差 i 损失 = \sum^m_{i=1}误差_i 损失=i=1∑m​误差i​

J = ∑ i = 1 m l o s s i J = \sum_{i=1}^m loss_i J=i=1∑m​lossi​

5.2损失函数的作用

损失函数的作用,就是计算神经网络每次迭代的前向计算结果与真实值的差距,从而指导下一步的训练向正确的方向进行。

如何使用损失函数呢?具体步骤:

  1. 用随机值初始化前向计算公式的参数;
  2. 代入样本,计算输出的预测值;
  3. 用损失函数计算预测值和标签值(真实值)的误差;
  4. 根据损失函数的导数,沿梯度最小方向将误差回传,修正前向计算公式中的各个权重值;
  5. 进入第2步重复, 直到损失函数值达到一个满意的值就停止迭代。

5.3 机器学习常用损失函数

符号规则: a a a 是预测值, y y y 是样本标签值, l o s s loss loss 是损失函数值。

  • Gold Standard Loss,又称0-1误差
    l o s s = { 0 a = y 1 a ≠ y loss=\begin{cases} 0 & a=y \\\\ 1 & a \ne y \end{cases} loss=⎩⎪⎨⎪⎧​01​a=ya​=y​

  • 绝对值损失函数

l o s s = ∣ y − a ∣ loss = |y-a| loss=∣y−a∣

  • Hinge Loss,铰链/折页损失函数或最大边界损失函数,主要用于SVM(支持向量机)中

l o s s = max ⁡ ( 0 , 1 − y ⋅ a ) y = ± 1 loss=\max(0,1-y \cdot a) \qquad y=\pm 1 loss=max(0,1−y⋅a)y=±1

  • Log Loss,对数损失函数,又叫交叉熵损失函数(cross entropy error)

l o s s = − [ y ⋅ ln ⁡ ( a ) + ( 1 − y ) ⋅ ln ⁡ ( 1 − a ) ] y ∈ 0 , 1 loss = -[y \cdot \ln (a) + (1-y) \cdot \ln (1-a)] \qquad y \in \\{ 0,1 \\} loss=−[y⋅ln(a)+(1−y)⋅ln(1−a)]y∈0,1

  • Squared Loss,均方差损失函数
    l o s s = ( a − y ) 2 loss=(a-y)^2 loss=(a−y)2

  • Exponential Loss,指数损失函数
    l o s s = e − ( y ⋅ a ) loss = e^{-(y \cdot a)} loss=e−(y⋅a)

5.4 神经网络中常用的损失函数

(1)均方差函数,主要用于回归
均方差函数
该函数就是最直观的一个损失函数了,计算预测值和真实值之间的欧式距离。预测值和真实值越接近,两者的均方差就越小。

均方差函数常用于线性回归(linear regression),即函数拟合(function fitting)。公式如下:

l o s s = 1 2 ( z − y ) 2 (单样本) loss = {1 \over 2}(z-y)^2 \tag{单样本} loss=21​(z−y)2(单样本)

J = 1 2 m ∑ i = 1 m ( z i − y i ) 2 (多样本) J=\frac{1}{2m} \sum_{i=1}^m (z_i-y_i)^2 \tag{多样本} J=2m1​i=1∑m​(zi​−yi​)2(多样本)

(2)交叉熵函数,主要用于分类
交叉熵(Cross Entropy)是Shannon信息论中一个重要概念,主要用于度量两个概率分布间的差异性信息。在信息论中,交叉熵是表示两个概率分布 p , q p,q p,q 的差异,其中 p p p 表示真实分布, q q q 表示预测分布,那么 H ( p , q ) H(p,q) H(p,q) 就称为交叉熵:

H ( p , q ) = ∑ i p i ⋅ ln ⁡ 1 q i = − ∑ i p i ln ⁡ q i (1) H(p,q)=\sum_i p_i \cdot \ln {1 \over q_i} = - \sum_i p_i \ln q_i \tag{1} H(p,q)=i∑​pi​⋅lnqi​1​=−i∑​pi​lnqi​(1)

交叉熵可在神经网络中作为损失函数, p p p 表示真实标记的分布, q q q 则为训练后的模型的预测标记分布,交叉熵损失函数可以衡量 p p p 与 q q q 的相似性。

心得体会:通过别的资料稍加整理写的,如果文章有幸被你看到,希望对你有所帮助。“纸上得来终觉浅,绝知此事要躬行”。许多公式建议读者手写推导,已便加深理解。

标签:总结,150,frac,函数,cdot,基础知识,神经网络,3b,partial
来源: https://blog.csdn.net/qq_50817166/article/details/117855299

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有