网站设计与开发的基本步骤包括哪些?,网络会议系统设备,thinkphp和wordpress,外包app制作费用多少fasttext介绍 作为NLP工程领域常用的工具包#xff0c;fasttext有两大作用#xff1a;进行文本分类、训练词向量。在保持较高精度的情况下#xff0c;快速的进行训练和预测是fasttext的最大优势。fasttext优势的原因: fasttext工具包中内含的fasttext模型具有十分简单的网络…fasttext介绍 作为NLP工程领域常用的工具包fasttext有两大作用进行文本分类、训练词向量。在保持较高精度的情况下快速的进行训练和预测是fasttext的最大优势。fasttext优势的原因: fasttext工具包中内含的fasttext模型具有十分简单的网络结构。使用fasttext模型训练词向量时使用层次softmax结构来提升超多类别下的模型性能。由于fasttext模型过于简单无法捕捉词序特征因此会进行n-gram特征提取以弥补模型缺陷提升精度。 fasttext文本分类
文本分类概念
文本分类的是将文档例如电子邮件帖子文本消息产品评论等分配给一个或多个类别。当今文本分类的实现多是使用机器学习方法从训练数据中提取分类规则以进行分类因此构建文本分类器需要带标签的数据。
文本分类种类 二分类文本被分类到两个类别中往往这两个类别是对立面比如判断一句评论是好评还是差评。单标签多分类文本被分入到多个类别中且每条文本只能属于某一个类别(即被打上某一个标签)比如输入一个人名判断它是来自哪个国家的人名。多标签多分类文本被分入到多个类别中但每条文本可以属于多个类别(即被打上多个标签)比如输入一段描述判断可能是和哪些兴趣爱好有关一段描述中可能即讨论了美食又太讨论了游戏爱好。 文本分类的过程 第一步: 获取数据第二步: 训练集与验证集的划分第三步: 训练模型第四步: 使用模型进行预测并评估第五步: 模型调优 1 原始数据处理 2 数据处理后进行训练并测试 3 增加训练轮数 4 调整学习率 5 增加n-gram特征 6 修改损失计算方式 7 自动超参数调优 8 实际生产中多标签多分类问题的损失计算方式 第六步: 模型保存与重加载 训练词向量
用向量表示文本中的词汇(或字符)是现代机器学习中最流行的做法这些向量能够很好的捕捉语言之间的关系从而提升基于词向量的各种NLP任务的效果。
训练词向量的过程
第一步获取数据第二步训练词向量第三步模型超参数设定第四步模型效果检验第五步模型的保存与重加载
词向量迁移 使用在大型语料库上已经进行训练完成的词向量模型fasttext工具中可以提供的可迁移的词向量 fasttext提供了157种语言的在CommonCrawl和Wikipedia语料上进行训练的可迁移词向量模型它们采用CBOW模式进行训练词向量维度为300维。可通过该地址查看具体语言词向量模型Word vectors for 157 languages · fastTextfasttext提供了294种语言的在Wikipedia语料上进行训练的可迁移词向量模型它们采用skipgram模式进行训练词向量维度同样是300维。可通过该地址查看具体语言词向量模型Wiki word vectors · fastText 进行词向量迁移 第一步下载词向量模型压缩的bin.gz文件第二步解压bin.gz文件到bin文件第三步加载bin文件获取词向量第四步利用邻近词进行效果检验 迁移学习
1.1 预训练模型(Pretrained model)
一般情况下预训练模型都是大型模型具备复杂的网络结构众多的参数量以及在足够大的数据集下进行训练而产生的模型。在NLP领域预训练模型往往是语言模型因为语言模型的训练是无监督的可以获得大规模语料同时语言模型又是许多典型NLP任务的基础如机器翻译文本生成阅读理解等常见的预训练模型有BERT、GPT、 roBERTa、transformer-XL等。
1.2 微调(Fine-tuning)
根据给定的预训练模型改变它的部分参数或者为其新增部分输出结构后通过在小部分数据集上训练来使整个模型更好的适应特定任务.
1.3 微调脚本(Fine-tuning script)
实现微调过程的代码文件。这些脚本文件中应包括对预训练模型的调用对微调参数的选定以及对微调结构的更改等同时因为微调是一个训练过程它同样需要一些超参数的设定以及损失函数和优化器的选取等因此微调脚本往往也包含了整个迁移学习的过程。关于微调脚本的说明: 一般情况下微调脚本应该由不同的任务类型开发者自己编写但是由于目前研究的NLP任务类型分类提取生成以及对应的微调输出结构都是有限的有些微调方式已经在很多数据集上被验证是有效的因此微调脚本也可以使用已经完成的规范脚本。
1.4 两种迁移方式
直接使用预训练模型进行相同任务的处理不需要调整参数或模型结构这些模型开箱即用。但是这种情况一般只适用于普适任务如fasttest工具包中预训练的词向量模型。另外很多预训练模型开发者为了达到开箱即用的效果将模型结构分各个部分保存为不同的预训练模型提供对应的加载方法来完成特定目标。更加主流的迁移学习方式是发挥预训练模型特征抽象的能力然后再通过微调的方式通过训练更新小部分参数以此来适应不同的任务。这种迁移方式需要提供小部分的标注数据来进行监督学习。关于迁移方式的说明: 直接使用预训练模型的方式已经在fasttext的词向量迁移中学习。接下来的迁移学习实践将主要讲解通过微调的方式进行迁移学习。
NLP中的标准数据集
GLUE由纽约大学华盛顿大学Google联合推出涵盖不同NLP任务类型截止至2020年1月其中包括11个子任务数据集成为衡量NLP研究发展的衡量标准。 CoLA数据集文件样式
数据集释义CoLA(The Corpus of Linguistic Acceptability语言可接受性语料库)纽约大学发布的有关语法的数据集。本质是对一个给定句子判定其是否语法正确的单个句子的**文本二分类任务**。
SST-2数据集文件样式
数据集释义SST-2(The Stanford Sentiment Treebank斯坦福情感树库)单句子分类任务包含电影评论中的句子和它们情感的人类注释。本质句子级别的**二分类任务**。
MRPC数据集文件样式
数据集释义MRPC(The Microsoft Research Paraphrase Corpus微软研究院释义语料库)相似性和释义任务是从在线新闻源中自动抽取句子对语料库并人工注释句子对中的句子是否在语义上等效。本质句子级别的**二分类任务**。
STS-B数据集文件样式
数据集释义STSB(The Semantic Textual Similarity Benchmark语义文本相似性基准测试)。本质回归任务/句子对的文本五分类任务。
QQP数据集文件样式
数据集释义QQP(The Quora Question PairsQuora问题对数集)相似性和释义任务是社区问答网站Quora中问题对的集合。本质句子对的**二分类任务**。
(MNLI/SNLI)数据集文件样式
数据集释义: MNLI(The Multi-Genre Natural Language Inference Corpus, 多类型自然语言推理数据库)。本质句子对的**三分类任务**。 (QNLI/RTE/WNLI)数据集文件样式
数据集释义: QNLI(Qusetion-answering NLI问答自然语言推断)自然语言推断任务。QNLI是从另一个数据集The Stanford Question Answering Dataset(斯坦福问答数据集, SQuAD 1.0)[3]转换而来的。RTE(The Recognizing Textual Entailment datasets识别文本蕴含数据集)自然语言推断任务它是将一系列的年度文本蕴含挑战赛的数据集进行整合合并而来的。WNLI(Winograd NLIWinograd自然语言推断)自然语言推断任务数据集来自于竞赛数据的转换。本质QNLI是二分类任务RTE是二分类任务WNLI是二分类任务。QNLI, RTE, WNLI三个数据集的样式基本相同。
NLP中的预训练模型
1.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参数量, 在简体和繁体中文文本上进行训练而得到.
1.2 GPT
openai-gpt: 编码器具有12个隐层, 输出768维张量, 12个自注意力头, 共110M参数量, 由OpenAI在英文语料上进行训练而得到.
1.3 GPT-2及其变体
gpt2: 编码器具有12个隐层, 输出768维张量, 12个自注意力头, 共117M参数量, 在OpenAI GPT-2英文语料上进行训练而得到.gpt2-xl: 编码器具有48个隐层, 输出1600维张量, 25个自注意力头, 共1558M参数量, 在大型的OpenAI GPT-2英文语料上进行训练而得到.
1.4 Transformer-XL
transfo-xl-wt103: 编码器具有18个隐层, 输出1024维张量, 16个自注意力头, 共257M参数量, 在wikitext-103英文语料进行训练而得到.
1.5 XLNet及其变体
xlnet-base-cased: 编码器具有12个隐层, 输出768维张量, 12个自注意力头, 共110M参数量, 在英文语料上进行训练而得到.xlnet-large-cased: 编码器具有24个隐层, 输出1024维张量, 16个自注意力头, 共240参数量, 在英文语料上进行训练而得到.
1.6 XLM
xlm-mlm-en-2048: 编码器具有12个隐层, 输出2048维张量, 16个自注意力头, 在英文文本上进行训练而得到.
1.7 RoBERTa及其变体
roberta-base: 编码器具有12个隐层, 输出768维张量, 12个自注意力头, 共125M参数量, 在英文文本上进行训练而得到.roberta-large: 编码器具有24个隐层, 输出1024维张量, 16个自注意力头, 共355M参数量, 在英文文本上进行训练而得到.
1.8 DistilBERT及其变体
distilbert-base-uncased: 基于bert-base-uncased的蒸馏(压缩)模型, 编码器具有6个隐层, 输出768维张量, 12个自注意力头, 共66M参数量.distilbert-base-multilingual-cased: 基于bert-base-multilingual-uncased的蒸馏(压缩)模型, 编码器具有6个隐层, 输出768维张量, 12个自注意力头, 共66M参数量.
1.9 ALBERT
albert-base-v1: 编码器具有12个隐层, 输出768维张量, 12个自注意力头, 共125M参数量, 在英文文本上进行训练而得到.albert-base-v2: 编码器具有12个隐层, 输出768维张量, 12个自注意力头, 共125M参数量, 在英文文本上进行训练而得到, 相比v1使用了更多的数据量, 花费更长的训练时间.
1.10 T5及其变体
t5-small: 编码器具有6个隐层, 输出512维张量, 8个自注意力头, 共60M参数量, 在C4语料上进行训练而得到.t5-base: 编码器具有12个隐层, 输出768维张量, 12个自注意力头, 共220M参数量, 在C4语料上进行训练而得到.t5-large: 编码器具有24个隐层, 输出1024维张量, 16个自注意力头, 共770M参数量, 在C4语料上进行训练而得到.
1.11 XLM-RoBERTa及其变体
xlm-roberta-base: 编码器具有12个隐层, 输出768维张量, 8个自注意力头, 共125M参数量, 在2.5TB的100种语言文本上进行训练而得到.xlm-roberta-large: 编码器具有24个隐层, 输出1027维张量, 16个自注意力头, 共355M参数量, 在2.5TB的100种语言文本上进行训练而得到.
预训练模型说明
所有上述预训练模型及其变体都是以transformer为基础只是在模型结构如神经元连接方式编码器隐层数多头注意力的头数等发生改变这些改变方式的大部分依据都是由在标准数据集上的表现而定因此对于使用者而言不需要从理论上深度探究这些预训练模型的结构设计的优劣只需要在自己处理的目标数据上尽量遍历所有可用的模型对比得到最优效果即可。
加载和使用预训练模型 加载和使用预训练模型的工具 在这里使用transformers工具进行模型的加载和使用。这些预训练模型由世界先进的NLP研发团队huggingface提供。加载和使用预训练模型的步骤 第一步确定需要加载的预训练模型并安装依赖包。第二步加载预训练模型的映射器tokenizer。第三步加载带/不带头的预训练模型。 这里的头是指模型的任务输出层选择加载不带头的模型相当于使用模型对输入文本进行特征表示。选择加载带头的模型时有三种类型的头可供选择AutoModelForMaskedLM (语言模型头)AutoModelForSequenceClassification (分类模型头) AutoModelForQuestionAnswering (问答模型头)。不同类型的头可以使预训练模型输出指定的张量维度。如使用分类模型头则输出尺寸为(1,2)的张量用于进行分类任务判定结果。第四步使用模型获得输出结果。 使用不带头的模型进行输出使用带有语言模型头的模型进行输出使用带有分类模型头的模型进行输出使用带有问答模型头的模型进行输出