吴恩达机器学习 1 机器学习&代价函数&梯度下降

95 阅读3分钟

资源:www.bilibili.com/video/BV1LE…

什么是机器学习

机器学习算法分类:

  • 监督学习
    • 教计算机做某事
  • 无监督学习
    • 让计算机自己学习
  • 其他:强化学习和推荐系统

监督学习

利用监督学习预测波士顿房价(回归问题)

  • 大多数情况下,可能会拟合直线
  • 有时候用二次曲线去拟合效果可能会更好的 image.png

在监督学习中,我们给学习算法一个数据集,比如一系列房子的数据,给定数据集中每个样本的正确价格,即它们实际的售价然后运用学习算法,算出更多的答案,我们需要估算一个连续值的结果,这属于回归问题

利用监督学习来推测乳腺癌良性与否(分类问题)

  • 横轴表示肿瘤的大小
  • 纵轴表示1表示恶性,0表示良性

image.png

机器学习的问题就在于,估算出肿瘤是恶性的或是良性的概率,属于分类问题

分类问题指的是,我们试着推测出离散的输出值:0或1良性或恶性,而事实上在分类问题中,输出可能不止两个值。

比如说可能有三种乳腺癌,所以希望预测离散输出0、1、2、3。0 代表良性,1 表示第1类乳腺癌,2表示第2类癌症,3表示第3类,也是分类问题。

上面只有一个 feature (特征)的例子。下面有两个特征:病人的年纪和肿瘤大小。

image.png

无监督学习

  • 监督学习中,数据是有标签的
  • 无监督学习中,数据是没有标签,主要提到了聚类算法

image.png image.png

非监督学习的主要应用:

  • 基因学的理解应用
  • 社交网络分析
  • 组织大型计算机集群
  • 细分市场
  • 新闻事件分类

仅用一行代码就可以区分两个不同的声音

W,s,v=svd((repmat(sum(x.x,1),size(x,1),1).x)x[W,s,v] = svd((repmat(sum(x.^*x,1),size(x,1),1).^*x)^*x';

学习模式

image.png

学习过程解释:

  • 将训练集中的房屋价格喂给学习算法

  • 学习算法工作,输出一个函数,用h表示

  • h表示hypothesis,代表的是学习算法的解决方案或者函数。

  • h根据输入的x值得到y值,因此hx到的y的一个函数映射

  • 可能的表达式:只有一个特征或者出入变量,称为单变量线性回归问题

代价函数

代价函数也称之为平方误差函数,平方误差代价函数

在线性回归中我们有一个像这样的训练集,mmm代表了训练样本的数量,比如 m=47m = 47m=47。而我们的假设函数,也就是用来进行预测的函数,是这样的线性函数形式:

hθ​(x)=θ0​+θ1​x

  • m:训练样本的个数
  • hθh_θ(x) = θ0θ_0+ θ1θ_1x:假设函数
  • θ0θ_0 和θ1θ_1:表示两个模型参数,即直线的斜率和y轴上的截距

建模误差

建模的主要目标:

  1. 图中红色的点表示真实值yiy_i,真实的数据集
  2. h(x)h(x)表示的是通过模型得到的预测值
  3. 目标:选择出可以使得建模误差的平方和能够最小的模型参数

image.png

代价函数解释 1

image.png 本例中是通过假设θ0θ_0=0来进行,假设函数h(x)h(x)是关于x的函数,代价函数J(θ0,θ1)J(θ_0,θ_1)是关于θθθ_θ的函数,使得代价函数最小化

image.png

代价函数解释 2

通过等高线图来进行解释。通过绘制出等高线图可以看出来,必定存在某个点,使得代价函数最小,即:可以看出在三维空间中存在一个使得J(θ0,θ1)J(θ_0,θ_1)最小的点。

梯度下降

  • 背后的思想:开始随机选取一个参数的组合(θ0,θ1,,θn)(θ_0,θ_1,…,θ_n)计算代价函数,然后我们寻找下一个能让代价函数值下降最多的参数组合。

  • 持续这么做,直到一个局部最小值(local minimum),因为并没有尝试完所有的参数组合,所以不能确定得到的局部最小值是否是全局最小值(global minimum

image.png

批量梯度下降

image.png 具体描述:对θθ赋值,使得J(θ)J(θ)按照梯度下降最快的方向进行,一直迭代下去,最终得到局部最小值。

学习率:αα是学习率它决定了我们沿着能让代价函数下降程度最大的方向向下迈出的步子有多大。

  • 学习率太小:收敛速度慢需要很长的时间才会到达全局最低点
  • 学习率太大:可能越过最低点,甚至可能无法收敛

image.png

线性回归的梯度下降

image.png

θjJ(θ0,θ1)=θj[12mi=1m(hθ(x(i))y(i))2]\frac{\partial}{\partial \theta_{j}} J(\theta_{0}, \theta_{1}) = \frac{\partial}{\partial \theta_{j}} \left[ \frac{1}{2m} \sum_{i=1}^{m} \left( h_{\theta}(x^{(i)}) - y^{(i)} \right)^2 \right]

j=1 时:θ0J(θ0,θ1)=1mi=1m(hθ(x(i))y(i))\frac{\partial}{\partial \theta_{0}} J(\theta_{0}, \theta_{1}) = \frac{1}{m} \sum_{i=1}^{m} \left( h_{\theta}(x^{(i)}) - y^{(i)} \right)

j=0 时:θ1J(θ0,θ1)=1mi=1m[(hθ(x(i))y(i))x(i)]\frac{\partial}{\partial \theta_{1}} J(\theta_{0}, \theta_{1}) = \frac{1}{m} \sum_{i=1}^{m} \left[ \left( h_{\theta}(x^{(i)}) - y^{(i)} \right) \cdot x^{(i)} \right]

重复上面得到

Repeat {

θ0:=θ0α1mi=1m(hθ(x(i))y(i))\theta_{0}:=\theta_{0}-\alpha\frac{1}{m}\sum_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right)

θ1:=θ1α1mi=1m((hθ(x(i))y(i))x(i))\theta_{1}:=\theta_{1}-\alpha\frac{1}{m}\sum_{i=1}^{m}\left(\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right)\cdot x^{(i)}\right)

}

这种梯度下降的算法称之为批量梯度下降算法,主要特点:

  • 在梯度下降的每一步中,我们都用到了所有的训练样本
  • 在梯度下降中,在计算微分求导项时,我们需要进行求和运算,需要对所有m个训练样本求和