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

Gradient Descent

1、一般我们会得到一组参数\theta ,它是由很多组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,就是一个建立一个反向的神经网络的过程。

相关推荐

  1. 算法系统学习持续更新

    2024-03-13 06:12:06       38 阅读
  2. TCL学习笔记(持续更新)

    2024-03-13 06:12:06       36 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-13 06:12:06       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-13 06:12:06       18 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-13 06:12:06       17 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-13 06:12:06       20 阅读

热门阅读

  1. 中间件面试题之ElasticSearch

    2024-03-13 06:12:06       21 阅读
  2. extern和static的使用与区别

    2024-03-13 06:12:06       21 阅读
  3. linux Shell 命令行-05-test 检查某个条件是否成立

    2024-03-13 06:12:06       23 阅读
  4. 【理解机器学习算法】之KNN(纯Python)

    2024-03-13 06:12:06       19 阅读
  5. 【无标题】

    2024-03-13 06:12:06       18 阅读
  6. ElasticSearch 集群安装

    2024-03-13 06:12:06       18 阅读
  7. Idea、VsCode、WebStorm常用插件

    2024-03-13 06:12:06       28 阅读
  8. vue的生命周期有那些

    2024-03-13 06:12:06       28 阅读
  9. Spring Boot面试系列-03

    2024-03-13 06:12:06       18 阅读
  10. 张量维度改变总结

    2024-03-13 06:12:06       21 阅读
  11. C#/.Net 多线程下载m3u8视频

    2024-03-13 06:12:06       18 阅读
  12. uniapp相关内容

    2024-03-13 06:12:06       16 阅读