您的位置:首页 > 科技 > IT业 > 网页制作与设计实训心得_餐饮o2o平台有哪些_最近的重要新闻_潍坊seo推广

网页制作与设计实训心得_餐饮o2o平台有哪些_最近的重要新闻_潍坊seo推广

2024/11/16 23:48:14 来源:https://blog.csdn.net/benbenxinchen/article/details/143441018  浏览:    关键词:网页制作与设计实训心得_餐饮o2o平台有哪些_最近的重要新闻_潍坊seo推广
网页制作与设计实训心得_餐饮o2o平台有哪些_最近的重要新闻_潍坊seo推广

目录

摘要

abstract

一、BERT

1、应用场景

任务一:单句子分类任务 

任务二:单句子标注任务

任务三:句子对分类任务

任务四:问答系统

2、pre-train model

3、fine tune微调 

input&output 

how to fine tune

二、总结 


摘要

本周学习了BERT的基本使用场景、预训练模型的结构及其改进,以及微调的输入输出和微调的方式。在学习Bert的过程中,对seq2seq model进行了复习。Bert主要应用在GLUE任务中,它可以完成单句子分类任务、单句子标注任务、句子对分类任务和问答任务,这四种下游任务是基于不同的输入输出,其中不同任务的task specific layer也是不相同的。 

abstract

This week, we have learned the basic usage scenarios of BERT, the structure of the pre-trained model and its improvement, as well as the inputs and outputs of fine-tuning and the ways of fine-tuning. In the process of learning Bert, the seq2seq model was reviewed.Bert is mainly used in GLUE tasks, which can accomplish single-sentence classification tasks, single-sentence labeling tasks, sentence-pair classification tasks, and question-and-answer tasks, which are four downstream tasks based on different inputs and outputs, where the task-specific layer of the different tasks are also different .  

一、BERT

1、应用场景

GLUE任务

其中各个任务的得分结果如下:

 

如何在GLUE中使用BERT?

任务一:单句子分类任务 

 

在上图任务中,BERT属于是一种semi-supervision的学习模型 

典型的任务有文本二分类、情感分析等

举例:Bert进行文本分类

# 使用bert进行文本分类
from transformers import BertForSequenceClassification, BertTokenizer
import torchtokenizer = BertTokenizer.from_pretrained('E:\/bert\/bert-base-uncased')
model = BertForSequenceClassification.from_pretrained('E:\/bert\/bert-base-uncased')text = "This movie was amazing!"
inputs = tokenizer(text, return_tensors='pt')
outputs = model(**inputs)
predictions = torch.argmax(outputs.logits, dim=1)
print(predictions)

 预测结果如下:

任务二:单句子标注任务

输入一个句子,输出为一个长度相同的句子,类似于self-attention中的任务。输入的句子在bert中被分割为一个个token,每一个token都有一个对应的向量,每个向量分别去做对应的linear transform,最终每个词都得到相应的类别(也就是词性)。

需要有一部分已标注的资料,在bert中的pre-train中设定好了一组较好的初始化参数。 

典型的任务有词性标注、实体识别

举例:使用Bert标记器对文本进行标记 

# 使用BERT标记器对文本进行标记
from transformers import BertTokenizertokenizer = BertTokenizer.from_pretrained('E:\/bert\/bert-base-uncased')
text = "BERT preprocessing is essential."
tokens = tokenizer.tokenize(text)print(tokens)

标记结果如下:

任务三:句子对分类任务

输入两个句子,输出一个类别,一般都是判断给定两个句子的相似程度来得到对立、赞成、中立的态度。 输入两个分隔开来的句子,在bert中处理之后会生成一组长度相同的向量,我们只取[CLS]中的向量来进行linear transform,最终得到一个类别(两个句子是否是矛盾对立的)

典型的任务有评论立场分析、自然语言推断

任务四:问答系统

  

输入被[SEP]分隔开的问题和文章,有两个随机初始化的向量。首先,将橙色的向量与输入文章的bert处理后的向量进行inner product,最后经过softmax函数后比较大小,得到的最大值的向量位置记为初始位置s;接着,相同操作,将蓝色的向量与输入文章的bert处理后的向量进行inner product,最后经过softmax函数后比较大小,得到的最大值的向量位置记为长度e。

简而言之,就是答案在文章当中,然后通过确定其起始位置和答案长度来确定输出。

典型的任务有QA 

2、pre-train model

pre-train model:将每一个输入的token转化为embedding的向量 

在之前的预训练模型中,一个输入对应一个vector(提前已经设定好了不同输入所确定的vector)

问题:token转化为vector的时候没办法结合上下文考虑

解决:将pre-train model看作是encoder

 

3、fine tune微调 

fine-tune:在pre-train model的基础上,加一个task-specific layer,这样的话该模型可以用于不同的NLP的任务上。 

input&output 

上面展示了NLP tasks的基本要求,下面给出其输入输出的形式 

输入要么是一个长句子,分析其情感立场等;要么是多个需要分隔开的句子,QA任务或者是蕴含任务等,各个句子之间需要[SEP]分隔。 

 

输出的情况较多,比如直接经过task specific layer得到一个类别(情感分析),或者在bert中输出的每个token都得到一个类别(词性标注),或者QA任务,得到的输出是来自输入的一部分,又或者是一些看作为seq2seq的任务。

将上述NLP的任务看成是seq2seq model,分为encoder和decoder两部分,如下:

将输入序列放入Bert中去,最终经过task specific layer得到输出。其中Bert model相当于encoder,task specific layer相当于decoder。

问题:task specific layer没有经过pre-train,所以最终效果可能不好

解决:如下所示

输入序列在经过Bert model之后分为了一个个token,每个token经过各自的task specific layer得到的token会重新作为输入,这样的话,task specific layer也就等同于有了pre-train一样(Bert model中有pre-train)。

how to fine tune

问题:如果fine tune整个model,那么每个任务不同会导致训练完后的model不一样。每个model的参数不同且很多,存储不易

解决:局部微调,仅仅fine tune adaptor 

 

在pre-train model中引入adaptor,这样的话,model大体上是相同的,只有Apt一小部分是不同的。所以改进后的参数量的存储变少了很多。 

 

现在很多预训练模型中都是使用了Transformer的结构,研究者在Transformer结构中插入Adaptor层,通过训练微调Adaptor,而不去修改其他已经训练好的参数。

我们在BERT中,是把模型最后一层的输出feature作为了各个token的embedding,但不同层学到的是不同的feature,不同的任务可能需要不同的侧重,所以可以对不同层的feature进行加权。如下所示,考虑到了各层的输出feature:

参考文章:一文彻底搞懂Bert(代码+手撕)-CSDN博客

二、总结 

本周主要对bert的应用场景进行了分析,以及预训练模型个微调技术。下周继续学习bert,并且加入代码实践。 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com