Meow
Meow

記錄一些學習跟生活~

ERNIE 介紹 與 情感分析應用

以往的language model如Bert,透過大量的文本訓練,來學習每個token的語意資訊,但如果可以在學習的過程中把人類的Knowledge一起考慮進去呢?
ERNIE的目的是在原本的BERT模型中,再加上Knowledge Graph(KG)的知識,以增強language model的效能
在閱讀前,可以先去了解BERT或是Attention Is All You Need ~


Knowledge Grap

在開始之前,先來看一下Knowledge Graph(KG)是啥米東東~

什麼是Knowledge Graph(KGs)

Knowledge Graph 是一個有向圖,目的是可以將人類的知識有結構的儲存起來,圖中的點為Entity,邊則代表兩個Entity間的關係

KG中最簡單的表達知識的單位是一個triplet(head entity h, relation r, tail entity t),用 relation r 來表示兩個 entity h, t間的關係,譬如 ( 田馥甄, 職業, 歌手 )

許多個triplet便可以組成Knowledge Graph :

KG

什麼是Knowledge Graph Embedding

通常一個KG中會有很大量的entity與relation,因此如果我們用one-hot的方式,會發現每一個embedding的dimension都非常的大,因此Knowledge Graph Embedding的目的就是去學習一個low-dimension的vector,去表示KG中的每個entity與relation,而學習好的KG embedding因為含有很KG中的資訊,因此可以用在許多不同的task中,向本篇就是用在增強language model的效能上。

而我們要如何取得low-dimension的vector呢?其中一個個單而經典的方法是TransE,這也是ERNIR所使用的方法,TransE會將每個triplet中的relation視為一個轉換的方式,head經過relation的轉換後成為了tail,用公式來表達的話即是eh+er=et ​,而TransE的loss便是最小化|eh+er -et|​的值。


ERNIE

舉例來說,一個句子 Bob Dylan wrote Blowin’ in the Wind in 1962 ,會需要先偵測出句子裡有哪一些entity(如 Bob Dylan 與 Blowin’ in the Wind),並將這些entity的KG embedding的資訊加進language model中,作者在paper裡面沒有詳細的敘述用什麼方法找到句子的entity,但在github裡面有說,是使用tagme這個套件去找到每個句子裡面對應的entity,且作者是使用wiki的資料作為訓練的,在github裡面有提供英文訓練的資料集。

作者提出本篇論文的兩個 Challenge :

(1) Structured Knowledge Encoding : 如何將一段文字中對應的entity找出來

(2) Heterogeneous Information Fusion : Bert 的 embedding space 與 TransE 的 embedding space 是不同的,要如何設計一個模型去統合兩個不同的資訊


Model Architecture

先來看模型的整體架構圖,基本上分成了兩個部分T-Encoder與K-Encoder,其中T-Encoder與是原本的Transformer負責學習語意的訊息,而K-Encoder的部分則加入了KG的資訊,並整合Bert與TransE兩種information。

ERNIE model Source: ERNIE: Enhanced Language Representation with Informative Entities. arXiv:1905.07129

不能打公式之我很傷心

之後的說明會牽扯到數學公式,但我發現matters好像不支援QAQ,因此請想繼續看的大家先去這裡看後面的內容

此外,作者有提供開源的程式碼,以及預訓練好的模型給大家下載,也有提供demo code,我將其中一個Sentiment Analysis 的 demo code修改一下,主要加了註解以及套件還有資料集的下載安裝,可以直接在colab蹭飯,有興趣的可以點這裡執行看看~

CC BY-NC-ND 2.0 版权声明

喜欢我的文章吗?
别忘了给点支持与赞赏,让我知道创作的路上有你陪伴。

加载中…

发布评论