教辅说这周的作业是史上最难,果不其然,我花了好久好久才完成….好吧其实也没有很难,就一开始的cost function卡了很久,后面倒是挺顺利的,简单地调了几遍就过了,现在第五周完成了,还有1个小时第六周就过期了。。。路漫漫,是真的。
1. cost function
印象中,一开始就是要算这个东西,然后我调了好久的程序,又是重看视频,又是看各种文档、论坛,后来是完成了的,它具体是个什么样子我还是要去查一下笔记的。
机器学习的本质在于通过大量数据的训练,使计算机能够拥有人类的某种能力,比如识别数字、开车,正如人类有认知错误一样,计算机学习以后的识别也会有些偏差。比如让它识别10个数字,它可能对了9个,错了一个,我们希望它识别100个数字的时候也只错一个,这就是识别的优化。cost function就是那些造成偏差东西,而我们要减少偏差,就是要最小化这个cost function,这是从第一周就开始的机器学习基本思想。
上面介绍了cost function的本质,具体怎么构成这个方程可能涉及了很多高深推理,Ng教授也只是给了方法,他承认很多机器学习的工作者知道的也不多,会用这些方法,会用fminunc函数就赚了很多钱,我这里就回顾一下教授教的方法吧。
呼…这个公式很长,但由于它是在之前线性回归方法的cost之上进一步发展出来的,所以理解上去不是很难。原来的cost function是这样的:
出现不同的原因在于,之前要实现的功能,比如预测房价,只需要输出一个数字(表示价格)即可,而现在不一样,之前的文章也提过,输出的是该图像属于10中不同种类的概率,所以偏差需要把这10个种类对应的偏差都加起来。
2. Backpropagation
上一周用于识别的方法是层层计算,得出的概率找最大的,最大值的索引就是所在分类,比如向量v中第4个分量最大,那么可以得出结论v对应的图像上是数字4. 这周介绍了一个新的方法叫做backpropagation, 工作原理是这样的:取一组训练集合(就是一张像素数据存在 x(i) 中的图片和它显示的数字 y(i) ), 正方向按照上一周的方式算过去,再反过来计算 δ 和 Δ 的值,依据他们俩来得出梯度,用函数fminunc多次迭代….
就一种方法而已,怎么算的wiki里都有,我代码也通过了,我就不介绍了,今天洗洗睡了。