概述
Error的来源
更复杂的模型并不能给测试集带来更好的效果,反而可能会导致Average Error 上升。这些Error的主要来源有两个:bias(偏差)和variance(方差)。
在机器学习中,bias和variance是什么呢?
我的理解:bias代表算法的拟合能力,可以理解为算法的准确性;
variance代表算法的鲁棒性,可以理解为算法的可适应性。
参考:机器学习中Bias和Variance
bias偏差刻画的是算法本身的拟合能力,variance方差则刻画的是数据扰动造成的影响。
机器学习中的bias、Error、variance有什么区别和联系?
bias和variance是针对generalization泛化而言的。
在机器学习中,用训练数据集训练模型,通常的做法是定义一个误差函数Loss function,通过将这个Loss(或者叫Error)最小化的过程,来提高model的性能performance。但是学习model的目的是为了解决实际的问题(即训练数据集与实际数据有一定的差异),单纯地在训练数据集上的Loss是最小化的,并不能保证在真实数据集上也能做到最好,所以训练数据集的Loss和真实数据集之间的差异就叫做泛化误差(generalization error)
generalization error分为bias和variance。
简单模型受不同训练集的影响是比较小的?如何理解?
【来自学习伙伴-坚强的小白白】
模型简单可能就像一个直男太梗了,然后女朋友(训练集)无论多么优秀,他都那个傻样,就是容易出现欠拟合(欠收拾)
可以理解为:简单的模型,无论遇到多么优秀的数据集,都输出一样的结果,那确实也是鲁棒性好。
偏差大 -> 欠拟合
欠拟合需要重新设计模型。
改善方法:将更多的函数加进去/考虑更佛次幂/更复杂的模型。但是此时如果强行收集更多的data去训练,也没有什么帮助的,因为设计的本身的函数集都不好,找再多的训练集也不会好。
方差大 -> 过拟合
改善方法:简单粗暴的方法——加入更多的数据。但很多时候不一定能够做到收集更多的数据,所以可能需要针对 对问题 的理解对数据集做调整。
模型选择
基于方差和偏差的特点,在坐模型选择的时候,就需要在方差和偏差之间做权衡。
交叉验证
将训练集分为两部分,一部分叫训练集,另一部分叫验证集。用训练集训练模型,然后在验证集上做比较,选出最好的模型,再用全部的训练集训练最好的模型;再在public的测试集上进行测试。
N-折交叉验证
将训练集分为N份,在N份训练集上选出最好的模型,再用所有的数据训练这个最好的模型。
梯度下降 Gradient Descent GD
在之前回归Regression的时候有提到。
在理解梯度下降的时候,可能需要再多了解一下梯度和学习速率Learning rates
梯度
梯度是一个向量,方向是函数在该点变化最快的方向,大小是函数在该点的最大增长率。(梯度可以理解为类似于线性函数的斜率吗?把斜率理解为是一个向量,其方向就是梯度的方向,大小就是该值)。
参考:机器学习中的梯度下降( Gradient Descent)算法
上面的参考链接举的例子,把Z轴想象成损失函数的结果,Z轴越大,损失函数越大,梯度下降就是不断地在减小Z值,不断地靠近地面。
学习速率
学习速率 理解为梯度下降步伐的大小。
学习率不能是一个值通用所有特征,不同的参数需要不同的学习率。
Adagrad算法 自适应学习率优化算法
Adagrad的核心:如果一个参数的梯度一直非常大,那么对应的学习率就变小一点,防止震荡;如果一个参数的梯度一直都非常小,那么参数的学习率就变大一点,使其能够更快的更新。
- 但是是如何辨别这个参数的梯度大小和学习率大小的呢?似乎是梯度和学习率一直是处于动态变化的。
参考:【快速理解Adagrad】通俗解释Adagrad梯度下降算法
随机梯度下降法
损失函数不需要处理训练集所有的数据,只需要对某一个例子的损失函数Ln,就赶紧update更新梯度。
特征缩放
当输入的分布范围很不一样的时候,将其范围进行缩放,使得输入的范围是一样的。好像归一化是可以看做是特征缩放的一种方法?(存疑)
梯度下降的理论基础
- 梯度下降解决的问题:
梯度下降是 每次更新参数,都能得到一个新的参数,使得损失函数更小。 - 数学理论:
在一个小范围圆圈内找到损失函数更小的参数,不断地寻找。如何找这个最小值?
泰勒展开式 - 梯度下降的限制:
容易陷入局部极值;
可能卡在的不是极值,而是微分值是0的地方;
可能实际中只是当微分值小于某一个数值就停下来了,但这里只是比较平缓,并不是极值点。
总结
从回归模型开始讲到梯度下降,大致明白了为何需要使用梯度下降,梯度下降又是如何实现点的。轻微了解了梯度下降有随机梯度下降。梯度下降是有缺陷的,可能会陷入局部最优解。
最后
以上就是细心母鸡为你收集整理的机器学习之梯度下降Gradient Descent(李宏毅机器学习)的全部内容,希望文章能够帮你解决机器学习之梯度下降Gradient Descent(李宏毅机器学习)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复