吴恩达机器学习笔记1
目录
单变量线性回归 Linear Regression with One Variable
机器学习是什么
在课后题目中看到一个定义,感觉比较适合理解
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.
机器学习的分类
监督学习和无监督学习
监督学习 Supervised Learning
监督学习(Supervised Learning)问题分为“回归”和“分类”问题:
- 在回归问题中,我们试图在连续输出中预测结果,这意味着我们正在尝试将输入变量映射到某个连续函数
- 在分类问题中,我们试图在离散输出中预测结果。 换句话说,我们正在尝试将输入变量映射到离散类别
其基本思想是,我们数据集中的每个样本都有相应的“正确答案”。
无监督学习 Unsupervised Learning
无监督学习使我们能够在很少或根本不知道我们的结果应该是什么样的情况下处理问题。我们可以从数据中导出结构,我们不一定知道变量的影响。我们可以通过基于数据中变量之间的关系对数据进行聚类来推导出这种结构。在无监督学习的情况下,没有基于预测结果的反馈。
例如:在做题时,我们有时知道答案,边做题边对答案,这样就是一种监督学习;但是有时我们没有答案,但是我们依然可以根据题目的样子,推断出这个题目是英语题还是数学题,这样对题目的分类是一种无监督学习。
在无监督学习中,我们已知的数据。看上去有点不一样,不同于监督学习的数据的样子,即无监督学习中没有任何的标签或者是有相同的标签或者就是没标签。所以我们已知数据集,却不知如何处理,也未告知每个数据点是什么。
典型案例:鸡尾酒会问题,基因自动分组,新闻事件分类。
单变量线性回归 Linear Regression with One Variable
以之前的房屋交易问题为例,假使我们回归问题的训练集(Training Set)如下表所示:
符号说明
训练集中实例的数量 | |
特征/输入变量 | |
目标变量/输出变量 | |
训练集中的实例 | |
第 |
|
学习算法的解决方案或函数也称为假设(hypothesis) |
我们的任务如下图所示
这就是一个监督学习算法的工作方式,我们可以看到这里有我们的训练集里房屋价格,我们把它喂给我们的学习算法,学习算法的工作了,然后输出一个函数,通常表示为小写表示。
一种可能的表达方式为:。因为只含有一个特征/输入变量,因此这样的问题叫作单变量线性回归问题。
代价函数
这里我们定义代价函数的概念,这有助于我们弄清楚如何把最有可能的直线与我们的数据相拟合。
现在要做的便是为我们的模型选择合适的参数(parameters)和
。我们选择的参数决定了我们得到的直线相对于我们的训练集的准确程度,模型所预测的值与训练集中实际值之间的差距是建模误差(modeling error)。
蓝线即是建模误差
我们的目标便是选择出可以使得建模误差的平方和能够最小的模型参数。 即使得代价函数最小,代价函数为
可以得到下面的图
则可以看出在三维空间中存在一个使得最小的点。除了这种表示方式,也经常用等高线图来表示上图(和地理上的等高线图差不多),如下图。
代价函数也被称作平方误差函数,有时也被称为平方误差代价函数。我们之所以要求出误差的平方和,是因为误差平方代价函数,对于大多数问题,特别是回归问题,都是一个合理的选择。还有其他的代价函数也能很好地发挥作用,但是平方误差代价函数可能是解决回归问题最常用的手段了。
显然对于上面的图,我们也不希望编个程序把这些点画出来,然后人工的方法来读出这些点的数值。们会遇到更复杂、更高维度、更多参数的情况,而这些情况是很难画出图的,因此更无法将其可视化,因此我们真正需要的是编写程序来找出这些最小化代价函数的和
的值。那么如何求这俩值呢?
梯度下降 Gradient Descent
梯度下降是一个用来求函数最小值的算法。
梯度下降背后的思想是:开始时我们随机选择一个参数的组合,计算代价函数,然后我们寻找下一个能让代价函数值下降最多的参数组合。我们持续这么做直到到到一个局部最小值(local minimum),因为我们并没有尝试完所有的参数组合,所以不能确定我们得到的局部最小值是否便是全局最小值(global minimum),选择不同的初始参数组合,可能会找到不同的局部最小值。
思想
想象一下你正站立在山的这一点上,站立在你想象的公园这座红色山上,在梯度下降算法中,我们要做的就是旋转360度,看看我们的周围,并问自己要在某个方向上,用小碎步尽快下山。这些小碎步需要朝什么方向?如果我们站在山坡上的这一点,你看一下周围,你会发现最佳的下山方向,你再看看周围,然后再一次想想,我应该从什么方向迈着小碎步下山?然后你按照自己的判断又迈出一步,重复上面的步骤,从这个新的点,你环顾四周,并决定从什么方向将会最快下山,然后又迈进了一小步,并依此类推,直到你接近局部最低点的位置。
批量梯度下降 Batch Gradient Descent
公式:
注意:这个公式符号是:=,即要求对参数同步更新
应该计算上图公式右边的部分,即先算一组的和
,再算下一组
和
,不要把更新过的
再带到当前计算
式子里面。
其中是学习率(learning rate),它决定了我们沿着能让代价函数下降程度最大的方向向下迈出的步子有多大,在批量梯度下降中,我们每一次都同时让所有的参数减去学习速率乘以代价函数的导数。
- 如果
太小,那么移动的步长可能会很小,移动会非常慢,收敛速度慢。
- 如果
太大,那么梯度下降法可能会越过最低点,甚至可能无法收敛,下一次迭代又移动了一大步,越过一次,又越过一次,一次次越过最低点,直到你发现实际上离最低点越来越远,所以,如果太大,它会导致无法收敛,甚至发散。
当收敛到最低点时,那么根据上图,导数为0,公式中的为0,它使得不再改变,也就是新的
等于原来的
那么随着收敛,需不需要减小呢?
答案是不需要。在梯度下降法中,当我们接近局部最低点时,梯度下降法会自动采取更小的幅度,这是因为当我们接近局部最低点时,很显然在局部最低时导数等于零,所以当我们接近局部最低时,导数值会自动变得越来越小,所以梯度下降将自动采取较小的幅度,这就是梯度下降的做法。所以实际上没有必要再另外减小。
为何是“批量梯度下降”?
指的是在梯度下降的每一步中,我们都用到了所有的训练样本,在梯度下降中,在计算微分求导项时,我们需要进行求和运算,所以,在每一个单独的梯度下降中,我们最终都要计算这样一个东西,这个项需要对所有个训练样本求和。
因此,批量梯度下降法这个名字说明了我们需要考虑所有这一"批"训练样本,而事实上,有时也有其他类型的梯度下降法,不是这种"批量"型的,不考虑整个的训练集,而是每次只关注训练集中的一些小的子集。
线性代数
线性代数部分没做笔记
参考:吴恩达机器学习知识点回归和课后习题练习(week 1)
原课程:机器学习-Coursera