最近在学习coursera上ng的ml课程(总课程为11周),已经完成了5周的课程和作业。为了让自己多留一点印象,所以写下这一篇记录。
- ng的课非常棒,英语也很好,我学这个课程选择的都是英文的字幕什么的,一方面也是为了提升英语方面的知识。
- 这个课程属于斯坦福大学的,有一个“荣誉守则”大概是这个意思,不能够分享作业源码之类的,保证学生不作弊,且都是靠自己的力量通过课程,这样才有收获,非常nice。据说斯坦福大学考试都没有人监考,就靠这个荣誉守则,一旦被发现违反后果非常严重。可能也是学校为了培养学生品行的一种手段。
- 机器学习是一个大类,其核心思想(个人理解)是在不需要我们显式的算法编程的情况下(并不是说机器学习没有算法,这里理解起来有点绕),让机器可以通过“喂数据”的方式,能够提升其任务结果的性能。 performance / task / data /experience 这里的data是我加入的,machine从data中学习,data也就是我们人类所说的experience(经验),可以通过不同的手段(training)来获得,这里的data是ml非常重要的环节。
- 从任务的类型来看可以分为数值的和逻辑的任务,比如预测得到一个结果的值就是属于数值,判断一个东西的属性(有限种类的选项)数据逻辑。针对他们所应用的算法也不同;最基础的是linear regression和logistic regression; 其中logistic是通过sigmod函数把线性映射到0和1(我这样理解)。
- 目前的ml本质还是曲线拟合,得到不同的模型应用在不同的任务上。对于复杂的情况线性拟合不给力,需要二项式来模拟;当参数非常多时,二项式模拟非常吃力(复杂度太高),这种情况可以通过神经网络来尝试解决问题(分为多层的矩阵映射,非线性)。
- 目前梯度下降法及其变种(比梯度下降可能要复杂很多,但根本上还是通过梯度计算来解决问题)是非常有效的技术手段(用于求解theta矩阵的参数)。feature scaling是应用在原始版本的梯度下降中,是用于提升该方法的性能的小trick。
- regularization是用来解决过拟合问题的简单手段,通过在cost function中加入一些纯theta的项来让某一个参数值不会过大(这样过拟合的可能性会很大,因为个别坏数据的影响可能会很大)。
- 反向传播算法是神经网络的精髓,是一种比较复杂的算法,但理解起来还是比较有意思的。ex4的作业(主要是反向传播算法的实现)号称是全教程最难,我花了一天时间才搞定(如果去forum看faq的话会容易很多,还有就是仔细看题)。不过自己独立解决问题的成就感还是挺酸爽的。
- cost function是非常关键的概念。
- 监督学习和非监督学习的区别在于数据是否是labeled,也就是说结果集y是否是给定的。非监督学习的一个典型的例子是聚类。
- 过拟合(overfitting)的处理:引入regularization,增大lambda的值;或者增加训练用样本数;减少训练的迭代次数等。
先写这么多,比较乱,给自己的记录。