什么是预训练以及如何预训练神经网络?

机器算法验证 机器学习 神经网络 反向传播 受限玻尔兹曼机 预训练
2022-03-09 04:09:52

我知道使用预训练来避免传统训练中的一些问题。如果我使用反向传播,比如自动编码器,我知道我会遇到时间问题,因为反向传播很慢,而且我可能会陷入局部最优而无法学习某些特征。

我不明白的是我们如何预训练网络以及我们具体做什么来预训练。例如,如果给我们一堆受限玻尔兹曼机,我们将如何预训练这个网络?

3个回答

您首先分别训练堆栈中的每个 RBM,然后组合成一个可以进一步调整的新模型。

假设你有 3 个 RBM,你用你的数据(例如一堆图像)训练 RBM1。RBM2 使用 RBM1 的输出进行训练。RBM3 使用 RBM2 的输出进行训练。这个想法是,每个 RBM 模型都具有代表图像的特征,并且它们在此过程中学习的权重在分类等其他判别任务中很有用。

预训练堆叠 RBM 是贪婪地逐层最小化定义的能量,即最大化可能性。G. Hinton 提出了 CD-k 算法,可以看作是 Gibbs 采样的单次迭代。

预训练是一种多阶段学习策略,在执行所需的复杂模型的训练之前先训练一个更简单的模型。

在您的情况下,使用受限玻尔兹曼机的预训练是一种贪婪的逐层无监督预训练方法。您可以在固定之前的预训练层的情况下逐层训练 RBM。

预训练有助于优化和泛化。

参考:

Ian Goodfellow 等人的深度学习。