赞
踩
上游任务指对数据做预处理,如:分词、过滤、生成词向量等,上游任务的结果作为下游任务的输入(我理解为特征抽取、特征工程)
下游任务是你在什么数据集上干的什么事,比如做分类任务,问答任务
上游任务一般训练一个预训练语言模型,然后利用我们训练的预训练模型在进行下游任务如分类,生成等。
我们可以这么理解Encoder可以当作我们的特征提取器,来提取语言序列的特征表达得到隐藏层,而解码器则是将这些隐藏层特征表达解决我们自然语言中实际需要的问题如情感分类,命名实体识别等 (解码器也能做特征抽取,如GPT) 。说到这里先上一下大家都非常熟悉的Transformer的结构图,图像左边是编码器,图像的右边是解码器。
encoder decoder都可以预训练。
.
word embedding即对字、词进行特征提取,编码以满足训练需求。
从这里可以看到这里我们产生的b_1用了整个sequence的信息。
给定一句话或是一个段落作为输入,首先将输入序列中各个词转换为其对应的词向量,同时加上每一个词的位置向量,体现词在序列的位置。然后将这些词向量输入到多层 Transformer 网络中,通过自注意力(self-attention)机制来学习词与词之间的关系,编码其上下文信息,再通过一个前馈网络经过非线性变化,输出综合了上下文特征的各个词的向量表示。每一层 Transformer 网络主要由 Multi-head self-attention 层(多头自注意力机制)和前馈网络层两个子层构成。Multi-head self-attention 会并行地执行多个不同参数的 self-attention,并将各个 self-attention 的结果拼接作为后续网络的输入,self-attention 机制会在后面中做详细介绍。此后,我们得到了蕴含当前上下文信息的各个词的表示,然后网络会将其输入到前馈网络层以计算非线性层次的特征。
要讲自然语言的预训练,得先从图像领域的预训练说起。
那么图像领域怎么做预训练呢,上图展示了这个过程,我们设计好网络结构以后,对于图像来说一般是CNN的多层叠加网络结构,可以先用某个训练集合比如训练集合A或者训练集合B对这个网络进行预先训练,在A任务上或者B任务上学会网络参数,然后存起来以备后用。假设我们面临第三个任务C,网络结构采取相同的网络结构,在比较浅的几层CNN结构,网络参数初始化的时候可以加载A任务或者B任务学习好的参数,其它CNN高层参数仍然随机初始化。之后我们用C任务的训练数据来训练网络,此时有两种做法,一种是浅层加载的参数在训练C任务过程中不动,这种方法被称为“Frozen”;另外一种是底层网络参数尽管被初始化了,在C任务训练过程中仍然随着训练的进程不断改变,这种一般叫“Fine-Tuning”,顾名思义,就是更好地把参数进行调整使得更适应当前的C任务。一般图像或者视频领域要做预训练一般都这么做。
————————————————
版权声明:本文为CSDN博主「张俊林博客」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/malefactor/article/details/83961886
综上所述,我认为预训练是用训练数据集合对网络模型的参数进行预先训练,fine-tune则是使用预训练好的参数进行初始化,并且在训练新任务时微调这些参数。
embedding则是在预训练前对数据集合进行的数据变换操作,是预训练和训练前的处理。
word embedding 的模型需要进行训练。
上游任务 - embedding - 特征抽取
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。