第二周学习周报
摘要
这周主要对Deep Learning进行了进一步的学习,内容包括反向传播算法的过程原理。还学习了regression,根据宝可梦的案例学习到了Loss中使用正则化的技巧。此还继续学习了Pytorch课程,包括学习Dataset和Dataloader各自的功能,以及Dataset的代码实战。
Abstract
This week, I mainly conducted further learning on Deep Learning, including the process principle of backpropagation algorithm. I also learned about regression and learned the technique of using regularization in Loss based on the case of Pok é mon. I also continued to study Python courses, including learning the functions of Dataset and Dataloader, as well as practical coding for Dataset.
一、深度学习
1.Backpropagation(反向传播)
回顾一下梯度下降的过程:

在学习梯度下降的算法中,我们计算的过程中的θ这个vector(向量)是非常长的,即可能会有上百万个参数,为了有效率地计算面对这么多参数,我们就需要使用反向传播算法去完成θ的计算了。

1.1 链式法则
链式法则是在学习高等数学中求复合函数导数非常常用的一种方法。完成链式求导主要需要掌握两个步骤:
1、列出各个变量之间的关系
2、根据关系写出链式(同一条路径相乘、不同路径相加)
例子如下:

掌握了链式法则后,我们就要用来解决实际的问题了。
假设我们神经网络结构如下图所示,
其中Cn是yn与ŷn的交叉熵(可以理解为它们之间的距离,距离越近则误差越小)
我们要求Cn对w(权重未知量)的偏导。

1.2 Forward pass(前向传播)
因为我们的C是经过整个神经网络得出结果后得出预测值y与真实值ŷ计算出来的,所以是一个整体的性的值,要求偏导,就要一层一层的计算。
所以,我们把下图的下三角先提出来,先处理这个部分的计算从而以小见大,理解整个个过程的计算。

在这个上三角中,我们有::
feature :x1与x2
未知量:w1,w2,b
z:是他们计算结果。

那么我们如何用这些变量来表示C对w的偏导呢?
先拿w1举例:

在上述计算总结中,我们很明显可以发现一个规律,就是w(权重)对应的偏导,就是其对应输入的值。
比如,下图中,w = 1对应的偏导为 -1(输入值)、w = -1 对应的偏导值为0.12(输入值)…以此类推。

1.3 Backward pass(向后传播)
那么处理完z对w的偏导,还有一个令人头痛的C对z的偏导要计算,因为我们如果用z的变量表达C,就要一直推导,非常麻烦,因为z后面还有N多层。那么要如何解决呢?
假设我们再往下走一层,就有了以下参数:
a:z经过sigmoid运算后的结果。
w3、w4…:未知数
z’‘,z’':同z一个意思。

表示如下:

假设1:其下一层就是输出层。

计算方式如下:

假设其下一层不是输出层,就要找其下一层再推导,直到找到输出层为止。
所以,一开始从输出层往前推导快一点,因为都是已知结果

1.4 总结
计算z对w偏导用forward pass,计算C对z的偏导用Backward pass

2. Regression(神奇宝贝案例)
在学习regression中,我们了解到其实一个回归问题,用于解决预测问题。
比如输入对应的函数,就会输出一个结果。
如下图所示,可以用于股市趋势的预测、自动驾驶的场景、网络购物推介等

下面我们用预测宝可梦的战斗力的例子,来更加深入的了解Regression。
我们输入函数的参数如下:
Xcp:是feature,表示宝可梦原先的战斗力。
Xs:是宝可梦的名字。
Xhp:是宝可梦的血量
Xw:宝可梦的重量
Xh:宝可梦的高度

2.1 第一步:设置Model(A set of function)
假设我们设置一组函数(可以有无数个),这些函数都是线性的(linear model),但是不一定是正确的,需要使用training date来验证哪个函数最合理,最后用来预测宝可梦进化后的战斗力。

2.2 第二步:评估函数的好坏(goodness of function)
我们根据进化后的真实值与初始值一一对应起来,并做成一幅直观的图。
这些数据称之为training date
横轴代表初始战斗力(x1…x10)。
纵轴代表精华后的真实战斗力(ŷ1…ŷ10)。

要评估模型的好坏,就要用到Loss function,这里我们采用平方差的方式来表示Loss的大小,其实Loss function就是用来输出这个模型到底有多差(所以L越小越好)

关于括号里面数字的由来:

在下面的图像中,图像的颜色代表L的大小,越红代表数值越大,越偏蓝色代表数值越小

2.3 第三步:找到最好的function(best function)
找到最佳的function,就要找到w与b使L

最低0.47元/天 解锁文章
761

被折叠的 条评论
为什么被折叠?



