简介#
近年来,基于神经网络的语言模型取得了巨大的成功,并对自然语言处理以外的许多研究领域产生了深远影响,包括音乐信息检索和生成——这些我们将在本教程的后续章节中看到。 本章旨在从宏观视角概述语言模型的研究背景,以及它们如何被应用于包括音乐在内的广泛场景中。 我们不会深入探讨数学或技术细节,但会尽力涵盖该领域的最新进展和当前面临的挑战。
什么是语言模型?#
从最一般的意义上来说,语言模型是在自然语言上定义的概率分布,即某段文本的概率 \(P\):
它通常被定义为条件概率分布,因为我们通常关心的是在某种特定情境下文本出现的概率,而这种情境是我们可以改变或控制的。
所以在这个框架中,给定条件下某段文本的条件概率分布里,条件是输入,而文本可以被视为语言模型的输出。
这是一个非常灵活的框架,因为输入和输出基本上可以是任何东西。 它们可以是问题和答案,这样我们就有了像 T5 这样的问答模型。 如果输出是文本的一个子片段,条件是其周围的上下文,那就是一个可以”填空”的 masked language model(掩码语言模型),比如 BERT。 在像 GPT 这样的 autoregressive language model(自回归语言模型)中,条件是任意前缀,输出是其后续内容。 更具体地说,在像 ChatGPT 这样的对话式 AI 模型中,前缀和后续内容被格式化为对话形式,使得输出可以是对所提供聊天历史的对话回复。
输出 |
输入 |
|
|---|---|---|
答案 |
问题 |
序列到序列模型(如 T5) |
子字符串 |
上下文 |
masked language model(掩码语言模型,如 BERT) |
续写内容 |
前缀 |
autoregressive language model(自回归语言模型,如 GPT) |
对话回复 |
聊天历史 |
对话式 AI(如 ChatGPT) |
以上是关于输入和输出的讨论。那么我们简单称为 \(P\) 的模型部分呢? 对于模型部分,语言模型的定义也不限于任何特定的实现方式。 模型通常使用一组参数来定义,用下标 \(\theta\) 表示:
在神经网络真正开始发挥作用之前,\(n\)-gram 模型一直是语言建模的标准方法,它们基于 \(n\) 个连续词的分布。 近年来,基于循环神经网络(如 LSTM)或 Transformer 的语言模型已被证明在捕捉长距离依赖关系和更好地理解自然语言方面更为有效。
至于参数方面,在 \(n\)-gram 模型中,参数仅仅是训练语料库中 \(n\)-gram 出现的计数。 而在基于神经网络的语言模型中,参数是通过梯度下降来学习的。
架构 \(P\) |
参数 \(\theta\) |
|---|---|
\(n\)-grams |
计数 |
RNNs |
基于梯度的优化 |
Transformers |
基于梯度的优化 |
以上涵盖了语言模型在最抽象层面上的定义。 在下一节中,我们将更进一步探讨它们在实践中是如何实现的。