高级优先算法
梯度下降法回顾
我们有个代价函数J(θ)而我们想要使其最小化,那么我们需要做的是编写代码来当输入参数θ时,代码会计算出两杨对象,J(θ)以及J(θ)等于0到n时的偏导数项,假设我们以及完成了可以实现这两件事的代码,那么梯度下降法要做的就是反复执行更新迭代θ值
简单的讲就是我们需要写代码来计算出代价函数J(θ)以及J(θ)的各项偏导数。再带入到梯度下降法的θ迭代公式中,然后最小化代价函数。
如图:
高级优先算法
先假设有一个例子:
有一个含有两个参数的问题,分别是θ1和θ2 。那么代价函数以及偏导数如图:
可以用梯度下降法计算**J(θ)**的最小值,也可以用更高级的算法,不如调用一个函数,如下:
这个函数会返回两个值,一个是jVal, gradient 第二个返回值返回的梯度值,是一个2*1的向量。分别对应了两个偏导数项。
然后就可以调用高级优先算法来计算。代码如下:
GradObj 和on 设置梯度目标参数为打开(on)。 MaxIter 100为迭代次数。 @costFunction @表示的是一个指向costFunction的指针。
这个算法就可以自己选择学习效率α
在Octave中的代码如图所示:
exitFlag = 1 表示已经收敛了,并且得到了θ值。
对于多元时的代价函数
只用吴恩达老师课上的一张图解释:
关于本节的课程,建议观看吴恩达老师的课程:
https://www.bilibili.com/video/av9912938?p=38
————————————————