和Andrew Ng散步在机器学习花园 - 第一周
什么是机器学习?
写在前面 - 课程最前面整个课程中我们将学习包括监督学习和非监督学习在内的诸多算法,以及如何使用它们
由于课程前部分内容都是在两个月前学完的,因此写文章时视频没能完全再看一遍,由于时间问题也就不举例了。如有疏漏补充欢迎指正,期望和有心人一起进步!
机器学习概念
关于机器学习还没有一个统一绝对的定义, 但我们仍然可以获得较为清晰的理解:
“Field of study that gives computers the ability to learn without being explicitly programmed.”
—Arthur Samuel
而更加现代的说法则是:
“A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E.”
—Tom Mitchell
其中
- E = 经验,如下棋获得的经验
- T = 任务,即下棋
- P = 概率,下棋中获胜的概率
监督学习
拥有数据来源和明确的数据输出(类型),且两者间存在关联
- 回归:数据用于连续方程,数据输出也是连续性的
- 分类:数据用于离散方程,数据输出也是离散性的
非监督学习
在不知道数据输出结果(类型/值)情况下,使用聚类等但是解决问题(一般为分类),这种情况下,输出结果无法向算法给予反馈
模型及代价函数
参数介绍
- x(i) = 输入变量
- y(i) = 输出变量
输出变量y取有限固定值,为分类问题;取连续值,为回归问题 - (x(i), y(i)) = 训练样本
- (x(i), y(i)), i=1, 2, 3,…, n = 训练集
- = 输入集
- = 输出集
- = 假设
- m = 数据集样本数量
模型展示
其中反馈过程没有表示出来,只反映了一次单向推导过程
代价函数
用来评估假设方程(算法的一部分,可改变)的准确度
假设方程:
代价函数:
其中1/2只是为了便于计算梯度下降, 我们需要选择使得假设函数更加靠近数据集,如下:
代价函数的重要目标是寻找全局最小值,找到全局最小值,就找到了最准确的参数模型,也就找到了假设方程的最佳参数解,预测的结果也最准确(注意不是找到了最佳算法),因此我们需要避免参数收敛于局部变量的情况
一元函数寻找全局最小值 -
左图中,选择不同的参数值,从而获得不同的假设方程曲线,在右图画出
取不同获得不同代价函数(没有),画图找全局最小值
二元函数寻找全局最小值 -
使用等高线图,等高线上的代价函数值相同,原理同上
等高线中心坐标即为全局最小值参数解(包括)
梯度下降算法
寻找全局最小值的通用方法,对代价函数进行了求偏导运算
公式原理
使用梯度下降算法,优化,给机器这个公式,让它自己完成算法任务:
三维图示原理,此时收敛点在局部最小值,下降步长由确定
参数分析
- 增加,此处代价函数斜率为负
- 减小,此处代价函数斜率为正
- 越小,下降步长越短,不容易滑落到局部最小值,但是计算量大,时间长
- 越大,下降步长越长,更易找到局部最小值及偏离,计算成本小,时间短
- 取任何值,理论上都有可能找到局部最小值,正确之道在中庸~
- 选定后不再需要改变,因为随着梯度下降的进行步长也会逐渐减小
批次梯度下降
重复这组公式直到到达收敛点(注意公式对偏导项还要乘Xi项,如果假设方程还有二次项呢?):
每次进行梯度下降时都应该使用的是相同的,前一组的参数,即进行同步升级
每前进一步,对每个数据进行更新时都要用到前一组的所有数据,进行批量更新,所以叫做批次梯度下降
在线性回归中只有一个全局最小值,因此不存在梯度下降误至局部最小值的问题