Machine Learning Chinese NLP :::: Gradient Descent for Linear Regression - Chad Salinas ::: Data Scientist
Use Slidify to create motion charts to share with the world on rPubs Chad Salinas or GitHub.
Slidify, rPubs Chad Salinas, Motion Charts, Hans Rosling
1170
post-template-default,single,single-post,postid-1170,single-format-standard,qode-listing-1.0.1,qode-social-login-1.0,qode-news-1.0,qode-quick-links-1.0,qode-restaurant-1.0,ajax_fade,page_not_loaded,,qode-title-hidden,qode_grid_1300,qode-theme-ver-12.0.1,qode-theme-bridge,bridge,wpb-js-composer js-comp-ver-5.4.2,vc_responsive
a

Machine Learning Chinese NLP :::: Gradient Descent for Linear Regression

Gradient Descent in the Univariate Case

在前面的视频中 我们讨论了梯度下降算法和
线性回归模型、平方误差代价函数
在这段视频中 我们要将梯度下降和代价函数结合
在后面的视频中 我们将用到此算法 并将其应用于
具体的拟合直线的线性回归算法里

这就是我们在之前的课程里所做的工作
这是梯度下降法 这个算法你应该很熟悉
这是线性回归模型 还有线性假设
和平方误差代价函数
我们将要就是用梯度下降的方法
来最小化平方误差代价函数
为了使梯度下降 为了
写这段代码 我们需要的关键项是这里这个微分项
所以 我们需要弄清楚 这个偏导数项是什么
并结合这里的代价函数的定义
就是这样

用梯度下降的方法
这个误差平方项
我这样做 只是
把定义好的代价函数

插入了这个微分式 再简化一下 这等于是
这一个求和项 θ0 + θ1x(1) – y(i)
这一项其实就是我的假设的定义
然后把这一项放进去
实际上我们需要弄清楚这两个偏导数项是什么
这两项分别是 j=0和j=1的情况
因此我们要弄清楚θ0 和 θ1 对应的
偏导数项是什么
我只把答案写出来
事实上 第一项可简化为1 / m 乘以求和式
对所有训练样本求和 求和项是h(x(i))-y(i)
而这一项 对θ(1)的微分项
得到的是这样一项
h(x(i))-y(i) *x(i)
对吧
所以偏导数项 从这个等式
从这个等式到下面的等式
计算这些偏导数项需要一些多元微积分
如果你掌握了微积分
然后你检查你的微分 你实际上会得到我给出的答案
但如果你不太熟悉微积分 别担心
你可以直接用这些已经算出来的结果
你不需要掌握微积分或者别的东西
来完成作业 你只需要会用梯度下降就可以

在定义这些以后 在我们算出这些微分项以后
这些微分项实际上就是代价函数J的斜率

现在可以将它们放回我们的梯度下降算法
所以这就是
专用于线性回归的梯度下降 反复执行括号中的式子直到收敛
θ0和θ1不断被更新 都是加上一个-α/m 乘上后面的求和项

所以这里这一项

所以这就是我们的线性回归算法

事实上 第一项可简化为

当然 这一项就是关于θ0的偏导数
在上一张幻灯片中推出的
而第二项 这一项是刚刚推导出的
关于θ1的偏导数项 对θ(1)的微分项
提醒一下 在做梯度下降的时候
就是必须要
同时更新θ0和θ1

所以
让我们来看看梯度下降是如何工作的
我们用梯度下降解决问题的一个原因是 它更容易得到
局部最优值
当我第一次解释梯度下降时 我展示过这幅图
在表面上不断下降 并且我们知道了 根据你的初始化
你会得到不同的局部最优解
你知道 最后可能会到这里 到这里
但是事实证明 用于线性回归的代价函数
总是这样一个弓形的样子
这个函数的专业术语是凸函数

Chad Salinas working on Plotly

Chad Salinas working on analytics project.

Chad Salinas late nighter
我不打算在这门课中 给出凸函数的定义
C O N V E X
但不正式的说法是它就是一个弓形的函数
因此这个函数没有任何局部最优解
并且无论什么时候 你对这种代价函数使用线性回归
只有一个全局最优解
因为没有别的局部 全局最优解
我们在实际中来看这个算法

像往常一样 这里有假设函数和我的成本函数 J 的图
我们假设将初始值定在这里
通常来说 初始化参数为零
θ0和θ1都在零
但为了展示需要 在这个梯度下降的实现中
我把θ0初始化为-900 θ1初始化为-0.1
也就是h(x)=-900-0.1x
这一行是代价函数
现在我们做梯度下降中的一步
我们从这里往下
到第二点这里
你注意到这条线有些变化
在我做梯度下降的另一步时 我左侧的线发生了变化

是吧
我的代价函数也到了一个新的位置

我做更多次梯度下降之后 我的代价下降了
我的参数遵循这样的轨迹

如果你看左侧 这与假设对应
看起来与数据有更好的拟合

直到最后 我到了全局最小值的位置
对应这个假设的全局最小值 我就能得到与数据很好地拟合了

这就是梯度下降 我们运行了它
与我的房价数据有了很好的拟合
你可以用它来预测
如果你的朋友有1250平方英尺的房子
你现在可以预测它的价值 并告诉他们
也许他们的房子能拿到25万美元
最后只是给它另一个名字
我们刚刚做的算法有时被称为批量梯度下降
原来在机器学习中 我不觉得我们机器学习的
人们并不总是擅长给算法起名字
但术语 批处理梯度下降 指的是一个事实
在梯度下降的每一步 我们都在看所有的训练例子
因此梯度下降中计算导数的时候
我们计算这个总和
因此任何步骤的梯度下降 我们最终计算这样的东西
我们m个训练例子的综合 所以术语批次梯度下降指的是
事实上 我们找的是整个批次的训练例子
这真的不是一个伟大的名字
这就是机器学习者的叫法
事实证明 有时有梯度下降的其他版本
不是成批处理的
它们不是去看整个训练集
而是每次去看训练集中的小子集
我们还将在本课程的后面讨论这些版本
但目前使用的算法 我们刚刚了解 使用的批量梯度下降法
你现在知道如何在线性回归中实现梯度下降

这就是梯度下降的线性回归
如果你以前看过高等线性代数
你们中的一些人可能上了高等线性代数的课
你可能知道 有一个解决方案
代价函数J的数值解法
不需要使用梯度下降这样的迭代法
在本课程的后面 我们将讨论该方法
就可以在求解代价函数最小值时不用梯度下降
这么多步骤
另一种方法称为正规方程法
但万一你听说过这种方法
实际上梯度下降比它在大数据当中更好用
现在我们知道了梯度下降法 我们可以将它
用到不同情境当中
我们也会用到各类机器学习算法当中

祝贺你学到了你的第一个机器学习算法
之后我们有练习 让你去练习梯度下降算法
希望这些对你的胃口
但在这之前 我要说在之后的一系列视频当中
第一个就是告诉你
梯度下降算法的一般化 让它更有用
我想我会在下个视频告诉你

Let the dataset change your mindset

– Hans Rosling
No Comments

Sorry, the comment form is closed at this time.