| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 【二】BERT and its family -> 正文阅读 |
|
[人工智能]【二】BERT and its family |
?总结? ? ? ? 本课讲解了能考虑上下文的预训练模型。预训练模型能大体了解人类语言,在处理具体NLP任务的效果更好 ? ? ? ? 微调模型:训练整个模型(预训练+特定任务层)的参数多模型非常大,提出了adaptor和权重的方法 ? ? ? ? 训练模型的方法:自监督学习,预测token学习依赖关系,学习句子层面的联系。
? ? ? ? 讲解了模型发展的三个方向:变大、变小、解决更长的sequence 目录 1、过去的word2vec、Glove、FastText、CNN作图片处理汉字:不考虑上下文 2、Contextualized Word Embedding:ELMo、BERT,考虑上下文的 2.1 有两种方法:固定预训练模型参数,只训练特定任务层;训练整个大模型。 3.1 自监督学习:把数据分成两部分,用一部分输入去预测另外一部分输入 3.2.1?predict next token:预测下一个token,擅长做生成。如下左图 3.2.2?BERT-masking input,预测盖住位置的内容,不擅长做生成 3.2.3?ELECTRA 不做预测,二元分类问题,判断token是否被置换 3.2.4 Sentence Level 句子层面的embedding,代表整个sequence,学习句子之间的信息 ????????过去都是一个任务一个模型 ????????现在逐渐迈向:先让机器了解人类语言然后再做各式各样的任务,常见做法是: ????????????????1、pre-train:先用大量无标记数据,训练一个能读懂人类语言的模型 ????????????????2、fine-tune:使用少量有标记资料去微调模型,去解各种NLP任务 一、可以读人类语言的预训练模型长什么样,可以做什么事????????预训练模型:输入一排token sequence,输出一排vector sequence。希望把输入的每一个token表示成一个embedding vector,这个vector包含token的语义,含义相近的token会有相近的embedding,这些embedding的某些维度应该可以看出关联性。 1、过去的word2vec、Glove、FastText、CNN作图片处理汉字:不考虑上下文? ? ? ? 模型架构:输入一个token,输出一个向量。问题在于同样的token,有同样的embedding。例如:word2vec、Glove。 ????????若用英语作为token,英文词汇非常多,所以使用字母作为token,例如FastText ? ? ? ? 若用中文作为token,把文字看做一个图片,用CNN处理,期待CNN能学到偏旁部首 2、Contextualized Word Embedding:ELMo、BERT,考虑上下文的? ? ? ? 模型架构:输入一个sequence的token,输出一个sequence。使用的是一个很多层的encoder,其中的network可以用LSTM(ELMo)、SA layers(BERT)、Tree-based model(不流行)???????? 二、有了预训练模型,如何fine-tune
1、NLP任务的8个分类?2、有一些特定任务的有标记数据,怎么微调模型?
训练整个模型,最后得到的模型是非常大的,所以提出了adaptor?
也许每一层抽取的信息是不同的,提出了weighted features
三、如何训练一个预训练模型3.1 自监督学习:把数据分成两部分,用一部分输入去预测另外一部分输入3.2 训练方法3.2.1?predict next token:预测下一个token,擅长做生成。如下左图
(1)使用LSTM的ELMo,如下右图
(2)使用self-attention,例如GPT、Megatron、turing NLG,注意要控制sa的范围,否则会偷看到答案GPT-2可以做生成,可以产生文章 3.2.2?BERT-masking input,预测盖住位置的内容,不擅长做生成
1、XLNet认为BERT的遮盖有问题,但是BERT是随机mask的所以问题不大。 2、从LM角度看:XLNet把输入顺序随机打乱,教模型使用不同的信息去预测,可以学到比较多的依赖; 3、从BERT角度看:不根据整个句子来看,而是只根据一部分来预测遮盖部分。BERT给模型看到了mask token的标记,但是XLNet不给模型看到遮盖的mask,它认为后面的预测是没有mask标记的,但是就要给出位置信息,让模型知道预测的是哪一个
1、LM本身就可以做到,输入部分句子输出下一个token 2、自回归模型自左而右生成token,要解决s2s任务,那么BERT只能用作encoder,这个为了s2s加入的decoder就没有训练到。 3、能不能直接预训练一个s2s模型?可以的,自监督的方法训练一个预训练模型:输入一排token到encoder,用attention读取一些信息到decoder,输出一排sequence。注意输入的token必须做扰动(MASS:随机遮盖,BART:直接删掉预测内容、颠倒句子位置、改变token顺序、text infilling:随机插入mask+用一个mask盖多个token,这个方法比较好),否则就学不到东西(attention直接复制过来了) 3.2.3?ELECTRA 不做预测,二元分类问题,判断token是否被置换先用一个小BERT遮盖并预测,替换后让模型识别是否替换 结果是比较好的,GLUE任务上表现是比较好的,同样等级运算量表现更好?? 注:与GAN(先生成,再识别)不同,GAN的生成器要去骗过识别器,但是这里是各做各的 3.2.4 Sentence Level 句子层面的embedding,代表整个sequence,学习句子之间的信息? ?NSP:预测下一个句子 SOP:预测句子顺序 (1)如今流行趋势就是模型越来越大(2)穷人在做的BERT,小模型怎么把模型变小参考资料:各种模型及其压缩技术http://mitchgordon.me/machine/learning/2019/11/18/all-the-ways-to-compress-BERT.html (3) 另外一个方向:让模型能读很长的sequence让模型甚至能读一整本书的长度,这些模型的出现就是为了能处理非常长的sequence |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/17 20:48:38- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |