1.学习率
梯度下降公式
(在每次迭代的过程中改变的是w,b的值,因为w,b可以任意改变,所以迭代的次数可以是无限的)
这个图很重要,通过这个图可以观察梯度下降是在正常的工作,
学习率的大小对迭代过程中代价函数的影响
看来学习率太高了。解不收敛。成本在增加而不是减少。
右边的图显示了其中一个参数𝑤0的值。在每次迭代中,它都超过了最优值,结果,成本最终增加而不是接近最小值。请注意,这不是一个完全准确的图片,因为有4个参数被修改,而不是只有一个。这个图只显示了𝑤0,其他参数固定在良性值。在这张图和后面的图中,你可能会注意到蓝色和橙色的线略有偏离。让我们尝试一个小一点的值,看看会发生什么。
成本在整个运行过程中不断下降,这表明alpha并不太大。
在左边,你可以看到成本正在下降。在右边,您可以看到𝑤0仍然在最小值附近振荡,但是每次迭代它都在减少而不是增加。请注意,dj_dw[0]在每次迭代中都会改变符号,因为w[0]会跳过最优值。这个值会收敛。您可以改变迭代次数来查看它的行为。
让我们为𝛼尝试稍微小一点的值,看看会发生什么。
成本在整个运行过程中不断下降,这表明𝛼并不太大。
在左边,你可以看到成本正在下降。在右边,您可以看到𝑤0正在减少,但没有越过最小值。注意,dj_w0在整个运行过程中都是负的。这个解也会收敛,尽管没有前面的例子快。
2.特征缩放
当特征值的差距过大,在梯度下降的过程中会产生影响,比如特征1(x1)房子的面积(100-1000),特征2(x2)卧室的个数(1-3),这时需要进行特征缩放,让各个特征处于差不多的范围内,这样有利于梯度下降的过程。
让我们再看看𝛼= 9e-7的情况。这非常接近我们可以在不发散的情况下设置𝛼的最大值。这是显示最初几次迭代的简短运行:
上面,虽然成本在下降,但很明显,𝑤0比其他参数进步更快,因为它的梯度要大得多。
下图显示了使用𝛼= 9e-7进行非常长时间运行的结果。这需要几个小时
上图中,你可以看到成本在最初降低后缓慢下降。注意w0和w0、w1、w2以及dj_dw0和dj_dw1-3之间的区别。W0很快达到接近最终值,dj_dw0迅速下降到一个小值,这表明W0接近最终值。其他参数的降低要慢得多。
这是为什么呢?我们有什么可以改进的吗?见下文:
上图显示了为什么𝑤的更新不均匀。
𝛼由所有参数更新共享(𝑤的和𝑏的)。
常见错误术语乘以𝑤的特性(不是𝑏)。
这些特性在量级上差异很大,使得一些特性更新得比其他特性快得多。在本例中,𝑤0乘以'size(sqft)',通常是> 1000,而𝑤1乘以'number of bedroom ',通常是2-4。
解决方案是特性伸缩。
讲座讨论了三种不同的技术:
特征缩放,本质上是将每个特征除以用户选择的值,从而得到-1到1之间的范围。
意味着正常化:
归一化:
z分数归一化后,所有特征的均值为0,标准差为1。
要实现z-score归一化,调整输入值如下公式所示:
其中𝑗选择X矩阵中的一个特征或一列。µ𝑗为特征(j)所有值的平均值,𝜎𝑗为特征(j)的标准差。
实现注意:在规范化特征时,重要的是要存储用于规范化的值——用于计算的平均值和标准差。在从模型中了解到参数后,我们往往想要预测之前没有见过的房子的价格。给定一个新的x值(客厅面积和卧室数量),我们必须首先使用之前从训练集中计算出的平均值和标准偏差对x进行规范化。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。