茶叶创意广告词打折

茶叶打折:如何选择高品质的茶叶

茶叶是中国的一种传统文化,也是世界上最受欢迎的饮品之一。茶叶种类繁多,品质也参差不齐。在茶叶打折的时候,我们应该如何选择高品质的茶叶呢?

茶叶图片

首先,我们需要了解一些基本的知识。茶叶的品质取决于很多因素,包括种类、生长条件、采摘时间、加工工艺等等。在选择茶叶的时候,我们应该尽量选择新鲜的、手工制作的茶叶。新鲜的茶叶口感更好,而手工制作的茶叶更加精细。

茶叶叶子图片

其次,我们需要根据自己的口味选择不同的茶叶种类。不同种类的茶叶口感和香气都不同,比如绿茶清香爽口,红茶口感醇厚,黑茶有独特的陈香,白茶则清新淡雅。因此,在茶叶打折的时候,我们应该根据自己的口味选择适合自己的茶叶。

如何保存茶叶?

在选择好茶叶之后,我们还需要知道如何正确保存茶叶,以保证茶叶的品质和口感。茶叶的保鲜主要取决于以下几个方面。

茶杯图片

储存环境

首先,茶叶应该保存在阴凉、干燥、通风的地方。避免阳光直射和潮湿环境。因此,茶叶不适宜保存在厨房或者浴室等潮湿的环境中。

储存容器

茶叶应该储存在不透明的容器中,以避免光线照射对茶叶的影响。同时,容器应该具有密封性,以避免空气和湿气的进入。最好使用陶瓷、玻璃、不锈钢等材质的容器。

茶叶打折:茶叶的功效与作用

茶叶不仅仅是一种饮品,还具有很多健康的功效和作用。下面介绍一些常见的茶叶功效。

茶杯图片

清热解毒

茶叶中含有多种生物碱、鞣酸、多酚等物质,具有清热解毒、消炎止痛的功效。

降脂减肥

茶叶中的茶多酚、咖啡因等物质可以促进脂肪代谢,有助于降低血脂、减轻体重。

提神醒脑

茶叶中的咖啡因可以刺激中枢神经系统,提高大脑的活跃度,有助于提神醒脑、增强记忆力。

抗衰老防癌

茶叶中的茶多酚、维生素C等物质具有很强的抗氧化作用,可以延缓细胞老化、预防癌症等疾病的发生。

综上所述,在茶叶打折的时候,我们应该选择高品质的茶叶,并且正确地保存茶叶以保证茶叶的品质和口感。同时,茶叶具有很多健康的功效和作用,可以在生活中起到很好的补益作用。

茶叶创意广告词打折特色

1、1:考试资讯随心订阅,各类考试信息即时更新,一手资讯把握最新公职就业机会

2、不要给对手任何机会,在球场上充分展现自己,这样才能让对手心服口服。

3、专业提醒的服务将会在这为你提供,让你可以轻松获取到不一样的活动。

4、寻找各种角色的战斗特性,挑选最适合自己的战斗模式开始进行模拟冒险战斗。

5、可以自由搭配不同的服饰,每个赛道上都有各种各样的装饰,玩家可以自由收藏。

茶叶创意广告词打折亮点

1、随时随地查看莆田热门楼盘以及热门户型图,帮你掌握最新楼盘户型信息!

2、蜜疯直播app软件各式各样的短视频和直播都是十分顺手的,让你看得舒适。

3、这里也可以对照片、视频等内容进行加密处理,不需要担心隐私泄露。

4、专为儿童打造的专业训练平台,可以很好的适用于不同阶段的孩子需要。

5、热血刺激的竞速过程中,你可以邂逅更多高手赛车手,具有一定挑战难度。

1:kaoshizixunsuixindingyue,geleikaoshixinxijishigengxin,yishouzixunbawozuixingongzhijiuyejihuibuyaogeiduishourenhejihui,zaiqiuchangshangchongfenzhanxianziji,zheyangcainengrangduishouxinfukoufu。zhuanyetixingdefuwujianghuizaizheweinitigong,rangnikeyiqingsonghuoqudaobuyiyangdehuodong。xunzhaogezhongjiaosedezhandoutexing,tiaoxuanzuishihezijidezhandoumoshikaishijinxingmonimaoxianzhandou。keyiziyoudapeibutongdefushi,meigesaidaoshangdouyougezhonggeyangdezhuangshi,wanjiakeyiziyoushouzang。Transformer結(jie)構(gou)及(ji)其(qi)應(ying)用(yong)詳(xiang)解(jie)——GPT、BERT、MT-DNN、GPT-2

新(xin)智(zhi)元(yuan)報(bao)道(dao)

作(zuo)者(zhe):Ph0en1x

編(bian)輯(ji):QQ

【新智元導(dao)讀(du)】本(ben)文(wen)首(shou)先(xian)详細(xi)介(jie)紹(shao)Transformer的(de)基(ji)本结构,然(ran)後(hou)再(zai)通(tong)過(guo)GPT、BERT、MT-DNN以(yi)及GPT-2等(deng)基於(yu)Transformer的知(zhi)名(ming)应用工(gong)作的介绍並(bing)附(fu)上(shang)GitHub鏈(lian)接(jie),看(kan)看Transformer是(shi)如(ru)何(he)在(zai)各(ge)個(ge)著(zhu)名的模(mo)型(xing)中(zhong)大(da)顯(xian)神(shen)威(wei)的。

在介绍Transformer前(qian)我(wo)們(men)來(lai)回(hui)顧(gu)壹(yi)下(xia)RNN的结构

對(dui)RNN有(you)一定(ding)了(le)解的話(hua),一定會(hui)知道,RNN有兩(liang)个很(hen)明(ming)显的問(wen)題(ti)

效(xiao)率(lv)问题:需(xu)要(yao)逐(zhu)个詞(ci)進(jin)行(xing)處(chu)理(li),后一个词要等到(dao)前一个词的隱(yin)狀(zhuang)態(tai)輸(shu)出(chu)以后才(cai)能(neng)開(kai)始(shi)处理

如果(guo)傳(chuan)遞(di)距(ju)離(li)过長(chang)還(hai)会有梯(ti)度(du)消(xiao)失(shi)、梯度爆(bao)炸(zha)和(he)遺(yi)忘(wang)问题

為(wei)了緩(huan)解传递間(jian)的梯度和遗忘问题,設(she)計(ji)了各種(zhong)各樣(yang)的RNN cell,最(zui)著名的两个就(jiu)是LSTM和GRU了

LSTM (Long Short Term Memory)

GRU (Gated Recurrent Unit)

但(dan)是,引(yin)用網(wang)上一个博(bo)主(zhu)的比(bi)喻(yu),這(zhe)麽(me)做(zuo)就像(xiang)是在給(gei)馬(ma)車(che)換(huan)车輪(lun),为什(shen)么不(bu)直(zhi)接换成(cheng)汽(qi)车呢(ne)?

于是就有了我们本文要介绍的核(he)心(xin)结构——Transformer。Transformer 是Google Brain 2017的提(ti)出的一篇(pian)工作,它(ta)針(zhen)对RNN的弱(ruo)點(dian)进行重(zhong)新设计,解決(jue)了RNN效率问题和传递中的缺(que)陷(xian)等,在很多(duo)问题上都(dou)超(chao)过了RNN的表(biao)現(xian)。Transfromer的基本结构如下圖(tu)所(suo)示(shi),它是一个N进N出的结构,也(ye)就是說(shuo)每(mei)个Transformer單(dan)元相(xiang)當(dang)于一層(ceng)的RNN层,接收(shou)一整(zheng)个句(ju)子(zi)所有词作为输入(ru),然后为句子中的每个词都做出一个输出。但是與(yu)RNN不同(tong)的是,Transformer能夠(gou)同時(shi)处理句子中的所有词,并且(qie)任(ren)意(yi)两个词之(zhi)间的操(cao)作距离都是1,这么一来就很好(hao)地(di)解决了上面(mian)提到的RNN的效率问题和距离问题。

每个Transformer单元都有两个最重要的子层,分(fen)別(bie)是Self-Attention层与Feed Forward层,后面会对这两个层的详细结构做介绍。文章(zhang)使(shi)用Transformer搭(da)建(jian)了一个類(lei)似(si)Seq2Seq的語(yu)言(yan)翻(fan)譯(yi)模型,并为Encoder与Decoder设计了两种不同的Transformer结构。

Decoder Transformer相对于Encoder Transformer多了一个Encoder-Decoder Attention层,用来接收来自(zi)于Encoder的输出作为參(can)數(shu)。最終(zhong)只(zhi)要按(an)照(zhao)下图的方(fang)式(shi)堆(dui)疊(die),就可(ke)以完(wan)成Transformer Seq2Seq的结构搭建。

舉(ju)个例(li)子介绍下如何使用这个Transformer Seq2Seq做翻译

首先,Transformer对原(yuan)语言的句子进行编碼(ma),得(de)到memory。

第(di)一次(ci)解码时输入只有一个<SOS>標(biao)誌(zhi),表示句子的开始。

解码器(qi)通过这个唯(wei)一的输入得到的唯一的输出,用于預(yu)測(ce)句子的第一个词。

已(yi)關(guan)註(zhu)

关注

重播(bo)分享(xiang)贊(zan)

关閉(bi)

觀(guan)看更(geng)多

更多

正(zheng)在加(jia)載(zai)

正在加载

退(tui)出全(quan)屏(ping)

視(shi)頻(pin)加载失敗(bai),請(qing)刷(shua)新頁(ye)面再試(shi)

刷新

视频详情(qing)

第二(er)次解码,將(jiang)第一次的输出Append到输入中,输入就變(bian)成了<SOS>和句子的第一个词(ground truth或(huo)上一步(bu)的预测),解码生(sheng)成的第二个输出用于预测句子的第二个词。以此(ci)类推(tui)(过程(cheng)与Seq2Seq非(fei)常(chang)类似)

了解了Transformer的大致(zhi)结构以及如何用它来完成翻译任務(wu)后,接下来就看看Transformer的详细结构:

核心組(zu)件(jian)就是上面所提到的Self-Attention和Feed Forward Networks,但还有很多其他(ta)细節(jie),接下来我们就开始逐个结构的来解读Transformer。

Self Attention

Self Attention就是句子中的某(mou)个词对于本身(shen)的所有词做一次Attention。算(suan)出每个词对于这个词的權(quan)重,然后将这个词表示为所有词的加权和。每一次的Self Attention操作,就像是为每个词做了一次Convolution操作或Aggregation操作。具(ju)體(ti)操作如下:

首先,每个词都要通过三(san)个矩(ju)陣(zhen)Wq, Wk, Wv进行一次線(xian)性(xing)变化(hua),一分为三,生成每个词自己(ji)的query, key, vector三个向(xiang)量(liang)。以一个词为中心进行Self Attention时,都是用这个词的key向量与每个词的query向量做点積(ji),再通过Softmax歸(gui)一化出权重。然后通过这些(xie)权重算出所有词的vector的加权和,作为这个词的输出。具体过程如下图所示

归一化之前需要通过除(chu)以向量的維(wei)度dk来进行标準(zhun)化,所以最终Self Attention用矩阵变换的方式可以表示为

最终每个Self Attention接受(shou)n个词向量的输入,输出n个Aggregated的向量。

上文提到Encoder中的Self Attention与Decoder中的有所不同,Encoder中的Q、K、V全部(bu)来自于上一层单元的输出,而(er)Decoder只有Q来自于上一个Decoder单元的输出,K与V都来自于Encoder最后一层的输出。也就是说,Decoder是要通过当前状态与Encoder的输出算出权重后,将Encoder的编码加权得到下一层的状态。

Masked Attention

通过观察(cha)上面的结构图我们还可以發(fa)现Decoder与Encoder的另(ling)外(wai)一个不同,就是每个Decoder单元的输入层,要先經(jing)过一个Masked Attention层。那(na)么Masked的与普(pu)通版(ban)本的Attention有什么區(qu)别呢?

Encoder因(yin)为要编码整个句子,所以每个词都需要考(kao)慮(lv)上下文的关系(xi)。所以每个词在计算的过程中都是可以看到句子中所有的词的。但是Decoder与Seq2Seq中的解码器类似,每个词都只能看到前面词的状态,所以是一个单向的Self-Attention结构。

Masked Attention的實(shi)现也非常簡(jian)单,只要在普通的Self Attention的Softmax步驟(zhou)之前,与(&)上一个下三角(jiao)矩阵M就好了

Multi-Head Attention

Multi-Head Attention就是将上述(shu)的Attention做h遍(bian),然后将h个输出进行concat得到最终的输出。这样做可以很好地提高(gao)算法(fa)的穩(wen)定性,在很多Attention相关的工作中都有相关的应用。Transformer的实现中,为了提高Multi-Head的效率,将W擴(kuo)大了h倍(bei),然后通过view(reshape)和transpose操作将相同词的不同head的k、q、v排(pai)列(lie)在一起(qi)进行同时计算,完成计算后再次通过reshape和transpose完成拼(pin)接,相当于对于所有的head进行了一个并行处理。

Position-wise Feed Forward Networks

Encoder中和Decoder中经过Attention之后输出的n个向量(这裏(li)n是词的个数)都分别的输入到一个全連(lian)接层中,完成一个逐个位(wei)置(zhi)的前饋(kui)网絡(luo)。

Add & Norm

是一个殘(can)差(cha)网络,将一层的输入与其标准化后的输出进行相加即(ji)可。Transformer中每一个Self Attention层与FFN层后面都会连一个Add & Norm层。

Positional Encoding

由(you)于Transformer中既(ji)不存(cun)在RNN,也不同于CNN,句子里的所有词都被(bei)同等的看待(dai),所以词之间就沒(mei)有了先后关系。换句话说,很可能会帶(dai)上和词袋(dai)模型相同的不足(zu)。为了解决这个问题,Transformer提出了Positional Encoding的方案(an),就是给每个输入的词向量叠加一个固(gu)定的向量来表示它的位置。文中使用的Positional Encoding如下:

其中pos是词在句子中的位置,i是词向量中第i位,即将每个词的词向量为一行进行叠加,然后针对每一列都叠加上一个相位不同或波(bo)长逐漸(jian)增(zeng)大的波,以此来唯一区分位置。

Transformer 工作流(liu)程

Transformer的工作流程就是上面介绍的每一个子流程的拼接

输入的词向量首先叠加上Positional Encoding,然后输入至(zhi)Transformer內(nei)

每个Encoder Transformer会进行一次Multi-head self attention->Add & Normalize->FFN->Add & Normalize流程,然后将输出输入至下一个Encoder中

最后一个Encoder的输出将会作为memory保(bao)留(liu)

每个Decoder Transformer会进行一次Masked Multi-head self attention->Multi-head self attention->Add & Normalize->FFN->Add & Normalize流程,其中Multi-head self attention时的K、V至来自于Encoder的memory。根(gen)據(ju)任务要求(qiu)输出需要的最后一层Embedding。

Transformer的输出向量可以用来做各种下遊(you)任务

GitHub链接:https://github.com/harvardnlp/annotated-transformer

Post um

雖(sui)然在Transformer文章中提出了一种自然语言翻译的模型,很多文章把(ba)这个模型稱(cheng)为Transformer。但我们还是傾(qing)向于将文章中利(li)用Self-Attention的Encoder或Decoder的子结构称为Transformer。文中和源(yuan)码中还包(bao)含(han)了很多其他的一些優(you)化例如學(xue)習(xi)率動(dong)态变化,Residual Dropout以及Label Smoothing在这里就不再贅(zhui)述,有興(xing)趣(qu)的朋(peng)友(you)可以閱(yue)读相关参考文獻(xian)进行了解。

单向二階(jie)段(duan)訓(xun)練(lian)模型——OpenAI GPT

GPT(Generative Pre-Training),是OpenAI在2018年(nian)提出的模型,利用Transformer模型来解决各种自然语言问题,例如分类、推理、问答(da)、相似度等应用的模型。GPT采(cai)用了Pre-training + Fine-tuning的训练模式,使得大量無(wu)标記(ji)的数据得以利用,大大提高了这些问题的效果。

GPT就是利用Transformer进行自然语言各种任务的嘗(chang)试之一,主要有以下三个要点

Pre-Training的方式

单向Transformer模型

Fine-Tuning与不同输入数据结构的变化

如果已经理解了Transformer的原理,那么只需要再搞(gao)懂(dong)上面的三个内容(rong)就能够对GPT有更深(shen)的認(ren)識(shi)。

Pre-Training 训练方式

很多機(ji)器学习任务都需要带标簽(qian)的数据集(ji)作为输入完成。但是我们身邊(bian)存在大量没有标注的数据,例如文本、图片(pian)、代(dai)码等等。标注这些数据需要花(hua)費(fei)大量的人(ren)力(li)和时间,标注的速(su)度遠(yuan)远不及数据產(chan)生的速度,所以带有标签的数据往(wang)往只占(zhan)有總(zong)数据集很小(xiao)的一部分。隨(sui)著(zhe)算力的不斷(duan)提高,计算机能够处理的数据量逐渐增大。如果不能很好利用这些无标签的数据就显得很浪(lang)费。

所以半(ban)監(jian)督(du)学习和预训练+微(wei)調(tiao)的二阶段模式整变得越(yue)来越受歡(huan)迎(ying)。最常見(jian)的二阶段方法就是Word2Vec,使用大量无标记的文本训练出带有一定语義(yi)信(xin)息(xi)的词向量,然后将这些词向量作为下游机器学习任务的输入,就能够大大提高下游模型的泛(fan)化能力。

但是Word2Vec有一个问题,就是单个单词只能有一个Embedding。这样一来,一词多义就不能很好地进行表示。

ELMo首先想(xiang)到了在预训练阶段为每个词匯(hui)集其上下文信息,使用的是基于bi-LSTM的语言模型给词向量带上上下文语义信息:

上式分别代表了左(zuo)右(you)两向的LSTM-RNN,他们共(gong)享输入的词向量X以及RNN各层权重S,也就是使用雙(shuang)向RNN两向的输出,来同时预测下一个单词(右向的下一个,左向的上一个),具体结构如下图所示:

但ELMo使用的是RNN来完成语言模型的预训练,那么如何使用Transformer来完成预训练呢?

单向Transformer结构

OpenAI GPT采用了单向Transformer完成了这項(xiang)预训练任务。

什么是单向Transformer?在Transformer的文章中,提到了Encoder与Decoder使用的Transformer Block是不同的。在Decoder Block中,使用了Masked Self-Attention,即句子中的每个词,都只能对包括(kuo)自己在内的前面所有词进行Attention,这就是单向Transformer。GPT使用的Transformer结构就是将Encoder中的Self-Attention替(ti)换成了Masked Self-Attention,具体结构如下图所示:

由于采用的是单向的Transformer,只能看到上文的词,所以语言模型为:

而训练的过程其实非常的简单,就是将句子n个词的词向量(第一个为<SOS>)加上Positional Encoding后输入到前面提到的Transfromer中,n个输出分别预测該(gai)位置的下一个词(<SOS>预测句子中的第一个词,最后一个词的预测结果不用于语言模型的训练)。

由于使用了Masked Self-Attention,所以每个位置的词都不会“看见”后面的词,也就是预测的时候(hou)是看不见“答案”的,保證(zheng)了模型的合(he)理性,这也是为什么OpenAI采用了单向Transformer的原因。

Fine-Tuning与不同输入数据结构的变化

接下来就进入模型训练的第二步,運(yun)用少(shao)量的带标签数据对模型参数进行微调。

上一步中最后一个词的输出我们没有用到,在这一步中就要使用这一个输出来作为下游监督学习的输入。

为避(bi)免(mian)Fine-Tuning使得模型陷入过擬(ni)合,文中还提到了輔(fu)助(zhu)训练目(mu)标的方法,类似于一个多任务模型或者半监督学习。具体方法就是在使用最后一个词的预测结果进行监督学习的同时,前面的词繼(ji)續(xu)上一步的无监督训练,使得最终的損(sun)失函(han)数成为:

针对不同任务,需要修(xiu)改(gai)输入数据的格(ge)式:

Classification:对于分类问题,不需要做什么修改

Entailment:对于推理问题,可以将先驗(yan)与假(jia)设使用一个分隔(ge)符(fu)分开

Similarity:对于相似度问题,由于模型是单向的,但相似度与順(shun)序(xu)无关。所以需要将两个句子顺序顛(dian)倒(dao)后两次输入的结果相加来做最后的推测

Multiple Choice:对于问答问题,則(ze)是将上下文、问题放(fang)在一起与答案分隔开,然后进行预测

GitHub链接:https://github.com/openai/finetune-transformer-lm

Post um

OpenAI GPT在Transformer的运用和二阶段训练方式上做出了很好的探(tan)索(suo),也取(qu)得了非常不錯(cuo)的效果,为后面的BERT鋪(pu)平(ping)了道路(lu)。

双向二阶段训练模型——BERT

BERT(Bidirectional Encoder Representation from Transformer),是Google Brain在2018年提出的基于Transformer的自然语言表示框(kuang)架(jia)。是一提出就大火(huo)的明星(xing)模型。BERT与GPT一样,采取了Pre-training + Fine-tuning的训练方式,在分类、标注等任务下都獲(huo)得了更好的效果。

BERT与GPT非常的相似,都是基于Transformer的二阶段训练模型,都分为Pre-Training与Fine-Tuning两个阶段,都在Pre-Training阶段无监督地训练出一个可通用的Transformer模型,然后在Fine-Tuning阶段对这个模型中的参数进行微调,使之能够適(shi)应不同的下游任务。

虽然BERT与GPT看上去(qu)非常的相似,但是它们的训练目标和模型结构和使用上还是有着些許(xu)的不同:

GPT采用的是单向的Transformer,而BERT采用的是双向的Transformer,也就是不用进行Mask操作;

使用的结构的不同,直接导致了它们在Pre-Training阶段训练目标的不同;

双向Transformer

BERT采用的是不经过Mask的Transformer,也就是与Transformer文章中的Encoder Transformer结构完全一样:

GPT中因为要完成语言模型的训练,也就要求Pre-Training预测下一个词的时候只能够看见当前以及之前的词,这也是GPT放棄(qi)原本Transformer的双向结构轉(zhuan)而采用单向结构的原因。

BERT为了能够同时得到上下文的信息,而不是像GPT一样完全放弃下文信息,采用了双向的Transformer。但是这样一来,就无法再像GPT一样采用正常的语言模型来预训练了,因为BERT的结构导致每个Transformer的输出都可以看见整个句子的,无論(lun)妳(ni)用这个输出去预测什么,都会“看见”参考答案,也就是“see itself”的问题。ELMo中虽然采用的是双向RNN,但是两个RNN之间是獨(du)立(li)的,所以可以避免see itself的问题。

Pre-Training阶段

那么BERT想用双向的Transformer模型,就不得不放弃GPT中所采用的语言模型来作为预训练的目标函数。取而代之的,BERT提出了一种完全不同的预训练方法。

Masked Language Model (MLM)

在Transformer中,我们即想要知道上文的信息,又(you)想要知道下文的信息,但同时要保证整个模型不知道要预测词的信息,那么就幹(gan)脆(cui)不要告(gao)訴(su)模型这个词的信息就可以了。也就是说,BERT在输入的句子中,挖(wa)掉(diao)一些需要预测的词,然后通过上下文来分析(xi)句子,最终使用其相应位置的输出来预测被挖掉的词。这其实就像是在做完形(xing)填(tian)空(kong) (Cloze)一样。

但是,直接将大量的词替换为<MASK>标签可能会造(zao)成一些问题,模型可能会认为只需要预测<MASK>相应的输出就行,其他位置的输出就无所謂(wei)。同时Fine-Tuning阶段的输入数据中并没有<MASK>标签,也有数据分布(bu)不同的问题。为了減(jian)輕(qing)这样训练带来的影(ying)響(xiang),BERT采用了如下的方式:

1.输入数据中随机選(xuan)擇(ze)15%的词用于预测,这15%的词中,

2.80%的词向量输入时被替换为<MASK>

3.10%的词的词向量在输入时被替换为其他词的词向量

4.另外10%保持(chi)不动

这样一来就相当于告诉模型,我可能给你答案,也可能不给你答案,也可能给你错誤(wu)的答案,有<MASK>的地方我会檢(jian)查(zha)你的答案,没<MASK>的地方我也可能检查你的答案,所以<MASK>标签对你来说没有什么特(te)殊(shu)意义,所以无论如何,你都要好好预测所有位置的输出。

Next Sentence Prediction (NSP)

BERT还提出了另外一种预训练方式NSP,与MLM同时进行,组成多任务预训练。这种预训练的方式就是往Transformer中输入连续的两个句子,左边的句子前面加上一个<CLS>标签,它的输出被用来判(pan)断两个句子之间是否(fou)是连续上下文关系。采用負(fu)采样的方法,正负样本各占50%。

为了区分两个句子的前后关系,BERT除了加入了Positional Encoding之外,还两外加入了一个在预训练时需要学习的Segment Embedding来区分两个句子。这样一来,BERT的输入就由词向量、位置向量、段向量三个部分相加组成。此外,两个句子之间使用<SEP>标签予(yu)以区分。

整体Pre-Training的示意图如下:

Fine-Tuning阶段

BERT的Fine-Tuning阶段和GPT没有太(tai)大区别。因为采用了双向的Transformer所以放弃了GPT在Fine-Tuning阶段使用的辅助训练目标,也就是语言模型。此外就是将分类预测用的输出向量從(cong)GPT的最后一个词的输出位置改为了句子开頭(tou)<CLS>的位置了。不同的任务Fine-Tuning的示意图如下:

GitHub链接:https://github.com/google-research/bert

Post um

个人认为,BERT只是GPT模型的一种trade-off,为了在两个阶段都能够同时获得句子上下文的信息,使用了双向Transformer模型。但是为此卻(que)要付(fu)出失去传統(tong)语言模型的代價(jia),转而采用MLM+NSP这种更加復(fu)雜(za)的方式进行预训练。

多任务模型——MT-DNN

MT-DNN (Multi-Task Deep Neural Networks) 依(yi)然采用了BERT的二阶段训练方法以及双向Transformer。在Pre-Training阶段,MT-DNN与BERT幾(ji)乎(hu)完全一样,但是在Fine-Tuning阶段,MT-DNN采用了多任务的微调方式。同时采用Transformer输出的上下文Embedding进行单句分类、文本对相似度、文本对分类以及问答等任务的训练。整个结构如下图所示:

GitHub链接:https://github.com/namisan/mt-dnn

单向通用模型——GPT-2

GPT-2继续沿(yan)用了原来在GPT种使用的单向Transformer模型,而这篇文章的目的就是盡(jin)可能利用单向Transformer的优勢(shi),做一些BERT使用的双向Transformer所做不到的事(shi)。那就是通过上文生成下文文本。

GPT-2的想法就是完全舍(she)弃Fine-Tuning过程,转而使用一个容量更大、无监督训练、更加通用的语言模型来完成各种各样的任务。我们完全不需要去定义这个模型应该做什么任务,因为很多标签所蘊(yun)含的信息,就存在于语料(liao)当中。就像一个人如果博覽(lan)群(qun)書(shu),自然可以根据看过的内容轻松(song)的做到自动摘(zhai)要、问答、续寫(xie)文章这些事。

嚴(yan)格来说GPT-2可能不算是一个多任务模型,但是它確(que)实使用相同的模型、相同的参数完成了不同的任务。那么GPT-2是怎(zen)么使用语言模型完成多种任务的呢?

通常我们针对特定任务训练的專(zhuan)用模型,给定输入,就可以返(fan)回这个任务相应的输出,也就是

那么如果我们希(xi)望(wang)设计一个通用的模型,这个模型在给定输入的同时还需要给定任务类型,然后根据给定输入与任务来做出相应的输出,那么模型就可以表示成下面这个样子

就好像原来我需要翻译一个句子,需要专門(men)设计一个翻译模型,想要问答系统需要专门设计一个问答模型。但是如果一个模型足够聰(cong)明,并且能够根据你的上文生成下文,那我们就可以通过在输入中加入一些标识符就可以区分各种问题。比如可以直接问他:(‘自然语言处理', 中文翻译)来得到我们需要的结果Nature Language Processing。在我的理解中GPT-2更像是一个无所不知的问答系统,通过告知一个给定任务的标识符,就可以对多种領(ling)域(yu)的问答、多种任务做出合适的回答。GPT-2滿(man)足零(ling)样本设置 (zero-shot setting), 在训练的过程中不需要告诉他应该完成什么样的任务,预测是也能给出較(jiao)为合理的回答。

那么GPT-2为了做到上面这些要求,做了哪(na)些工作呢?

拓(tuo)寬(kuan)并加大数据集

首先就是要讓(rang)模型博览群书,如果训练样本都不够多,那还怎么进行推理?前面的工作都是针对某一个特定问题的,所以数据集都比较片面。GPT-2收集了一个規(gui)模更大、範(fan)圍(wei)更廣(guang)的数据集。同时呢,要保证这个数据集的質(zhi)量,保留那些擁(yong)有高质量内容的网页。最终组成了一个800萬(wan)个文本,40G的数据集WebText。

扩大网络容量

书多了腦(nao)袋容量也得带一些要不然记不住(zhu)书里的東(dong)西(xi)。为了提高网络的容量,使其拥有更強(qiang)的学习潛(qian)力,GPT-2将Transformer堆叠的层数增加到48层,隐层的维度为1600,参数量達(da)到了15億(yi)。

调整网络结构

GPT-2将词汇表提升(sheng)到50257,最大的上下文大小 (context size) 从GPT的512提升到了1024,batchsize从512提升为1024。此外还对Transformer做出了小调整,标准化层放到没每个sub-block之前,最后一个Self-attention后又增加了一个标准化层;改变了残差层的初(chu)始化方法等等。

GitHub链接:https://github.com/openai/gpt-2

Post um

GPT-2其实最驚(jing)人的是其極(ji)强的生成能力,而如此强大的生成能力主要还是要归功(gong)于其数据质量以及惊人参数量和数据规模。GPT-2的参数量大到用于实验的模型都还处于欠(qian)拟合状态,如果接着训练,效果还能进一步提升。

总结

总上面这些关于Transformer工作的发展(zhan)中,我也整理出了一些关于深度学习发展趨(qu)势的个人心得:

1. 有监督模型向半监督甚(shen)至无监督方向发展

数据的规模的增长速度远远超过了数据的标注速度,这也就导致了大量无标签数据的产生。这些无标签的数据并非没有价值(zhi),相反(fan),如果找(zhao)到合适的“煉(lian)金(jin)術(shu)”,将可以从这些海(hai)量的数据中获取意想不到的价值。如何利用上这些无标签的数据来改善(shan)任务的表现变成了一个越来越无法轻视的问题。

2. 从少量数据复杂模型到大量数据简单模型

深度神经网络的拟合能力非常的强大,一个简单的神经网络模型就足以拟合任何函数。但无奈(nai)使用越简单的网络结构完成同一个任务,对数据量的要求也更高。数据量越是上升,数据质量越是提高,往往对模型的要求就会越会降(jiang)低(di)。数据量越大,模型就越容易(yi)捕(bu)捉(zhuo)到符合真(zhen)实世(shi)界(jie)分布的特征(zheng)。Word2Vec就是一个例子,它所使用的目标函数非常的简单,但是由于使用了大量的文本,于是训练出的词向量中就包含了许多有趣的特性。

3. 从专用模型向通用模型发展

GPT、BERT、MT-DNN、GPT-2都使用了经过预训练的通用模型来继续进行下游的机器学习任务,并不需要对模型本身再做太多的修改。如果一个模型的表达能力足够的强,训练时候使用的数据量足够的大,那么模型的通用性就会更强,就不需要针对特定的任务做太多的修改。最极端(duan)的情況(kuang)就像是GPT-2这个样子,训练时甚至完全不需要知道后续的下游任务是什么,就能够训练出一个通用的多任务模型。

4. 对数据的规模和质量要求提高

GPT、BERT、MT-DNN、GPT-2虽然先后刷榜(bang),但是我认为成績(ji)的提升中,数据规模的提升占有比结构调整更大的比重。随着模型的通用化和简单化,为提升模型的性能,今(jin)后更多的注意力将会从如何设计一个复杂、专用的模型转移(yi)到如何获取、清(qing)洗(xi)、精(jing)化出质量更加出眾(zhong)的、大量的数据上。数据的处理方式调整的作用将会大于模型结构调整的作用。

綜(zong)上所述,DL競(jing)賽(sai)遲(chi)早(zao)要成为大廠(chang)间拼資(zi)源、拼算力的较量。可能几年内就会出现一个新的課(ke)题:綠(lv)色(se)AI,低碳(tan)AI,可持续AI等。

参考文献:

[1] Vaswani A, Shazeer N, Parmar N, et al. Attention is All you Need[J]. neural information processing systems, 2017: 5998-6008

[2] http://nlp.seas.harvard.edu/2018/04/03/attention.html

[3] https://jalammar.github.io/illustrated-transformer/

[4] Radford, Alec, et al."Improving language understanding by generative pre-training." URL https://s3-us-west-2. amazonaws. com/openai-assets/research-covers/languageunsupervised/language understanding paper. pdf (2018).

[5] Peters M E, Neumann M, Iyyer M, et al. DEEP CONTEXTUALIZED WORD REPRESENTATIONS[J]. north american chapter of the association for computational linguistics, 2018: 2227-2237.

[6] Devlin J, Chang M, Lee K, et al. BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding[J]. arXiv: Computation and Language, 2018.

[7] Liu X, He P, Chen W, et al. Multi-Task Deep Neural Networks for Natural Language Understanding.[J]. arXiv: Computation and Language, 2019.

[8] Radford A, Wu J, Child R, et al. Language models are unsupervised multitask learners[J]. OpenAI Blog, 2019, 1(8).

参考资料:

https://zhuanlan.zhihu.com/p/69290203返回搜(sou)狐(hu),查看更多

責(ze)任编辑:

发布于:湖北十堰房县