之前一直对bert 预训练结果是怎么来的感兴趣,今天参考了下github 上的代码,跑了一边终于知道是怎么来的了,在这分享下。

代码地址:

codertimo/BERT-pytorch: Google AI 2018 BERT pytorch implementation (github.com)https://github.com/codertimo/BERT-pytorchbert 模型训练的任务

在bert 模型中,主要干了两个事,一是判断两句话 是否是上下文,二是从这两句话中挖几个单词(英文数据,随机挖,15%的概率),然后用[mask](在代码中其实是替换为mask 的id,其他单词也是要替换为id的)替换。这15% 也不全是用mask 替换,其中的10% 替换为其他单词的id,10% 保持不变。在代码中是这么写的:

            if prob < 0.15:prob /= 0.15# 80% randomly change token to mask tokenif prob < 0.8:tokens[i] = self.vocab.mask_index# 10% randomly change token to random tokenelif prob < 0.9:tokens[i] = random.randrange(len(self.vocab))# 10% randomly change token to current tokenelse:tokens[i] = self.vocab.stoi.get(token, self.vocab.unk_index)output_label.append(self.vocab.stoi.get(token, self.vocab.unk_index))

为了研究代码,弄了一个很小的数据集,如下:

Welcome to the        the jungle
I can stay        here all night

只用这两行数据集,代码就能跑起来。

损失计算:

开始的时候对损失是怎么计算的也比较好奇,看了下代码后,揭开了它神奇的面纱。

损失的计算分两块:

第一个是计算分类任务的损失,就是判断是否是上下文的损失,就是一个二分类任务 [0, 1], 0不是上下文, 1 是上下文,二分类的输出如下:

第二个是计算 每个单词标签是是否预测正确的损失,是一个多分类任务。这里数据集比较下,也就15个单词,所以相当于是一个15分类的任务,如果数据集大,则变成了 vocab_size 的分类任务。代码如下:

然后使用 NLLLOSS 来计算损失,最后使用常规手段,梯度下降等方式,经过不断的训练生成最终的bert 预训练模型。

总结 :

不得不说这份代码写的很清晰,跟着代码跑一两变就了解了bert是怎么训练的。收获不错。

从0开始训练bert相关推荐

  1. Tensorflow2.0 + Transformers 实现Bert FGM对抗训练惩罚梯度损失函数

    Tensorflow2.0 + Transformers 实现Bert FGM对抗训练惩罚梯度损失函数 前言 变种实现 Transformers中的word_embeddings 代码修改 实验效果 ...

  2. 我用24小时、8块GPU、400美元在云上完成训练BERT!

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 丰色 发自 凹非寺 量子位 报道 | 公众号 QbitAI 大型语言 ...

  3. 我用24小时、8块GPU、400美元在云上完成训练BERT!特拉维夫大学新研究

    丰色 发自 凹非寺 量子位 报道 | 公众号 QbitAI 大型语言模型BERT,熟悉NLP领域的同学没人不知道它的名气吧? 只可惜它太太太贵了! 之前有做过统计,使用谷歌云TPU或英伟达GPU训练完 ...

  4. 1美元训练BERT,教你如何薅谷歌TPU羊毛 | 附Colab代码

    晓查 发自 凹非寺 量子位 出品 | 公众号 QbitAI BERT是谷歌去年推出的NLP模型,一经推出就在各项测试中碾压竞争对手,而且BERT是开源的.只可惜训练BERT的价格实在太高,让人望而却步 ...

  5. 使用transformers从头训练Bert

    比赛数据是脱敏后得数据,所以无法用网上公开得权重去finetune,于是自己从头训练一个BERT,为什么选择用transformers,因为它实在太酷了.如果不了解transformers,请看链接所 ...

  6. 1美元从零开始训练Bert,手把手教你优雅地薅谷歌云TPU羊毛

    大数据文摘出品 来源:Google Colab 编译:武帅.曹培信 2018年10月,Google AI团队推出了Bert,可以说Bert一出生就自带光环. 在斯坦福大学机器阅读理解水平测试SQuAD ...

  7. bert 中文 代码 谷歌_1美元从零开始训练Bert,手把手教你优雅地薅谷歌云TPU羊毛...

    大数据文摘出品 来源:Google Colab 编译:武帅.曹培信 2018年10月,Google AI团队推出了Bert,可以说Bert一出生就自带光环. 在斯坦福大学机器阅读理解水平测试SQuAD ...

  8. 如何从零开始训练BERT模型

    我的许多文章都专注于 BERT--这个模型出现并主导了自然语言处理 (NLP) 的世界,标志着语言模型的新时代. 对于那些之前可能没有使用过 Transformer 模型(例如 BERT 是什么)的人 ...

  9. 使用无标注的数据训练Bert

    文章目录 1.准备用于训练的数据集 2.处理数据集 3.克隆代码 4.运行代码 5.将ckpt模型转为bin模型使其可在pytorch中运用 Bert官方仓库:https://github.com/g ...

最新文章

  1. A Strange Bitcoin Transaction
  2. linux内核功能有,好消息!LINUX内核2.6.18终于支持实时功能了
  3. 成功解决sys:1: DtypeWarning: Columns (39,41,42,217) have mixed types.Specify dtype option on import or s
  4. 王爽 16 位汇编语言学习记录
  5. mongodb导出查询结果
  6. QT的QUndoCommand类的使用
  7. Linux使用笔记: 设置Samba服务器中新建文件/目录的权限
  8. 我的世界工业服务器透视修改,教程/透视镜 - Minecraft Wiki,最详细的官方我的世界百科...
  9. 关于含光 800,这里有你想要的一切答案!
  10. 人脸检测-MTCNN算法笔记和代码解读
  11. 百胜中国于香港联交所主要上市;平安健康正式收购平安智慧医疗 | 美通企业日报...
  12. [AI-Steering编程]九.路径跟随
  13. bat操作ftp上传下载命令
  14. win7 升级到 win10 补丁
  15. Linux的自动装机服务器搭建(持续优化)
  16. 云计价i20快速入门技巧——“附加费”应用
  17. cm4 NVIC完全解析
  18. [CTO札记]新产品出现时,要‘耐得住寂寞,抗得住压力’
  19. html入门、结构、标签、列表、表格
  20. 因疫情影响,传苹果下一代iPhone发布将推后一个月

热门文章

  1. 每日一练:支付宝第一笔交易用来做什么了?(详题解)
  2. 由浅入深理解latent diffusion/stable diffusion(2):扩散生成模型的工作原理
  3. 802.1x准入技术
  4. 让 Org-mode 为你规划任务安排
  5. jplayer - html5视频播放器插件
  6. 服务器IO高,系统卡死
  7. 信号显示无服务器,显示器无信号怎么回事 显示器无信号的原因【图文】
  8. 转换器(Converter)模式
  9. 密云:大数据平台促进休闲农业发展
  10. 云南计算机专升本数据结构_2020云南专升本计算机类专业升本难度分析、院校选择及志愿填报...