【NLP】語言模型和遷移學習
淘宝搜:【天降红包222】领超级红包,京东搜:【天降红包222】
淘宝互助,淘宝双11微信互助群关注公众号 【淘姐妹】
10.13 Update:最近新出了一state-of-the-artA模型,魉烷T:node
L期以恚~向量一直是NLP任罩械闹饕表徵技g。S着2017年末以及2018年初的一系列技g突破,研究C明A的Z言表徵通^精{後能蛟谛\多NLP任罩羞_到更好的表F。目前A有煞N方法:git
- Feature-based:⒂出的representation做feature用於任眨脑~向量、句向量、段向量、文本向量都是@拥摹P碌ELMo也凫哆@,但w移後要男掠算出入的表徵。
- Fine-tuning:@主要借a於CV,就是在A好的模型上加些θ盏樱再後舆M行精{。新的ULMFit和OpenAI GPT凫哆@一。
本文主要ELMo、ULMFiT以及OpenAI GPT三NAZ言模型做要介B。github
原文B接:Deep contextualized word representationsWj
ELMo是碾p向Z言模型(BiLM)中提取出的Embedding。r使用BiLSTM,o定Ntokens (t1, t2,...,tN), 目最大化:session
ELMo於每一token , ^一L拥biLM算出2L+1表示:架
其中 是tokenM行直接a的Y果(@Y是字符^CNNa), 是每一biLSTM虞出的Y果。app
用中ELMo中全部拥妮出R嚎s向量, , 最蔚嚎s方法是取最上拥慕Y果作token的表示: , 更通用的作法是^一些砺合全部拥男畔:dom
其中 是softmax出淼嘀, 是一任障嚓P的scale担在化^程中很重要,同r由於每BiLM的出分巡灰樱 能悠鸬normalisation的做用。ide
文中使用的ABiLM在Jozefowicz et al.中的CNN-BIG-LSTM基A上作了修改,最K模型2biLSTM(4096 units, 512 dimension projections),K在第一雍偷诙又g增L了差接。同r使用CNN和HighwaytokenM行字符的上下文oPa。使得模型最Kγ恳token出三酉蛄勘硎尽svg
- 正t化:
1. Dropout
2. 在loss中添加嘀氐土P (Y果@示ELMom合^小的 )
- TF版源a解析:
1. 模型架的代a主要在training模K的LanguageModel中,分刹剑旱谝徊浇立word或character的Embedding樱CNN+Highway);第二步建立BiLSTM印
2. 加d所需的A模型model模K中的BidirectionalLanguageModel。
- ELMo向量 c鹘y的~向量 拼接成 後,入到具w任盏RNN中。
- ELMo向量放到模型出部分,c具w任RNN出的 拼接成 。
- Keras代a示例
import tensorflow as tf from keras import backend as K import keras.layers as layers from keras.models import Model # Initialize session sess=tf.Session() K.set_session(sess) # Instantiate the elmo model elmo_model=hub.Module("https://tfhub.dev/google/elmo/1", trainable=True) sess.run(tf.global_variables_initializer()) sess.run(tf.tables_initializer()) # We create a function to integrate the tensorflow model with a Keras model # This requires explicitly casting the tensor to a string, because of a Keras quirk def ElmoEmbedding(x): return elmo_model(tf.squeeze(tf.cast(x, tf.string)), signature="default", as_dict=True)["default"] input_text=layers.Input(shape=(1,), dtype=tf.string) embedding=layers.Lambda(ElmoEmbedding, output_shape=(1024,))(input_text) dense=layers.Dense(256, activation='relu')(embedding) pred=layers.Dense(1, activation='sigmoid')(dense) model=Model(inputs=[input_text], outputs=pred) model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) model.summary()}u代a
:
- 效果好,在大部分任丈隙驾^鹘y模型有提高。正式ELMo相比於~向量,能蚋好地捕捉到Z法和Zx用娴男畔。
- 鹘y的A~向量只能提供一颖磲纾K且~×渴艿较拗啤ELMo所提供的是character-level的表徵,υ~×]有限制。
缺c:
速度^慢,γ恳tokena都要^language model算得出。
- Question Answering
- Textual entailment
- Semantic role labeling
- Coreference resolution
- Named entity extraction
- Sentiment analysis
原文B接:Universal Language Model Fine-tuning for Text Classification
ULMFiT是一N有效的NLPw移W方法,核心思想是^精{A的Z言模型完成其NNLP任铡N闹兴用的Z言模型⒖剂Merity et al. 2017a的AWD-LSTM模型,即]有attention或shortcut的三LSTM模型。
ULMFiT的^程分三步:
1. General-domain LM pre-train
- 在Wikitext-103上M行Z言模型的A。
- A的Z料要求:large & capture general properties of language
- Aπ集十分有效,以後H有少S颖揪涂墒鼓P头夯。
2. Target task LM fine-tuning
文中介B了煞Nfine-tuning方法:
- Discriminative fine-tuning
由於Wj中不一幽虿东@不一宇型的信息,所以在精{r也使用不一拥learning rate。做者每一淤x予一W率 ,後lF,首先^精{模型的最後一L肯定W率 ,再f推地x裆弦W率M行精{的效果最好,f推公式:
- Slanted triangular learning rates (STLR)
了μ囟ㄈ者x担理想r下要在_始r悼焖偈康揭合m的^域,以後M行精{。了_到@N效果,做者提出STLR方法,即LR在初期短哼f增,在以後降低。如Db的右上角所示。具w的公式:
- T: number of training iterations
- cut_frac: fraction of iterations we increase the LR
- cut: the iteration when we switch from increasing to decreasing the LR
- p: the fraction of the number of iterations we have increased or will decrease the LR respectively
- ratio: specifies how much smaller the lowest LR is from thr max LR
- : the LR at iteration t
文中做者使用的
3. Target task classifier fine-tuning
了完成分任盏木{,做者在最後一犹砑恿性block,每一都有batch-norm和dropout,使用ReLU做中g蛹せ詈担最後通^softmax出分的C率分选W钺岬木{涉及的h以下:
- Concat pooling 第一性拥妮入是最後一[B的池化。由於文本分的PI信息可能在文本的任何地方,因此只是用最後rg步的出是不虻摹W稣⒆钺rg步 c量多的rg步 池化後拼接起恚以 做入。
- Gradual unfreezing 因^分精{致使模型z忘以前A@得的信息,做者提出逐uunfreezWj拥姆椒ǎ淖钺嵋娱_始unfreez和精{,由後向前地unfreezK精{全部印
- BPTT for Text Classification (BPT3C) 了在large documents上M行模型精{,做者⑽n分固定L度b的batches,K在每一batchrmean和max池化,梯度被反向鞑サψ罱KAy有I的batches。
- Bidirectional language model 在做者的中,分e立地η跋蚝歪嵯LM作了精{,K⒍者的AyY果平均。二者Y合後Y果有0.5-0.7的提高。
- PyTorch版源a解析 (FastAI第10n)
# location: fastai/lm_rnn.py def get_language_model(n_tok, emb_sz, n_hid, n_layers, pad_token, dropout=0.4, dropouth=0.3, dropouti=0.5, dropoute=0.1, wdrop=0.5, tie_weights=True, qrnn=False, bias=False): """Returns a SequentialRNN model. A RNN_Encoder layer is instantiated using the parameters provided. This is followed by the creation of a LinearDecoder layer. Also by default (i.e. tie_weights=True), the embedding matrix used in the RNN_Encoder is used to instantiate the weights for the LinearDecoder layer. The SequentialRNN layer is the native torch's Sequential wrapper that puts the RNN_Encoder and LinearDecoder layers sequentially in the model. Args: n_tok (int): number of unique vocabulary words (or tokens) in the source dataset emb_sz (int): the embedding size to use to encode each token n_hid (int): number of hidden activation per LSTM layer n_layers (int): number of LSTM layers to use in the architecture pad_token (int): the int value used for padding text. dropouth (float): dropout to apply to the activations going from one LSTM layer to another dropouti (float): dropout to apply to the input layer. dropoute (float): dropout to apply to the embedding layer. wdrop (float): dropout used for a LSTM's internal (or hidden) recurrent weights. tie_weights (bool): decide if the weights of the embedding matrix in the RNN encoder should be tied to the weights of the LinearDecoder layer. qrnn (bool): dephotoshop免费版安装方法 官方免费版photoshop怎么激活
photoshop免费版安装包,电脑版photoshop免费版,photoshop免费版本,Photoshop免费版网盘
大家期待已久的Photoshop 2021官方正式版终于推出了,它是全新的图像处理软件,除了具备添加特效、美颜、滤镜、磨皮、渐变、羽化、去噪、抠图、对象选取、瘦脸、换肤、合成、蒙板、裁剪、翻转、曝光、补光、马赛克等基础图像处理功能外,新版内置的画笔工具极为丰富,成千上万的精致像素、动态和矢量画笔可以满足你的各种绘图需求,采用强大且先进的绘画引擎,即使你不是专业的人士或者你是一个没有经验的新手也能够很好的进行操作。
Photoshop 2021更新了许多实用功能,包括神经滤镜、天空更换以及增强的云文档等,可以让设计者的工作更加高效和智能。
接下来,把下载安装PS2021版本,最简单最详细的安装过程带给大家,让大家2分钟使用上最新版本的PS软件。
首先,非常重要的一点,安装PS2021软件之前,需要先下载个PS2021的安装包,才能进行安装。(下载地址往下看)
软件地址: http://dahairj.top/1563.html?id=7ZPAr938NjhI95X0U7
图文安装教程:
1,把从公众号下载好的PS2021的安装包先解压出来,鼠标右键解压,解压到当前文件夹,就会得出一个新的文件。
2,看到上面这个新的文件夹,然后鼠标打开这个解压出来的新文件。
,
3,打开以后,如下图,鼠标双击运行最下面的Set-up。
4,运行后,跳出一个安装的选项。
语言:默认简体中文,不用更改。
位置:默认安装位置是C盘,也就是系统盘,建议大家安装位置改到其他盘,这样电脑运行会流畅一些,点击右边按钮即可以选择安装位置,可以安装到你电脑里的D,E.F盘,都是可以随意选择的。
5,选择好安装位置以后,点击继续。
6,进入安装过程,大概3-5分钟,从0%-100%即可。
7,显示安装完成,点击关闭。
8,关闭以后,在电脑桌面上找到安装好的软件,双击运行。
9,运行以后,就可以进入软件的工作区了,我们的软件就算安装完成了,并且是免破解版的,安装好就可以永久使用一辈子。
我们的这个软件是官方激活好的版本,安装过程不需要登录任何账号,也不需要购买版权,也没有试用期限制,更不需要去破解和激活了,只要下载这个安装包,安装好以后就可以永久免费使用了。返回搜狐,查看更多
责任编辑:
预训练语言模型是什么 预训练模型使用方法
预训练语言模型,预训练语言模型pdf,预训练语言模型有哪些,预训练语言模型 kbqa
- NLP中流行的预训练模型
- 1 BERT及其变体
- 2 GPT
- 3 GPT-2及其变体
- 4 Transformer-XL
- 5 XLNet及其变体
- 6 XLM
- 7 RoBERTa及其变体
- 8 DistilBERT及其变体
- 9 ALBERT
- 10 T5及其变体
- 11 XLM-RoBERTa及其变体
- BERT
- GPT
- GPT-2
- Transformer-XL
- XLNet
- XLM
- RoBERTa
- DistilBERT
- ALBERT
- T5
- XLM-RoBERTa
1 BERT及其变体
模型名称 | 隐层数 | 张量维度 | 自注意力头数 | 参数量 | 训练语料 |
---|---|---|---|---|---|
bert-base-uncased | 12 | 768 | 12 | 110M | 小写英文文本 |
bert-large-uncased | 24 | 1024 | 16 | 340M | 小写英文文本 |
bert-base-cased | 12 | 768 | 12 | 110M | 不区分大小写的英文文本 |
bert-large-cased | 24 | 1024 | 16 | 340M | 不区分大小写的英文文本 |
bert-base-multilingual-uncased | 12 | 768 | 12 | 110M | 小写的102种语言文本 |
bert-large-multilingual-uncased | 24 | 1024 | 16 | 340M | 小写的102种语言文本 |
bert-base-chinese | 12 | 768 | 12 | 110M | 简体和繁体中文文本 |
- : 编码器具有12个隐层, 输出768维张量, 12个自注意力头, 共110M参数量, 在小写的英文文本上进行训练而得到.
- : 编码器具有24个隐层, 输出1024维张量, 16个自注意力头, 共340M参数量, 在小写的英文文本上进行训练而得到.
- : 编码器具有12个隐层, 输出768维张量, 12个自注意力头, 共110M参数量, 在不区分大小写的英文文本上进行训练而得到.
- : 编码器具有24个隐层, 输出1024维张量, 16个自注意力头, 共340M参数量, 在不区分大小写的英文文本上进行训练而得到.
- : 编码器具有12个隐层, 输出768维张量, 12个自注意力头, 共110M参数量, 在小写的102种语言文本上进行训练而得到.
- : 编码器具有24个隐层, 输出1024维张量, 16个自注意力头, 共340M参数量, 在小写的102种语言文本上进行训练而得到.
- : 编码器具有12个隐层, 输出768维张量, 12个自注意力头, 共110M参数量, 在简体和繁体中文文本上进行训练而得到.
2 GPT
模型名称 | 隐层数 | 张量维度 | 自注意力头数 | 参数量 | 训练语料 |
---|---|---|---|---|---|
openai-gpt | 12 | 768 | 12 | 110M | 英文语料 |
- : 编码器具有12个隐层, 输出768维张量, 12个自注意力头, 共110M参数量, 由OpenAI在英文语料上进行训练而得到.
3 GPT-2及其变体
模型名称 | 隐层数 | 张量维度 | 自注意力头数 | 参数量 | 训练语料 |
---|---|---|---|---|---|
gpt2 | 12 | 768 | 12 | 117M | GPT-2英文语料 |
gpt2-xl | 48 | 1600 | 25 | 1558M | GPT-2英文语料 |
- : 编码器具有12个隐层, 输出768维张量, 12个自注意力头, 共117M参数量, 在OpenAI GPT-2英文语料上进行训练而得到.
- : 编码器具有48个隐层, 输出1600维张量, 25个自注意力头, 共1558M参数量, 在大型的OpenAI GPT-2英文语料上进行训练而得到.
4 Transformer-XL
模型名称 | 隐层数 | 张量维度 | 自注意力头数 | 参数量 | 训练语料 |
---|---|---|---|---|---|
transfo-xl-wt103 | 18 | 1024 | 16 | 257M | wikitext-103英文语料 |
- : 编码器具有18个隐层, 输出1024维张量, 16个自注意力头, 共257M参数量, 在wikitext-103英文语料进行训练而得到.
5 XLNet及其变体
模型名称 | 隐层数 | 张量维度 | 自注意力头数 | 参数量 | 训练语料 |
---|---|---|---|---|---|
xlnet-base-cased | 12 | 768 | 12 | 110M | 英文语料 |
xlnet-large-cased | 24 | 1024 | 16 | 240M | 英文语料 |
- : 编码器具有12个隐层, 输出768维张量, 12个自注意力头, 共110M参数量, 在英文语料上进行训练而得到.
- : 编码器具有24个隐层, 输出1024维张量, 16个自注意力头, 共240参数量, 在英文语料上进行训练而得到.
6 XLM
模型名称 | 隐层数 | 张量维度 | 自注意力头数 | 参数量 | 训练语料 |
---|---|---|---|---|---|
xlm-mlm-en-2048 | 12 | 2048 | 16 | / | 英文语料 |
: 编码器具有12个隐层, 输出2048维张量, 16个自注意力头, 在英文文本上进行训练而得到.
7 RoBERTa及其变体
模型名称 | 隐层数 | 张量维度 | 自注意力头数 | 参数量 | 训练语料 |
---|---|---|---|---|---|
roberta-base | 12 | 768 | 12 | 125M | 英文文本 |
roberta-large | 24 | 1024 | 16 | 355M | 英文文本 |
- : 编码器具有12个隐层, 输出768维张量, 12个自注意力头, 共125M参数量, 在英文文本上进行训练而得到.
- : 编码器具有24个隐层, 输出1024维张量, 16个自注意力头, 共355M参数量, 在英文文本上进行训练而得到.
8 DistilBERT及其变体
模型名称 | 隐层数 | 张量维度 | 自注意力头数 | 参数量 | 训练语料 |
---|---|---|---|---|---|
distilbert-base-uncased6 | 6 | 768 | 12 | 66M | / |
distilbert-base-multilingual-cased | 6 | 768 | 12 | 66M | / |
- : 基于bert-base-uncased的蒸馏(压缩)模型, 编码器具有6个隐层, 输出768维张量, 12个自注意力头, 共66M参数量.
- : 基于bert-base-multilingual-uncased的蒸馏(压缩)模型, 编码器具有6个隐层, 输出768维张量, 12个自注意力头, 共66M参数量.
9 ALBERT
模型名称 | 隐层数 | 张量维度 | 自注意力头数 | 参数量 | 训练语料 |
---|---|---|---|---|---|
albert-base-v1 | 12 | 768 | 12 | 125M | 英文文本 |
albert-base-v2 | 12 | 768 | 12 | 125M | 英文文本 |
- : 编码器具有12个隐层, 输出768维张量, 12个自注意力头, 共125M参数量, 在英文文本上进行训练而得到.
- : 编码器具有12个隐层, 输出768维张量, 12个自注意力头, 共125M参数量, 在英文文本上进行训练而得到, 相比v1使用了更多的数据量, 花费更长的训练时间.
10 T5及其变体
模型名称 | 隐层数 | 张量维度 | 自注意力头数 | 参数量 | 训练语料 |
---|---|---|---|---|---|
t5-small | 6 | 512 | 8 | 60M | C4语料 |
t5-base | 12 | 768 | 12 | 220M | C4语料 |
t5-large | 24 | 1024 | 16 | 770M | C4语料 |
- : 编码器具有6个隐层, 输出512维张量, 8个自注意力头, 共60M参数量, 在C4语料上进行训练而得到.
- : 编码器具有12个隐层, 输出768维张量, 12个自注意力头, 共220M参数量, 在C4语料上进行训练而得到.
- : 编码器具有24个隐层, 输出1024维张量, 16个自注意力头, 共770M参数量, 在C4语料上进行训练而得到.
11 XLM-RoBERTa及其变体
模型名称 | 隐层数 | 张量维度 | 自注意力头数 | 参数量 | 训练语料 |
---|---|---|---|---|---|
xlm-roberta-base | 12 | 768 | 8 | 125M | 2.5TB的100种语言文本 |
xlm-roberta-large | 24 | 1027 | 16 | 355M | 2.5TB的100种语言文本 |
- : 编码器具有12个隐层, 输出768维张量, 8个自注意力头, 共125M参数量, 在2.5TB的100种语言文本上进行训练而得到.
- : 编码器具有24个隐层, 输出1027维张量, 16个自注意力头, 共355M参数量, 在2.5TB的100种语言文本上进行训练而得到.
预训练模型说明:
- 所有上述预训练模型及其变体都是以transformer为基础,只是在模型结构如神经元连接方式,编码器隐层数,多头注意力的头数等发生改变,这些改变方式的大部分依据都是由在标准数据集上的表现而定,因此,对于我们使用者而言,不需要从理论上深度探究这些预训练模型的结构设计的优劣,只需要在自己处理的目标数据上,尽量遍历所有可用的模型对比得到最优效果即可.