模型介绍
自然语言处理任务(例如问题解答,机器翻译,阅读理解和总结)典型方法是通过在任务相关的数据集上进行监督学习。通过实验证明,语言模型在没有任何明确监督的情况下开始学习这些任务,训练数据集为数百万个网页的新数据集WebText。当以文档加问题为条件时,语言模型生成的答案在CoQA数据集上F1达到55-在不使用127,000多个训练数据的情况下,可以匹配或超过4个基准系统其中3个的性能。
语言模型的能力对零样本学习任务迁移成功至关重要,并且提高其性能可以对数线性方式跨越任务。GPT-2是一个15亿参数的Transformer,在零样本设置下,在8个语言模型数据集中的7个取得SOTA结果,但仍然欠拟合WebText数据集。该模型的样本反映了这些改进,并包含了连贯的文本段落。这些发现为构建语言处理系统提供了一条有前途的道路,该系统将从自然发生的演示中学习执行任务。
模型结构
GPT 2.0的 LM 使用Transformer基础架构,该模型大致遵循了OpenAI GPT模型的细节,并做了一些修改。
具体的,移动LayerNorm到每个子块的输入,类似于激活前的残差网络,增加额外的LayerNorm到最终的自注意块之后。修改了初始化,考虑残差路径在模型深度上的累积。在初始化时按
1
/
N
1/ \sqrt N
1/N
?的比例缩放残差层的权重,其中N是残差层的数量。词汇表已扩展到50,257。我们还将上下文大小从512个增加到1024个标记,并且使用了更大样本的训练批次512。
模型改进
训练数据集
多数先前的工作是在单个文本域上训练语言模型,例如新闻文章,维基百科或小说书籍。GPT2.0鼓励建立尽可能大型、不同种类的数据集,以便在尽可能多的领域和环境中收集任务的自然语言演示。
结果数据集WebText包含4500万个链接的文本子集。并且在重复数据删除和基于启发式的清理之后,该链接包含略超过800万份文档,总计40 GB的文本。从WebText中删除了所有Wikipedia文档,因为它是其他数据集的通用数据源,并且由于将培训数据与测试评估任务相重叠而可能使分析复杂化。
输入表示
字节对编码(Byte Pair Encoding,BPE)是字符和单词级语言建模之间的实用中间地带,可有效地在单词级输入的频繁符号序列和字符级输入的不频繁符号序列之间进行插值。
BPE实现通常在Unicode代码点而不是字节序列上运行。这些实现将需要包括Unicode符号的全部空间,以便为所有Unicode字符串建模。在添加任何多符号标记之前,这将导致基本词汇量超过130,000。与BPE经常使用的32,000到64,000分词词汇表相比,这个数目太大了。相反,BPE的字节级版本仅需要大小为256的基本词汇表。但是,由于BPE使用基于贪婪频率的启发式方法来构建分词词汇表,因此直接将BPE应用于字节序列会导致次优合并。这导致有限的词汇空位和模型容量的次优分配。为避免这种情况,阻止BPE在任何字节序列的字符类别之间进行合并。为空格添加了一个例外,该例外可显着提高压缩效率,同时仅在多个vocab分词之间添加最小的单词碎片。
模型参考
论文地址:https://d4mucfpksywv.cloudfront.net/better-language-models/language_models_are_unsupervised_multitask_learners.pdf
代码地址1:https://openai.com/blog/better-language-models/ 代码地址2:https://github.com/openai/gpt-2
|