前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >当我在微调的时候我在微调什么?

当我在微调的时候我在微调什么?

作者头像
对白
发布于 2022-04-01 09:44:18
发布于 2022-04-01 09:44:18
1.8K0
举报
文章被收录于专栏:对白的算法屋对白的算法屋

作者 | BroLin 出品 | 对白的算法屋

从 BERT 开始,预训练模型(PLMs)+微调(finetune)已经成为了NLP领域的常规范式。通过引入额外的参数(新的网络层)和特定任务的目标函数,PLMs在该任务的数据集下经过finetune后,总能取得评价指标上的提升,甚至达到SOTA。

但是为什么finetune总能提高BERT在下游任务上的性能表现?

BERT在finetune的时候词向量空间究竟发生了什么?

BERT输出层应该再接一个什么样的分类器才能取得性能提升?

今天这篇文章使用两种探针技术(probe)在四种探测任务上量化了BERT在finetune前后表示空间的变化,直观形象的回答了上述问题。相信大家看完以后,一定会收获满满

每天一个不同的小期待 (ฅ>ω<*ฅ)

一、先说结论

BERT将词表中每个单词映射为一个高维(768维)向量,这些单词可被视为表示空间中的点。

  1. 微调操作将具有相同标签的点分组到一个簇(cluster)中,简化了词向量的底层表示。因此,微调后更容易进行单词的类别划分。
  2. 微调操作在不同方向上以不同程度移动词向量,从而增大了代表不同类别的簇之间的分割区域,让不同类别的词向量距离更远,以此提高了分类精度。
  3. 微调操作为下游任务移动词向量的空间位置时,并不随意,而是很大程度上保留了不同簇在finetune之前的相对位置。
  4. 微调操作可以通过模型参数记忆训练集,从而引入了可见样本(训练集)与不可见的样本(测试集)之间的差异。这会导致过拟合问题。
  5. 在微调时,BERT的所有层参数都会改变,但越靠近输出层的layer变化越大。即,高层变化大于低层变化。

二、两种探针技术

作者使用了两种探针技术来探测微调之后的词向量表示空间。

  1. Classifier-based probes 基于分类器的探针。微调效果到底好不好,微调之后的词向量表示是否有效,可以直接用针对下游任务的分类器的准确度来衡量。只有微调效果足够好时,分类效果才够准。
  2. DIRECTPROBE 基于聚类的探针。由作者在另外一篇文章中提出(NAACL2021),用于直接量化词向量表示在几何空间上的变化。

基于分类器的探针

但是第一种基于分类器的探针,并不可靠。如下图所示,分类器的性能不仅与微调后的词向量表示有关,还会受到各种因素的干扰。比如,优化器在收敛之前就停止了,或者我们选择了一个错误的初始化点等等这些都会导致分类效果的降低。

‍‍

作者在自己的博客中对这一问题进行了实验,如下表所示。选择supersense role labeling任务,每种分类器(Model Type)除了在参数初始化时选用不同的随机种子,其余(batch_size, epoch, optimazer...)均一样。共训练10次,Min是10次中最差的准确率,Max是最好的,difference是Max-Min的差值。可以发现仅仅是参数初始化不同,分类器的性能足足有3-4个百分点的变化。

DIRECTPROBE探针

上述实验结果表明,分类器的效果受到多种因素的扰动,这种扰动往往是不容忽视的,它并不能准确可靠地衡量词向量的表示效果。因此,作者自己提出了一个基于聚类的探针,DIRECTPROBE,不用分类器,而是从几何空间角度来衡量微调前后的词向量表示效果。该探针只适用于POS、NER这类预测单词类别的任务(labeling task)。

对单词进行打标,可以被视为词向量的聚类问题,即在表示空间中寻找不同类别单词之间的边界。如下图所示,假设红点代表名词,绿点代表动词,想要判断当前词是动词还是名词,只需看该词经过finetune后的向量表示vector是否落在黑色圆圈中。

区分红点和绿点的黑色圆圈(决策边界)可被视为一种分类器。理论上,有无穷个分类器可以用于划分红点和绿点。如下图所示,可以使用灰色区域来近似表达这无穷个决策边界(分类器)。这样对单词进行分类就被转化为了一个聚类问题,同类别的单词应该被分组到为同一个簇。每个簇的最外围节点相连接可构成一个凸多边形(convex hull),如红点所示。为保证可以找到决策边界来划分单词类别,每个凸多边形之间不能有重叠。则寻找决策边界(灰色区域)问题转化为了在寻找凸多边形簇的聚类问题。注意,不同的簇可能属于同一个标签。比如,下图绿点构成了三个簇,但都代表动词类别。

如下图动画所示,DIRECTPROBE本质上是一个用于解决上述聚类问题的算法:

  • 将每个点视为一个簇(cluster)
  • 总是选择距离最近的两个簇进行合并
  • 两个簇只有在满足如下条件时才可以被合并
  • 他们的标签类别相同
  • 合并后新簇的凸多边形不能与其他簇的凸多边形有重叠。
  • 重复上述步骤,直至没有新的簇产生。

那么DIRECTPROBE聚类出来的这些簇可以用来干嘛呢?

判断何时选用线性分类器

当要对某个数据集进行POS等labeling task时,可以先用DIRECTPROBE对微调后的词向量进行聚类,如果产生的簇的个数n等于任务的类别个数m,说明每个簇对应一个类别,使用线性分类器就可以很好地区分不同类别的样本,运算速度快。如果n大于m,说明一个类别可能对应多个簇。如上图所示,绿点(动词类别)对应三个簇(凸多边形),无法用一条直线来区分红点和绿点,因此只有选择非线性分类器(neural networks)才能取得好的分类效果。

揭示representation的内部结构

训练一个线性SVM来计算不同簇之间的margin,不同簇之间的距离可以用两倍的margin来表示。通过比较微调前后不同簇之间的距离,可以量化微调之后的词向量表示的变化。

揭示不同representation之间的空间相似度

针对一种representation,计算两两簇之间的距离 ,构成距离向量 。若簇的个数 等于任务实际类别个数,则 的长度为 。若要衡量两种不同representation的空间相似性,则可以计算它们的距离向量的皮尔逊相关系数。

三、四种探测任务

如下图所示,作者使用不同规模的BERT在四种探测任务上进行了微调训练。一种BERT对应一种表示空间(representation)。除了BERT base版训练5个epochs之外,其余规模的BERT均训练10个epochs。分类器探针接到BERT输出层,跟着BERT一起微调。为了降低微调过程中不稳定性的影响,同一个任务作者使用不同的初始化参数进行了五次微调。

上述四种探测任务介绍如下:

part-of-speech tagging

词性标注任务。labeling task中的代表性任务,如下图所示,一句话中的每个词都要预测其类别。

preposition supersense role prediction (PS-role) 一句话中的每个介词可被标记为一种类别,表明介词的类别

preposition supersense function prediction (PS-fxn)

预测介词的作用。如下图所示,句子中的介词均被加粗显示,介词的role lable紧跟其后。如果某个介词有function label,则跟在箭头之后。

dependency head prediction

预测两个单词之间的语法依赖关系。前三个任务预测一个单词的类别,与之不同,本任务预测一对单词类别别。我们将这对单词的词向量concat为一个vector,用这个vector代表这对单词在表示空间中的向量。

四、探测结果分析

微调增大了训练集和测试集的差异度

下图最右边一列Sim表示训练集和测试集表示空间(representation~train~,representation~test~)之间的相似度。发现微调后(tuned)比微调前(originalal)相似度有降低,这表明微调操作增大了训练集和测试集的空间离散程度。

给我感觉,R-Drop在接下来一段时间,会不会成为竞赛拿奖的一种标配?因为从论文里的实验可以看出,基本引入R-Drop都会带来1 ~ 2个点的提升。对于工程上来说嘛,就可以把引入R-Drop当成一种常规操作,超参不多,慢慢调,总会带来一点提升,唯一的牺牲就是增加一点训练时间,但是并不会增加线上应用时的推理时间。

微调后性能反而降低?

上图中红色框出,发现微调后BERT~small~在PS-fxn任务上反而准确率降低了。为了进一步研究这一问题,如下图作者将原训练集按8:2划分为subtrain和subtest。使用原始train对BERT~small~进行微调,微调前后均只使用subtrain训练分类器。分类器的训练不参与微调。

如下图所示,微调前分类器在subtest和test上的学习曲线一致。微调后,虽然分类器没有见过subtest,但BERT见过了subtest,导致分类器在subtest上学习曲线和subtrain上一致,性能有了大幅提升。这表明微调使BERT记住了subtest中的样本。据此猜测,微调也许会使得模型过拟合从而降低模型对不可见样本的泛化能力,导致性能下降?

BERT规模越小需要的分类器越复杂

除了规模较小的BERT~tiny,mini~之外,BERT输出层之后接一个简单的线性分类器就可以搞定四种探测任务(聚类簇个数等于任务类别数)。而BERT~tiny,mini~则需要使用非线性分类器才能满足大部分任务,如下图所示。一个启示是,炼大模型确实有用,大模型微调后可以使得表示空间更简单(类别可被线性边界区分)。如果受限于资源不得不用小模型,则尽量把分类器搞得复杂一点。

微调推远了不同类别的簇

下图展示了BERT~base~在POS tagging任务的微调过程中三个簇质心的移动路径。作者选用了微调前三个相近的簇(三个很难区分的类别ADJ,VERB, NOUN),使用PCA技术将高维的质心映射到二维空间中。随着微调的进行,质心在不同的方向上移动,并彼此远离。比如,微调前蓝点和红点相距很近,微调后两个类别的距离增大了(L2>L1)。高层Layer12分离不同类别的能力比低层Layer1更强(L3>L2)。

高层比下层的变化更大

下图(横轴是层数纵轴是距离)展示了BERT~base~在POS tagging任务上,随着微调的进行,某一类别的簇的质心与其他簇质心的欧式距离的平均值在layer的增加下不断增加。随着层数的增加,不同簇之间的距离也随之增大,即微调时高层在表示空间上的变化比下层的更大。

下图横轴为微调过程中梯度更新的次数,纵轴为微调前后表示空间的相似度。看出下层(Layer2 Layer6)微调前后几乎无变化。高层微调后变化很大,这与上述结论一致。

五、总结

今天这篇文章使用两种探针技术定量分析了不同规模BERT在微调时的变化,带领读者抵近观察了一番BERT的表示空间。回到开头的三个问题,读完文章,似乎都得到了解答。

为什么微调带来性能提升-- > 微调增大了不同类别之间的距离,使得划分更好做。

微调时词向量究竟发生了什么变化-- > 为了使类间距离增加,词向量沿不同方向移动了不同程度。高层变化大于下层。

BERT外接分类器的设计准则-- > BERT参数规模小则分类器结构应该复杂一些。针对Lableing Task,先使用DIRECTPROBE对微调后的词向量进行聚类,若簇大小等于类别数量,则外界一个简单的线性分类器再进行微调就可以解决问题。

但是作者只分析了不同簇之间的距离,没有分析同一个簇内的词向量变化。直觉上,类间距离变大类内距离变小的“高内聚低耦合”词向量表示才是一个好的微调应该产生的效果。

另外,除了实验结论外,本文实验方法和可视化分析也非常值得学习~

你好,我是对白,硕士毕业于清华,现大厂算法工程师,拿过八家大厂的SSP级以上offer。

高中荣获全国数学和化学竞赛二等奖。

本科时独立创业五年,成立两家公司,并拿过总计三百多万元融资(已到账),项目入选南京321高层次创业人才引进计划。创业做过无人机、机器人和互联网教育,保研后选择退居为股东。

我每周至少更新三篇原创,分享自己的算法技术、创业心得和人生感悟。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-10-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 对白的算法屋 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
博客 | 斯坦福大学—自然语言处理中的深度学习(CS 224D notes-2)
关键词:内在/外在评价,超参数在类推(analogy)评估中的作用,人类判别和词向量距离间的相关性,根据上下文消歧,窗口(Window)分类。
AI研习社
2018/12/29
6070
博观约取系列 ~ 探测Bert Finetune对向量空间的影响
熟悉NLP的同学对Bert Finetune一定不陌生,基本啥任务上来都可以Bert Finetune试一把。可是模型微调一定比直接使用预训练模型效果好么?微调究竟对Bert的向量空间产生了哪些影响嘞?考虑到Bert的高维向量无法直接观测,下面这篇paper中,作者结合文本分类任务,和DirectProb这两种探测任务,直观展现了模型微调对Bert向量空间的影响
风雨中的小七
2021/09/08
1.2K0
博观约取系列 ~ 探测Bert Finetune对向量空间的影响
机器学习模型从理论到实战|【007-K均值聚类(K-Means)】新闻主题分类
今日推荐:线性分类器全解析:Logistic 回归、Softmax 回归、感知器和支持向量机
远方2.0
2024/12/03
2160
机器学习模型从理论到实战|【007-K均值聚类(K-Means)】新闻主题分类
用万字长文聊一聊 Embedding 技术
作者:qfan,腾讯 WXG 应用研究员 随着深度学习在工业届不断火热,Embedding 技术便作为“基本操作”广泛应用于推荐、广告、搜索等互联网核心领域中。Embedding 作为深度学习的热门研究方向,经历了从序列样本、图样本、再到异构的多特征样本的发展过程。本文主要系统总结了现在主流的 Embedding 技术,简单介绍它们的基本原理,希望对大家快速整理相关知识有所帮助。 一、引言 在提到 Embedding 时,首先想到的是“向量化”,主要作用是将高维稀疏向量转化为稠密向量,从而方便下游模
腾讯技术工程官方号
2020/11/19
15.5K2
NLP教程(2) | GloVe及词向量的训练与评估
教程地址:http://www.showmeai.tech/tutorials/36
ShowMeAI
2022/05/01
1.1K0
NLP教程(2) | GloVe及词向量的训练与评估
【CS224N课程笔记】词向量II: GloVe, 评估和训练
课程主页: http://web.stanford.edu/class/cs224n/
NewBeeNLP
2021/01/12
7530
【CS224N课程笔记】词向量II: GloVe, 评估和训练
NLP系列文章:子词嵌入(fastText)的理解!(附代码)
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
mantch
2019/08/29
2.3K0
NLP系列文章:子词嵌入(fastText)的理解!(附代码)
AI人工智能面试题
监督学习:通过已有的一部分输入数据与输出数据之间的对应关系,生成一个函数,将输入映射到合适的输出,例如:分类;
zhangjiqun
2024/12/14
1570
AI人工智能面试题
CS224N 课程笔记之二:词向量(下)
之前我们介绍了两种表示词向量的方法:「基于数量」的矩阵分解方法(HAL & LSA)和「基于窗口」的概率方法(word2vec)。第二种方法明显优于第一种,但其只考虑了一个较小窗口内的词语信息,没有利用好全局的词语共现数据。
口仆
2020/08/14
8490
解读大模型的微调
在快速发展的人工智能领域中,有效地利用大型语言模型(LLM)变得越来越重要。然而,有许多不同的方式可以使用大型语言模型,这可能会让我们感到困惑。实际上,可以使用预训练的大型语言模型进行新任务的上下文学习并进行微调。
半吊子全栈工匠
2023/09/02
1.1K0
解读大模型的微调
词向量因何存在:一段往计算机输入文字的历史
往计算机输入文字,是整个自然语言处理(NLP)领域的宏大故事的一部分,而 NLP 则是人工智能的重要分支研究领域。
AI科技评论
2020/07/23
7460
词向量因何存在:一段往计算机输入文字的历史
10.HanLP实现k均值--文本聚类
笔记转载于GitHub项目:https://github.com/NLP-LOVE/Introduction-NLP
mantch
2020/02/21
1.3K0
10.HanLP实现k均值--文本聚类
独家 | NAACL19笔记:自然语言处理应用的实用理解(多图解&链接)
继续这个系列文章的第一部分(https://medium.com/orb-engineering/naacl-19-notes-practical-insights-for-natural-language-processing-applications-part-i-5f981c92af80),我们调查了NLP任务中最近的一些重要成果,比如文本相似性、文本分类、序列标注、语言生成。
数据派THU
2019/12/03
6230
独家 | NAACL19笔记:自然语言处理应用的实用理解(多图解&链接)
19年NAACL纪实:自然语言处理的实用性见解 | CSDN博文精选
计算语言:人类语言技术学会北美分会2019年年会(North American Chapter of the Association for Computational Linguistics: Human Language Technologies/NAACL- HLT)于6月2至7日美国明尼阿波利斯举办。NAACL- HLT是A级同行评审会议,是继计算语言学协会(ACL)会议之后,计算语言学界的又一重要事件,即自然语言处理(NLP)。
AI科技大本营
2019/12/23
8500
19年NAACL纪实:自然语言处理的实用性见解 | CSDN博文精选
Embedding 背景 发展 生成方法 在推荐中的应用
随着深度学习在工业届不断火热,Embedding技术便作为“基本操作”广泛应用于推荐、广告、搜索等互联网核心领域中。Embedding作为深度学习的热门研究方向,经历了从序列样本、图样本、再到异构的多特征样本的发展过程。本文主要主要参考几个篇大神写的文章,总结了现在主流的Embedding技术,简单介绍它们的基本原理,以及在推荐下的使用场景,希望对大家快速整理相关知识有所帮助。
大鹅
2021/01/26
3.5K0
Embedding 背景 发展 生成方法 在推荐中的应用
Yann LeCun团队新研究成果:对自监督学习逆向工程,原来聚类是这样实现的
自监督学习(SSL)在最近几年取得了很大的进展,在许多下游任务上几乎已经达到监督学习方法的水平。但是,由于模型的复杂性以及缺乏有标注训练数据集,我们还一直难以理解学习到的表征及其底层的工作机制。此外,自监督学习中使用的 pretext 任务通常与特定下游任务的直接关系不大,这就进一步增大了解释所学习到的表征的复杂性。而在监督式分类中,所学到的表征的结构往往很简单。
机器之心
2023/08/07
2110
Yann LeCun团队新研究成果:对自监督学习逆向工程,原来聚类是这样实现的
如何“锚定”NLP模型中的语言智慧?丨长文评析语言探针
事实上,可解释性并没有数学上的严格定义,可以简单理解其为人们能够理解模型决策原因的程度。换句话说,对机器学习模型来说,它的可解释性越高,人们就越容易理解它为什么做出某些决策或预测。
新智元
2021/01/11
9990
如何“锚定”NLP模型中的语言智慧?丨长文评析语言探针
NLP关键词提取方法总结及实现
向AI转型的程序员都关注了这个号👇👇👇 机器学习AI算法工程   公众号:datayx 一、关键词提取概述 关键词是能够表达文档中心内容的词语,常用于计算机系统标引论文内容特征、信息检索、系统汇集以供读者检阅。关键词提取是文本挖掘领域的一个分支,是文本检索、文档比较、摘要生成、文档分类和聚类等文本挖掘研究的基础性工作。 从算法的角度来看,关键词提取算法主要有两类:无监督关键词提取方法和有监督关键词提取方法。 1、无监督关键词提取方法 不需要人工标注的语料,利用某些方法发现文本中比较重要的词作为关键词,进
机器学习AI算法工程
2022/03/31
10.1K0
NLP关键词提取方法总结及实现
授人以渔:分享我的文本分类经验总结
在我们做一个项目或业务之前,需要了解为什么要做它,比如为什么要做文本分类?项目开发需要,还是文本类数据值得挖掘。
对白
2022/04/01
4940
授人以渔:分享我的文本分类经验总结
线性分类器 VS 非线性分类器
在这一小节,我展示了Naive Bayes和Rocchio这两个学习方法,它们都属于线性分类器,大概也是文本分类器中最重要的一组,接着我把它们和非线性分类器做了一个比较。为了简化讨论部分,我在这一节将
用户1737318
2018/06/05
8840
推荐阅读
相关推荐
博客 | 斯坦福大学—自然语言处理中的深度学习(CS 224D notes-2)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档