神经网络的反向传播公式推导

代价函数

假设在做二分类任务,那么代价函数和logistic回归代价函数一样: J = 1 m ∑ i = 1 m L ( y , y ^ ) J = \frac {1}{m}\sum_{i = 1}^{m}L(y,\widehat{y}) J=m1i=1mL(y,y )

前向传播的步骤

z [ l ] = W [ l ] ∗ a [ l − 1 ] + b [ l ] z^{[l]} = W^{[l]} * a^{[l - 1]} + b^{[l]} z[l]=W[l]a[l1]+b[l]
a [ l ] = g ( z [ l ] ) a^{[l]} = g(z^{[l]}) a[l]=g(z[l])

向量化的实现如下:
z [ l ] = W [ l ] ∗ A [ l − 1 ] + b [ l ] z^{[l]} = W^{[l]} * A^{[l - 1]} + b^{[l]} z[l]=W[l]A[l1]+b[l]
A [ l ] = g ( z [ l ] ) A^{[l]} = g(z^{[l]}) A[l]=g(z[l])

反向传播的步骤

输入为 d a [ l ] da^{[l]} da[l],输出为 d a [ l − 1 ] da^{[l - 1]} da[l1] d W [ l ] dW^{[l]} dW[l] d b [ l ] db^{[l]} db[l]
(1) d z [ l ] = d a [ l ] ⋅ g [ l ] ‘ ( z [ l ] ) dz^{[l]} = da^{[l]} \cdot g^{[l]^{`}}(z^{[l]}) dz[l]=da[l]g[l](z[l])
(2) d W [ l ] = d z [ l ] ⋅ a [ l − 1 ] dW^{[l]} = dz^{[l]} \cdot a^{[l -1]} dW[l]=dz[l]a[l1]
(3) d b [ l ] = d z [ l ] db^{[l]} = dz^{[l]} db[l]=dz[l]
(4) d a [ l − 1 ] = W [ l ] T ⋅ d z [ l ] da^{[l - 1]} = W^{[l]^{T}} \cdot dz^{[l]} da[l1]=W[l]Tdz[l]
(5) d z [ l ] = W [ l + 1 ] T ⋅ d z [ l + 1 ] ⋅ g [ l ] ‘ ( z [ l ] ) dz^{[l]} = W^{[l + 1]^{T}} \cdot dz^{[l + 1]} \cdot g^{[l]^`}(z^{[l]}) dz[l]=W[l+1]Tdz[l+1]g[l](z[l])
式子(5)由前四个式子带入得到,这 五个式子可以实现反向传播。
向量化实现过程可以写成:
(6) d Z [ l ] = d A [ l ] ⋅ g [ l ] ‘ ( z [ l ] ) dZ^{[l]} = dA^{[l]} \cdot g^{[l]^{`}}(z^{[l]}) dZ[l]=dA[l]g[l](z[l])
(7) d W [ l ] = 1 m d Z [ l ] ⋅ A [ l − 1 ] dW^{[l]} = \frac{1}{m}dZ^{[l]} \cdot A^{[l -1]} dW[l]=m1dZ[l]A[l1]
(8) d b [ l ] = 1 m n p . s u m ( d z [ l ] , a x i s = 1 , k e e p d i m s = T r u e ) db^{[l]} = \frac{1}{m}np.sum(dz^{[l]},axis = 1, keepdims = True) db[l]=m1np.sum(dz[l],axis=1,keepdims=True)
(9) d A [ l − 1 ] = W [ l ] T ⋅ d Z [ l ] dA^{[l - 1]} = W^{[l]^{T}} \cdot dZ^{[l]} dA[l1]=W[l]TdZ[l]

神经网络反向传播算法推导可以通过以下步骤进行: 1. 定义符号和常量:根据引用\[1\]中的定义,我们可以定义网络层下标、神经元数量和输入层、隐藏层、输出层的符号。 2. 计算输出层梯度:根据引用\[3\]中的公式,输出层的梯度可以表示为 δ_k = ∂E/∂y_k * ∂y_k/∂u_k。其中,∂E/∂y_k表示损失函数对输出层输出的偏导数,∂y_k/∂u_k表示激活函数对输出层输入的偏导数。 3. 计算隐藏层梯度:根据引用\[2\]中的公式,隐藏层的梯度可以通过链式法则计算得到。具体来说,隐藏层的梯度可以表示为 δ_j = ∑(δ_k * ∂u_k/∂y_j)。其中,∑表示对输出层神经元的求和,δ_k表示输出层的梯度,∂u_k/∂y_j表示输出层输入对隐藏层输出的偏导数。 4. 更新权重和偏置:根据梯度下降法则,可以使用梯度来更新权重和偏置。具体来说,权重的更新可以表示为 Δw_ij = η * δ_j * x_i,其中,η表示学习率,δ_j表示隐藏层的梯度,x_i表示输入层的输出。偏置的更新可以表示为 Δb_j = η * δ_j。 通过以上步骤,我们可以推导神经网络反向传播算法。请注意,这只是一个简单的推导过程,具体的推导可能会根据网络结构和激活函数的选择而有所不同。 #### 引用[.reference_title] - *1* *3* [神经网络——反向传播算法公式推导](https://blog.csdn.net/qq_42733778/article/details/129501294)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [神经网络反向传播算法推导](https://blog.csdn.net/hnshhshjq/article/details/85243550)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值