我正在实施一篇颇受欢迎的论文“ 解释和利用对抗性示例 ”,在该论文中,它训练了对抗性目标函数
J''(θ)=αJ(θ)+(1 −α)J'(θ)。
它将α视为超参数。α可以是0.1、0.2、0.3等。
不管这份具体论文如何,我都想知道,为什么我们不只是将α纳入参数并学习最佳的α?
这样做的缺点是什么?是因为过度拟合吗?如果是这样,为什么只学习1个参数会导致过拟合呢?
我正在实施一篇颇受欢迎的论文“ 解释和利用对抗性示例 ”,在该论文中,它训练了对抗性目标函数
J''(θ)=αJ(θ)+(1 −α)J'(θ)。
它将α视为超参数。α可以是0.1、0.2、0.3等。
不管这份具体论文如何,我都想知道,为什么我们不只是将α纳入参数并学习最佳的α?
这样做的缺点是什么?是因为过度拟合吗?如果是这样,为什么只学习1个参数会导致过拟合呢?
Answers:
“为什么我们不只是学习超级参数?”
这是一个很好的问题!我将尝试提供更一般的答案。该TL; DR的答案是,你绝对可以学到的超参数,只是不相同的数据。请继续阅读以获取更详细的回复。
甲超参数通常对应于学习算法的一种设置,而不是它的一个参数。例如,在深度学习的上下文中,这可以通过诸如特定层中的神经元数量(超参数)与特定边缘的权重(规则的可学习参数)之间的差异来举例说明。
为什么首先会有区别?使参数成为超参数的典型情况是,不适合从训练集中学习该参数。例如,由于通过添加更多的神经元来降低训练误差总是比较容易的,因此将一层中的神经元数量设置为规则参数将始终会鼓励非常大的网络,这是我们知道的,因为事实并非总是如此(因为过度拟合)。
对您的问题,并不是我们根本不学习超参数。撇开一分钟的计算难题,很有可能为超参数学习良好的值,甚至在某些情况下,这对于提高性能也是必不可少的。第一段中的所有讨论表明,根据定义,您不能为此任务使用相同的数据。
使用另一组数据拆分(从而创建三个不相交的部分:训练集,验证集和测试集,理论上您可以执行以下嵌套优化过程:在外循环中,尝试查找最小化验证损失的超参数值;在内部循环中,您尝试找到最小化训练损失的常规参数的值。
从理论上讲这是可能的,但在计算上却非常昂贵:外循环的每个步骤都需要求解(直到完成,或接近该步)内循环,而内循环通常在计算上比较繁重。使事情进一步复杂化的是,外部问题并不容易:一方面,搜索空间很大。
有许多方法可以通过简化上面的设置来克服此问题(网格搜索,随机搜索或基于模型的超参数优化),但是对这些方法的解释远远超出了您的问题范围。正如您所引用的文章还表明的那样,这是一个昂贵的过程,通常意味着研究人员完全跳过了这一过程,或者手动尝试了很少的设置,最终选择了最好的方法(再次根据验证集)。但是,对于您最初的问题,我认为-尽管非常简单和人为,但这仍然是“学习”的一种形式。
由于您问的是“不管论文”如何,我想举一个简单的例子:罚线性回归(Ridge / Lasso)。
用于优化超参数的目标函数是一个表示泛化错误的代理。很难将这个表达式写成一个可以区分的简单分析函数,但是可以通过简单地解决基础优化问题在某个时候轻松地对其进行评估。
评估功能(F2)要求您解决一个优化问题,这可能会很昂贵。因此,即使您可以近似估计F2的梯度以进行梯度下降,也将是昂贵且缓慢的。在这种情况下,进行网格搜索通常“足够好”。
(图片摘自这篇文章:https : //stats.stackexchange.com/a/26607/54725)
一些参考: