Oops!该文章已被删除

【Andrew Ng 机器学习】Week 1(二):代价函数和梯度下降

0x00 前言

本篇是第一周关于线性回归的代价函数和梯度下降算法的笔记。

0x01 模型和代价函数

一、模型表示

  • x^i:输入特征
  • y^i:输出结果,或者是想要预测的结果
  • (x^i , y^i):训练样本
  • h:代表学习算法的解决方案或函数,也称为假设(hypothesis)

要解决房价预测问题,我们实际上是要将训练集“喂”给我们的学习算法,进而学习得到一个假设h,然后将我们要预测的房屋的尺寸作为输入变量输入,预测出该房屋的交易价格作为y作为输出为结果。

那么线性回归的假设函数如下:

二、代价函数

代价函数(cost function)是用来衡量假设函数(hypothesis function )的准确度的。

直观上理解,代价函数越小,说明我们预测的结果和真实值越接近,因此最小化代价函数,就相当于最优化我们的模型。

如下是代价函数的表示,这个函数也叫均方误差函数,其中最前面的1/2m,是为了方便计算梯度下降。

以线性回归为例,我们训练模型,就是选择合适的参数值theta,使得h最小。如下图是当theta1=0.5时,假设函数h和代价函数的关系:

当theta1=1,是模型效果最好的取值,此时所有的预测值和真实值都相同,即代价函数值最小。

如下,是不同theta1取值,代价函数的变化:

当我们从单个 theta1 变量变为两个变量theta0和theta1时,代价函数J(theta0, theta1) 就变成下图所示,三维空间中的最小值,即theta0 和theta1的最佳取值。

0x02 梯度下降(Gradient Descent)

一、基本概念

我们有了假设函数h(x),也有了刻画模型训练好坏的代价函数J(theta0, theta1) ,那么该如何找到最优的参数使得J(theta0, theta1) 最小?梯度下降来了。

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

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

二、求解

梯度下降(gradient descent)算法的公式为:

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

计算方式图左侧的方式,右侧错误。更新的时候,需要对theta0和theta1同时更新。

三、学习速率

在梯度下降算法中,有一个学习速率alpha,它的大小取值对算法的影响如下:

如果alpha太小了,即我的学习速率太小,结果就是只能这样像小宝宝一样一点点地挪动,去努力接近最低点,这样就需要很多步才能到达最低点,所以如果太小的话,可能会很慢。

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

0xFF 总结

NG很贴心,专门补一下线代。

第一章的Cost Function和Gradient Descent主要以单变量线性回归为基础讲解的。后续每章都逐渐引入复杂的模型。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

编辑于

木东居士的专栏

81 篇文章52 人订阅

相关文章

来自专栏梦里茶室

读论文系列:Object Detection CVPR2016 YOLO

CVPR2016: You Only Look Once:Unified, Real-Time Object Detection 转载请注明作者:梦里茶 ? ...

3999
来自专栏生信小驿站

黑箱方法 支持向量机①

支持向量机(Support Vector Machine,SVM)是Corinna Cortes和Vapnik等于1995年首先提出的,它在解决小样本、非线性及...

732
来自专栏人工智能

机器学习的基础讲解:神经网络

AiTechYun 编辑:yuxiangyu 在之前的文章中,我通过展示学习过程中成本函数和梯度下降的核心作用,阐述了机器学习的工作原理。本文以此为基础,探索神...

2138
来自专栏数据科学与人工智能

【知识】图解机器学习

每当提到机器学习,大家总是被其中的各种各样的算法和方法搞晕,觉得无从下手。确实,机器学习的各种套路确实不少,但是如果掌握了正确的路径和方法,其实还是有迹可循的,...

2165
来自专栏华章科技

你是合格的机器学习数据科学家吗?来挑战这40题吧!(附解答)

目前机器学习是最抢手的技能之一。如果你是一名数据科学家,那就需要对机器学习很擅长,而不只是三脚猫的功夫。作为 DataFest 2017 的一部分,Analyt...

822
来自专栏marsggbo

Andrew Ng机器学习课程笔记--week5(下)

Neural Networks: Learning 内容较多,故分成上下两篇文章。 一、内容概要 Cost Function and Backpropagat...

1947
来自专栏机器之心

资源 | 如何只用NumPy码一个神经网络

注:本文将包含大量用 Python 编写的代码片段。希望读起来不会太无聊。:)所有源代码都可以在作者的 GitHub 上找到。链接:https://github...

702
来自专栏人工智能

未来的人工智能将有神经元结构?谷歌 Tensorflow 系统已经实现

神经网络是Tensorflow最擅长的机器学习领域。TensorFlow拥有一套符号引擎,它使得训练复杂模型变得更简单和方便。通过这套符号引擎,我们能够实现许多...

1839
来自专栏大数据挖掘DT机器学习

支持向量机及Python代码实现

做机器学习的一定对支持向量机(support vector machine-SVM)颇为熟悉,因为在深度学习出现之前,SVM一直霸占着机器学习老大哥...

4216
来自专栏专知

【机器学习实战】理解Scikit-Learn中分类性能度量指标

【导读】本文是数据科学家Andrew Long撰写的技术博文,介绍了在分类模型中需要用到的度量标准以及对应Python中Scikit-Learn库实战。本文就举...

1151

扫码关注云+社区