本篇文章主要讲基于bert预训练模型的一些例子,希望可以从不同角度理解与应用基于bert的一些应用。
nlp发展了这么多年,经历了规则,统计,模型等阶段,目前预训练模型基本算是一统天下了。
大公司有更多资源,可以联合一些科研机构与组织搞一些事情,比如微软和nvidia利用更多的资源来探测模型的边界。
这个就很有意思,思考一个问题,什么叫意识?什么情况下产生了意识?
什么是意识,这个可以尝试用两个词来理解,计算
和算计
。计算很好理解,比如计算机,计算器,本质来讲是人输入指令,获得一个预期结果,不会产生任何歧义。而算计呢,它是一个综合体,它的输出是多样的,有可能不可预知的。它具有自己的思考。
那什么情况下产生了意识?这个问题就是这些大佬们所想要尝试认知的东西。比如人类有30亿碱基对,蚊子才几千万,单细胞生物可能更少可能就被认为不具备意识?如此看来的话,那我可以尝试扩充网络容量,更多的训练数据集,等到了某个程度下,突然机器就具备了某种智能。
这是个有意思的研究!
不过扯了这么多,小公司的话,更多是基于预训练模型的微调。
为什么要基于预训练模型微调呢,严格意义来讲就是预训练模型已经学习到了语义,一个认知大脑。基于此,给定一个具体任务,来对其进行微调,使其具备更快的收敛能力和更好的泛化能力。
所以掌握下还是很重要滴。
下面介绍四个应用示例,每一种大致介绍下,更具体的实现可以自行实现。
不过作者在这里使用了Trainer,这是transformers出的一套工具,可以让你更快的训练,但是封装太高,懒得折腾了,不如自己从头写。
代码.
这个是个ner任务,不知道ner的自行百度,模型后面接了一个linear,如果想要更深入,可以看看crf。
不过这个任务如果用于分词,词性标注还是很nice的。
代码.
这个任务还是蛮有意思的,之前也有类似的比赛。比如天池 疫情相似句对判定大赛 线上第一名方案。
整体实现思路基本一致,不过作者加入了对抗训练这些东西,感兴趣可以看看。
代码.
这个就是多分类任务,也是比较常见的场景。
代码.
这个我没看。
好吧,这本书快让我水了一波,感兴趣的需要基础的老铁们可以多翻翻。