相关博客:
【自然语言处理】【对比学习】SimCSE:基于对比学习的句向量表示
【自然语言处理】BERT-Whitening
【自然语言处理】【Pytorch】从头实现SimCSE
【自然语言处理】【向量检索】面向开发域稠密检索的多视角文档表示学习
【自然语言处理】【向量表示】AugSBERT:改善用于成对句子评分任务的Bi-Encoders的数据增强方法
【自然语言处理】【向量表示】PairSupCon:用于句子表示的成对监督对比学习

苏神论文:https://arxiv.org/pdf/2103.15316.pdf

BERT-Whitening

​ BERT虽然很成功,但是通过BERT来获取句子嵌入仍然是个问题。先前的研究认为BERT获取的句嵌入向量存在各向异性的问题,导致cosine相似度无法度量句子间的语义相似性。 BERT-Whiteing \text{BERT-Whiteing} BERT-Whiteing通过简单的白化操作,将嵌入向量转化为各向同性。

一、假设

cosine相似度对于输入向量有什么假设?

​ 给定两个向量 x ∈ R d x\in\mathbb{R}^d x∈Rd和 y ∈ R d y\in\mathbb{R}^d y∈Rd,这两个向量的cosine相似度为
cos(x,y) = ∑ i d x i y i ∑ i d x i 2 ∑ i d y i 2 (1) \text{cos(x,y)}=\frac{\sum_i^d x_iy_i}{\sqrt{\sum_i^d x_i^2}\sqrt{\sum_i^d y_i^2}} \tag{1} cos(x,y)=∑id​xi2​ ​∑id​yi2​ ​∑id​xi​yi​​(1)
等式(1)仅在标准正交基下才满足。但是,研究显示BERT中包含了充分的语义,只是无法通过cosine或者其他的度量方式进行语义相似度度量。那么一个合理的猜测就是:BERT产生句向量的坐标基不是标准正交基,也就是各向异性。为了解决BERT句嵌入向量的问题,就需要将句向量转化至标准正交基中。

二、白化变换

​ 先前解决BERT句向量各向异性采用基于flow的方法。本文认为使用简单的whitening操作也能实现相同的效果。具体来说,就是将所有句向量转换为均值为0且协方差矩阵为单位矩阵的向量。

​ 假设存在一组句向量 { x i } i = 1 N \{x_i\}_{i=1}^N {xi​}i=1N​,可以使用下面的线性变换实现各向同性(均值为0且协方差矩阵为单位矩阵)。
x ~ i = ( x i − u ) W (2) \tilde{x}_i=(x_i-u)W \tag{2} x~i​=(xi​−u)W(2)
等式 ( 2 ) (2) (2)就是机器学习中的白化操作。若要均值为0,仅需要
μ = 1 N ∑ i = 1 N x i (3) \mu=\frac{1}{N}\sum_{i=1}^Nx_i \tag{3} μ=N1​i=1∑N​xi​(3)
下面来确定矩阵 W W W。 { x i } i = 1 N \{x_i\}_{i=1}^N {xi​}i=1N​的原始协方差矩阵为
Σ = 1 N ∑ i = 1 N ( x i − μ ) T ( x i − μ ) (4) \Sigma=\frac{1}{N}\sum_{i=1}^N(x_i-\mu)^T(x_i-\mu) \tag{4} Σ=N1​i=1∑N​(xi​−μ)T(xi​−μ)(4)
转换后的协方差矩阵为
Σ ~ = W T Σ W (5) \tilde{\Sigma}=W^T\Sigma W \tag{5} Σ~=WTΣW(5)
若希望转换后的协方差矩阵为单位矩阵,则需要解决下面的等式
W T Σ W = I (6) W^T\Sigma W=I \tag{6} WTΣW=I(6)
将等式 ( 6 ) (6) (6)左乘 ( W T ) − 1 (W^T)^{-1} (WT)−1和右乘 W − 1 W^{-1} W−1,得到
Σ = ( W T ) − 1 W − 1 = ( W − 1 ) T W − 1 (7) \begin{aligned} \Sigma&=(W^T)^{-1}W^{-1} \\ &=(W^{-1})^TW^{-1} \tag{7} \end{aligned} Σ​=(WT)−1W−1=(W−1)TW−1​(7)
由于协方差矩阵 Σ \Sigma Σ是正定对称矩阵,满足 SVD \text{SVD} SVD分解,即
Σ = U Λ U T (8) \Sigma=U\Lambda U^T \tag{8} Σ=UΛUT(8)
等式 ( 7 ) (7) (7)和 ( 8 ) (8) (8)联立
( W − 1 ) T W − 1 = U Λ U T = U Λ Λ U T = ( Λ U T ) T Λ U T (9) (W^{-1})^TW^{-1}=U\Lambda U^T=U\sqrt{\Lambda}\sqrt{\Lambda}U^T=(\sqrt{\Lambda}U^T)^T\sqrt{\Lambda}U^T \tag{9} (W−1)TW−1=UΛUT=UΛ ​Λ ​UT=(Λ ​UT)TΛ ​UT(9)
因此, W − 1 = Λ U T W^{-1}=\sqrt{\Lambda}U^T W−1=Λ ​UT,那么最终
W = U Λ − 1 (10) W=U\sqrt{\Lambda^{-1}} \tag{10} W=UΛ−1 ​(10)

三、降维

​ 通过矩阵 W = U Λ − 1 W=U\sqrt{\Lambda^{-1}} W=UΛ−1 ​可以将句向量的协方差矩阵转换为单位矩阵。在这个变换中,对角矩阵 Λ \Lambda Λ中的每个对角元素的大小都代表了对应维度的重要性。因此,可以通过去掉那些不重要的特征来实现特征向量降维,这样可以一定程度上降低噪音且加速向量检索速度。

​ 在实现过程中,由于奇异值分解出的对角矩阵 Λ \Lambda Λ中的元素已经被降序排列。因此,仅需要将 W W W中的前 k k k列保留下来,就能实现降维效果。论文将整个流程称为 Whitening-k \text{Whitening-k} Whitening-k,详细的实现如算法1描述。

算法1

输入:句嵌入 { x i } i = 1 N \{x_i\}_{i=1}^N {xi​}i=1N​和要保留的维度 k k k;

  1. 计算 { x i } i = 1 N \{x_i\}_{i=1}^N {xi​}i=1N​的均值 μ \mu μ和协方差矩阵 Σ \Sigma Σ;
  2. 计算 U , Λ , U T = SVD ( Σ ) U,\Lambda,U^T=\textbf{SVD}(\Sigma) U,Λ,UT=SVD(Σ);
  3. 计算 W = ( U Λ − 1 ) [ : , : k ] W=(U\sqrt{\Lambda^{-1}})[:,:k] W=(UΛ−1 ​)[:,:k];
  4. for i = 1 , 2 , … , N i=1,2,\dots,N i=1,2,…,N do
  5. ​ x ~ i = ( x i − u ) W \tilde{x}_i=(x_i-u)W x~i​=(xi​−u)W
  6. end for

输出:转换后的嵌入向量 { x ~ i } i = 1 N \{\tilde{x}_i\}_{i=1}^N {x~i​}i=1N​;

四、复杂度分析

​ 在大规模语料库上训练时,均值 μ \mu μ和协方差矩阵 Λ \Lambda Λ是可以迭代计算的。具体来说,整个句向量 { x i } i = 1 N \{x_i\}_{i=1}^N {xi​}i=1N​均需要计算矩阵向量 μ ∈ R d \mu\in\mathbb{R}^d μ∈Rd和协方差矩阵 Σ ∈ R d × d \Sigma\in \mathbb{R}^{d\times d} Σ∈Rd×d。因此,给定一个新句子 x n + 1 x_{n+1} xn+1​,均值可以迭代计算:
μ n + 1 = n n + 1 μ n + 1 n + 1 x n + 1 (11) \mu_{n+1}=\frac{n}{n+1}\mu_n+\frac{1}{n+1}x_{n+1} \tag{11} μn+1​=n+1n​μn​+n+11​xn+1​(11)
类似地,协方差矩阵就是 ( x i − μ ) T ( x i − μ ) (x_i-\mu)^T(x_i-\mu) (xi​−μ)T(xi​−μ)的期望,迭代计算
Σ n + 1 = n n + 1 Σ n + 1 n + 1 ( x n + 1 − μ ) T ( x n + 1 − μ ) (11) \Sigma_{n+1}=\frac{n}{n+1}\Sigma_n+\frac{1}{n+1}(x_{n+1}-\mu)^T(x_{n+1}-\mu) \tag{11} Σn+1​=n+1n​Σn​+n+11​(xn+1​−μ)T(xn+1​−μ)(11)
因此,计算 μ \mu μ和 Σ \Sigma Σ的空间复杂度为 O ( 1 ) O(1) O(1),时间复杂度为 O ( N ) O(N) O(N)。

【自然语言处理】BERT-Whitening相关推荐

  1. BERT embedding 降维--BERT whitening

    利用BERT whitening可以将embedding 比如768维降到256维 def compute_kernel_bias(vecs, n_components=256):"&quo ...

  2. 我爱自然语言处理bert ner chinese

    BERT相关论文.文章和代码资源汇总 4条回复 BERT最近太火,蹭个热点,整理一下相关的资源,包括Paper, 代码和文章解读. 1.Google官方: 1) BERT: Pre-training ...

  3. [深度学习] 自然语言处理 --- Bert开发实战 (Transformers)

    本文主要介绍如果使用huggingface的transformers 2.0 进行NLP的模型训练 除了transformers,其它兼容tf2.0的bert项目还有: 我的博客里有介绍使用方法  [ ...

  4. [深度学习] 自然语言处理 --- BERT模型原理

    一 BERT简介 NLP:自然语言处理(NLP)是信息时代最重要的技术之一.理解复杂的语言也是人工智能的重要组成部分.Google AI 团队提出的预训练语言模型 BERT(Bidirectional ...

  5. 深度学习之 自然语言处理BERT

    Natural Language Processing(NLP)包括自然语言理解和自然语言生成,自然语言理解的应用包括语义分析.机器客服.语音识别.机器翻译等. transformer这一深度网络架构 ...

  6. 自然语言处理——BERT情感分类实战(一)之预处理

    写在前面 网上已经有很多文章对BERT的原理讲得很清楚了,今天我将以实战的方式(假装大家都懂原理≧◔◡◔≦)一步步带大家操作最近比较流行的BERT模型.源代码是pytorch版本.由于篇幅比较长我将分 ...

  7. PromptBERT: Improving BERT Sentence Embeddings with Prompts (通篇翻译)

    PromptBERT:使用提示改进BERT句子嵌入 Ting Jiang 1 ∗ , Shaohan Huang 3 , Zihan Zhang 4 , Deqing Wang 1 † , Fuzhe ...

  8. BERT相关模型汇总梳理

    ©PaperWeekly 原创 · 作者|熊志伟 学校|清华大学 研究方向|自然语言处理 BERT 自 2018 年被提出以来,获得了很大的成功和关注.基于此,学术界陆续提出了各类相关模型,以期对 B ...

  9. BERT在多模态领域中的应用

    ©PaperWeekly 原创 · 作者|李明晓 学校|鲁汶大学博士生 研究方向|自然语言处理 BERT (Bidrectional Encoder Representations from Tran ...

  10. 【Pytorch基础教程36】基于Ernie预训练模型和Bert的新闻分类

    文章目录 一.新闻分类任务 1.1 中文数据集 1.2 数据特点 1.3 跑起代码 二. 预训练语言模型ERNIE 2.1 ERNIE模型结构 2.2 bert模型结构 三.项目代码 1. bert模 ...

最新文章

  1. Android Studio 启动模拟器出现“Timed out after 300seconds waiting for emulator to come online“解决方案
  2. JavaScript倒计时
  3. python连接mysql代码_python连接mysql
  4. Python多版本管理器-pyenv 介绍及部署记录
  5. 【职场】看一位前端工程师如何上班摸鱼
  6. 【转】(六)unity4.6Ugui中文教程文档-------概要-UGUI Animation Integration
  7. vue-cli的初步使用
  8. 一文读懂 Serverless,将配置化思想复用到平台系统中
  9. Java构造字符串算法题_LeetCode算法题-Repeated Substring Pattern(Java实现)
  10. SMP、NUMA、MPP(Teradata)体系结构介绍
  11. python实现面部特效_Python实现在线批量美颜功能过程解析
  12. 形态学操作之提取水平与垂直直线
  13. 0bug到底碰痛了谁的神经?
  14. ospybook安装包及安装过程
  15. 拓端tecdat|matlab脉冲响应图的时域特征
  16. WLAN 安全协议 - WAPI
  17. 使用python批量压缩图片分辨率到指定大小,替换之前的压缩Image.ANTIALIAS
  18. 阿里云轻量服务器WordPress镜像建网站教程(图)
  19. 【Conic】最优性条件与对偶(1)
  20. 绝望的主妇第一二三季/Desperate Housewives迅雷下载

热门文章

  1. 调试经验——Office 2010不能成功卸载(could not open install.log file)的解决方法
  2. 2020牛客寒假算法基础集训营1 D hanayo和米饭
  3. 【HTML+CSS】博客系统(页面设计)
  4. Boolean 的用法及意思
  5. 承受自律的苦,不要承受自责的悔
  6. 经纬度编码方法推荐-plus code简介
  7. DESeq2 install 如何安装R包 RcppArmadillo
  8. PyCharm使用技巧之设置背景图片
  9. 章文嵩:建构大型云计算平台对分布式系统的要求
  10. PC电脑安装苹果操作系统MAC OS X【图文教程】