神经网络 反向传播

神经网络 反向传播算法

之前我们在计算神经网络预测结果的时候我们采用了一种正向传播方法,我们从第一层开始正向一层一层进行计算,直到最后一层的 h θ ( x ) h_{\theta}\left(x\right) hθ(x)。

现在,为了计算代价函数的偏导数 ∂ ∂ Θ i j ( l ) J ( Θ ) \frac{\partial}{\partial\Theta^{(l)}_{ij}}J\left(\Theta\right) ∂Θij(l)∂J(Θ),我们需要采用一种反向传播算法,也就是首先计算最后一层的误差,然后再一层一层反向求出各层的误差,直到倒数第二层。

以一个例子来说明反向传播算法。

假设我们的训练集只有一个样本 ( x ( 1 ) , y ( 1 ) ) \left({x}^{(1)},{y}^{(1)}\right) (x(1),y(1)),我们的神经网络是一个四层的神经网络,其中 K = 4 , S L = 4 , L = 4 K=4,S_{L}=4,L=4 K=4,SL=4,L=4:

前向传播算法:

我们从最后一层的误差开始计算,误差是激活单元的预测( a ( 4 ) {a^{(4)}} a(4))与实际值( y k y^k yk)之间的误差,( k = 1 : k k=1:k k=1:k)。

我们用 δ \delta δ来表示误差,则: δ ( 4 ) = a ( 4 ) − y \delta^{(4)}=a^{(4)}-y δ(4)=a(4)−y

我们利用这个误差值来计算前一层的误差: δ ( 3 ) = ( Θ ( 3 ) ) T δ ( 4 ) ∗ g ′ ( z ( 3 ) ) \delta^{(3)}=\left({\Theta^{(3)}}\right)^{T}\delta^{(4)}\ast g'\left(z^{(3)}\right) δ(3)=(Θ(3))Tδ(4)∗g′(z(3))

其中 g ′ ( z ( 3 ) ) g'(z^{(3)}) g′(z(3))是 S S S 形函数的导数, g ′ ( z ( 3 ) ) = a ( 3 ) ∗ ( 1 − a ( 3 ) ) g'(z^{(3)})=a^{(3)}\ast(1-a^{(3)}) g′(z(3))=a(3)∗(1−a(3))。而 ( θ ( 3 ) ) T δ ( 4 ) (θ^{(3)})^{T}\delta^{(4)} (θ(3))Tδ(4)则是权重导致的误差的和。下一步是继续计算第二层的误差:

\\delta^{(2)}=(\\Theta^{(2)})^{T}\\delta^{(3)}\\ast g'(z\^{(2)})

因为第一层是输入变量,不存在误差。我们有了所有的误差的表达式后,便可以计算代价函数的偏导数了,假设 λ = 0 λ=0 λ=0,即我们不做任何正则化处理时有:
∂ ∂ Θ i j ( l ) J ( Θ ) = a j ( l ) δ i l + 1 \frac{\partial}{\partial\Theta_{ij}^{(l)}}J(\Theta)=a_{j}^{(l)} \delta_{i}^{l+1} ∂Θij(l)∂J(Θ)=aj(l)δil+1

重要的是清楚地知道上面式子中上下标的含义:

l l l 代表目前所计算的是第几层。

j j j 代表目前计算层中的激活单元的下标,也将是下一层的第 j j j个输入变量的下标。

i i i 代表下一层中误差单元的下标,是受到权重矩阵中第 i i i行影响的下一层中的误差单元的下标。

如果我们考虑正则化处理,并且我们的训练集是一个特征矩阵而非向量。在上面的特殊情况中,我们需要计算每一层的误差单元来计算代价函数的偏导数。在更为一般的情况中,我们同样需要计算每一层的误差单元,但是我们需要为整个训练集计算误差单元,此时的误差单元也是一个矩阵,我们用 Δ i j ( l ) \Delta^{(l)}_{ij} Δij(l)来表示这个误差矩阵。第 l l l 层的第 i i i 个激活单元受到第 j j j 个参数影响而导致的误差。

我们的算法表示为:

即首先用正向传播方法计算出每一层的激活单元,利用训练集的结果与神经网络预测的结果求出最后一层的误差,然后利用该误差运用反向传播法计算出直至第二层的所有误差。

相关推荐
xiaoxiaoxiaolll32 分钟前
期刊速递 | 《Light Sci. Appl.》超宽带光热电机理研究,推动碳纳米管传感器在制药质控中的实际应用
人工智能·学习
练习两年半的工程师38 分钟前
AWS TechFest 2025: 风险模型的转变、流程设计的转型、生成式 AI 从实验走向实施的三大关键要素、评估生成式 AI 用例的适配度
人工智能·科技·金融·aws
Elastic 中国社区官方博客3 小时前
Elasticsearch:智能搜索的 MCP
大数据·人工智能·elasticsearch·搜索引擎·全文检索
stbomei3 小时前
从“能说话”到“会做事”:AI Agent如何重构日常工作流?
人工智能
yzx9910134 小时前
生活在数字世界:一份人人都能看懂的网络安全生存指南
运维·开发语言·网络·人工智能·自动化
许泽宇的技术分享5 小时前
LangGraph深度解析:构建下一代智能Agent的架构革命——从Pregel到现代AI工作流的技术飞跃
人工智能·架构
乔巴先生245 小时前
LLMCompiler:基于LangGraph的并行化Agent架构高效实现
人工智能·python·langchain·人机交互
静西子6 小时前
LLM大语言模型部署到本地(个人总结)
人工智能·语言模型·自然语言处理
cxr8286 小时前
基于Claude Code的 规范驱动开发(SDD)指南
人工智能·hive·驱动开发·敏捷流程·智能体
Billy_Zuo6 小时前
人工智能机器学习——决策树、异常检测、主成分分析(PCA)
人工智能·决策树·机器学习