吴恩达机器学习day1(单变量线性回归)

一.模型表示

**引例:**预测房价,我们要使用一个数据集,数据集包含XX市的住房价格。在这里我们根据不同的房屋尺寸所售的价格,画出我的数据集,我们就可以建造一个数据模型,得到需要的大概价格【类似监督学习,被称为回归问题】

【1】回归问题的标记

我们将要用来描述这个回归问题的标记如下:

m 代表训练集中实例的数量

x 代表特征/输入变量

y 代表目标变量/输出变量

(x,y)代表训练集中的实例

(x^ i,y^i)代表第i 个观察实例

h代表学习算法的解决方案或函数也称为假设(hypothesis)

【2】实例

h 表示一个函数,输入是房屋尺寸大小,就像你朋友想出售的房屋,因此 根据输入的 x值来得出 y值,y值对应房子的价格 因此, 是一个从 x到 y的函数映射。
函数可以写成在这里插入图片描述

因为只含有一个特征/输入变量,因此这样的问题叫作单变量线性回归问题。

二.代价函数J

【1】公式思考

【1】我们会引入一些术语我们现在要做的便是为我们的模型选择合适的参数(parameters) Θ0和θ1,在房价问题这个例子中便是直线的斜率和在y轴上的截距。
在这里插入图片描述

由此可见:我们对参数的选择很重要,需要控制参数来减少误差

【2】选择的参数决定了我们得到的直线相对于我们的训练集的准确程度,模型所预测的值与训练集中实际值之间的差距(下图中蓝线所指)就是建模误差(modeling error)。
【3】我们的目标便是选择出可以使得建模误差的平方和能够最小的模型参数。 即使得代价函数在这里插入图片描述

最小。
【4】我们绘制一个等高线图,三个坐标分别为θ0 和 θ1和J(θ0,θ1):
在这里插入图片描述
则可以看出在三维空间中存在一个使得J(θ0,θ1)最小的点。
总结

总结:代价函数也被称作平方误差函数,有时也被称为平方误差代价函数。我们之所以要求出误差的平方和,是因为误差平方代价函数,对于大多数问题,特别是回归问题,都是一个合理的选择。还有其他的代价函数也能很好地发挥作用,但是平方误差代价函数可能是解决回归问题最常用的手段了。

【2】代价函数J的直观理解

在这里插入图片描述
为了使可视化,则简化函数
在这里插入图片描述
这是参数θ0=0,所以这么化简但是通常境况这是不成立的,所以:

【3】代价函数的直观理解II

在这里插入图片描述
代价函数的样子,等高线图,则可以看出在三维空间中存在一个使得最小的点。
参数各不相同得到的J(参数1,参数2)也就不同
在这里插入图片描述
能够自动地找出这些使代价函数取最小值的参数来。

三.梯度下降算法

【1】初步了解

梯度下降是一个用来求函数最小值的算法,我们将使用梯度下降算法来求出代价函数 的最小值。

【2】梯度下降背后的思想

梯度下降背后的思想是:开始时我们随机选择一个参数的组合,计算代价函数,然后我们寻找下一个能让代价函数值下降最多的参数组合。我们持续这么做直到到到一个局部最小值(local minimum),因为我们并没有尝试完所有的参数组合,所以不能确定我们得到的局部最小值是否便是全局最小值(global minimum),选择不同的初始参数组合,可能会找到不同的局部最小值。

【3】过程体验

在这里插入图片描述
过程分析:从这个新的点,你环顾四周,并决定从什么方向将会最快下山,然后又迈进了一小步,并依此类推,直到你接近局部最低点的位置。

【4】批量梯度下降算法的公式

批量梯度下降(batch gradient descent)算法的公式为
在这里插入图片描述
我们需要反复做这一步,直到收敛
【1】
其中a是学习率(learning rate),它决定了我们沿着能让代价函数下降程度最大的方向向下迈出的步子有多大,在批量梯度下降中,我们每一次都同时让所有的参数减去学习速率乘以代价函数的导数。
【2】
还有一个更微妙的问题,梯度下降中,我们要更新θ1和 θ0,当 j=0和j=1时,会产生更新θ0,θ1,所以你将更新j(θ0)和j(θ1)。实现梯度下降算法的微妙之处是,在这个表达式中,如果你要更新这个等式,你需要同时更新θ0和θ1,我的意思是在这个等式中,我们要这样更新:

θ0:= θ0 ,并更新θ1:= θ1。
【3】
实现方法是:你应该计算公式右边的部分,通过那一部分计算出θ0和θ1的值,然后同时更新θ0和θ1。

【5】梯度下降的直观理解

1. 描述

:对θ赋值,使得J(θ)按梯度下降最快方向进行,一直迭代下去,最终得到局部最小值。其中是α学习率(learning rate),它决定了我们沿着能让代价函数下降程度最大的方向向下迈出的步子有多大。
在这里插入图片描述

2.求导的目的

取这个红点的切线,就是这样一条红色的直线,刚好与函数相切于这一点,看到红色直线的斜率,就是这条刚好与函数曲线相切的这条直线,这条直线的斜率正好是这个三角形的高度除以这个水平长度,现在,这条线有正斜率,有正导数,因此,θ1更新后等于减去一个正数乘以a。

3.a学习率的讨论

让我们来看看如果a太小或太大会出现什么情况:

1.如果太小了,即我的学习速率太小,结果就是需要很多步才能到达最低点,所以如果太小的话,可能会很慢,因为它会一点点挪动,它会需要很多步才能到达全局最低点。

2如果太大,那么梯度下降法可能会越过最低点,甚至可能无法收敛,下一次迭代又移动了一大步,越过一次,又越过一次,一次次越过最低点,直到你发现实际上离最低点越来越远,所以,如果太大,它会导致无法收敛,甚至发散。

4.如果θ1放在最低点

如果我们预先把放在一个局部的最低点,你认为下一步梯度下降法会怎样工作?

假设你将初始化在局部最低点,在这儿,它已经在一个局部的最优处或局部最低点。结果是局部最优点的导数将等于零,因为它是那条切线的斜率。这意味着你已经在局部最优点,它使得不再改变,也就是新的等于原来的,因此,如果你的参数已经处于局部最低点,那么梯度下降法更新其实什么都没做,它不会改变参数的值。这也解释了为什么即使学习速率保持不变时,梯度下降也可以收敛到局部最低点。
在这里插入图片描述
首先初始化我的梯度下降算法,在那个品红色的点初始化,如果我更新一步梯度下降,到绿点,因为这个点的导数是相当陡的。在这个绿色的点,如果我再更新一步,你会发现我的导数是没那么陡的。随着我接近最低点,我的导数越来越接近零,所以,梯度下降一步后,新的导数会变小一点点。更接近全局最低点了,所以,我再进行一步梯度下降时,我的导数项是更小的,更新的幅度就会更小。所以随着梯度下降法的运行,你移动的幅度会自动变得越来越小,直到最终移动幅度非常小,直到,已经收敛到局部极小值。
在梯度下降法中,当我们接近局部最低点时,梯度下降法会自动采取更小的幅度,这是因为当我们接近局部最低点时,很显然在局部最低时导数等于零,所以当我们接近局部最低时,导数值会自动变得越来越小,所以梯度下降将自动采取较小的幅度,这就是梯度下降的做法。所以实际上没有必要再另外减小。

【6】梯度下降的线性回归

在这里插入图片描述
在这里插入图片描述
算法改为:
在这里插入图片描述
批量梯度下降”,指的是在梯度下降的每一步中,我们都用到了所有的训练样本,在梯度下降中,在计算微分求导项时,我们需要进行求和运算,所以,在每一个单独的梯度下降中,我们最终都要计算这样一个东西,这个项需要对所有个训练样本求和。因此,批量梯度下降法这个名字说明了我们需要考虑所有这一"批"训练样本,而事实上,有时也有其他类型的梯度下降法,不是这种"批量"型的,不考虑整个的训练集,而是每次只关注训练集中的一些小的子集。
具体的算法过程:
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值