IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 【自然语言处理】BERT-Whitening -> 正文阅读

[人工智能]【自然语言处理】BERT-Whitening

苏神论文: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 xRd y ∈ R d y\in\mathbb{R}^d yRd,这两个向量的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=1N?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=1N?(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,得到
KaTeX parse error: No such environment: align at position 8: \begin{?a?l?i?g?n?}? \Sigma&=(W^T)^…
由于协方差矩阵 Σ \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)

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-09-06 11:07:54  更:2021-09-06 11:08:44 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 16:29:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码