一、BERT微调( Fine-tuning)介绍

   从传统机器学习(Traditional ML)和迁移学习(Transfer Learning)对比看,传统的方式是一种相对隔离的,单个任务的学习,知识无法保留或者积累;在迁移学习中,新任务的学习依赖于前面已进行学习的任务,如下图所示,假设有两个数据集,分别对应两个学习任务,第一个任务学习到的知识通过模型保留下来,然后传递给第二个任务,这就是一个迁移模型的过程。迁移学习并不完全等同于fine-tuning的过程,譬如在NLP领域,在完成迁移学习之后,还需要针对具体的业务领域对模型进行适配。

           

迁移学习模型DDC 迁移数学模型_迁移学习模型DDC

二、迁移学习模型DDC 迁移数学模型_bert_02BERT fine-tuning数学原理解析

在上图中的迁移学习部分,可以把Task2看做是一个微调(fine-tuning)的下游任务。从数学的角度看,这个过程包含了MLE, MAP, Bayesian的运用,在前馈神经网络刚开始训练时,会最大程度靠近实际数据(MLE);然后通过反向传播调整模型,这就是MAP的思想;从不同的视角出发,采用抽样方式在一个模型中尽可能多地用类似很多小模型的方式同步地对数据进行处理,这就是Bayesian的思想。从概率的角度讲,knowledge就是先验信息(Prior),结合Transfer learning和微调的下游任务,最后获得了MAP,即在大的模型基础上基于先验信息和下游任务对模型进行调整。

迁移学习模型DDC 迁移数学模型_深度学习_03

从下面的数学公式看,X代表了数据,P(X)是边缘概率,它代表了整个数据下所有的情况,每一种情况就是模型的一种参数状态,P(θ) 代表的就是knowledge, 微调时输入新的数据就是X,而P(X|θ) 与P(θ)相乘代表了多个步骤对前面步骤(指P(θ))的更新,即对knowlege的更新(使用MLE的方式来调整knowledge的网络状态,有的模型会冻结更新knowledge的网络状态,这背后的原因是如果采用大的Transformer模型,即使使用小数据进行微调也会很慢导致无法承受,fine-tuning是不会冻结这种更新的),P(θ|X) 代表了Bayes公式, 而P(X) 代表了Bayesian思想,task2通过微调反过来可以调整knowledge,无论是P(θ|X)还是P(X|θ),目的是计算出优化后的概率,也就是最大化后延概率(MAP)。从人工智能的角度来看,最重要的运算就是乘法,除法以及对数运算,指数只是乘法的一种特殊的变种,而对数可以把乘法,除法变为加法,减法这样的更简化的形式来让计算机进行计算。

迁移学习模型DDC 迁移数学模型_人工智能_04

BERT能够被成功运用在各种不同任务(例如MSM和NSP)的一个重要原因是使用了基于Transformer的encoder架构,而这种架构使用dense vectors来表示输入,这些dense vectors能够通过线性转换(linear transformation)得到输出结果。在实际工程实践中,你可以考虑以下几种使用dense vector的方式,譬如需要考虑语句的语义表示,那么需要基于encoder的不同层次表达不同的信息这一点来考虑优化方法:

  1. 只考虑使用由[CLS]产出的dense vector
  2. 考虑使用包括[CLS]在内的所有输入token对应产出的dense vectors
  3. 考虑使用Transformer最后几层的dense vectors使用定制的公式进行计算

        除了调整先验知识外,很多情况下也需要调整下游的神经网络,原因是有时候对这种先验的模型微调不起作用,譬如受硬件资源的限制。MLE是一种原始的也是有效的调整模型的方式,它是通过“共现”来寻求概率的一种方式,而P(θ) 先验知识会有一些经典的分布如高斯分布等,从BERT的角度讲,是基于BERT的模型来完成分布,BERT本身类似一个数学公式来基于数据进行训练。领域由两部分构成:X代表的数据和P(X)代表的边缘概率。先验信息(Prior)来自一个给定的领域Ds,这个领域由对应的任务Ts进行训练(预训练),另外给定目标领域Dt和对应的训练任务Tt(指下游任务的微调),从Ts到Tt的迁移学习的目的是基于先验知识计算出目标的概率。微调是在迁移学习的背景下,面向领域,由于BERT强大的信息表达能力和简洁的使用接口(dense vector),就可以通过一个线性转换来应用到下游的任务中。

迁移学习模型DDC 迁移数学模型_迁移学习_05

 

迁移学习模型DDC 迁移数学模型_迁移学习模型DDC_06