完结撒花!
学习历程
从今年4月开始,断断续续的开始在网易云课堂
上看汉化版的《机器学习》课程,当时只是简单的水水视频了解大概概念,迫于大三下繁忙的考试与夏令营各种事情,进度缓慢。
5月份的时候开始在coursera
上做编程作业,开始时真的挺费时间,还记得做第一次编程作业的时候用了将近一上午的时间。前期的学习大概集中在这两个月,只是学到了神经网络这一章节。
之后一直到7月末,正巧导师让我学习这个课程,才又开始对此课程的完整学习,一直到今天—9月的第二天,才完成了课程的所有内容,包括8次编程作业。
学习此课程的初衷有两点,一是在当前人工智能火热的大环境下,对相关领域做一些了解,以期为将来带来积极的影响;二是兴许保研时能增加一些竞争力(事实上,学完才发现这门课程比较基础)。
收获
对以下内容有了一定了解:
1.监督学习方法:线性回归(包括单变量线性回归与多元线性回归);logistic回归;神经网络(最朴素的网络结构)、神经网络的反向传播算法;支持向量机
2.无监督学习方法:K-means
聚类;PCA
降维;异常检测;推荐系统(协同过滤算法)。
3.模型的评估:训练集、交叉验证集、测试集;对方差、偏差的分析、学习曲线。
4.机器学习中的误差分析:精确率、召回率;
5.改善过拟合的方法:正则化等。
6.大规模机器学习:随机梯度下降、Mini-Batch
梯度下降;在线学习;Map-reduce
。
以及没想到的一些。
对于以上的大部分内容,所达到的程度真的只是“有了一定了解”。
下一步的计划
1.学习桑老师给的另一门课《深度学习算法与实战》,目前学到了循环神经网络。
2.加深对本课程算法的理解,通读《统计学习方法》。
是否需要学习一下当前机器学习用到的一些框架,
tensorflow
,pytorch
等
思考与疑问
1.代价函数为何使用平方误差代价函数(回归问题中)
2.logistic中代价函数偏导的求法
3.自动选择合适正则化参数lambda的方法
4.为何神经网络如此神奇呢,隐藏层发生了什么
5.神经网络可以应用于分类问题之外的问题吗
6.为何神经网络的偏导数这样计算呢
7.神经网络用作分类问题时为何选择logical array作为输出呢,而非输出数字代表不同类别?
8.误差/方差,我们在选择什么
9.SVM中为何弄一个C代替1/lambda呢,是为了后面那一项吗
10.奇异值分解,协方差矩阵
11.K-means和PCA中x都为n维,没有x0=1的一项,为什么呢
12.课程里没有讲PCA的数学证明,课后了解一下
13.对偶形式的支持向量机;SMO方式解决提高支持向量机的效率
2.同一句话的不同理解:借了我20块钱
(是借给我,还是向我借呢?)
3.机器学习三要素是模型、策略和算法,那交叉验证集和测试集在哪里发挥作用呢?(误差分析作用在哪)
4.为何求逆矩阵的计算成本高
为何向量化能提高计算速度?
比如python中:
Python是解释语言,这意味着你的指令进行分析,并在每次执行解释。由于它们不是静态类型的,因此循环必须在每次迭代时评估操作数的类型,这导致计算开销。
向量化可以使一条指令并行地对多个操作数执行相同的操作(SIMD(单指令,多数据)操作)。例如,要将大小为N的向量乘以标量,让我们调用M可以同时操作的操作数大小。如果是这样,那么它需要执行的指令数大约为N / M,如果采用循环方式,则必须执行N次操作。