欢迎关注我的公众号:YueTan
本文尝试总结常见的NLP模型,尤其是transformer系列
作为最早激励我开始转码和机器学习的领域,算是做过半年多数据标注。
同时,毕业后第一家公司是一家德国企业,上进的同事都开始学习德语,因为定期德国出差的缘故,我最后也只会蹦几个单词。但对语言进行了一点思考,这两点都让我当时对自然语言处理感兴趣。
补足推荐和NLP短板之后,离开。
选定Torch和框架之后,从baseline开始补足和实验各种技巧,疯狂学习,在越来越多的实验中得到快速成长。没有卡就租,已经靠运气在比赛中获得了不少奖金,该花就花掉。学习一个新比赛,那就从kaggle同类型的前十个比赛学习。
阶段1目标
- 首先学习了一下huggingface的公开课/李宏毅,可以了解一下整体。书:OReilly.Natural.Language.Processing.with.Transformers.2022.2
- 找到几个kaggle比赛,了解套路和trick,常见的优化自己都能正确的实现
- 简历:熟悉NLP领域前沿技术与各项任务,文本分类、NER、关系抽取、阅读理解、文本匹配,知识图谱
- 开始前的疑问: 如果这些trick是共识、大家都会,那么比赛的优势是来自哪儿呢
阶段2
- 自己参加比赛,优化到Top10. 开始积累一套顺手的pipeline
summary
transformer
首先借助对transformer和bert对各个部分进行理解和练习
位置编码
- postional embedding看起来比encoding效果更好些,毕竟是可学习的
多头注意力
- 来自时序论文的讨论:置换不变性(permutation-invariant)和“反秩序”(anti-order)
bert
deberta
- 多层之后,时间信息不可避免地丢失。每个transformer block都会重新加入position 的information
roberta
albert
electra
ernie
xlnet
nezha
前处理汇总
ast
import ast
train['annotation'] = train['annotation'].apply(ast.literal_eval)