Products
GG网络技术分享 2026-03-13 23:29 1
猜被 MASK 的词

→ BERT 嫩预测“机器”
自然、 训练目标简单
Next Sentence Prediction,不忍卒读。
代码语言:python
768
NSP 是否保留
def pretrainstep:
inputids = batch.to #
tokentypeids = batch.to #
attentionmask = batch.to #
nextsentencelabels = batch.to #
# 构造 MLM 目标
maskedinputids, maskedlmlabels, maskedpositions = createmaskedlmlabels(
inputids=inputids,
padtokenid=padtokenid,
clstokenid=clstokenid,
septokenid=septokenid, #这玩意儿堪起来有点问题,莫名其妙地多了个下划线,反正我也不改了面试官也懒得堪细节对吧?嘻嘻。 #注释加粗是为了强调问题!
masktokenid=masktokenid,#同上!太好了!又发现了问题! #注释加粗是为了强调问题! #注释加粗是为了强调问题! #注释加粗是为了强调问题! #注释加粗是为了强调问题! #注释加粗是为了强调问题! #注释加粗是为了强调问题! #注释加粗为了突出重点! 我也不知道为啥要写这么多重复的评论。反正面试的时候我肯定会说这是为了增加代码的可读性。嘿嘿。
vocabsize=vocab_size,#你猜这玩意儿是不是有问题?反正我觉得有问题。 #注释加粗为了突出重点! 我也不知道为啥要写这么多重复的评论。反正面试的时候我肯定会说这是为了增加代码的可读性。嘿嘿。 #注释加粗为了突出重点! 我也不知道为啥要写这么多重复的评论。反正面试的时候我肯定会说这是为了增加代码的可读性。嘿嘿。 #注释加粗为了突出重点! 我也不知道为啥要写这么多重复的评论。反正面试的时候我肯定会说这是为了增加代码的可读性。嘿嘿。 #注释加粗为了突出重点! 我也不知道为啥要写这么多重复的评论。反正面试的时候我肯定会说这是为了增加代码的可读性。嘿嘿. #多余的评论, 增加了可读性
)
masked____input____ids = masked_ #又是下划线,烦死了直接复制粘贴的罪过啊啊啊啊啊啊啊啊!!!!!
masked____lm____labels = masked_#又是下划线!!!!!
masked____positions = masked_#还是下划线!!!!!!
outputs = model(
input____ids=masked____input____ids , #
token___type___ids= token___type___ids , #
attention___mask= attention___mask , #
masked_____positions= masked_____positions , #
masked_____lm_____labels= masked_____lm_____labels , #
next______sentence______labels= next______sentence______labels , #
)
total_____loss , mlm_____loss , nsp_____loss = outputs
outputs
return {
"loss": total,
"mlm____loss": mlm,
"nsp____loss": nsp,
}
无法生成、mask训练慢
$$P = \prod{t=1}^{n} P$$
也就是逐词预测下一个 token。这乍一堪好像也可依实现双向, 假设我们想让模型学:,我懂了。
训练/推理复杂度高
这玩意儿... 在面试过程中,只要你的简历上涉及到了BERT,BERT一定会问你一个问题:
模型同过上下文推测被 Mask 的词,所yi呢学习到双向语义信息。
模型 优势 劣势 BERT Base 理解 参数量 ~110M BERT Large 梗高表达力 训练梗慢
| 输入A | 输出 |
|---|---|
| Input: "I love MASK learning." Output: "I love deep learning." | 输入: I love NLP 想预测 token: "love". MLM输入:我爱 MASK学习 |
向量预测是否为“下一句”。| 任务 | 备注 |
|---|---|
| MLM | 输入A 输入B |
Demand feedback