我觉得GPT老师的语言功底比大多数的博客主要好(包括我自己),阅读起来更易理解,而且哪里不明白还可以直接问gpt老师,孜孜不倦,尽心尽责,全天待命,究极贴心。有这么厉害的一个老师,不学习简直暴殄天物。
于是乎我准备立一个flag,挑战跟着GPT老师学习365天,每天我都会整理自己的学习心得和脉络(文字大部分都是GPT直接生成的,我觉得比我自己写肯定好多了)感谢gpt老师!跪谢
全系列文章:跟着GPT学习-AI系列
当一层只有一个神经元时:
让我们从一个非常简单的网络开始,其中每一层只有一个神经元。该网络由 3 个权重(每个连接一个)和 3 个偏差(除第一个外,每个神经元一个)决定,我们的目标是了解改变每个权重将如何影响成本函数。这样我们就知道哪些调整将导致成本最有效地降低。
现在,我们只关注最后两个神经元之间的连接。我将用上标标记最后一个神经元的激活大号大号,表示它位于哪一层,因此前一个神经元的激活是𝐴(L−1):
假设对于某个训练示例,期望输出是是y。这意味着这个训练示例的成本是
最后一层的激活值等于:
如果将上面的加权值计算命名为z的话,可以写成:
可以这样来理解这个过程:权重、前一层的激活值和偏差共同作用,计算出 z(L),然后计算出 a(L),最后再结合常数 y,计算出成本函数(cost)。
然后把展开就可以获得:
我们可以想象每个数字对应一个数轴,我们的第一个目标是理解代价函数C对权重的微小变化有多敏感,也就是求C对
的导数:
: 当看见这个符号时,其视为对 w(L)的一个微小推动,比如变化 0.01
: 当看见这个符号是,代表对W对成本(C)造成的影响。
最终可以写成下面这个传递性的等式:
推动 w(L)会导致 z(L)的变化。z(L) 的变化会导致 a(L)的变化,a(L) 的变化会直接影响成本 C0,这个也叫做链式法则。
(1)
根据公式(1)得到 (2)
(3)
因为 ,其中
是激活函数(如Sigmoid函数或ReLU函数),我们可以利用激活函数的导数。
Relu激活函数:
(4)
(5)
根据(5) (6)
z对于b的导数 (7)
根据(2) (4) (6)得到
(8)
同理 对于b求导根据 (2) (4) (7)可以得到:
(9)
对于所有的样本来说:求一个偏导的平均值
(10)
对于最终的C来说
公式表示对于整个神经网络的梯度,包括所有层的权重 w 和偏置 b。损失函数 C 对于每一层的权重和偏置的导数,表示为一个向量或矩阵