分享
[算法学习] 从0开始掌握反向传播算法
输入“/”快速插入内容
[算法学习] 从0开始掌握反向传播算法
用户8537
用户8537
用户5027
用户5027
用户9509
用户9509
用户2330
用户2330
用户9571
用户9571
+6
2024年2月26日创建
11933
12740
7
3
🌲
作者:吵爷
基础入门
反向传播算法是深度学习和神经网络领域的重要一步。反向传播算法是一种在神经网络中用于优化权重的方法。它使用链式法则来计算损失函数关于每个权重的梯度。这些梯度然后用于更新权重,以减少神经网络的计算损失,提升模型的准确性。
这部分属于个人兴趣,主要研究机器学习的底层逻辑,不需要强行去理解,有兴趣的同学可以看看。下面的文章会用一个简单易懂的例子解释反向传播算法的工作原理。有兴趣一起研究底层算法的同学也可以私聊,我也不是科班出身,下面涉及的高数知识大部分也是GPT学的。
涉及基础数学知识
导数(Derivative):
导数描述了一个函数在某一点处的瞬时变化率。比如函数y = 3x^2 - 2x +1, 当x = 1时,导数为4,意味着 x每变动一个极小值(比如0.0001),y会相应变动4倍。
偏导数(Partial Derivative):
当函数有多个变量时,偏导数表示函数关于其中一个变量的变化率,同时保持其他变量不变。在神经网络中,通常处理的是多变量的函数。
链式法则(Chain Rule):
这是微积分中一个非常重要的原理,用于计算复合函数的导数。反向传播算法就是基于链式法则来工作的。
梯度(Gradient):
梯度是一个向量,表示多变量函数的偏导数。在神经网络中,我们通过计算损失函数的梯度来更新参数。
计算原理
前向传播(Forward Propagation):
输入数据通过网络传播,每一层计算其输出。
计算损失(Loss Calculation):
在输出层,计算预测值与实际值之间的损失。
反向传播(Backpropagation):
计算损失函数关于每个权重的梯度。这通常涉及到链式法则,从输出层逐层向后传播。
权重更新(Weight Update):
使用梯度下降或其他优化算法来更新网络中的权重。
*这里补充一个概念:
学习率(Learning Rate):
在更新权重时使用的一个参数,决定了更新的幅度。
具体实例
假设我们有一个非常简单的神经网络,包含:
•
一个输入层(1个神经元)
•
一个隐藏层(2个神经元)可以理解为潜在的结果影响因素
•
一个输出层(1个神经元)可以理解为显性的结果影响因素
tips:关于神经网络的可视化理解,可以参考网站:
https://playground.tensorflow.org/
步骤1:前向传播
假设