以下内容有任何不理解可以翻看我之前的博客哦:吴恩达deeplearning.ai专栏
这节我们看看正则化系数
文章目录
- 以线性回归为例
- 指定用于性能评估的基准
- 语音识别的例子
以线性回归为例
让我们举一个例子:
模型:
f w , b ( x ) = w 1 x + w 2 x 2 + w 3 x 3 + w 4 x 4 + b f_{w,b}(x)=w_1x+w_2x^2+w_3x^3+w_4x^4+b fw,b(x)=w1x+w2x2+w3x3+w4x4+b
其中代价函数我们使用带正则化的:
J ( w , b ) = 1 2 m ∑ ( f w , b ( x ) − y ) 2 + λ 2 m ∑ w j 2 J(w,b)=\frac{1}{2m}\sum(f_{w,b}(x)-y)^2+\frac{\lambda}{2m}\sum w_j^2 J(w,b)=2m1∑(fw,b(x)−y)2+2mλ∑wj2
让我们从设置一个比较大的 λ \lambda λ开始:
通过之前章节的学习很容易意识到,当 λ \lambda λ特别大时,那么w1和w2将会接近于0。在这种情况下,得出的拟合曲线就接近一条平行于x轴的直线。很显然,这个模型具有很高的偏差和方差。
而当 λ \lambda λ的值特别小的时候,那么正则化的作用将会无限趋近0,此时曲线就容易过拟合,从而出现低偏差,高方差的情况。
当然,如果你的 λ \lambda λ取值合适,那么此时将会得到一条拟合程度刚好的曲线,就可以做到低方差和低偏差了。
交叉验证误差对于确定 λ \lambda λ的作用
作者给出的方法就是,一系列的 λ \lambda λ你就试吧,然后通过看交叉验证误差的大小来确定 λ \lambda λ应该取多大效果最好。最后为了严谨,你可以再测一下选出数据的测试集误差。
我们也可以通过画图,来看看 λ \lambda λ对于训练集误差和验证集误差的影响趋势:
因此和上一节类似,我们的 λ \lambda λ取值也需要适中,从而使得模型达到合适的效果。
既然我们已经知道了偏差和方差的意义以及规律,那么我们可以指定一个基准,让学习算法能够自动进行评估。
指定用于性能评估的基准
语音识别的例子
本次语音识别指的是将语音的内容转化为文字的形式。它当中的错误当然就是你训练算法中翻译错误的内容占所有内容的百分比,我们可以就用这个百分比来代表 J t r a i n J_{train} Jtrain
假设一个训练集它的训练误差为10.8%,这意味着它成功转化了89.2%的训练集,但在10.8%的数据集出现了错误。之后你肯定就该在交叉验证集上来测试准确度了,假设 J c v J_{cv} Jcv为14.8%。
在语音识别中这样的错误率感觉已经很高了,但是这样就妄下定论其实是不太公平的,因为还没考虑到人说话的质量。如果让人来听训练集中说的话然后再翻译,准确度能达到多少,然后再和 J t r i a n J_{trian} Jtrian进行比较,这样看上去比较公平。
假设你最后发现,人类的识别错误率也高达10.6%,那么就可以为你的模型血洗冤屈了,因为这说明听不清是训练集数据的锅。
因此可以知道,判断算法是否合适,其中一个重要的方法是看看它与人类水平相比是否更好,在本文的例子之中,机器的水平只比人类差了0.2个百分点,其实就可以说明在训练集的表现已经很不错了。但与之相比, J c v J_{cv} Jcv 4.2%的错误其实还有进步的空间。
在之前,我们提出的观点是观察偏差和方差来判断模型的好坏,但其实有时候也需要考虑进去例如训练集质量的问题。所以尽管训练集误差和验证集误差看上去差距不大,但其实在这个例子之中更主要的问题集中在交叉验证集上。
所以,建立性能评估基准主要取决于你对于模型的正确率的期望值为多少,是你合理的希望学习算法达到的最终水平,这取决于很多的扰动因素例如:
之后相比于将错误率和0相比,更应该和基准水平进行比较。
为了给读者你造成不必要的麻烦,博主的所有视频都没开仅粉丝可见,如果想要阅读我的其他博客,可以点个小小的关注哦。