这是Coursera上比较火的一门机器学习课程,主讲教师为Andrew Ng。在自己看神经网络的过程中也的确发现自己有基础不牢、一些基本概念没搞清楚的问题,因此想借这门课程来个查漏补缺。目前的计划是先看到神经网络结束,后面的就不一定看了。
当然,看的过程中还是要做笔记做作业的,否则看了也是走马观花。此笔记只针对我个人,因此不会把已经会了的内容复述一遍,相当于是写给自己的一份笔记吧。如果有兴趣,可以移步《Machine Learning》仔细学习。
接下来是第一周的一些我认为需要格外注意的问题。
1 强调了hypothesis与cost函数究竟是“ it of who ”
设一个待拟合函数为 h(x)=θ1x+θ0 ,其中x为输入样本点,θi为待学习参数,这样一个表达式我们把它称之为hypothesis。在这门课程中,可以发现吴恩达老师在念h(x)时念的是“ h of x ”,意思是h是x的函数,在h(x)中x为自变量,即输入样本点x为自变量。
需要强调的是,对于hypothesis h(x),自变量为输入样本点x;而对于cost函数J(θ),这个自变量是待学习参数。所谓的梯度下降法常常给出的那个山一样的图,正是让参数θi密密地取很多很多个值,然后看θi取到多少时整个cost函数达到最低点。
2 梯度下降法
2-1 轮廓图
采用轮廓图的方式代替三维图。
比方说对于一个待拟合函数 h(x)=θ1x+θ0 ,当参数有两个(θ1与θ0),则把cost函数画成三维图是长这样的:
但是用轮廓图表述就是这样的:
如图所示,每一圈上的点它的cost函数值是一样的,相当于对一座山的俯视图吧。好比地理中画山不是画成立体的那个样子,而是以等高线图来表述,因此画的是一圈一圈的。
当极值点落在那个打红叉的位置,拟合结果就是左边这幅图的蓝色直线,可以发现这个时候的 θ1 与 θ0 对应的 hypothesis(即那条蓝色直线的直线方程) 就是一个不错的结果。打红叉的位置可说是这座山的最低谷处。
2-2 强调梯度下降法是所有参数同步更新
就直接拿这幅图说明好了……
上面一目了然地列出了啥叫同步更新,啥叫非同步更新。
好比神经网络一堆的权值,不是说改一个参数然后再算下一个梯度然后再改下一个参数的,而是一次性利用bp算法把所有的梯度值都算出来,并且对整个神经网络所有的参数值都实施同步更新。
原因也很显然,看看右边这个非同步更新的图,是把 θ0 的值都改了,然后你再拿这个改了之后的 θ0 去算 θ1 的梯度值,再去更新 θ1 ,这显然没意义。
(2016.6.28 记)
2-3 用“求导=求某一点处切线的斜率”来理解梯度下降法
这个想法虽然简单,但是绝妙地用高中的基本导数知识解释了梯度下降法为何是往最低点走的。如图所示,横坐标为参数值θ1,纵坐标为cost函数。
(1)在上面那个图中,所取的点处的导数(即斜率)为正,而α为学习速率也为正,故[θ1-(导数值*α)]所得到的新的θ1是往左移了,也就是往cost更低的地方走去。
(2)在下面那个图中,当所取的点的导数为负,与(1)同理,可以发现这一次 [θ1−(导数值∗α)