水晶球APP 高手云集的股票社区
下载、打开
X

推荐关注更多

牛到成功工作室

20年证券投资经验,擅长把...


骑牛看熊

拥有10多年的证券从业投资...


牛牛扫板

高准确率的大盘预判。热点龙...


风口财经

重视风口研究,擅长捕捉短线...


短线荣耀

主攻短线热点龙头为主,坚持...


牛市战车

投资策略:价值投资和成长股...


妖股刺客

职业研究15年,对心理分析...


投资章鱼帝

把握市场主线脉动和龙头战法...


股市人生牛股多

20多年金融经验,工学学士...


蒋家炯

见证A股5轮牛熊,98年始...


banner

banner

机器学习笔记003 | 梯度下降算法

止一之路   / 2017-09-07 08:21 发布


为了达到最佳的预测效果,我们需要找到使得代价函数最小的参数。

还记得上一篇文章提到的代价函数么:


我们通过不断去调整参数θ0和θ1,最终找到让J(θ0 ,θ1)最小的参数。

如果直观来看,我们就像这样,一步一步地走下山:

走下山

走下山

具体是怎么实现的呢?

这里要提到一个算法:梯度下降(Gradient Descent)算法

为了使得代价函数的结果越来越小,我们需要不断重复以下步骤:


来改变参数,以寻找使得代价函数最小的最优解。

需要注意的是,所有的参数θj必须同时更新,如:

同时更新

同时更新

而下面这样的方式,是不正确的:

不同时更新

不同时更新

或者说已经不属于梯度下降算法的范畴,而是其他的算法了。

在这里,“:=”是赋值的含义,就是把等式右边的值赋予左边;α是学习的速率,代表着下山的脚步大小;后面这个是对代价函数的求导:


为什么通过这样的重复,可以找到最佳的参数呢?

为了方便理解,这里还是将θ0设置为0,也就是说,我们的预测函数为:

hθ(x1) = θ0 + θ1 xi = θ1 xi

那么对于θ1,我们需要重复的调整的步骤就是:


J(θ1)的代价函数大概是这样的:

代价函数曲线

代价函数曲线

对这样的代价函数求导,其实得到的,就是在某一个点的切线,也就是在该点的斜率。

斜率为正数

斜率为正数

斜率为正,说明需要减去的是一个正数,θ1的值变小。

斜率为负数

斜率为负数

斜率为负,说明需要减去了一个负数,也就是加上一个正数,θ1的值变大。

可以看到,两个图的绿点就是最低点。

因为斜率的原因,不管红点在绿点的左边还是右边,最终都会往绿点靠拢。

当到达最低点的时候,斜率为0,所以在这个位置,参数保持很定不变。

所以不管初始点设置在最低点的哪一边,在设置了合理的学习速率α的情况下,重复了这些步骤之后,最终都会往最低点汇聚。

为什么说是合理学习速率α呢?

因为如果学习速率α太大,那么有可能一直偏离,永远的去不到最低点。

如图,随着斜率的绝对值变大,脚步还越来越大,从距离低点最近的参数偏离得越来越远:

学习速率α太大

学习速率α太大

如果学习速率α太小,那么就需要很多的步骤,才能够找到最优解:

学习速率α太小

学习速率α太小

那么是否需要随着参数逐渐接近最优解的时候,降低学习速率α呢?

其实没有必要,你看一个在学习速率α固定的情况下,迈出的步子大概是这样的:

学习速率α固定

学习速率α固定

由于越接近最低点,斜率的绝对值就越小。

那么也就意味着即使学习速率恒定不变,由于斜率绝对值的不断变小,机器学习所走的脚步也会变得越来越小。

相信看到这里,你也对算法的原理有了个基本的理解。

下面是J(θ0 ,θ1)代入之后,得到的等式


为什么两个等式会不同呢?

其中对于θ1求导数的过程如下:

求导过程

求导过程

看完这个,你应该就能明白,之前代价函数为什么要乘以 1/2 了吧。

如果看不懂也没有关系,直接记住前面的等式就行了。

由于这样的梯度下降算法在整个训练过程中,每一步都去计算所有的训练样本,被命名为“批量梯度下降(batch gradient descent)”。

文章提前发布在**:止一之路