吴恩达机器学习(一)
一、什么是机器学习(what is Machine learning)?
机器学习算法主要有两种机器学习的算法分类
- 监督学习
- 无监督学习
两者的区别为是否需要人工参与数据结果的标注
1.监督学习
监督学习:预先给一定数据量的输入和对应的结果即训练集,建模进行拟合,最后让计算机预测未知数据的结果。
监督学习一般有两种:
- 回归问题(Regression)
回归问题是预测连续值的输出,例如房价等
在吴恩达老师课程中,给出了一个房屋价格预测的例子中,给出了一系列的房屋面积数据,以及房屋价格,根据这些数据来搭建一个预测模型,在预测时,给出房屋面积,根据模型得出房屋价格。
- 分类问题(Classification)
分类问题即为预测一系列的离散值。根据一系列数据(同回归问题不一样的是,分类问题的y值是一种离散值,比如0 or 1,又比如cat dog pig)等等,即根据数据预测被预测对象属于哪个分类。
在吴恩达老师课程中举了癌症肿瘤这个例子,针对诊断结果,分别分类为良性或恶性。还例如垃圾邮件分类问题,也同样属于监督学习中的分类问题。
2.无监督学习
相对于监督学习,训练集不会有人为标注的结果(无反馈),无法得知训练集的结果是什么样,而是单纯由计算机通过无监督学习算法自行分析,从而“得出结果”。计算机可能会把特定的数据集归为几个不同的簇,故叫做聚类算法。
在吴恩达老师课程中,举了一个新闻的聚类问题,每天有无数条新闻,一些公司将这些新闻进行分类,将同一个话题的新闻放在一块。
二、单变量线性回归(Linear Regression with One Variable)
1.模型表示
- x 代表目标变量/输出变量
- y 代表目标变量/输出变量
- h(x) 代表假设函数
- 定义\(h ( x ) = \theta_0+\theta_1x\) 为假设函数,因此之后的任务是求出\(\theta\),来拟合给定的数据集
- 线性回归是拟合一条线,将训练数据尽可能分布到线上。这里我们只有一个变量x,所以成为单变量的线性回归。另外还有多变量的线性回归称为多元线性回归。
2.代价函数
2.1 定义
代价函数(cost function),一般使用最小均方差来评估参数的好坏。
定义代价函数为:\(J(θ_0,θ_1)=\frac{1}{2m}\sum_{i=1}^{m}(h_θ(x^i)−y^i)^2\),这里的m指的是m个已知x和y的点
2.2 可视化
- 简化假设函数\(h ( x ) = \theta_1x\),即\(\theta_0=0\)(单参数)
从右图中可以看到当\(\theta_1=1\)时,对应的\(J(θ_1)\)最小,而此时左图中的假设函数\(h ( x )\) 的曲线也完美拟合了我们的数据
- 假设函数\(h ( x ) = \theta_0+\theta_1x\),即双参数
此时对应的\(J(θ_1)\)为三维图形
左图为假设函数图像,右图为等高线图(三维图形投影)
总结:通过可视化我们明显地可以看到接近代价函数J最小值的点,对应着更好的假设函数和更好的数据拟合程度。
3.梯度下降
3.1 梯度
- 梯度的定义
在微积分里面,对多元函数的参数求∂偏导数,把求得的各个参数的偏导数以向量的形式写出来,就是梯度。 - 梯度的公式
以二元函数 f(x,y) 为例,分别对 x,y 求偏导,求得的梯度向量如下所示:
\[gradf(x,y)= ▽f(x,y) = \{\frac{∂f}{∂x},\frac{∂f}{∂y}\} \]对于在点(x0,y0)的具体梯度向量就是\((\frac{∂f}{∂x0},\frac{∂f}{∂y0})\),或者▽f(x0,y0)
- 梯度的意义
几何意义:函数变化增加最快的地方。具体来说,对于函数f(x,y),在点(x0,y0),沿着梯度向量的方向就是\((\frac{∂f}{∂x0},\frac{∂f}{∂y0})\)的方向是f(x,y)增加最快的地方。或者说,沿着梯度向量的方向,更加容易找到函数的最大值。反过来说,沿着梯度向量相反的方向,也就是\(-(\frac{∂f}{∂x0},\frac{∂f}{∂y0})\)的方向,梯度减少最快,也就是更加容易找到函数的最小值
3.2 梯度下降思想
- 开始时,我们随机选择一个参数组合即起始点,计算代价函数,然后寻找下一个能使得代价函数下降最多的参数组合。不断迭代,直到找到一个局部最小值(local minimum),由于下降的情况只考虑当前参数组合周围的情况,所以无法确定当前的局部最小值是否就是全局最小值(global minimum),不同的初始参数组合,可能会产生不同的局部最小值。
3.3 梯度下降的具体执行
- 梯度下降的公式:\(θj=θj−α\frac{∂}{∂θ_j}(J(θ0,θ1,⋯,θn))\)
注意:梯度下降在具体的执行时,每一次更新需要同时更新所有的参数。
- 梯度下降公式中有两个部分:学习率和偏导数
偏导数这部分决定了下降的方向即”下一步往哪里“走
下图举一个代价函数\(J(\theta_1)\)例子,其中偏导数用来计算当前参数对应代价函数的斜率,导数为正则\(θ\)减小,导数为负则\(θ\)增大,通过这样的方式可以使整体向\(\frac{∂}{∂θ_1}J(θ1)=0\)收敛
公式中,学习速率\(α\)决定了参数值变化的速率即”走多少距离“,
\(α\)用来描述学习率,即每次参数更新的步长。如下图所示,\(α\)的大小不好确定,如果太小则需要很多步才能收敛,如果太大最后可能不会收敛甚至可能发散。
当\(θ\)处于局部最优解时,\(θ\)的值将不再更新,因为偏导为0。
这也说明了如果学习率\(α\)不改变,参数也可能收敛,假设偏导>0,因为偏导一直在向在减小,所以每次的步长也会慢慢减小,所以\(α\)不需要额外的减小。
3.4 单元梯度下降
梯度下降每次更新的都需要进行偏导计算,这个偏导对应线性回归的代价函数。
将线性回归的代价函数带入,并求导的结果为:
\[\frac{∂}{∂θ_j}J(θ_0,θ_1) =\frac{∂}{∂θ_j}\frac{1}{2m}\sum_{i=1}^{m}(h_θ(x^i)−y^i)^2\\ =\frac{∂}{∂θ_j}\frac{1}{2m}\sum_{i=1}^{m}( \theta_0+\theta_1x^i-y^i)^2 \\ θ_0(j=0):\frac{∂}{∂θ_0}J(θ_0,θ_1)= \frac{1}{m}\sum_{i=1}^{m}(h_θ(x^i)−y^i)\\ θ_1(j=1):\frac{∂}{∂θ_1}J(θ_0,θ_1)= \frac{1}{m}\sum_{i=1}^{m}(h_θ(x^i)−y^i)*x^i \]梯度下降的过程容易出现局部最优解:
但是线性回归的代价函数,往往是一个凸函数。它总能收敛到全局最优。
关于凸函数与凹函数,国内外是刚好相反的,其实说哪边是凸哪边是凹都有一定道理。
我曾在知乎看到外国人可能是这样记的-☺
梯度下降过程的动图展示:
上述梯度下降的方法也被称为“Batch”梯度下降:在每一步梯度下降,我们都遍历了整个训练集的样本
标签:frac,函数,第一天,梯度,学习,参数,theta,机器,梳理 From: https://www.cnblogs.com/epochal/p/machine.html