理解NLP中的屏蔽语言模型(MLM)和因果语言模型(CLM)

大多数现代的NLP系统都遵循一种非常标准的方法来训练各种用例的新模型,即先训练后微调。在这里,预处理训练的目标是利用大量未标记的文本,在对各种特定的自然语言处理任务(如机器翻译、文本摘要等)进行微调之前,建立一个通用的语言理解模型。

在本文章中,我们将讨论两种流行的训练前方案,即掩蔽语言建模(MLM)和因果语言建模(CLM)。

屏蔽语言模型解释

在屏蔽语言建模中,我们通常屏蔽给定句子中特定百分比的单词,模型期望基于该句子中的其他单词预测这些被屏蔽的单词。这样的训练方案使这个模型在本质上是双向的,因为掩蔽词的表示是根据出现的词来学习的,不管是左还是右。你也可以把它想象成一个填空式的问题陈述。

下面的图显示了更详细的视图与损失计算步骤-

在这里,被屏蔽词的表示可以像BERT和其他变体一样是基于注意力的,或者你也可以不这样设计它。基于α(注意权重)的分布可以权衡其他的表示输入的单词学习表示被遮蔽的词,例如-α= 1将给予同等重视,周围的单词(也就是说,每个词将遮蔽平等的贡献表示)。

因果语言模型解释

因果语言模型,这里的思想是预测一个给定句子中的蒙面标记,但与MLM不同,这个模型被只考虑发生在它左边的单词来做同样的事情(理想情况下,这个可以是左的或者右的,想法是使它是单向的)。这样的训练方案使得这种模式在本质上是单向的

正如您在下面的图中可以看到的,该模型预计将根据出现在其左侧的单词预测句子中出现的掩码标记。基于模型对实际标签的预测,计算交叉熵损失并反向传播来训练模型参数。

下面的图显示了更详细的视图与损失计算步骤-

在这里,屏蔽词的表示可以是基于注意力的,就像GPT和变体一样,或者你也可以不这样设计它,就像我们在LSTM里使用它一样。基于α的分布(见图)你可以权衡其他的表示输入的单词学习表示被遮蔽的词,例如-α= 1将给予同等重视,周围的单词(也就是说,每个词将平等贡献了遮蔽表示)。

这些系统也被称为解码器模型,因为在典型的编码器-解码器架构中,如机器翻译、文本摘要等,解码器(文本生成器)的工作原理类似。

何时使用?

当目标是学习输入文档的良好表示时,MLM 损失是首选,而当我们希望学习生成流畅文本的系统时,CLM 是首选。 此外,从直觉上看,这是有道理的,因为在为每个单词学习良好的输入表示时,您想知道它出现的单词是左还是右,而当您想学习生成文本的系统时,您只能看到什么到目前为止看到了什么,您已经生成了所有内容(就像人类的写作方式一样)。 因此,制作一个在生成文本的同时也可以窥视另一侧的系统可能会引入限制模型创造力的偏差。

尽管在训练具有编码器和解码器的整个架构时,您经常会发现 MLM 和 CLM 损失。 两者都有其优点和局限性,一种称为 XLNet 的新模型使用置换技术来利用两全其美(MLM 和 CLM)。

作者:Prakhar Mishra

### 掩码语言模型(Masked Language Model, MLM)的技术原理 掩码语言模型MLM)是一种在自然语言处理NLP)领域广泛应用的深度学习技术,主要用于预训练大规模的语言模型。它的核心思想是通过对输入文本中的某些词语进行随机遮蔽,并要求模型根据上下文来预测这些被遮蔽的词语,以此增强模型对语言的理解能力生成能力[^1]。 #### 定义与基本原理 MLM 的工作流程可以分为以下几个方面: - **随机遮蔽**:在输入序列中,随机选取一定比例的词并将其替换为特殊标记 `[MASK]` 或其他替代词。这一过程模拟了不完整的语言环境,迫使模型学会利用上下文线索来进行推理。 - **上下文依赖建模**:通过 Transformer 结构或其他神经网络架构,捕获输入序列中各个位置之间的关系,进而构建全局性的语义理解。 - **损失函数优化**:采用交叉熵作为主要的目标函数,在训练过程中最小化预测错误的概率分布差异[^2]。 #### 实现细节 为了提高效率效果,实际操作中会引入一些改进措施: - 并非简单地将所有选中的 token 替换为 `[MASK]` 符号;而是按照一定的概率分别执行三种动作——保持原样、替换成无关词汇或者设置成 MASK 标记。 - 使用 log 函数计算梯度更新参数时能够有效缓解数值不稳定问题,同时加快收敛速度[^3]。 ### 应用场景分析 由于其强大的表征学习能力,MLM 被成功应用于多个 NLP 子任务当中: 1. **文本分类** 利用经过 MLM 预训练得到的基础向量空间映射新样本特征表示后再接入全连接层完成最终决策判断。 2. **命名实体识别 (NER)** 基于 BERT 等基于 MLM 构建而成的框架可以直接作用到句子级别标注任务上,自动提取出感兴趣的人名、地点名称等信息片段。 3. **机器翻译** 将源语言端表达转化为目标语言表述形式之前先经历一次编码阶段再解码输出相应译文内容。 ```python from transformers import BertTokenizer, BertForMaskedLM import torch tokenizer = BertTokenizer.from_pretrained('bert-base-uncased') model = BertForMaskedLM.from_pretrained('bert-base-uncased') text = "The capital of France is [MASK]." inputs = tokenizer(text, return_tensors="pt") with torch.no_grad(): logits = model(**inputs).logits predicted_token_id = torch.argmax(logits[0, inputs.input_ids == tokenizer.mask_token_id], dim=-1) print(tokenizer.decode(predicted_token_id)) ``` 上述代码展示了如何使用 Hugging Face 提供的 Transformers 库加载预训练好的 BERT 模型并对一段含有空白处待填入适当单词的任务求解实例。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值