一、梯度下降

1、何为和为何?

梯度下降是求解机器学习算法的的模型参数时最常用的方法之一:

梯度下降用于求解损失函数的最小值,那么如果我们想求解损失函数的最大值,那么就需要用到梯度上升函数。(这个以后详谈,先挖坑)

在机器学习中,梯度下降法发展成了两种梯度下降的方法——分别为随机梯度下降法,与批量梯度下降法。
目前我们需要解决的问题是 随机梯度下降法。

2、如何理解梯度下降?

我们可以先从一个简单的例子中开始讲解:
image.png
图1 第二周:梯度下降与反向传播 - 图3第二周:梯度下降与反向传播 - 图4的关系

(随机梯度下降算法)首先随机选择一个点第二周:梯度下降与反向传播 - 图5,求导计算该点的梯度(即导数。)
第二周:梯度下降与反向传播 - 图6

我们发现我们随机找的点,大概率下并不是在局部最优(local minimum)或者全局最优解(gobal minimum),因此我们需要接着找,假设我们跟着图来,如何找到更小的解呢?显然往右(w值增加)
那么我们有:
第二周:梯度下降与反向传播 - 图7
我们先思考一下第二周:梯度下降与反向传播 - 图8现在的导数(斜率)为负数,即左边高,右边低,如果我们要找最小值,那么第二周:梯度下降与反向传播 - 图9值就要增加,而我们已知:第二周:梯度下降与反向传播 - 图10已经小于0,那第二周:梯度下降与反向传播 - 图11实际上就是在向右移动。
相应的,如果第二周:梯度下降与反向传播 - 图12的导数为正数,即右边高,左边低,那么我们一样可以:第二周:梯度下降与反向传播 - 图13已经大于0,那第二周:梯度下降与反向传播 - 图14实际上就是在向左移动。
而这个第二周:梯度下降与反向传播 - 图15我们称之为学习率!
李宏毅老师的说法是:
学习率越大,那么他在跨出下一步的时候就会越大,那么我们可以得到以下的结论:
第二周:梯度下降与反向传播 - 图16
图2 学习率过小

第二周:梯度下降与反向传播 - 图17
图3 学习率适中

第二周:梯度下降与反向传播 - 图18
图4 学习率等于1(图中是特殊情况,正好对称)

第二周:梯度下降与反向传播 - 图19
图5 存在概率越过最优解

因此学习率的选择至关重要(现在的我还不知道如何通过代码让其自动选择学习率)

在计算的时候我们首先明确一点我们现在做的是梯度下降(即找到当前函数的最小值)

自动调节学习率的方法(自行适应梯度算法)

我们有一个可以让学习率自动下降的方法,就是让学习率等于一个函数,例如:(t是每次的执行的次数)
第二周:梯度下降与反向传播 - 图20
第二周:梯度下降与反向传播 - 图21
第二周:梯度下降与反向传播 - 图22
首先第二周:梯度下降与反向传播 - 图23就是均方根,根据百度百科的解释:
将所有值平方求和,求其均值,再开平方,就得到均方根值、
第二周:梯度下降与反向传播 - 图24就是第二周:梯度下降与反向传播 - 图25第二周:梯度下降与反向传播 - 图26中的梯度。
然后我们可以得到:
第二周:梯度下降与反向传播 - 图27第二周:梯度下降与反向传播 - 图28可以约掉一个第二周:梯度下降与反向传播 - 图29,那么我们可以得到:
第二周:梯度下降与反向传播 - 图30
分母就是为了造成反差,让异常值显示出来:
image.png

最优的步伐:

我们知道在一元二次方程中:假设一开始我们选择的点是第二周:梯度下降与反向传播 - 图32,那么最低点的第二周:梯度下降与反向传播 - 图33坐标就是

3、错误的来源

在制定我们的目标函数的时候,我们会遇到一些问题
比如:
我们在设置我们的模型的时候发现,我们的模型甚至连训练数据都不是大部分正确的值,说明我们这里是欠拟合(underfitting)即bias过大
我们在数据上的错误率很低,但是在测试的数据中错误率很大,说明我们是过拟合(overfitting)了。即variance大。
variance大的话,可以采用两种方法进行调整
1、增加更多的数据,训练你的模型
image.png
image.png
上图是数据为10与数据为100时候的模型(100个套不同的100数据,得到的100个曲线图),我们发现增加数据,它图像更加集中了。但是数据常常不好得到,我们可以自己创造data,可以结合自己对问题的理解来增加模型的data量。
2、使用正则化
正则化有许多方法,但是现在我了解甚少。
如果bias过大,那么我们需要重新设计我们的模型
1、增加更多的特征值进入我们的模型,因为就连我们的训练数据都无法得到很好的错误率,那么我们又拿什么去预测未来的值?
2、使你的模型更加复杂。可能要考虑多次方(一次方、两次方、三次方)。

第三周

对第二周进行补充:

1、 确定步长的时候,我们无法对步长进行可视化,
image.png
但是可以通过查看Loss函数的变化来确定,我们的步长是否找对了。
1、步长过大的话,loss就会上升
2、步长过小的话,可以达成效果,但是速度太慢。
3、刚刚好的话,就是最理想的效果
4、略大的话,可能反复横跳。

最优的步伐:

我们知道在一元二次方程中:
第二周:梯度下降与反向传播 - 图37
假设一开始我们选择的点是第二周:梯度下降与反向传播 - 图38,那么离最低点的第二周:梯度下降与反向传播 - 图39坐标的最佳步长就是
第二周:梯度下降与反向传播 - 图40
我们从中可以看出:实际上,上式就是:
第二周:梯度下降与反向传播 - 图41
那么与:
第二周:梯度下降与反向传播 - 图42
有什么关系吗?
显然对于:
第二周:梯度下降与反向传播 - 图43
这个并非直接充当第二次求导,而是可以反映出二次求导的变化。

梯度下降的限制:image.png

二、反向传播

并不是一个与梯度下降不同的方法,他只是一个更有效率的演算法。
首先:
第二周:梯度下降与反向传播 - 图45
然后对
第二周:梯度下降与反向传播 - 图46
进行对w求偏导:
第二周:梯度下降与反向传播 - 图47
我们取其中一个节点出来讲:
第二周:梯度下降与反向传播 - 图48
image.png
其中:第二周:梯度下降与反向传播 - 图50我们称之为前向传播,第二周:梯度下降与反向传播 - 图51我们称之为反向传播
然后我们进行计算,现在我们
image.pngimage.png
易得:
image.png

三、分类

分类问题利用回归来做的效果并不好,异常点就会影响整个回归函数。
我们要定义一个函数:
第二周:梯度下降与反向传播 - 图55
而LOSS函数为:
第二周:梯度下降与反向传播 - 图56
如果等于,L(f)=1,不等于,就为0,即让该loss函数最小时,这个模型效果就会更好。
显然我们不能进行梯度下降进行计算,因为loss函数不可微分