0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

有關(guān)語義匹配和推理

深度學(xué)習(xí)自然語言處理 ? 來源:CS的陋室 ? 作者:CS的陋室 ? 2021-03-14 09:32 ? 次閱讀

先把論文放出來:Enhanced LSTM for Natural Language Inference,說實(shí)話這篇論文不算新了,但是在語義相似度方至今仍流傳著他的傳說,因此我還是把這篇論文拿著讀了起來。近期也是看了很多文章,但是終究不如讀論文來的過癮,大部分博客對這篇論文的模型核心做了很多介紹,但各個(gè)操作的出發(fā)點(diǎn)和一些獨(dú)到的見解卻寫的不多,這次我會在介紹ESIM的過程中討論一下。

當(dāng)然,還是建議大家好好品讀原論文,更有味道。

另外給點(diǎn)代碼,看論文不清楚的看看論文也挺好:

https://blog.csdn.net/wcy23580/article/details/84990923。

https://github.com/weekcup/ESIM。

有關(guān)語義匹配和推理

一般地,向量召回主要用的表征模型,但是表征模型沒有用到交互特征,因此匹配的準(zhǔn)確率上肯定比不過交互模型,所以一般工程上用表征模型召回,然后用交互模型來做精排,這樣能保證整個(gè)搜索系統(tǒng)的效果更加穩(wěn)定可靠(看到?jīng)],準(zhǔn)召分離的思路又來了),而交互模型這塊,比較可靠的基線,應(yīng)該就要數(shù)ESIM了。

ESIM里,我比較欣賞的是這幾點(diǎn):

LSTM抽取上下文信息。Tree-LSTM的嘗試也為信息抽取帶來啟發(fā)。

把Decomposable attention作為交互特征的思路有機(jī)組合起來了。

多種交互形式的特征concat起來。

當(dāng)然具體閱讀后,我還提煉了一些新的idea,在文末。有了這些思路,先讓我們來看看具體的模型,其實(shí)論文的行文里討論了很多思路,我們先來看整體論文思路,然后再來提煉里面的獨(dú)到之處。

模型整體

論文的模型其實(shí)沒有想象中的困難,在很早就把整篇論文給到了:

輸入層是embedding+LSTM的組合。

Local Inference Modeling層,用的Decomposable Attention來體現(xiàn)兩者的交互型。

Inference composition層則把上面一層的結(jié)果進(jìn)行多種組合計(jì)算,得到多種特征,說白了就是比較。

輸出層就不多說了,大家都懂的。

輸入層

一般的輸入層只會是簡單的word2vector,但這里其實(shí)加了一個(gè)LSTM,還是雙向的,就是用來獲取各路信息。來看看代碼,這個(gè)還是比較清晰的:

i1=Input(shape=(SentenceLen,),dtype='float32') i2=Input(shape=(SentenceLen,),dtype='float32') x1=Embedding([CONFIG])(i1) x2=Embedding([CONFIG])(i2) x1=Bidirectional(LSTM(300,return_sequences=True))(x1) x2=Bidirectional(LSTM(300,return_sequences=True))(x2)

Local Inference Modeling

中文翻譯應(yīng)該是局部推理層,我的理解這一層是用于抽取局部信息的,作者用的方法應(yīng)該來源于這篇論文:A Decomposable Attention Model for Natural Language Inference,這里其實(shí)是一個(gè)計(jì)算交互特征的過程,即一一分析兩個(gè)句子之間每個(gè)位置的相似度,最簡單的方式就是點(diǎn)乘,而這篇論文就是使用的這個(gè)最簡單的方式:

然后再把權(quán)重分散到各個(gè)位置,其實(shí)形態(tài)就很像softmax了:

這個(gè)其實(shí)就是做了一個(gè)交叉,計(jì)算整個(gè)句子的權(quán)重,然后用類似softmax的形式整上,非常討巧,相信ESIM的成功很大程度上就和這個(gè)有關(guān)。

而這并沒結(jié)束,作者進(jìn)行了進(jìn)一步的強(qiáng)化,對比Decomposable Attention前后的變化,進(jìn)行了組合。

Inference Composition

推理層應(yīng)該是進(jìn)入最終預(yù)測之前的最后一層了。這一層的操作同樣沒那么簡單,大部分人可能flatten、maxpool、avgpool之類的就直接全連接了,但是這里并不是,而是做了一系列的再提取和再處理,最終才完成預(yù)測向量的:

作者是真的把信息抽取和特征的組合做到了極致,對上面構(gòu)造的兩個(gè)組合特征再進(jìn)行了一次特征提取,用的依舊是熟悉的Bilstm,值得注意的是他操作的維度,來看一個(gè)ESIM的開源代碼吧:

classInferenceCompositionLayer(object): """ Layertocomposethelocalinferenceinformation. """ def__init__(self,hidden_units,max_length=100,dropout=0.5, activation='tanh',sequences=True): self.hidden_units=hidden_units self.max_length=max_length self.dropout=dropout self.activation=activation self.sequences=sequences def__call__(self,input): composition=Bidirectional(LSTM(self.hidden_units, activation=self.activation, return_sequences=self.sequences, recurrent_dropout=self.dropout, dropout=self.dropout))(input) reduction=TimeDistributed(Dense(self.hidden_units, kernel_initializer='he_normal', activation='relu'))(composition) returnDropout(self.dropout)(reduction)

這里用到另一個(gè)我沒見過的keras層,即TimeDistributed,有興趣可以了解下。

此后,非常精髓的使用avg-pool和max-pool的組合,有關(guān)池化,max和avg一直打得火熱,沒有人能給出非常穩(wěn)定的結(jié)論,因此作者就用了兩者的組合:

啟示

整篇文章其實(shí)沒有構(gòu)造出非常高端的結(jié)構(gòu),只是一些非常樸素的操作,但是綜合起來成了現(xiàn)在也非常推薦用的基線,是有很多有借鑒意義的東西的,我這里一一列舉,大家可以直接在里面選擇需要的來用。

BiLSTM似乎還挺好用的。當(dāng)然私以為CNN其實(shí)也可以嘗試的。

花式concat,多種信息抽取方式進(jìn)行組合,小孩子才做選擇,大人全都要。

attention的使用,其實(shí)有出處A Decomposable Attention Model for Natural Language Inference,思想其實(shí)是兩者一一對比得到交互矩陣,利用該交互矩陣構(gòu)造類似softmax的權(quán)重,為各自的關(guān)鍵信息進(jìn)行加權(quán),重點(diǎn)提取。

信息的對比來自于可以來自減和乘,減直接計(jì)算兩者的差距,類似歐氏距離,乘的使用則來源于余弦距離,既然要對比特征,那就把這兩個(gè)用到極致。

avg和max哪個(gè)好,別爭了,都用,哪個(gè)比較重要交給后面的全連接層來決定吧。

我的這篇文章里面沒有講tree-lstm,主要是因?yàn)槲覀兤綍r(shí)比較難用到,原因是這個(gè)樹不好構(gòu)建,需要依賴依存句法,但是的確是一個(gè)挺有意思的思想,只有真的去讀論文的人才能知道。

參考資料

論文原文:Enhanced LSTM for Natural Language Inference

論文解讀:https://blog.csdn.net/wcy23580/article/details/84990923

keras版本代碼:https://github.com/weekcup/ESIM/blob/master/src/model.py

依舊推薦大家直接去讀論文,文章對他為什么做這些操作有很明確的思想,其實(shí)在我看來這些思想比操作本身還要重要,畢竟思想是需要啟發(fā)的,在這些思想的指導(dǎo)下,我在思考解決方案的時(shí)候就能有參考,方案可以借鑒,但是這個(gè)思想的實(shí)現(xiàn)并不局限在一個(gè)方法上。

責(zé)任編輯:lq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 模型
    +關(guān)注

    關(guān)注

    1

    文章

    3073

    瀏覽量

    48582
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4700

    瀏覽量

    68105
  • eSIM
    +關(guān)注

    關(guān)注

    3

    文章

    240

    瀏覽量

    26572

原文標(biāo)題:【語義相似度】ESIM:語義相似度領(lǐng)域小模型的尊嚴(yán)

文章出處:【微信號:zenRRan,微信公眾號:深度學(xué)習(xí)自然語言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    手冊上新 |迅為RK3568開發(fā)板NPU例程測試

    安裝 2.1.2 conda虛擬環(huán)境安裝 2.1.3 docker環(huán)境安裝 2.2 rknn-toolkit2功能演示 2.2.1 模型轉(zhuǎn)換 2.2.2 連板推理 第3章
    發(fā)表于 10-23 14:06

    手冊上新 |迅為RK3568開發(fā)板NPU例程測試

    安裝 2.1.2 conda虛擬環(huán)境安裝 2.1.3 docker環(huán)境安裝 2.2 rknn-toolkit2功能演示 2.2.1 模型轉(zhuǎn)換 2.2.2 連板推理 第3章
    發(fā)表于 08-12 11:03

    【《大語言模型應(yīng)用指南》閱讀體驗(yàn)】+ 基礎(chǔ)知識學(xué)習(xí)

    匹配 模型可能結(jié)合高效檢索技術(shù)來快速定位與問題相關(guān)的信息源。通過匹配算法和索引技術(shù),模型可以從海量數(shù)據(jù)中篩選出最相關(guān)的文本片段作為候選答案。 3. 推理與生成 在獲得候選答案后,模型會進(jìn)行進(jìn)一步的
    發(fā)表于 08-02 11:03

    LLM大模型推理加速的關(guān)鍵技術(shù)

    LLM(大型語言模型)大模型推理加速是當(dāng)前人工智能領(lǐng)域的一個(gè)研究熱點(diǎn),旨在提高模型在處理復(fù)雜任務(wù)時(shí)的效率和響應(yīng)速度。以下是對LLM大模型推理加速關(guān)鍵技術(shù)的詳細(xì)探討,內(nèi)容將涵蓋模型壓縮、解碼方法優(yōu)化、底層優(yōu)化、分布式并行推理以及特
    的頭像 發(fā)表于 07-24 11:38 ?654次閱讀

    圖像語義分割的實(shí)用性是什么

    圖像語義分割是一種重要的計(jì)算機(jī)視覺任務(wù),它旨在將圖像中的每個(gè)像素分配到相應(yīng)的語義類別中。這項(xiàng)技術(shù)在許多領(lǐng)域都有廣泛的應(yīng)用,如自動駕駛、醫(yī)學(xué)圖像分析、機(jī)器人導(dǎo)航等。 一、圖像語義分割的基本原理 1.1
    的頭像 發(fā)表于 07-17 09:56 ?302次閱讀

    迅為RK3568手冊上新 | RK3568開發(fā)板NPU例程測試

    虛擬環(huán)境安裝 2.1.3 docker環(huán)境安裝 2.2 rknn-toolkit2功能演示 2.2.1 模型轉(zhuǎn)換 2.2.2 連板推理 第3章 rknn-toolkit-lite2環(huán)境搭建
    發(fā)表于 07-12 14:44

    圖像分割與語義分割中的CNN模型綜述

    圖像分割與語義分割是計(jì)算機(jī)視覺領(lǐng)域的重要任務(wù),旨在將圖像劃分為多個(gè)具有特定語義含義的區(qū)域或?qū)ο蟆>矸e神經(jīng)網(wǎng)絡(luò)(CNN)作為深度學(xué)習(xí)的一種核心模型,在圖像分割與語義分割中發(fā)揮著至關(guān)重要的作用。本文將從CNN模型的基本原理、在圖像分
    的頭像 發(fā)表于 07-09 11:51 ?501次閱讀

    阻抗匹配的原理分析?

    阻抗匹配是50歐,末端并聯(lián)下拉是50Ω,在戴維南阻抗匹配是上下拉電阻應(yīng)該配置多少呢,各配置100歐姆? 3、AC阻抗匹配用在什么地方,和要傳輸?shù)男盘柗殿l率帶寬有關(guān)系嗎?阻容串聯(lián)到地阻
    發(fā)表于 05-09 23:05

    深度探討VLMs距離視覺演繹推理還有多遠(yuǎn)?

    通用大型語言模型(LLM)推理基準(zhǔn):研究者們介紹了多種基于文本的推理任務(wù)和基準(zhǔn),用于評估LLMs在不同領(lǐng)域(如常識、數(shù)學(xué)推理、常識推理、事實(shí)推理
    發(fā)表于 03-19 14:32 ?312次閱讀
    深度探討VLMs距離視覺演繹<b class='flag-5'>推理</b>還有多遠(yuǎn)?

    ChatGPT是一個(gè)好的因果推理器嗎?

    因果推理能力對于許多自然語言處理(NLP)應(yīng)用至關(guān)重要。最近的因果推理系統(tǒng)主要基于經(jīng)過微調(diào)的預(yù)訓(xùn)練語言模型(PLMs),如BERT [1] 和RoBERTa [2]。
    的頭像 發(fā)表于 01-03 09:55 ?773次閱讀
    ChatGPT是一個(gè)好的因果<b class='flag-5'>推理</b>器嗎?

    kafka支持哪些消息交付語義?

    在讀完kafka官方文檔,kafka設(shè)計(jì)里的消息交付語義一章后,給我的第一印象是內(nèi)容很抽象,于是草擬和總結(jié)了給個(gè)副標(biāo)題,并把相關(guān)內(nèi)容進(jìn)行了歸類;有些生澀的句子,盡量用大白話和舉例進(jìn)行說明,并加入了總結(jié)。
    的頭像 發(fā)表于 12-22 11:27 ?432次閱讀
    kafka支持哪些消息交付<b class='flag-5'>語義</b>?

    HarmonyOS:使用MindSpore Lite引擎進(jìn)行模型推理

    場景介紹 MindSpore Lite 是一款 AI 引擎,它提供了面向不同硬件設(shè)備 AI 模型推理的功能,目前已經(jīng)在圖像分類、目標(biāo)識別、人臉識別、文字識別等應(yīng)用中廣泛使用。 本文介紹
    發(fā)表于 12-14 11:41

    vlookup函數(shù)近似匹配和精確匹配有什么區(qū)別

    VLOOKUP函數(shù)是一種在Excel中常用的查找函數(shù),它能通過指定的關(guān)鍵詞在表格中查找并返回相應(yīng)的數(shù)值。VLOOKUP函數(shù)支持兩種匹配方式:近似匹配和精確匹配。這兩種匹配方式有著不同的
    的頭像 發(fā)表于 12-01 10:33 ?1.4w次閱讀

    使用rk3588多npu推理模型,模型總推理時(shí)間還增加了,這怎么解釋

    使用rk3588多npu推理模型,模型總推理時(shí)間還增加了,這怎么解釋
    發(fā)表于 11-05 18:22

    淺談阻抗匹配(一)什么是電路匹配

    阻抗匹配是一個(gè)較大的話題,根據(jù)具體的頻率和使用場景,大概可以分為4個(gè)模塊討論。分別是:電路匹配、傳輸線匹配、天線匹配、噪聲匹配
    的頭像 發(fā)表于 11-03 11:50 ?2334次閱讀
    淺談阻抗<b class='flag-5'>匹配</b>(一)什么是電路<b class='flag-5'>匹配</b>?