必须说对我这种数学不好的人来说,看一集这样的课程需要死掉好多脑细胞。
不管怎么说,看到不懂的地方,就去百度就去找书,在这里记下自己的疑惑和答案。当然我数学不好,因此有些术语可能不够严谨。
第二集中,教授给出了一个监督性学习算法的公式——梯度下降。
一切从一个式子开始,当你有了两个条件x1 , x2 ,想要获得h(x),那么公式应该是这样的:
更简洁的写法也就是:
让机器学习,就是为了给电脑一堆数据,然后让电脑自己计算参数θ(当然,一开始的参数θ使我们给的,视频中教授给的参数θ都是0)使得最后,当我们给电脑某个x1 ,x2的时候,电脑能计算出一个值h(x),这个y与现实中的答案尽可能相同。
为此,教授给了以下一个公式来解决:
h(x)是计算值,y是实际的答案,注意,这个公式是用来训练机器的,所以y来自训练样本的真是的答案,h(x)是电脑的答案。
注意:系数二分之一只是为了后面计算的简便加上去而已。
既然要训练电脑,那么给了它样本,就要告诉他,你算得对不对,可见,如果电脑算对了,J(θ)是0,但是现实之中,电脑很难百分百准确,因此我们只能最小化J(θ)。
所以,训练电脑的过程就是,不断给样本数据和答案,然后告诉电脑对不对。
那么具体做法怎么做,请看视频的那一段,教授用爬山的例子,我感觉很通俗易懂,这里不再累述。
其实就是上面所说的最小化J(θ),怎么做到?教授用了一个二元一次方程形成的图像(类似一座山)告诉我们:站在图像上方,不断地往J(θ)的0值的方向跑去,并且是往最陡的方向,因为这样最快。
站在图像上方的哪里取决于参数θ,但是当你站在了一个位置之后,如何知道哪个方向是下降最快的?
在此,使用了梯度,梯度是什么大家可以百度下,高数里也有讲,我大概翻了一下,再加上记忆的补全,对于某方程求偏导,并且带入某点的坐标之后即可得到这个方程在多维空间里上升最快的一个方向,所以只要加上负号,就是下降最快的方向。即:
所以,只要在上面这个项的前面加上负号和一个参数α(控制你在方向上走一步的长度,太大了有可能最后有可能跑到了0的下边,太小计算机计算量会太大),再用迭代法,就能使得参数进行自我调整:
化简之后的公式是:
好了,这就是批梯度下降法,你可以发现计算一个θ,就需要遍历整个样本,对于大数据的,计算机可能承受不来的,可以利用以下公式,但是注意,这个降低准确性
在后边的十分钟,教授还说了一大堆,其中有一部分我没听懂,所以就不说明了。