2022吴恩达机器学习课程学习笔记(第一课第一周)
- 欢迎参加《机器学习》课程
- 机器学习应用
- 机器学习定义
- 定义(非正式)
- 主要类型
- 监督学习
- 定义
- 特征
- 类型
- 无监督学习
- 定义
- 特征
- 类型
- Jupyter Notebook
- 线性回归模型
- 定义
- 举例--房屋价格预测
- 一些常见的机器学习专业术语
- 监督学习过程
- 模型表示
- 代价函数
- 代价函数公式
- 相关概念
- 平方误差代价函数
- 理解代价函数
- 可视化代价函数
- 可视化举例
- 梯度下降
- 梯度下降简介
- 梯度下降的实现
- 理解梯度下降
- 学习率
- 用于线性回归的梯度下降
- 运行梯度下降
欢迎参加《机器学习》课程
在本课程中,你将了解机器学习并自己实现机器学习和编码。
机器学习应用
我们可以对机器进行编程来完成一些基本的事情,例如如何找到从a到b的最短路径,就像在你的GPS中一样。但在大多数情况下,我们不知道如何编写显式程序来做许多更有趣的事情,例如网络搜索、识别人类语言、识别图像或实现自动驾驶汽车。我们知道做这些事的唯一方法就是让机器学会自己做。
机器学习定义
定义(非正式)
使计算机无需明确编程即可学习的研究领域。 亚瑟 塞缪尔(1959)
主要类型
监督学习(在现实世界中使用最多的机器学习类型)
无监督学习
强化学习
监督学习
定义
监督学习是指学习从输入x到输出y的映射的算法。
特征
关键特征是你给模型学习的数据中包括了正确的答案,即对于给定的输入x,有正确的输出y,模型通过学习正确的(x,y),对于其他没有给定输出结果的输入(它以前从未见过的)给出合理的预测。
类型
回归:从无限多个可能的数字中预测一个数字。
分类:从有限的可能的输出类别中预测一个类别(不一定是数字)。
无监督学习
定义
无监督学习是指在没有标签的数据中,找到某种结构或模式的算法。
特征
关键特征是你给模型学习的数据中不带有任何标签,我们的工作是找到某种结构或某种模式,或者只是找到一些有趣的东西,而不是试图监督算法对于每个输入给出正确的答案。
类型
聚类算法:将未标记的数据放置在不同的集群中。
异常检测:检测异常事件。
降维:压缩一个大的数据集,丢失尽可能少的信息。
Jupyter Notebook
线性回归模型
定义
线性回归意味着将一条直线拟合到你的数据中。
举例–房屋价格预测
这是监督学习的一个实例,因为我们是首先给出具有正确答案的数据,然后去预测新房屋的价格。
这是回归模型的一个实例,因为它以价格(具有无限种可能的输出)作为预测输出。
一些常见的机器学习专业术语
训练集:用于训练模型的数据集,用 Training Set 表示。
输入变量/特征/输入特征:给定的作为模型输入的变量,用 x 表示。
输出变量/目标变量:作为模型预测输出的变量,用 y 表示。
训练样本总数:用 m 表示。
单个训练样例:用 (x,y) 表示。
第i个训练样例:用 (x(i),y(i)) 表示。
监督学习过程
其中,对于给定的x,y表示真实值,y-hat表示估计值。
模型表示
fw,b(x) = wx+b
一个变量的线性回归也叫单变量线性回归。
代价函数
代价函数公式
相关概念
代价函数会告诉我们模型拟合数据拟合的有多好以便于我们可以尝试将它做的更好。
对于模型:fw,b(x) = wx + b
w 与 b 被称为模型的参数,是你在训练过程中可以调整的变量以改进模型,又被称为系数或权重。
我们在视觉上觉得这条线适合数据时,意味着这条线大致经过或接近所有训练样例。
对于给定的 x(i),图像上的十字所对应的y轴坐标为 y(i),即真实值;直线上对应的y轴坐标为 y(i)-hat,即估计值,我们现在要做的事情就是找到 w 和 b ,以便对于所有样例,估计值都能接近真实值,这就是代价函数的作用。
平方误差代价函数
即所有样例的估计值减去真实值的平方再求平均。
除以2是为了后面求导的过程中会把2约掉,使公式看起来更简洁,但无论除不除以2,都不会产生任何影响。
理解代价函数
为了简化计算,将参数 b 设为 0。
左侧图像是固定参数 w,绘制 x-y 图像,右侧图像是绘制 w-J 图像,因此左侧一条直线对应于右侧一个点。
因此如何选择参数 w 的值决定了直线拟合图像拟合的有多好。
J 是衡量平方误差有多大的代价函数,所以选择最小化平方误差的 w,会给我们一个很好的模型。
因此,线性回归的目标是选择合适的参数以最小化代价函数。
可视化代价函数
3D表面图
为了更仔细的观察特定的点,使用等高线图来绘制函数 J。
左上是函数 f 的二维图像;右上是函数 J 的等高线图;下面是函数 J 的3D表面图。
等高线图上的每个椭圆对应的是3D表面图上处于完全相同高度的点,也就是具有相同的J的点。4
要获得等高线图,首先获取3D表面图,然后将其水平切片,每个切片上的所有点对应于一个椭圆。
这些同心椭圆的圆心对应代价函数最小的点。
可视化举例
越靠近同心圆圆心,直线拟合的越好。
梯度下降
梯度下降简介
梯度下降所做的事情是:选择参数 w 和 b 的初始值;每次更改 w 和 b 的值以减小代价函数的值;直至代价函数达到或接近最小值。
注意:使用梯度下降只能得到局部最小值,对于某些非凸函数(简单理解:不是碗形或吊床形的函数),不能得到全局最小值。
站在初始点,自转一周,找到最陡的下降方向,迈出一小步,重复这个过程,直至到达山谷。
当改变初始点位置时,重复上述过程,到达另一山谷。
梯度下降的实现
α 被称为学习率,通常是介于 0 和 1 之间一个小的正数,控制下坡迈出多大一步,即如果 α 很大,对应着一个快速的梯度下降过程,反之,对应一个缓慢的梯度下降过程。
导数项代表下坡的方向。
重复上述两个公式直至算法收敛,收敛代表达到局部最小值。
注意的细节:同时更新 w 和 b。
更新 b 的时候公式里面的 w 要使用更新前的 w。
理解梯度下降
为了简化计算,便于理解,将参数 b 的值置为 0。
则梯度下降要做的事情就是改变参数 w 的值,以最小化代价函数 J。
图像上一点处的导数值即为该点切线的斜率,切线是朝向右上方时,斜率大于0,朝向右下方时,斜率小于0。
当在最小值右侧选值时,更新后的 w 值会减小;当在最小值左侧选值时,更新后的 w 会增大。由此看来,梯度下降在做正确的事。
学习率
如果学习率太小,梯度下降仍然会起作用,但会很慢。
如果学习率太大,可能永远不会达到最小值,不收敛甚至发散。
为什么采用固定的学习率会达到局部最小值?
当接近最小值时,导数值会越来越小趋近于0,更新的步长也会越来越小趋近于0,所以会到达最小值点。
用于线性回归的梯度下降
平方误差代价函数是凸函数,只有一个局部最小值即全局最小值,所以只要选择适当的学习率,算法就会收敛。
运行梯度下降
随着使用梯度下降法进行参数更新,代价函数逐渐减小,直线也拟合得越来越好。
这种梯度下降也被称为批量梯度下降,指的是梯度下降的每一步中我们都使用了所有的训练数据,还有其他种类的梯度下降,每一步更新只使用训练数据的一个子集。