【Coursera Machine Learning】适用多个特征量的梯度下降

引入

首先我们假设一个有多个特征量的情况:

我们的目标函数应该会变成下面的样子:

hθ(x)=θ0+θ1x1+θ2x2+...+θnxn

define x0=1

那么:

x=[x1x2xn]Rn+1θ=[θ1θ2θn]Rn+1hθ(x)=θ0x0+θ1x1++θnxn=θTx

p.s.:θT表示θ的转置向量

多特征量梯度下降

假设:hθ(x)=θ0+θ1x1+θ2x2+...+θnxn=θx

并约定x0=1

参数:θ0θ1θn。可以想象成一个n+1维的向量θ

代价函数:J(θ)=J(θ0θ1θn)=12mi=1m(hθ(x(i))y(i))2

梯度下降公式:

重复:

θj:=θjαθjJ(θ)

且可以分别推导出θ0θ1的梯度下降公式

而当特征量有多个,n1时,梯度下降公式变为如下:

θj:=θjα1mi=1m(hθ(x(i))j(i))xj(i)

最终用于实现的梯度下降公式!

θ=θα1mXT(Xθy)

梯度下降的实用技巧

特征缩放

有时候画出等高线图如果过于狭长可能会导致运行到函数收敛的时间太长,这时比如选择将一些参数除以一定倍率可以将等高线图的形状变得均匀(变圆)

执行特征缩放时,一般会将特征的取值约束到±1之间。差距稍微大一点点比如在±3之间也是可以接受的。往小了说,在±13之间也可以,但是太小也不行。

归一化(Mean normalization)

可以在特征缩放的时候在分子里再减去一个xi的平均数,比如x1=size10002000

x1x1μ1s1

μ1:特征x1的平均值

S1:特征值的范围,即最大值-最小值

Debugging

How to make sure gradient descent is working correctly

画出 minJ(θ)-迭代次数 的图像,正确工作的梯度下降法中 minJ(θ)会随着迭代次数的增加持续减小。一般也通过这种方式来判断梯度下降算法是否已经收敛。

此外也有一些算法可以自动反馈梯度下降算法是否收敛。比如设置当J(θ)的下降小于103时就认为已经收敛。但通常来说要选择一个合适的阈值ϵ是相当困难的。

选择Learning rate α

有时候如果你发现画出的图像曲线是向上的或者类似双曲线等,或者其它梯度下降算法没有正确收敛的情况,可以尝试将Learning rate设置为更小的值。

posted on   安逐悲  阅读(35)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示