吴恩达机器学习课程笔记+代码实现(2)单变量线性回归和梯度下降(Linear Regression with One Variable and Gradient Descent)

2.单变量线性回归和梯度下降(Linear Regression with One Variable and Gradient Desce

2.1 模型表示

线性回归算法,根据不同房屋尺寸预测住房价格,如果房子是1250平方尺大小,这房子能卖多少钱?首先可以构建一个模型,可能是条直线,从这个数据模型上来看,大约220000(美元)左右的价格可以卖掉这个房子。


对于每个数据来说,我们给出了“正确的答案”,这是一个回归问题,即根据之前的数据预测出一个准确的输出值,对于这个例子就是价格。
在监督学习中的数据集被称训练集。

以房价预测问题为例,回归问题的训练集(Training Set)如下表所示:


m 代表训练集中实例的数量
x 代表特征/输入变量
y代表目标变量/输出变量
( x , y ) \left( x,y \right)(x,y) 代表训练集中的实例
({{x}^{(i)}},{{y}^{(i)}})代表第i个观察实例


  这就是监督学习算法的工作方式,可以看到训练集里的房屋价格把它给学习算法计算了,然后输出一个函数,通常表示为小写 h 表示。 h代表hypothesis(假设), 输入是房屋尺寸大小,输出是对应房子的价格,因此 h 是一个从xy的函数映射。
  对于房价预测问题,该如何表达h
  h_θ ( x ) = θ_0 + θ_1 x,只含有一个特征/输入变量,因此这样的问题叫作单变量线性回归问题

2.2代价函数


  接下来要做的便是为模型选择合适的参数(parameters)θ_0θ_1 ,在房价问题例子中便是直线的斜率和在y 轴上的截距。

  参数的选择决定了得到的直线相对于训练集的准确程度,模型所预测的值与训练集中实际值之间的差距(下图中蓝线所指)就是建模误差(modeling error)。


目标是选择出可以使得建模误差的平方和能够最小的模型参数。
即使得代价函数 J(θ_0 , θ_1) = \frac{1}{2m}\sum\limits_{i=1}^m ( h_θ ( x^{(i)} ) − y ^{(i)} ) ^2 最小

  绘制一个等高线图,三个坐标分别为θ_0θ_1J(θ_0 , θ_1)

  可以看出在三维空间中存在一个使得J ( θ_0 , θ_1 )最小的点
  对于代价函数的直观理解

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

为什么是除以2m

无论除以2m还是m,代价函数最优化的结果\theta都是相同的。利用梯度下降法对J求导,如果是2m,求导结果为:

\frac{∂J}{∂{θ}_{i}}=\frac{1}{m}\sum_{i=1}^{m}\left({h}_{\theta} ({x}^{(i)})−{y}^{(i)}\right)\frac{∂{h}_{\theta}{\left ({x}^{(i)}\right)}}{∂θ}
这里正好除以m,便于计算。

2.3 梯度下降

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


  批量梯度下降(batch gradient descent)算法的公式:


  其中a 是学习率(learning rate),决定了沿着能让代价函数下降程度最大的方向向下迈的步子有多大,在批量梯度下降中,每一次都同时让所有的参数减去学习速率乘以代价函数的导数。

  在梯度下降中,我们要更新θ_0θ_1,当 j = 0或者j = 1时更新,所以将更新J\left( {\theta_{0}} \right)和)J(θ_1)。实现梯度下降算法的微妙之处是在这个表达式中,如果要更新这个等式,需要同时更新θ_0θ_1,需要这样更新:
θ_0:=θ_0θ_1:=θ_1
  实现方法:计算出θ_0θ_1的值,然后同时更新θ_0θ_1

2.4 梯度下降的直观理解

  梯度下降算法是做什么的,梯度下降算法的更新过程有什么意义?
梯度下降算法:θ_j:= θ_j−α \frac{∂}{∂θ_j} J(θ)
  对 θ赋值,使得J ( θ )按梯度下降最快方向进行,一直迭代下去,最终得到局部最小值


  取该曲线在红点的切线,这条红色直线的斜率正好是这个三角形的高度除以这个水平长度,这条线有一个正斜率,也就是说它有正导数,因此,可以得到的新的{\theta_{1}}{\theta_{1}}更新后等于{\theta_{1}}减去一个正数乘以a

  这就是梯度下降法的更新规则:{\theta_{j}}:={\theta_{j}}-\alpha \frac{\partial }{\partial {\theta_{j}}}J\left( \theta \right)

如果a太小或a太大会出现什么情况?
  • 如果a太小,即学习速率太小,结果就是只能一点点地挪动,可能会很慢,需要很多步才能到达全局最低点。
  • 如果a太大,那么梯度下降法可能会越过最低点,甚至可能无法收敛,下一次迭代又移动了一大步,越过一次,又越过一次,一次次越过最低点,直到发现离最低点越来越远,所以,a太大会导致无法收敛,甚至发散。

  如果{\theta_{1}}初始化在局部最低点,结果是局部最优点的导数将等于零,它使得{\theta_{1}}的值不再改变,也就是新的{\theta_{1}}等于原来的{\theta_{1}}
  如果参数已经处于局部最低点,那么其实梯度下降法更新什么都没做,它不会改变参数的值。这也解释了为什么即使学习速率a保持不变时,梯度下降也可以收敛到局部最低点。

  在梯度下降法中,当接近局部最低点时,梯度下降法会自动采取更小的幅度,这是因为在局部最低点时导数等于零,所以当我们接近局部最低时,导数值会变得越来越小,所以梯度下降会自动采取较小的幅度,所以并没有必要再另外减小a

梯度下降的线性回归

梯度下降算法和线性回归算法的比较


对比之前的线性回归问题运用梯度下降法,关键在于求出代价函数的导数,即:
\frac{\partial }{\partial {{\theta }_{j}}}J({{\theta }_{0}},{{\theta }_{1}})=\frac{\partial }{\partial {{\theta }_{j}}}\frac{1}{2m}{{\sum\limits_{i=1}^{m}{\left( {{h}_{\theta }}({{x}^{(i)}})-{{y}^{(i)}} \right)}}^{2}}

j = 0时:\frac{\partial }{\partial {{\theta }_{0}}}J({{\theta }_{0}},{{\theta}_{1}})=\frac{1}{m}{{\sum\limits_{i=1}^{m}{\left( {{h}_{\theta}}({{x}^{(i)}})-{{y}^{(i)}} \right)}}}

j = 1时:\frac{\partial }{\partial {{\theta }_{1}}}J({{\theta }_{0}},{{\theta }_{1}})=\frac{1}{m}\sum\limits_{i=1}^{m}{\left( \left( {{h}_{\theta }}({{x}^{(i)}})-{{y}^{(i)}} \right)\cdot {{x}^{(i)}} \right)}

则算法改写成:
Repeat {
  {\theta_{0}}:={\theta_{0}}-a\frac{1}{m}\sum\limits_{i=1}^{m}{ \left({{h}_{\theta }}({{x}^{(i)}})-{{y}^{(i)}} \right)}
  {\theta_{1}}:={\theta_{1}}-a\frac{1}{m}\sum\limits_{i=1}^{m}{\left( \left({{h}_{\theta }}({{x}^{(i)}})-{{y}^{(i)}} \right)\cdot {{x}^{(i)}} \right)}
}
  这种算法,也被叫为批量梯度下降,指的是在梯度下降的每一步中,都用到了所有的训练样本,在梯度下降过程中,计算微分求导项时,需要进行求和运算,所以在每一个单独的梯度下降中,最终都要对所有m个训练样本求和。因此,批量梯度下降法这个名字说明了需要考虑所有这一"批"训练样本。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,063评论 6 510
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,805评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,403评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,110评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,130评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,877评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,533评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,429评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,947评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,078评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,204评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,894评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,546评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,086评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,195评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,519评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,198评论 2 357