笔记:机器学习——吴恩达 第一周

课程目录

一、 引言(Introduction)
1.1 欢迎
1.2 机器学习是什么?
1.3 监督学习
1.4 无监督学习

二、单变量线性回归(Linear Regression with One Variable)
2.1 模型表示
2.2 代价函数
2.3 代价函数的直观理解I
2.4 代价函数的直观理解II
2.5 梯度下降
2.6 梯度下降的直观理解
2.7 梯度下降的线性回归
2.8 接下来的内容

三、线性代数回顾(Linear Algebra Review)
3.1 矩阵和向量
3.2 加法和标量乘法
3.3 矩阵向量乘法
3.4 矩阵乘法
3.5 矩阵乘法的性质
3.6 逆、转置

笔记内容


一、 引言(Introduction)

1.2 机器学习是什么?

       由 卡内基梅隆大学的Tom Mitchell 提出,一个程序被认为能从经验 E 中学习,解决任务 T,达到性能度量值P。比如经验e 就是程序上万次的自我练习的经验而任务 t 就是下棋。性能度量值 p ,就是它在与一些新的对手比赛时,赢得比赛的概率。 

      主要有两种类型:监督学习无监督学习。这里简单说两句,监督学习是指,我们将教计算机如何去完成任务,而在无监督学习中,是让它自己进行学习。


1.3监督学习 

笔记:机器学习——吴恩达 第一周

       监督学习指的就是我们给学习算法一个数据集。这个数据集由“正确答案”组成。在房价的例子中,我们给定数据集中每个样本的正确价格,即它们实际的售价,然后运用学习算法,算出更多的正确答案。用术语来讲,这也叫做回归问题。因为我们试着推测出一个连续值的结果,即房子的价格。

       回归问题,即试着推测这一系列连续值属性。 

笔记:机器学习——吴恩达 第一周

       这个数据集中,横轴表示肿瘤的大小,纵轴上,1 和 0 表示是或者不是恶性肿瘤。假设说肿瘤大概这么大,那么机器学习的问题就在于,能否估算出肿瘤是恶性的或是良性的概率。用术语来讲,这是一个分类问题。 

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

笔记:机器学习——吴恩达 第一周

       在其它一些机器学习问题中,可能会遇到不止一种特征。以后会讲一个算法,叫支持向量机,里面有一个巧妙的数学技巧,能让计算机处理无限多个特征。

       回顾一下,这节课我们介绍了监督学习。其基本思想是,我们数据集中的每个样本都有相应的“正确答案”,再根据这些样本作出预测。我们还介绍了回归问题,即通过回归来推出一个连续的输出;之后我们介绍了分类问题,其目标是推出一组离散的结果。 


1.4无监督学习 

       在无监督学习中,我们基本上不知道结果会是什么样子,但我们可以通过聚类的方式从数据中提取一个特殊的结构。在无监督学习中给定的数据是和监督学习中给定的数据是不一样的。在无监督学习中给定的数据没有任何标签或者说只有同一种标签。

       笔记:机器学习——吴恩达 第一周

       如上图所示,在无监督学习中,我们只是给定了一组数据,我们的目标是发现这组数据中的特殊结构。例如我们使用无监督学习算法会将这组数据分成两个不同的簇,,这样的算法就叫聚类算法


二、单变量线性回归(Linear Regression with One Variable) 

 2.1模型表示 

      我们的第一个学习算法是线性回归算法

笔记:机器学习——吴恩达 第一周

       它被称作监督学习是因为对于每个数据来说,我们给出了“正确的答案”,即告诉我们:根据我们的数据来说,房子实际的价格是多少。所以这是一个回归问题

      同时,还有另一种最常见的监督学习方式,叫做分类问题,当我们想要预测离散的输出值,例如,我们正在寻找癌症肿瘤,并想要确定肿瘤是良性的还是恶性的,这就是 0/1 离散输出的问题。

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

  m  代表训练集中实例的数量 
  x   代表特征/输入变量 
  y   代表目标变量/输出变量 
 (x,y)   代表训练集中的实例 
 (x(i),y(i))   代表第 i 个观察实例 
  h     代表学习算法的解决方案或函数也称为假设(hypothesis) 

笔记:机器学习——吴恩达 第一周

     要解决房价预测问题,我们实际上是要将训练集“喂”给我们的学习算法,进而学习得到一个假设 h。h 代表 hypothesis(假设) ,h 根据输入的 x 值来得出 y 值,y 值对应房子的价格 因此,h 是一个从  y 的函数映射。 然后将我们要预测的房屋的尺寸作为输入变量输入给 h,预测出该房屋的交易价格作为输出变量输出为结果。

       一种可能的表达方式为: 笔记:机器学习——吴恩达 第一周, 因为只含有一个特征/输入变量,因此这样的问题叫作单变量线性回归问题


2.2 代价函数 

       在这段视频中我们将定义代价函数的概念,这有助于我们弄清楚如何把最有可能的直线与我们的数据相拟合。如图: 

笔记:机器学习——吴恩达 第一周

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

笔记:机器学习——吴恩达 第一周

       我们的目标便是选择出可以使得建模误差的平方和能够最小的模型参数。即使得代价函数笔记:机器学习——吴恩达 第一周 最小。

       我们绘制一个等高线图,三个坐标分别为 θ0 和 θ1 和 J(θ0,θ1): 

笔记:机器学习——吴恩达 第一周

则可以看出在三维空间中存在一个使得 J(θ0,θ1)最小的点。 

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


2.3 代价函数的直观理解 I 

       在上一个视频中,我们给了代价函数一个数学上的定义。在这个视频里,让我们通过一些例子来获取一些直观的感受,看看代价函数到底是在干什么。 

 笔记:机器学习——吴恩达 第一周笔记:机器学习——吴恩达 第一周


2.4 代价函数的直观理解 II 

         笔记:机器学习——吴恩达 第一周

      代价函数的样子,等高线图,则可以看出在三维空间中存在一个使得 J(θ0,θ1)最小的点。 

笔记:机器学习——吴恩达 第一周                笔记:机器学习——吴恩达 第一周

       我们真正需要的是一种有效的算法,能够自动地找出这些使代价函数 J 取最小值的参数 θ0 和 θ1 来。 在下一节视频中,我们将介绍一种算法,能够自动地找出能使代价函数 J 最小化的参数 θ0 和 θ1 的值。


2.5梯度下降 

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

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

 笔记:机器学习——吴恩达 第一周

       想象一下你正站立在山的这一点上,在梯度下降算法中,我们要做的就是旋转 360 度,看看我们的周围,并在某个方向上,用小碎步尽快下山。这些小碎步需要朝什么方向?如果我们站在山坡上的这一点,你看一下周围,你会发现最佳的下山方向,你再看看周围,然后再一次想想,我应该从什么方向迈着小碎步下山?然后你按照自己的判断又迈出一步,重复上面的步骤,从这个新的点,你环顾四周,并决定从什么方向将会最快下山,然后又迈进了一小步,并依此类推,直到你接近局部最低点的位置。 

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

 笔记:机器学习——吴恩达 第一周

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

笔记:机器学习——吴恩达 第一周

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

       同时更新梯度下降中的一种常用方法。我们之后会讲到,同步更新是更自然的实现方法。当人们谈到梯度下降时,他们的意思就是同步更新。 


2.6梯度下降的直观理解 

       在之前的视频中,我们给出了一个数学上关于梯度下降的定义,本次视频我们更深入研究一下,更直观地感受一下这个算法是做什么的,以及梯度下降算法的更新过程有什么意义。梯度下降算法如下图: 

笔记:机器学习——吴恩达 第一周

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

笔记:机器学习——吴恩达 第一周

       对于这个问题,求导的目的,就是取这个红点的切线的斜率,现在,这条线有一个正斜率,也就是说它有正导数,因此,我得到的新的 θ1,θ1 更新后等于 θ1 减去一个正数乘以 α。 
       梯度下降法的更新规则:笔记:机器学习——吴恩达 第一周

       如果 α 太小或 α 太大会出现什么情况?

       如果 α 太小了,即学习速率太小,结果就是只能一点点地挪动,去努力接近最低点,这样就需要很多步才能到达最低点。
       如果 α 太大,那么梯度下降法可能会越过最低点,甚至可能无法收敛,下一次迭代又移动了一大步,越过一次,又越过一次,一次次越过最低点,直到你发现实际上离最低点越来越远。所以,如果 α 太大,它会导致无法收敛,甚至发散。 

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

      假设你将 θ1初始化在局部最低点,在这儿,它已经在一个局部的最优处或局部最低点。结果是局部最优点的导数将等于零。这意味着你已经在局部最优点,它使得 θ1不再改变,也就是新的 θ1等于原来的 θ1。因此,如果你的参数已经处于局部最低点,那么梯度下降法更新其实什么都没做,它不会改变参数的值。

      我们来看一个例子,这是代价函数 J(θ)。 

 笔记:机器学习——吴恩达 第一周 

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

       这就是梯度下降算法,你可以用它来最小化任何代价函数 J,不只是线性回归中的代价函数 J。 在接下来的视频中,我们要用代价函数 J,回到它的本质,线性回归中的代价函数。也就是我们前面得出的平方误差函数,结合梯度下降法,以及平方代价函数,我们会得出第一个机器学习算法,即线性回归算法。 


2.7 梯度下降的线性回归

       在以前的视频中我们谈到关于梯度下降算法,梯度下降是很常用的算法。在这段视频中,我们要将梯度下降和代价函数结合。我们将用到此算法,并将其应用于具体的拟合直线的线性回归算法里。 

        梯度下降算法和线性回归算法比较如图:

笔记:机器学习——吴恩达 第一周

        对我们之前的线性回归问题运用梯度下降法,关键在于求出代价函数的导数,即: 

笔记:机器学习——吴恩达 第一周

     则算法改写成:

笔记:机器学习——吴恩达 第一周

       我们刚刚使用的算法,有时也称为批量梯度下降。指的是在梯度下降的每一步中,我们都用到了所有的训练样本,在梯度下降中,在计算微分求导项时,我们需要进行求和运算,所以,在每一个单独的梯度下降中,我们最终都要对所有 m 个训练样本求和。因此,批量梯度下降法这个名字说明了我们需要考虑所有这一"批"训练样本。
       而事实上,有时也有其他类型的梯度下降法,不是这种"批量"型的,不考虑整个的训练集,而是每次只关注训练集中的一些小的子集。在后面的课程中,我们也将介绍这些方法。 

       有一种计算代价函数 J 最小值的数值解法,不需要梯度下降这种迭代算法。它可以在不需要多步梯度下降的情况下,也能解出代价函数 J 的最小值,这是另一种称为正规方程(normal equations)的方法。实际上在数据量较大的情况下,梯度下降法比正规方程要更适用一些。 

      在下一段视频中,告诉你泛化的梯度下降算法,这将使梯度下降更加强大。 


2.8 接下来的内容

       线性代数不仅仅在线性回归中应用广泛,它其中的矩阵和向量将有助于帮助我们实现之后更多的机器学习模型,并在计算上更有效率。正是因为这些矩阵和向量提供了一种有效的方式来组织大量的数据,特别是当我们处理巨大的训练集时。事实上,为了实现机器学习算法,我们只需要一些非常非常基础的线性代数知识。