从0开始训练bert
之前一直对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相关推荐
- Tensorflow2.0 + Transformers 实现Bert FGM对抗训练惩罚梯度损失函数
Tensorflow2.0 + Transformers 实现Bert FGM对抗训练惩罚梯度损失函数 前言 变种实现 Transformers中的word_embeddings 代码修改 实验效果 ...
- 我用24小时、8块GPU、400美元在云上完成训练BERT!
点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 丰色 发自 凹非寺 量子位 报道 | 公众号 QbitAI 大型语言 ...
- 我用24小时、8块GPU、400美元在云上完成训练BERT!特拉维夫大学新研究
丰色 发自 凹非寺 量子位 报道 | 公众号 QbitAI 大型语言模型BERT,熟悉NLP领域的同学没人不知道它的名气吧? 只可惜它太太太贵了! 之前有做过统计,使用谷歌云TPU或英伟达GPU训练完 ...
- 1美元训练BERT,教你如何薅谷歌TPU羊毛 | 附Colab代码
晓查 发自 凹非寺 量子位 出品 | 公众号 QbitAI BERT是谷歌去年推出的NLP模型,一经推出就在各项测试中碾压竞争对手,而且BERT是开源的.只可惜训练BERT的价格实在太高,让人望而却步 ...
- 使用transformers从头训练Bert
比赛数据是脱敏后得数据,所以无法用网上公开得权重去finetune,于是自己从头训练一个BERT,为什么选择用transformers,因为它实在太酷了.如果不了解transformers,请看链接所 ...
- 1美元从零开始训练Bert,手把手教你优雅地薅谷歌云TPU羊毛
大数据文摘出品 来源:Google Colab 编译:武帅.曹培信 2018年10月,Google AI团队推出了Bert,可以说Bert一出生就自带光环. 在斯坦福大学机器阅读理解水平测试SQuAD ...
- bert 中文 代码 谷歌_1美元从零开始训练Bert,手把手教你优雅地薅谷歌云TPU羊毛...
大数据文摘出品 来源:Google Colab 编译:武帅.曹培信 2018年10月,Google AI团队推出了Bert,可以说Bert一出生就自带光环. 在斯坦福大学机器阅读理解水平测试SQuAD ...
- 如何从零开始训练BERT模型
我的许多文章都专注于 BERT--这个模型出现并主导了自然语言处理 (NLP) 的世界,标志着语言模型的新时代. 对于那些之前可能没有使用过 Transformer 模型(例如 BERT 是什么)的人 ...
- 使用无标注的数据训练Bert
文章目录 1.准备用于训练的数据集 2.处理数据集 3.克隆代码 4.运行代码 5.将ckpt模型转为bin模型使其可在pytorch中运用 Bert官方仓库:https://github.com/g ...
最新文章
- A Strange Bitcoin Transaction
- linux内核功能有,好消息!LINUX内核2.6.18终于支持实时功能了
- 成功解决sys:1: DtypeWarning: Columns (39,41,42,217) have mixed types.Specify dtype option on import or s
- 王爽 16 位汇编语言学习记录
- mongodb导出查询结果
- QT的QUndoCommand类的使用
- Linux使用笔记: 设置Samba服务器中新建文件/目录的权限
- 我的世界工业服务器透视修改,教程/透视镜 - Minecraft Wiki,最详细的官方我的世界百科...
- 关于含光 800,这里有你想要的一切答案!
- 人脸检测-MTCNN算法笔记和代码解读
- 百胜中国于香港联交所主要上市;平安健康正式收购平安智慧医疗 | 美通企业日报...
- [AI-Steering编程]九.路径跟随
- bat操作ftp上传下载命令
- win7 升级到 win10 补丁
- Linux的自动装机服务器搭建(持续优化)
- 云计价i20快速入门技巧——“附加费”应用
- cm4 NVIC完全解析
- [CTO札记]新产品出现时,要‘耐得住寂寞,抗得住压力’
- html入门、结构、标签、列表、表格
- 因疫情影响,传苹果下一代iPhone发布将推后一个月
热门文章
- 每日一练:支付宝第一笔交易用来做什么了?(详题解)
- 由浅入深理解latent diffusion/stable diffusion(2):扩散生成模型的工作原理
- 802.1x准入技术
- 让 Org-mode 为你规划任务安排
- jplayer - html5视频播放器插件
- 服务器IO高,系统卡死
- 信号显示无服务器,显示器无信号怎么回事 显示器无信号的原因【图文】
- 转换器(Converter)模式
- 密云:大数据平台促进休闲农业发展
- 云南计算机专升本数据结构_2020云南专升本计算机类专业升本难度分析、院校选择及志愿填报...