首页 > 人工智能 > 自然语言 > 百分点认知智能实验室出品:深度迁移学习十八问
编者按
深度迁移学习是基于深度神经网络的迁移学习方法,BERT通过预训练模型达到深度迁移学习的效果,自从2018年底BERT横空出世以来,就以势不可挡的姿态横扫了众多榜单,甚至在阅读理解任务SQuAD 中超越人类水平。BERT在公检法、媒体出版、军工、快消零售等工业界也迅速落地,如百分点智能对话系统、百分点智能审校系统和百分点智能翻译系统等。BERT几乎在所有的下游任务中效果都获得了明显提升,BERT自此开创了一个NLP的新时代,那就是pre-train + fine-tuning的时代。
基于BERT的各种改进版预训练模型层出不穷,令人眼花缭乱,似乎一不小心就会落伍。但是万变不离其宗,只要掌握了一些最基本的的思想、技术,就能让自己紧跟大神们的脚步,让更优秀的算法模型在工业界持续落地。百分点认知智能实验室梳理了以BERT为代表的基于fine-tuning模式的深度迁移学习中一些疑难问题,整理出18个典型的问题,对理解BERT论文和源代码有明显的帮助,因此分享给大家。
基本概念
模型输入
a) 准备训练语料用于生成subword词表,需要量足够大;
b) 预设定好期望的subword词表的大小;
c) 将单词拆分为字符序列并在末尾添加后缀“ </ w>”,统计单词频率,例如“ low”的频率为5,那么我们将其改写为“ l o w </ w>”: 5。这一阶段的subword的粒度是单字符;
d) 统计连续字节对出现的频率,选择频率最高的合并成新的subword;
e) 重复第4步,直到subword词表大小达到第2步设定的值,或下一个最高频的字节对出现频率为1。
lower出现2次,newest出现6次,widest出现3次,low出现5次
{'l o w e r </w>': 2, 'n e w e s t</w>': 6, 'w i d e s t </w>': 3, 'l o w </w>': 5}[l, o, w, e, r, n, s, t, i, d]
原始词表: {'l o w e r </w>': 2, 'n e w e s t </w>': 6, 'w i d e s t </w>': 3, 'l o w </w>': 5}
出现最频繁的序列: ('s', 't') 9
将”st”加入词表, 第1次循环结束,此时词表大小为11;
合并最频繁的序列后的词表: {'n e w e st </w>': 6, 'l o w e r </w>': 2, 'w i d e st </w>': 3, 'l o w </w>': 5}
出现最频繁的序列: ('e', 'st') 9
将”est”加入词表, 第2次循环结束,此时词表大小为12;
合并最频繁的序列后的词表: {'l o w e r </w>': 2, 'l o w </w>': 5, 'w i d est </w>': 3, 'n e w est </w>': 6}
出现最频繁的序列: ('est', '</w>') 9
将“est</w>”加入词表, 第3次循环结束,此时词表大小为13;
合并最频繁的序列后的词表: {'w i d est</w>': 3, 'l o w e r </w>': 2, 'n e w est</w>': 6, 'l o w </w>': 5}
出现最频繁的序列: ('l', 'o') 7
将“lo”加入词表, 第4次循环结束,此时词表大小为14;
合并最频繁的序列后的词表: {'w i d est</w>': 3, 'lo w e r </w>': 2, 'n e w est</w>': 6, 'lo w </w>': 5}
出现最频繁的序列: ('lo', 'w') 7
将“low”加入词表, 第5次循环结束,此时词表大小为15;
合并最频繁的序列后的词表: {'w i d est</w>': 3, 'low e r </w>': 2, 'n e w est</w>': 6, 'low </w>': 5}
出现最频繁的序列: ('n', 'e') 6
将“ne”加入词表, 第6次循环结束,此时词表大小为16;
合并最频繁的序列后的词表: {'w i d est</w>': 3, 'low e r </w>': 2, 'ne w est</w>': 6, 'low </w>': 5}
出现最频繁的序列: ('w', 'est</w>') 6
将“west</w>”加入词表, 第7次循环结束,此时词表大小为17;
合并最频繁的序列后的词表: {'w i d est</w>': 3, 'low e r </w>': 2, 'ne west</w>': 6, 'low </w>': 5}
出现最频繁的序列: ('ne', 'west</w>') 6
将“newest</w>”加入词表, 第8次循环结束,此时词表大小为18,整个循环结束。
[l, o, w, e, r, n, s, t, i, d, st, est,est</w>, lo, low, ne, west</w>, newest</w>]
a)准备训练语料用于生成subword词表,需要量足够大;
b)预设定好期望的subword词表大小;
c)将单词拆分为字符序列并在末尾添加后缀“##”;
d)从所有可能的subword单元中选择加入语言模型后能最大程度地增加训练数据概率的组合作为新的单元;
e)重复第4步,直到subword词表大小达到第2步中设定的值,或概率增量低于某一阈值。
a)直接截断: 从长文本中截取一部分,具体截取哪些片段需要观察数据,如新闻数据一般第一段比较重要就可以截取前边部分;
b)抽取重要片段: 抽取长文本的关键句子作为摘要,然后进入BERT;
c)分段: 把长文本分成几段,每段经过BERT之后再进行拼接或求平均或者接入其他网络如lstm。
模型原理
embedding层的参数量 =(30522+512+2)*768=23,835,648
multi-head的参数量 =768*64*3*12+768*768=2,359,296
全连接层的参数量 = 768*3072*2=4,718,592
总参数量 = embedding参数量+12(multi-headattention参数量+全连接参数量)=23,835,648+12*(2,359,296+4,718,592)=108,770,304≈110M
模型的进化
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69965230/viewspace-2679244/ ,如需转载,请注明出处,否则将追究法律责任。