分布式预训练是指在训练模型时采用的一种方法。
在训练 GPT 时,模型以完全随机的权重开始,随着训练时间的推移,通过从分布中抽样并持续反馈,逐渐学会关于单词、空格和逗号等的知识,预测也越来越一致。观察训练时,可通过损失函数随时间的变化来评估。经过预训练,模型在语言建模中学会强大的通用表示,能有效对任意下游任务进行微调。
此外,还有一些关于初始化权重的灵活方法,如利用非监督式训练方式逐个训练神经层。例如,以受限玻尔兹曼机器(RBM)开始,通过对比发散进行训练,生成隐藏值并模拟训练另一个 RBM,重复此过程形成多层,如有分类需求可添加隐藏单元并微调权重,这种非监督式与监督式的组合也称为半监督式学习。
深度信念网络(DBNs)在标准化 MNIST 字符识别数据库中有出色表现,超越普通神经网络。Yoshua Bengio 等提出深层网络冗余式逐层训练,认为深度机器学习方法在复杂问题上比浅显方法更有效。关于非监督式预训练,利用自动代码取代 RBM 也是一种看法,其关键在于有足够多的显示层,能学习优良的高层数据显示,与传统手动设计特征提取步骤不同。Hinton 与 Bengio 的工作证明了深层神经网络能被训练好的假设是正确的。
那么,当你训练其中一个模型时,我来更具体地展示一下这看起来是什么样的。这实际上来自《纽约时报》,他们在莎士比亚作品上训练了一个小型的GPT。所以,这里有一个莎士比亚的小片段,他们在这个上面训练了他们的GPT。现在,在开始的时候,GPT以完全随机的权重开始,所以你也只能得到完全随机的输出。但随着时间的推移,当你训练GPT越来越长的时间,你会得到越来越连贯和一致的模型样本。当然,从中抽样的方式,是预测接下来会发生什么。你从这个分布中抽样,并持续地反馈到这个过程中,你基本上可以对大量的序列进行抽样。所以到最后,你会看到transformer已经学会了关于单词的知识,以及在哪里放空格,哪里放逗号等等。所以我们随着时间的推移,我们的预测越来越一致。当你在做模型预训练时,你要看的就是这种图(见下图)。实际上,我们在观察你训练时的损失函数如何随时间变化。低损失意味着我们的transformer预测正确——为序列中正确的下一个整数给出了更高的概率。那么,当我们经过一个月的训练后,我们该如何使用这个模型呢?首先,我们注意到的是,我们在这个领域,这些模型在语言建模的过程中,学会了非常强大的通用表示,而且可以非常有效地对任何你可能感兴趣的任意下游任务进行微调。举个例子,如果你对情绪分类感兴趣,过去的方法是收集一堆正面和负面的情绪,然后为此训练一个NLP模型。但新的方法是忽略情绪分类,去做大规模的语言模型预训练,训练大的Transformer,然后你只需要有少量的例子,就可以非常有效地微调你的模型进行这个任务。
那么什么叫做初始化权重的灵活方法呢?实际上,这个主意基本就是利用非监督式训练方式去一个一个训练神经层,比起一开始随机分配值的方法要更好些,之后以监督式学习作为结束。每一层都以受限波尔兹曼机器(RBM)开始,就像上图所显示的隐藏单元和可见单元之间并没有连接的玻尔兹曼机器(如同亥姆霍兹机器),并以非监督模式进行数据生成模式的训练。事实证明这种形式的玻尔兹曼机器能够有效采用2002年Hinton引进的方式「最小化对比发散专家训练产品(Training Products of Experts by Minimizing Contrastive Divergence)」进行训练。基本上,除去单元生成训练数据的可能,这个算法最大化了某些东西,保证更优拟合,事实证明它做的很好。因此,利用这个方法,这个算法如以下:1.利用对比发散训练数据训练RBM。这是信念网络(belief net)的第一层。2.生成训练后RBM数据的隐藏值,模拟这些隐藏值训练另一个RBM,这是第二层——将之「堆栈」在第一层之上,仅在一个方向上保持权重直至形成一个信念网络。3.根据信念网络需求在多层基础上重复步骤2。4.如果需要进行分类,就添加一套隐藏单元,对应分类标志,并改变唤醒-休眠算法「微调」权重。这样非监督式与监督式的组合也经常叫做半监督式学习。Hinton引入的层式预训练
这篇论文展示了深度信念网络(DBNs)对于标准化MNIST字符识别数据库有着完美的表现,超越了仅有几层的普通神经网络。Yoshua Bengio等在这项工作后于2007年提出了「深层网络冗余式逐层训练(“Greedy Layer-Wise Training of Deep Networks)」,其中他们表达了一个强有力的论点,深度机器学习方法(也就是有着多重处理步骤的方法,或者有着数据等级排列特征显示)在复杂问题上比浅显方法更加有效(双层ANNs或向量支持机器)。关于非监督式预训练的另一种看法,利用自动代码取代RBM。他们还提出了为什么附加非监督式预训练,并总结这不仅仅以更优化的方式初始权重,而且更加重要的是导致了更有用的可学习数据显示,让算法可以有更加普遍化的模型。实际上,利用RBM并不是那么重要——普通神经网络层的非监督式预训练利用简单的自动代码层反向传播证明了其有效性。同样的,与此同时,另一种叫做分散编码的方法也表明,非监督式特征学习对于改进监督式学习的性能非常有力。因此,关键在于有着足够多的显示层,这样优良的高层数据显示能够被学习——与传统的手动设计一些特征提取步骤并以提取到的特征进行机器学习方式完全不同。Hinton与Bengio的工作有着实践上的证明,但是更重要的是,展示了深层神经网络并不能被训练好的假设是错误的。LeCun已经在整个九十年代证明了CNN,但是大部分研究团体却拒绝接受。Bengio与Yann LeCun一起,在「实现AI的算法(Scaling Algorithms Towards AI)」研究之上证明了他们自己: