α解释:

有一个比较奇怪的问题是:
假设你将θ1初始化在局部最低点,它已经在一个局部的最优处或者局部最低点,局部最优点的导数为零,因为导数是切线的斜率,梯度下降法更新θ1的值将什么都不会做。

这也就解释了即使学习速率α保持不变,梯度下降法也可以收敛到局部最低点的原因。移动的幅度会越来越小,直到最终幅度非常小,此时已经收敛到局部极小值,所以没必要减小α的值

可以用梯度下降法来尝试最小化任何代价函数J,而不只是线性回归中的代价函数J。
第十二课:线性回归的梯度下降
本节课将梯度下降和代价函数结合,得到线性回归的算法,它可以用直线模型来拟合数据。


通过上式计算出微分以后,即代价函数J的斜率后,接下来就是将它代入我们的梯度下降算法:

不同于之前的梯度下降法坡度图,线性回归的代价函数总是一个弓状函数,术语叫做凸函数,这个函数没有局部最优解,只有一个全局最优,当你计算这种代价函数的梯度下降,只要你使用线性回归,它总是会收敛到全局最优,因为没有其他的局部最优解。

算法的使用:假设函数和代价函数的变化:


上面提到的算法也叫做Batch梯度下降算法,batch:意味着每一步梯度下降,我们都遍历了整个训练集的样本。所以,在梯度下降中,当计算偏导数时,我们计算总和,在每一个单独的梯度下降,我们最终计算m个样本的总和。
在高等线性代数中,存在一种解法求解代价函数J最小值,而不需要使用像梯度下降的迭代算法。它被称为正规方程组方法,相比于正规方程组解法,梯度下降适用于更大的数据集。
第十四课:矩阵和向量
矩阵是指由数字组成的矩形阵列。并写在方括号内。
实际上矩阵可以说是二维数组的另一种说法。
矩阵的维数应该写作:矩阵的行数乘以列数

如何表达矩阵的某个特定元素?

矩阵提供了一种很好的方式让你快速整理、索引和访问大量数据。
一个向量是一种特殊的矩阵,向量是只有一列的矩阵。
四维向量,即这个向量中包含四个元素。
如何引用向量的元素:

除非特别指定,应该默认向量下标是从1开始。
注意,在书写矩阵时,大多数人会使用大写字母A、B、C、X来表示矩阵,而使用小写字母a,b,x,y表示数字或是原始的数字或标量或向量。
第十五课:加法和标量乘法
如果你想让两个矩阵想,只需要将两个矩阵的每一个元素都逐个相加。

只有相同维度的两个矩阵才能相加。相加的结果与相加向量的维度相同。


第十五课:矩阵向量乘法
矩阵和向量相乘:



实际进行房屋价格的预测:

公式:prediction = Datametrix * parameters
第十七课:矩阵乘法
在线性回归中,迭代算法可以用于同时解决参数θ0和θ1的计算问题,而不需要梯度下降法,而迭代算法就必须要理解矩阵与矩阵之间的乘法。




通过矩阵乘法可以快速地得到12个基于3个假设对4个房屋预测得到的价格。且有很多线性代数库可以帮你实现矩阵乘法,任何编程语言都有线性代数库,且经过了高度优化,能够高效实现矩阵乘法,包括你电脑支持的并行计算,当你的电脑有多个调度或者进程,而只有一个处理器时,我们称之为计算机的SIMD并行,有非常不错的免费库,可以用来进行高效的矩阵间乘法运算,你可以基于众多假设进行预测。
第十八课:矩阵乘法特征
矩阵乘法的特性
矩阵乘法不符合交换律

矩阵乘法符合结合律

单位矩阵
单位矩阵的特征:沿对角线上都是1,其余位置都是0。
对于任何矩阵A,A乘以单位矩阵等于I乘以A等于A。

第十九课:逆和转置
只有方阵才有逆矩阵。
如果矩阵A中所有的元素都为0,那么这个矩阵仍然没有逆矩阵。以及一些其他的类似的矩阵,它们都没有逆矩阵。
用术语来说:不存在逆矩阵的矩阵,它的专有名词是奇异矩阵,或者叫退化矩阵。

怎么求逆矩阵?
你可以用笔算,但是有很多很好的软件,能够容易地对矩阵进行求逆运算,哈哈哈哈哈。
Octave:pinv(A)得到结果。
转置矩阵

第二十八课:多功能
单一变量:

多变量:

假设形式变化:
内积就是θ转置乘以X,即用参数向量θ以及特征向量X的内积来表示假设,这就是多特征量情况下的假设形式,也可以成为所谓的多元线性回归,多元就是表达用多个特征量或者变量来预测y值。
第二十九课:多元梯度下降法

和之前的单一参数算法是同样的,或者说是类似的:

上述就实现了多元线性回归模型!
个人认为你在求偏导数的时候,对于单一变量和多元变量,偏导数对应的系数是一样的,只是表达方式不同,一个是单纯的上标,而多元变量在上标的基础上对应了一个下标,这是多特征变量对应每个变量的标记方法。
第三十课:多元梯度下降法演练
本节课重点讲述特征缩放的方法。
如果你有一个机器学习问题,这个问题有多个特征,如果你能确保这些特征都处在一个相近的范围,能够确保不同特征的取值在相近的范围内,这样梯度下降法就能更快地收敛。
具体地说,假如你有一个具有两个特征的问题,两个值的比例为2000:5,那么在画出代价函数J(θ)的等值线就会呈现出一种非常歪斜且椭圆的形状,且这个椭圆会非常之细长,如果在这个图像上进行梯度下降的话,你的梯度最终可能需要花很长一段时间,并且可能来回波动,最终要经过很长时间才能收敛到全局最小值。
在这种情况下,一种有效的方法就是进行特征缩放。梯度下降算法就会找到一条更直接的路通向全局最小,即更快收敛。

总的来说,不用过于担心,你的特征是否在完全相同的范围或区间内,只要它们足够接近的话,梯度下降法就会正常地工作。

除了将特征除以最大值之外,在特征缩放中,有时候我们也会进行均值归一化。
U1是训练集中特征X1的平均值!S1是该特征值的范围(最大值-最小值/变量的标准差)!

只要将特征转化为相近似的范围都是可以的,特征缩放其实并不需要太精确,只是为了让梯度下降能够运行的更快而已,收敛所需的迭代次数更少。
第三十一课:多元梯度下降法II学习率

梯度下降算法所做的事就是为你找到一个θ值,并且希望它能够最小化代价函数J(θ)。下图中,X轴表示的是迭代次数。每一步迭代之后J(θ)都应该下降。所以通过这条曲线可以帮助你判断梯度下降算法是否已经收敛。对于每一个特定的问题,梯度下降算法所需的迭代次数可能相差很大。
另外,也可以进行一些自动的收敛测试,也就是让一种算法来告诉你梯度下降算法是否已经收敛,自动收敛测试,如果代价函数J(θ)一步迭代后的下降小于一个很小的值,这个测试就判断函数已经收敛,但是通常选择一个合适的阈值是非常困难的。因此,为了检查梯度下降算法是否已经收敛,还是更倾向于左边的这种曲线图,而不是依靠自动收敛测试。

看这种曲线图还可以告诉你或提前警告你算法没有正常工作。
学习率过大


第三十二课:特征和多项式回归
一些可供选择的特征以及如何得到不同的学习算法,这些算法往往是非常有效的。
使用多项式回归能够用线性回归的方法来拟合非常复杂的函数甚至是非线性函数。

通过定义新的特征可能会得到一个更好的模型。与选择特征的想法密切相关的概念被称为多项式回归。
例如,在房屋面积和房屋价格的曲线图中,如果我们选择二次函数拟合,前半段拟合的很好,但是明显房屋价格不会随着房屋面积的增大而下降,所以这里新建一个三次函数的模型,那么如何将新模型与数据进行拟合呢?使用多元线性回归的办法我们可以对算法做一个简单的修改来实现它。

但是除了转而建立一个三次模型以外,你也许有其他可选的特征,这里有很多可能的选项,还可能选择其他的合理选择的算法模型。如何将一个多项式,二次函数或者是三次函数拟合到你的数据上,还讨论了你可以自己选择使用哪些特征。后面的课程将会学到如何让算法自己选择模型,因此,你可以让算法观察给出的数据,并自动为你选择到底应该选择一个二次函数或者一个三次函数,还是别的函数。但是之前,你需要了解,你可以自由选择使用什么特征,并且通过设计不同的特征,你能够用更复杂的函数拟合数据,而不是一条直线去拟合,特别是,你可以使用多项式函数,有时如果从合适的角度来寻找特征,你就能得到一个更符合你的数据的模型。

第三十三课:正规方程
...未完待续
网友评论