跟着GPT学习——反向传播演算(单神经元输出层梯度推导)

我觉得GPT老师的语言功底比大多数的博客主要好(包括我自己),阅读起来更易理解,而且哪里不明白还可以直接问gpt老师,孜孜不倦,尽心尽责,全天待命,究极贴心。有这么厉害的一个老师,不学习简直暴殄天物。

于是乎我准备立一个flag,挑战跟着GPT老师学习365天,每天我都会整理自己的学习心得和脉络(文字大部分都是GPT直接生成的,我觉得比我自己写肯定好多了)感谢gpt老师!跪谢

全系列文章:跟着GPT学习-AI系列

当一层只有一个神经元时: 

 

让我们从一个非常简单的网络开始,其中每一层只有一个神经元。该网络由 3 个权重(每个连接一个)和 3 个偏差(除第一个外,每个神经元一个)决定,我们的目标是了解改变每个权重将如何影响成本函数。这样我们就知道哪些调整将导致成本最有效地降低。

现在,我们只关注最后两个神经元之间的连接。我将用上标标记最后一个神经元的激活大号大号,表示它位于哪一层,因此前一个神经元的激活是𝐴(L−1):

假设对于某个训练示例,期望输出是是y。这意味着这个训练示例的成本是

 (a^{(L)}-y)^2

 最后一层的激活值等于:

a^{(L)} = \sigma (w^{(L)}a^{(L-1)}+b^{(L)})

如果将上面的加权值计算命名为z的话,可以写成: 

z^{(L)} = w^{(L)}a^{(L-1)}+b^{(L)}

a^{(L)} = \sigma (z^{(L)})\displaystyle

可以这样来理解这个过程:权重、前一层的激活值和偏差共同作用,计算出 z(L),然后计算出 a(L),最后再结合常数 y,计算出成本函数(cost)。

然后把a^{(L-1)}展开就可以获得:

我们可以想象每个数字对应一个数轴,我们的第一个目标是理解代价函数C对权重W^{(L)}的微小变化有多敏感,也就是求C对W^{(L)}的导数: \frac{\partial C_{0}}{\partial W^{(L)}}

\partial W^{(L)}: 当看见这个符号时,其视为对 w(L)的一个微小推动,比如变化 0.01 

\partial C_{0} : 当看见这个符号是,代表对W对成本(C)造成的影响。

最终可以写成下面这个传递性的等式:

推动 w(L)会导致 z(L)的变化。z(L) 的变化会导致 a(L)的变化,a(L) 的变化会直接影响成本 C0,这个也叫做链式法则

                                                         C_{0} = (a^{(L)} - y )^2                                                       (1)

根据公式(1)得到                               \frac{\partial C_0}{\partial a^{(L)}} = 2(a^{(L)} - y)                                                   (2)

                                                             a^{(L)} = \sigma (z^{(L)})                                                            (3)

因为 a^{(L)} = \sigma(z^{(L)}),其中 \sigma是激活函数(如Sigmoid函数或ReLU函数),我们可以利用激活函数的导数。

                                        Relu激活函数:\sigma(z) = \text{ReLU}(z) = \max(0, z)

                                                                                                      

                                                \frac{\partial a^{(L)}}{\partial z^{(L)}} = \sigma'(z) = \begin{cases} 1 & \text{if } z > 0 \\ 0 & \text{if } z \leq 0 \end{cases}                                          (4) 

                                                            

                                                      z^{(L)} = w^{(L)}a^{(L-1)} + b^{(L)}                                                (5)

根据(5)                                             \frac{\partial Z^{(L)}}{\partial w^{(L)}} = a(L-1)                                                      (6)

z对于b的导数                                              \frac{\partial Z^{(L)}}{\partial b^{(L)}} = 1                                                              (7)

根据(2) (4) (6)得到     

                        \frac{\partial C_0}{\partial w^{(L)}} =\frac{\partial C_0}{\partial a^{(L)}} *\frac{\partial a^{(L)}}{\partial Z^{(L)}} * \frac{\partial Z^{(L)}}{\partial w^{(L)}} = \begin{cases} 2(a^{(L)} - y)a^{(L-1)} & \text{if } z > 0 \\ 0 & \text{if } z \leq 0 \end{cases}           (8)

同理 对于b求导根据 (2) (4) (7)可以得到:

                          \frac{\partial C_0}{\partial b^{(L)}} =\frac{\partial C_0}{\partial a^{(L)}} *\frac{\partial a^{(L)}}{\partial Z^{(L)}} * \frac{\partial Z^{(L)}}{\partial b^{(L)}} = \begin{cases} 2(a^{(L)} - y) & \text{if } z > 0 \\ 0 & \text{if } z \leq 0 \end{cases}                   (9)

对于所有的样本来说:求一个偏导的平均值

                                                            \frac{\partial \mathcal{C}}{\partial w^{(L)}} = \frac{1}{n} \sum_{k=0}^{n-1} \frac{\partial \mathcal{C}_k}{\partial w^{(L)}}                                              (10)

对于最终的C来说

公式表示对于整个神经网络的梯度,包括所有层的权重 w 和偏置 b。损失函数 C 对于每一层的权重和偏置的导数,表示为一个向量或矩阵

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值