在机器学习中拥有不可训练的参数可以吗?

时间:2018-08-20 16:35:59

标签: python machine-learning keras hyperparameters

在建立机器学习模型时,可以使用不可训练的参数吗?还是这会在模型中产生错误?我对于实际上是什么不可训练的参数以及如何基于该参数修复模型感到困惑。

2 个答案:

答案 0 :(得分:5)

编辑:,正如enumaris在评论中提到的那样,问题可能是指 Keras中的不可训练参数,而不是通常的不可训练参数(超参数)

answer to this question中描述了Keras中不可训练的参数。

  

...模型的不可训练参数是您在训练期间不会更新和优化的参数,必须定义   先验或作为输入传递。

此类参数的示例为:

  1. 隐藏层数
  2. 每个隐藏层上的节点
  3. 每个单独层上的节点
    和其他人
  

这些参数是“不可训练的”,因为您无法优化其参数   价值与您的训练数据。

要解决您的问题:

  

可以接受不可训练的参数吗?

是的,这很好,实际上,如果您正在构建NN或其他某种机器学习模型,这是不可避免的。

  

这会在模型中产生错误吗?

默认情况下不会创建错误,它会确定神经网络的体系结构。

但是,某些架构在数据和任务上的性能要优于其他架构。

因此,如果您选择次优的不可训练参数,那么您的数据将会而且会欠拟合

优化不可训练参数是另一个很宽泛的话题。


关于通用机器学习理论的答案:

非训练参数(不适用于Keras)称为超参数

他们的公主是要使算法适应您的特定要求

例如,如果您正在训练简单的Logistic Regression,则有一个参数C,它代表regularization,该参数基本上会影响您的学习量将 “惩罚”错误答案的算法。

您可能想对算法进行严格的惩罚以使其更通用化(但也可以underfit),或者您可能不想对错误进行高惩罚(这也可能导致{{1} })

这是您无法从数据中学到的东西-您可以根据自己的特定需求进行调整。

答案 1 :(得分:4)

通常,不可训练参数并不意味着您为某些权重分配了随机或预定义的值(由于其他权重值取决于其他权重值,因此无法知道正确的值)

这意味着您已经做出一些先验的架构决策。例如,在神经网络中,此类参数将是层数和每层节点数。这些可以通过有根据的猜测来决定,或者通常是通过反复试验(交叉验证)来确定。

具有这样的不可训练参数不仅可以,而且对于大多数训练算法而言都是不可避免的。