- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
在pytorch上实现bert的简单预训练过程
前⾔ :博主是⼀名研⼀在读学⽣,刚刚接触nlp 久,作品如有纰漏之处,欢迎⼤家批评指正,谢谢 ! (另外本⽂代码 是 ⾃⼰原创,解释
和思路为原创。⽂章创作 ⽬的在于分享和知识复习,⽆任何盈利 ⽬的)
本⽂包括原理和代码设计思路部分,数据预处理部分,模型部分和训练验证部分四⼤块,建议阅读时间20分钟。 (后附完整代码)
⼀⼀、、代代码码设设计计思思想想
⼤家都知道,bert是⾕歌在超⼤数据集上通过⽆监督学习,学习包含字间关系的字或词的特征表⽰。本⽂篇幅有限, 可能将bert在
超⼤参数上的完整训练过程讲清楚。博主是个菜鸡,完整的过程 会。所以本⽂会在⼀个简单的数据集上做bert的预训练。但是⿇雀虽⼩,
五脏俱全。
先来介绍预处理思路。bert训练主要包括两个部分,分别是token级别的MLM和sentence级别的next sentence。所以我们对句⼦的
处理包括将两句话放在⼀起去预测是否是上下句关系,以及将句⼦中词随机mask掉,并让计算机去预测这些词是什么。⽽计算机只能识别
数字, 能识别⼈类语⾔,所以呢,为了满⾜这些条件,我们的模型输⼊就有了。就是⼀个由两句话组成,这两句话中词部分会被mask
掉,⽽且每个词都是由数字来表⽰的input_ids。两个任务当然就有两个loss。对于sentence,我们需要知道输⼊是否是上下句关系的正确
结果isNext,对于MLM,我们要知道被MASK的词在input_ids的位置masked_pos以便从模型的输出结果中提取出对应位置的预测的
MASK的词去与正确的MASK的词masked_tokens做loss。另外为了区别哪些词是第⼀句话哪些是第⼆句话,我们还需要加⼊
segment_ids (将第⼀句话标为 1,将第⼆句话标为2)。
总结,将原始⽂本预处理后我们需要得到五个值 :inputs_ids,segment_ids,masked_tokens,masked_pos,is_Next
再来聊聊bert模型的设计思路。原理就 多聊了,⽹上多的汗⽜充栋。思路就是将输⼊做⼀个embedding后,乘上初始化的QKV三个
矩阵,得到相应的q_s,k_s,v_s。q与k做内积得到分数,再去与v做内积后得到与输⼊维度相同的输出,再与输⼊做残差并归⼀化,得到最终
的输出。如果attention是多层的,就把最后的输出重新放⼊模型的输⼊继续训练。没听明⽩没关系,这部分会在代码部分详细解释,现在
有个⼤致思路就⾏ :inputembeddingQKV--(加上embedding后的input)-output。输出通过各种变换与is_Next和
masked_tokens做loss。然后反向传播,更新权重,降低loss。
⼆⼆、、数数据据预预处处理理
先来看原始数据 :
text=(
Hello, how are you? I am Romeo.\n # R
Hello, Romeo My name is uliet. Nice to meet you.\n #
Nice meet you too. How are you today?\n# R
Great. My baseball team won the competition.\n #
Oh Congratulations, uliet\n # R
Thank you Romeol\n#
Where are you going today?\n # R
I am going shopping. What about you?\n#
I am going to visit my grandmother. she is not very well # R
)
为了构建inputs_ids就要构建每句话的idx表⽰(token_list),为了构建token_list就要构建字典(word2idx)
第⼀⼆句的意思是将句⼦中的符号去掉,转化为⼩写,⽤\n做分割转化为list。接着将list以空格为间隔在转化为str,再将
您可能关注的文档
最近下载
- 领读经典-外国文学(1)(山东大学)中国大学MOOC慕课 章节测验期末考试客观题答案.docx VIP
- 《电机与拖动基础》课件(共十一章).ppt VIP
- 《PyTorch与深度学习实战》第2章 PyTorch深度学习通用流程.pptx VIP
- 简谱D 想着我Think of Me简谱歌剧魅影.pdf VIP
- 2023-2024学年安徽省马鞍山市第八中学九年级上学期期中考试化学试卷.pdf VIP
- 《PyTorch与深度学习实战》第3章 PyTorch深度学习基础.pptx VIP
- 好书推荐《朝花夕拾》读书分享名著导读PPT课件.pptx VIP
- 22个专业95个病种中医临床诊疗方案目录44.pdf VIP
- 精品解析:天津市第四十三中学2024-2025学年高一上学期第一次月考英语试题(解析版).docx VIP
- 2025年北京市东城区九年级初三一模语文试卷(含答案).docx
文档评论(0)