梯度下降算法_梯度下降算法中的偏导公式推导

前言:最近在跟着吴恩达老师(Andrew Ng)的视频课程学习机器学习,该视频是2014年拍的,虽然有点老,但理论却并不过时,是非常经典的机器学习入门教程,也正是因为这是入门教程,所以视频中的有些数学知识只给出了结论却未进行推导,这对于入门来说再适合不过了,但如果想深入学习机器学习理论和算法就得对那些数学公式的来龙去脉有比较清楚的认识。所以随着学习的深入,我不知道为什么的地方也越来越多,所以我决定先搞清楚视频中涉及到的那些未被推导的数学公式之后再继续学习后面的视频教程。在搞清楚那些数学知识的时候我会在纸上进行演算,但纸质介质对我来说并不利于长时间保存因而不利于备忘,于是决定把学习到的知识和心得组织成一系列文章发布在公众号上,一方面利于自己温故而知新,另一方面也希望这些文字对有同样疑惑的网友有那么一丁点儿用处。

本文是上述所说的系列文章的第一篇,主要对梯度下降算法中的偏导公式进行推导。梯度下降算法是我们在吴恩达老师的教程中遇到的第一个算法,算法中的对代价函数的求导也是我们需要自己推导的第一个数学结果。

我们先来看看梯度下降算法和其代价函数,下图是我从视频中截取出来的:

梯度下降算法_梯度下降算法中的偏导公式推导_第1张图片

上图左边是梯度下降算法伪码,右边是h和J函数的定义。需要注意的是代价函数J的自变量是和,而不是x和y,x和y只是一些常量。

梯度算法的核心是反复迭代改变和的值直到代价函数J的值达到最小,这里关键是如何去求J的偏导数。

下面我们就尝试着来推导它。代入J可得

根据导函数的加法运算法则(f + g)' = f' + g',也就是多个函数的和的导数等于各函数的导数的和,我们可得到

d8aa5e6713a83d26f0cbf66baf99834f.png

又根据复合函数的求导法则f'(g(x)) = f'(u)g'(x),有

梯度下降算法_梯度下降算法中的偏导公式推导_第2张图片

到此,余下部分的偏导就比较简单了,它是对一个二元一次函数的自变量求偏导,根据偏导的定义,对求偏导数时,我们把看作常数,对求偏导数时,我们把看作常数。于是有:

21d40144692562af234f76f65b469aa0.png

把上面两式分别带入(1)式可得:

梯度下降算法_梯度下降算法中的偏导公式推导_第3张图片

至此推导完成,可以跟吴恩达老师给出的结果对比一下确认其正确性。

梯度下降算法_梯度下降算法中的偏导公式推导_第4张图片

后记

通过这段时间的学习,发现数学对机器学习真的是太重要了,要不然只知道What而不知道Why。可惜的是上学时对数学一点都不感冒导致现在重新来学习。在寻找微积分教材的过程中发现了下面两本很不错的书,顺便推荐给大家。我看的是第一本,第二本评价也很高,但内容没有第一本全。

你可能感兴趣的:(梯度下降算法)