我很好奇当超参数由神经网络本身设置或通过创建一个神经网络来封装和影响它所封装的网络的超参数时,它们会发生什么。
我的目标是进行实验并获得有关神经网络的更深入的知识。但是我很难找到能够执行这样一个实验的信息。这指向了一个以前从未做过的方向,或者这个想法真的很愚蠢。
现在我想知道的是,你们中是否有人知道我在哪里可以找到信息(例如书籍、网络文章、论文等)来进行这样的实验?
我很好奇当超参数由神经网络本身设置或通过创建一个神经网络来封装和影响它所封装的网络的超参数时,它们会发生什么。
我的目标是进行实验并获得有关神经网络的更深入的知识。但是我很难找到能够执行这样一个实验的信息。这指向了一个以前从未做过的方向,或者这个想法真的很愚蠢。
现在我想知道的是,你们中是否有人知道我在哪里可以找到信息(例如书籍、网络文章、论文等)来进行这样的实验?
我很好奇当超参数由神经网络本身设置时会发生什么
一般来说,这是不可能的,因为许多超参数是离散的,因此它们对于任何目标都不可微。例如,这适用于层大小、层数、传递函数的选择。这可以防止使用任何形式的梯度下降将它们直接调整为可学习的参数。
事实上,参数和超参数之间的分离正是模型类型无法学习超参数。这适用于其他 ML 模型,而不仅仅是神经网络。
或者通过创建一个神经网络来封装和影响它封装的网络的超参数。
这是比较可行的。您可以使用一个神经网络来尝试预测另一个神经网络的结果。然后更喜欢在看起来会很好的目标网络上运行测试。然而,使用这样的“元”神经网络有一些主要缺点:
神经网络需要大量的训练数据。获得足够的样本以做出良好的预测将需要您多次训练您的主要神经网络(一个耗时的过程)
神经网络不擅长推断已经经历过的区域之外的数据,因此不太擅长对新参数进行创造性预测以尝试
神经网络有很多超参数需要调整。您是否需要“元元”神经网络来预测“元”网络的性能?
要么它以前从未做过,要么这个想法真的很愚蠢
这是一个反复出现的现实问题。一般来说,寻找最佳超参数是一件苦差事。这是一个活跃的研究和实验领域,可以找到有效的自动化方法,或者通过降低一些超参数的重要性或不必要的方式来避免它。
您没有找到调整神经网络的神经网络的原因是由于上面列出的问题。因此,主要研究领域集中在不同的方法上,这些方法可以处理有限的数据并且本身没有太多的超参数。或者对大范围的超参数具有鲁棒性的模型,因此精确调整并不是什么大问题。
以下是一些有助于自动搜索的提示:
您可以使用各种超参数优化方案,包括随机搜索、网格搜索、遗传算法、简单梯度方法等。
随机搜索,可能受到先前经验或类似问题的二手知识的限制,可能相当有效。
任何搜索的质量都受到交叉验证数据的质量和数量的限制。将 cv 损失值调整到您关心的变化远小于其估计中的标准误差并没有多大意义。
对超参数的响应通常在搜索空间上是非线性的,这使事情变得更加困难。
在自动化之外,专家分析通常是一个很好的起点,特别是如果您想评估正则化的成功。通常,您可以查看训练和交叉验证数据的学习曲线,并在此基础上做出合理的猜测,即是否增加或减少正则化超参数和/或学习率,甚至可以通过观察单次训练运行的结果。
可能已经尝试将阅读学习曲线的某些部分自动化,因为有时检测过拟合和欠拟合情况相对容易。但是,我刚才搜索时找不到任何示例。