在机器学习中使用不可训练的参数可以吗?
Is it okay to have non-trainable params in machine learning?
在构建机器学习模型时,可以使用不可训练的参数吗?或者这会在模型中产生错误吗?我对什么是不可训练的参数以及如何基于它修复模型感到困惑。
通常,不可训练的参数并不意味着您分配随机或预定义值的某些权重(无法知道正确的值,因为它们取决于其他权重值)。
这意味着您已经先验地做出了一些架构决策。例如,在神经网络中,此类参数将是层数和每层节点数。这些可以通过有根据的猜测来决定,或者通常通过反复试验(交叉验证)来决定。
拥有这样不可训练的参数不仅是可以的,而且对于大多数训练算法来说是不可避免的。
编辑: 正如 enumaris 在评论中提到的,问题可能是指 Keras 中不可训练的参数 而不是一般不可训练的参数(超参数)
Keras 中不可训练的参数在 中进行了描述。
...non-trainable parameters of a model are those that you will not be updating and optimized during training, and that have to be defined a
priori, or passed as inputs.
此类参数的例子有:
- 隐藏层数
- 每个隐藏层上的节点数
- 每个单独层上的节点
和其他人
These parameters are "non-trainable" because you can't optimize its
value with your training data.
解决您的问题:
Is it okay to have non-trainable params?
是的,如果您正在构建神经网络或其他机器学习模型,那没关系,事实上这是不可避免的。
Does this create errors in the model?
它默认不会产生错误,它决定了你的神经网络的架构。
但有些架构会比其他架构更好地处理您的数据和任务。
因此,如果您选择次优的不可训练参数,您可以并且会欠拟合您的数据
优化不可训练的参数是另一个非常广泛的话题。
一般机器学习理论的答案:
非训练参数(不是专门针对 Keras)称为 超参数。
他们的目的是根据您的具体要求调整算法。
例如如果你正在训练一个简单的Logistic Regression
,你有一个参数C
,代表regularization
,基本上影响你的意愿
"penalty" 错误答案的算法。
你可能想对你的算法进行非常严厉的惩罚以泛化更多(但你也可以 underfit
),或者你可能不想对错误进行高惩罚(这也可能导致 overfitting
)
这是你无法从数据中学习的东西 - 这是你可以调整以满足你的特定需要的东西。
在构建机器学习模型时,可以使用不可训练的参数吗?或者这会在模型中产生错误吗?我对什么是不可训练的参数以及如何基于它修复模型感到困惑。
通常,不可训练的参数并不意味着您分配随机或预定义值的某些权重(无法知道正确的值,因为它们取决于其他权重值)。
这意味着您已经先验地做出了一些架构决策。例如,在神经网络中,此类参数将是层数和每层节点数。这些可以通过有根据的猜测来决定,或者通常通过反复试验(交叉验证)来决定。
拥有这样不可训练的参数不仅是可以的,而且对于大多数训练算法来说是不可避免的。
编辑: 正如 enumaris 在评论中提到的,问题可能是指 Keras 中不可训练的参数 而不是一般不可训练的参数(超参数)
Keras 中不可训练的参数在
...non-trainable parameters of a model are those that you will not be updating and optimized during training, and that have to be defined a priori, or passed as inputs.
此类参数的例子有:
- 隐藏层数
- 每个隐藏层上的节点数
- 每个单独层上的节点
和其他人
These parameters are "non-trainable" because you can't optimize its value with your training data.
解决您的问题:
Is it okay to have non-trainable params?
是的,如果您正在构建神经网络或其他机器学习模型,那没关系,事实上这是不可避免的。
Does this create errors in the model?
它默认不会产生错误,它决定了你的神经网络的架构。
但有些架构会比其他架构更好地处理您的数据和任务。
因此,如果您选择次优的不可训练参数,您可以并且会欠拟合您的数据
优化不可训练的参数是另一个非常广泛的话题。
一般机器学习理论的答案:
非训练参数(不是专门针对 Keras)称为 超参数。
他们的目的是根据您的具体要求调整算法。
例如如果你正在训练一个简单的Logistic Regression
,你有一个参数C
,代表regularization
,基本上影响你的意愿
"penalty" 错误答案的算法。
你可能想对你的算法进行非常严厉的惩罚以泛化更多(但你也可以 underfit
),或者你可能不想对错误进行高惩罚(这也可能导致 overfitting
)
这是你无法从数据中学习的东西 - 这是你可以调整以满足你的特定需要的东西。