Poly-encoder
Poly-encoder
- Poly-encoder
- Bi-encoder
- cross-encoder
- poly-encoder
Poly-encoder
論文《Poly-encoders: Transformer Architectures and Pre-training Strategies for Fast and Accurate Multi-sentence Scoring》開放了一種新的transformer體系結構,即Poly-encoder。
Poly-encoder學習全局而不是token級別的self-attention特征,同時解決了Bi-encoder匹配質量低的問題以及 ARC-II、BERT等交互式的cross-encoder匹配速度慢的問題。
Bi-encoder
如圖,Bi-encoder采用兩個相同的網絡(如BERT)得出兩個句子各自的特征向量,再進行相似度計算。
計算context向量:ycxt=red(T1(CTXT))y_{cxt}=red(T_1(CTXT))ycxt?=red(T1?(CTXT))
計算candidate向量:ycand=red(T1(CAND))y_{cand}=red(T_1(CAND))ycand?=red(T1?(CAND))
red()的三種計算方法:
·List item取第一個位置(CLS)的向量
·求所有位置向量的平均
· 求前n個位置向量的平均
相似度得分:dot-product(點積),即s{CTXT,CAND}=ycxt?ycandy_{cxt} ·y_{cand}ycxt??ycand?
訓練,cross-entopy(交叉熵)
總體來講,利用2個網絡分別將context和candidate編碼成向量,最后再通過一個相似性判別函數(如cosine、dot-product)計算兩個向量間的相似度。
Bi-encoder的特點是context和candidate編碼成向量的過程獨立(編碼過程不交互),最后才開始交互,速度快但匹配質量不高。
因此,這種獨立編碼的方式可以使我們離線計算出所有candidates的向量,線上服務時,只需要計算query的向量再進行相似度匹配,匹配速度快但質量不能達到最佳。
cross-encoder
如圖:
cross-encoder的特點是context和candidate輸入至同意網絡結構中,編碼過程完全交互(即context和candidate時時刻刻應相互交互),但匹配速度慢,同時無法離線計算出所有candidates的表征向量,沒處理一個context必須與所有candidates進行交互,模型非常耗時。
poly-encoder
用多個向量表示context,(簡化版:直接去前m個向量)
參考1
參考2
總結
以上是生活随笔為你收集整理的Poly-encoder的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 冰与火之歌-五王之战(优达数据分析进阶项
- 下一篇: 保护计算机组件免受esd,当电子元件性能