Feature-based和Fine-tune的区别

 

在Bert的论文中看到了Feature-based和Fine-tune这两种无监督的NLP学习方法,对这两个概念一直以来都不太理解,今天来总结下。

Feature-based

Feature-based指利用语言模型的中间结果也就是LM embedding, 将其作为额外的特征,引入到原任务的模型中,例如在TagLM[1]中,采用了两个单向RNN构成的语言模型,将语言模型的中间结果。

Feature-based和Fine-tune的区别

引入到序列标注模型中,如下图1所示,其中左边部分为序列标注模型,也就是task-specific model,每个任务可能不同,右边是前向LM(Left-to-right)和后向LM(Right-To-Left), 两个LM的结果进行了合并,并将LM embedding与词向量、第一层RNN输出、第二层RNN输出进行了concat操作。

Feature-based和Fine-tune的区别

feature-based只变化了最后一层的参数。

通常feature-based方法包括两步:

  1. 首先在大的语料A上无监督地训练语言模型,训练完毕得到语言模型
  2. 然后构造task-specific model例如序列标注模型,采用有标记的语料B来有监督地训练task-sepcific model,将语言模型的参数固定,语料B的训练数据经过语言模型得到LM embedding,作为task-specific model的额外特征

ELMo是这方面的典型工作。

Fine-tune

Fine-tuning方式是指在已经训练好的语言模型的基础上,加入少量的task-specific parameters, 例如对于分类问题在语言模型基础上加一层softmax网络,然后在新的语料上重新训练来进行fine-tune。除了最后一层,所有的参数都变化了。

例如OpenAI GPT 中采用了这样的方法,模型如下所示

Feature-based和Fine-tune的区别

首先语言模型采用了Transformer Decoder的方法来进行训练,采用文本预测作为语言模型训练任务,训练完毕之后,加一层Linear Project来完成分类/相似度计算等NLP任务。因此总结来说,LM + Fine-Tuning的方法工作包括两步:

  1. 构造语言模型,采用大的语料A来训练语言模型
  2. 在语言模型基础上增加少量神经网络层来完成specific task例如序列标注、分类等,然后采用有标记的语料B来有监督地训练模型,这个过程中语言模型的参数并不固定,依然是trainable variables.

而BERT论文采用了LM + fine-tuning的方法,同时也讨论了BERT + task-specific model的方法。

Reference

论文解读:BERT模型及fine-tuning

feature based和fine tuning