机器学习(选修)(持续更新)

Gradient Descent

1、一般我们会得到一组参数 ,它是由很多组weight和bias组成的。

2、首先,我们在处理数据的时候,会选择一个初始化参数

3、其次,我们计算每个与w的偏微分,把他们组成矩阵的形式,如下图:

这个就是我们所求的梯度(gradient)。

4、然后,我们将选定的初始参数减去我们的梯度乘于学习率,就得到了我们新的参数,如下图:

5、我们一直按照2、3、4的方式持续计算,不断更新我们的参数 。

以上就是我们的梯度下降算法(Gradient Descent),下一步我们将其扩展到神经网络(neural network),寻求一个计算梯度更加有效的算法------反向传播(Backprogation)。

反向传播(Backprogation)

1、反向传播的核心就是链式法则(chain rule),如果有听过宋浩老师的高数课的话,就是他的洋葱法则。

2、首先,我们定义一个损失函数(就是将每个Loss值做累加),如下图:

3、其次,我们做损失函数关于参数w的偏微分(参数b也同理),就相当于每次Loss值对w的偏微分的累加和,为了更简单的进行计算,我们拿出一组,如下图:

这就相当于在整个神经网络(neural network)里面,拿出一个神经元(neural)出来,如下图:

4、因为w会影响z,z会影响c,所以我们就可以将z做为一个中间变量,将c对w的偏微分分为z对w的偏微分乘于c对z的偏微分,如下图:

z对w的偏微分称之为forwardpass,c对z的偏微分称之为backwardpass。

5、我们先求forwardpass,如下图:

实际上forwardpass就是我们的输入值,下一步我们应该求backwardpass了。

Backward pass

1、因为z对a(激活函数)有影响,a对c有影响,所以我们可以吧c对z的偏微分写为a对z的偏微分乘于c对a的偏微分,从上面给绿色方框里面的内容,我们可以很直观的得出a对z的偏微分等于激活函数的导数。

2、下面就是要求c对a的偏微分了,根据上面forwardpass中的知识我们可以很清楚的求出z'对a的偏微分等于w3,z''对a的偏微分等于w4。

3、但是c对z'的偏微分和c对z''的偏微分怎么求呢?首先,我们假设已知以上两个值,我们把他们带进去,我们就可以得到c对z的偏微分了,如下图:

然后我们将这个式子看作一个新的神经元(但是并不在我们的神经网络里面),如下图:

4、 现在我们的问题就是怎么算c对z'的偏微分和c对z''的偏微分,假设现在蓝色方框里面的就是我们最后一个hidden layer ,也就是y1和y2就是我们的输出。

然后我们就可以将c对z'的微分写成y1对z'的微分乘于c对y'的微分了,同理c对z''的微分同理,如下图:

只要知道组后的激活函数是多少我们就可以很轻松的求出y1对z'的微分,只要知道我们采用的那种Loss(cross entropx或mean square error)我们就可以求出c对y1的微分。

以上现在已经不成问题了,问题是我们如果想知道的不是最后一层呢?

5、其实很简单我们就从最后的输出层开始计算,根据后一项计算前一项,一层一层递进,如下图:

总结:反向传播(backprogation)------back pass,就是一个建立一个反向的神经网络的过程。

相关推荐
皮皮学姐分享-ppx2 小时前
政府绿色采购数据库(2015-2024.3)
大数据·网络·数据库·人工智能·制造
GIS数据转换器2 小时前
基于3D GIS的监控视频精准标定平台
人工智能·物联网·3d·音视频·无人机·知识图谱
专注VB编程开发20年3 小时前
AI 生成C# WinForm 窗体 = 目前就是垃圾
开发语言·人工智能·c#
深小乐3 小时前
Claude Fable5 尝鲜,效果挺不错
人工智能
Nayxxu3 小时前
Gemini + RAG 企业知识库教程:从文档切片到答案生成
运维·人工智能
冬奇Lab3 小时前
真正的 AI-Native Workflow 是什么?——四个判断测试
人工智能·agent
冬奇Lab3 小时前
每日一个开源项目(第128篇):Agent Skills - 给 AI 编程 Agent 装上工程纪律
人工智能·开源·资讯
Deepoch4 小时前
Deepoc VLA开发板:采摘机器人的环境鲁棒作业与不确定性应对
人工智能·机器人·采摘机器人·deepoc
云栖梦泽在4 小时前
AI安全专项:AI人脸识别的安全风险与防护
人工智能·安全