用万字长文聊一聊 Embedding 技术
作者:qfan,騰訊 WXG 應(yīng)用研究員
隨著深度學(xué)習(xí)在工業(yè)屆不斷火熱,Embedding 技術(shù)便作為“基本操作”廣泛應(yīng)用于推薦、廣告、搜索等互聯(lián)網(wǎng)核心領(lǐng)域中。Embedding 作為深度學(xué)習(xí)的熱門研究方向,經(jīng)歷了從序列樣本、圖樣本、再到異構(gòu)的多特征樣本的發(fā)展過程。本文主要系統(tǒng)總結(jié)了現(xiàn)在主流的 Embedding 技術(shù),簡(jiǎn)單介紹它們的基本原理,希望對(duì)大家快速整理相關(guān)知識(shí)有所幫助。
一、引言
在提到 Embedding 時(shí),首先想到的是“向量化”,主要作用是將高維稀疏向量轉(zhuǎn)化為稠密向量,從而方便下游模型處理。那什么是 embedding 呢?下面是大家對(duì) embedding 的定義:
In mathematics, an embedding is one instance of some mathematical structure contained within another instance, such as a group that is a subgroup. -- Wikipedia
An embedding is a mapping from discrete objects, such as words, to vectors of real numbers. -- Tensorflow 社區(qū)
Embedding 是用一個(gè)低維稠密向量來表示一個(gè)對(duì)象,使得這個(gè)向量能夠表達(dá)相應(yīng)對(duì)象的某些特征,同時(shí)向量之間的距離能反應(yīng)對(duì)象之間的相似性。 -- 王喆《深度學(xué)習(xí)推薦系統(tǒng)》
將一個(gè)實(shí)例(instance)從復(fù)雜的空間嵌入(投射)到相對(duì)簡(jiǎn)單的空間,以便對(duì)原始實(shí)例進(jìn)行理解,或者在相對(duì)簡(jiǎn)單的空間中進(jìn)行后續(xù)操作。 -- chrisyi《Network embedding 概述》
我個(gè)人比較傾向于 Tensorflow 社區(qū)給出的定義,即Embedding是離散實(shí)例連續(xù)化的映射。如下圖所示,可以將離散型詞 embedding 成一個(gè)四維的連續(xù)稠密向量;也可以將圖中的離散節(jié)點(diǎn) embedding 成指定維度的連續(xù)稠密向量。
Embedding 作為深度學(xué)習(xí)的熱門研究方向,經(jīng)歷了從序列樣本、理圖樣本、再到異構(gòu)的多特征樣本的發(fā)展過程。此外,由于 embedding 技術(shù)本身具有較強(qiáng)的綜合信息表示能力、較低的上線部署門檻,進(jìn)一步加速了其在工業(yè)上的落地。
Embedding 對(duì)于推薦系統(tǒng)中深度學(xué)習(xí)方法的主要應(yīng)用可以簡(jiǎn)單總結(jié)如下:
作為 Embedding 層嵌入到深度模型中,實(shí)現(xiàn)將高維稀疏特征到低維稠密特征的轉(zhuǎn)換(如 Wide&Deep、DeepFM 等模型);
作為預(yù)訓(xùn)練的 Embedding 特征向量,與其他特征向量拼接后,一同作為深度學(xué)習(xí)模型輸入進(jìn)行訓(xùn)練(如 FNN);
在召回層中,通過計(jì)算用戶和物品的 Embedding 向量相似度,作為召回策略(比 Youtube 推薦模型等);
實(shí)時(shí)計(jì)算用戶和物品的 Embedding 向量,并將其作為實(shí)時(shí)特征輸入到深度學(xué)習(xí)模型中(比 Airbnb 的 embedding 應(yīng)用)。
對(duì)于推薦場(chǎng)景中,什么數(shù)據(jù)可以采用 Embedding 來構(gòu)造特征呢?下面簡(jiǎn)單列了下我在做微信游戲中心場(chǎng)景游戲和內(nèi)容推薦時(shí)主要采用 embedding 技術(shù)來處理的數(shù)據(jù)(本文只簡(jiǎn)單列一下主要的點(diǎn),后續(xù)會(huì)詳細(xì)文章來具體講如何處理以及其帶來的效果)。
User 數(shù)據(jù)(用戶的基礎(chǔ)屬性數(shù)據(jù),如性別、年齡、關(guān)系鏈、興趣偏好等)
對(duì)于用戶興趣偏好,一般簡(jiǎn)單地采用文本 embedding 方法來得到各標(biāo)簽的 embedding 向量,然后根據(jù)用戶對(duì)個(gè)標(biāo)簽的偏好程度做向量加權(quán);
對(duì)于關(guān)系鏈數(shù)據(jù)(如同玩好友、游戲中心相互關(guān)注等),構(gòu)造用戶關(guān)系圖,然后 ?采用基于圖的 embedding 方法來得到用戶的 embedding 向量;
Item 數(shù)據(jù)(Item 基本信息數(shù)據(jù),如標(biāo)題、作者、游戲簡(jiǎn)介、標(biāo)簽等)
對(duì)于文本、簡(jiǎn)介和標(biāo)簽等可以采用基于文本的 embedding 方法來在已有語料上預(yù)訓(xùn)練模型,然后得到對(duì)應(yīng)的 embedding 向量(如 word2vec 或者 BERT);
此外對(duì)于有明確關(guān)系的(如 item->文本->標(biāo)簽 or 關(guān)鍵詞)可以采用對(duì)關(guān)鍵詞/標(biāo)簽的向量均值來表示 item 的文本向量(這里安利一下 FaceBook 開源的StarSpace);
User 行為數(shù)據(jù)(用戶在場(chǎng)景中的行為數(shù)據(jù),如點(diǎn)擊、互動(dòng)、下載等)
針對(duì)用戶對(duì) Item 的操作(如點(diǎn)擊、互動(dòng)、下載)構(gòu)造用戶->item+Item 標(biāo)簽體系,構(gòu)造用戶-item-tag 的異構(gòu)網(wǎng)絡(luò),然后可以采用 Metapath2vec 來得到各節(jié)點(diǎn)的 embedding 向量;
通過記錄用戶在整個(gè)場(chǎng)景訪問 item,構(gòu)造 Item-Item 關(guān)系圖,然后采用 DeepWalk 算法得到 item 的向量,用來挖掘 Item 間的關(guān)系特征;
額外數(shù)據(jù)(外部擴(kuò)充數(shù)據(jù),如用戶游戲行為、用戶微信其他場(chǎng)景活躍等)
標(biāo)簽型(主要是用戶在各場(chǎng)景的興趣偏好):
關(guān)系鏈型(如游戲中心好友、游戲內(nèi)好友、開黑好友)可以采用用戶關(guān)系構(gòu)造用戶關(guān)系圖,采用 Graph embedding 方法(如 GraphSAGE)來表示用戶抽象特征
當(dāng)然,這些處理方法只是我個(gè)人這一年多的經(jīng)驗(yàn),可能有些地方用的并不是很合理,歡迎大家一起交流。
下面開始本文正文“介紹現(xiàn)在主流的 Embedding 技術(shù)”,主要分三大塊:
經(jīng)典的矩陣分解方法:這里主要是介紹 SVD 方法
基于內(nèi)容的 embedding 方法:這部分主要涉及到 NLP 相關(guān)的文本 embedidng 方法,包括靜態(tài)向量 embedding(如 word2vec、GloVe 和 FastText)和動(dòng)態(tài)向量 embedding(如 ELMo、GPT 和 BERT)
基于 Graph 的 embedding 方法:這部分主要是介紹圖數(shù)據(jù)的 embedding 方法,包括淺層圖模型(如 DeepWalk、Node2vec 和 Metapath2vec)和深度圖模型(如基于譜的 GCN 和基于空間的 GraphSAGE)
二、經(jīng)典矩陣分解法
1、奇異值分解
SVD(Singular value decomposition,奇異值分解)是一種矩陣分解的方法,任何矩陣,都可以通過SVD的方法分解成幾個(gè)矩陣相乘的形式。
其中和是正交矩陣,是特征值矩陣。
對(duì)于機(jī)器學(xué)習(xí),SVD一個(gè)主要優(yōu)點(diǎn)是對(duì)矩陣降維,對(duì)于高維矩陣可以通過SVD表示成三個(gè)維度相對(duì)較低的矩陣、和。
在推薦系統(tǒng)中,可以將用戶行為構(gòu)造成User-Item的評(píng)分矩陣 ,其中m和n分別表示平臺(tái)的User數(shù)和Item數(shù)。 表示用戶對(duì)物品的評(píng)分(也可以是點(diǎn)擊、互動(dòng)、播放、下載等行為),用于刻畫User對(duì)Item的有效操作。采用SVD算法將分解成 、和。
雖然,從形式上看SVD分解簡(jiǎn)單直接,但由于日常User-Item的評(píng)分矩陣事高度稀疏的,而SVD分解要求矩陣是稠密的,通常采用對(duì)評(píng)分矩陣中的缺失值進(jìn)行補(bǔ)全(比如補(bǔ)0、全局平均值、用戶物品平均值補(bǔ)全等)得到稠密矩陣。再用SVD分解并降維。但實(shí)際過程中,元素缺失值是非常多的,導(dǎo)致了傳統(tǒng)SVD不論通過以上哪種方法進(jìn)行補(bǔ)全都是很難在實(shí)際應(yīng)用中起效果。此外傳統(tǒng)SVD在實(shí)際應(yīng)用中還有一個(gè)嚴(yán)重的問題——計(jì)算復(fù)雜度(時(shí)間復(fù)雜度是,空間復(fù)雜度是)。當(dāng)用戶數(shù)和物品總量過大(如千上萬級(jí)),對(duì)矩陣做SVD分解是非常耗時(shí)。這是得傳統(tǒng)的SVD分解方法很難在實(shí)際業(yè)務(wù)中應(yīng)用起來。
研究者們做了大量工作來解決傳統(tǒng)SVD的稀疏數(shù)據(jù)不適用和高計(jì)算復(fù)雜度的問題,其中主要的有FunkSVD、BiasSVD和SVD++算法。
2、隱語義模型(Latent Factor Model)
LFM主要代表是2006年由Simon Funk在博客上公開的算法FunkSVD,將評(píng)分矩陣分解成兩個(gè)低維矩陣(P和Q)相乘,可直接通過訓(xùn)練集中的觀察值利用最小化均方根學(xué)習(xí)P,Q矩陣。
用戶對(duì)物品的評(píng)分可以表示為,其中和分別是矩陣和對(duì)應(yīng)第和的列向量,表示用戶和物品的隱向量。FunkSVD核心思想是將在原始SVD上加了線性回歸,使得我們可以用均方差作為損失函數(shù)來尋找P和Q的最佳值:
上式可以通過梯度下降法來求解,損失函數(shù)求偏導(dǎo)為:
參數(shù)更新如下:
在Funk-SVD獲得巨大成功之后,研究人對(duì)其進(jìn)行進(jìn)一步優(yōu)化工作,提出了一系列優(yōu)化算法。其中BiasSVD就是在原始FunkSVD模型中添加三項(xiàng)偏移項(xiàng)優(yōu)化得到的:
物品偏移量 ():表示了物品接受的評(píng)分和用戶沒有多大關(guān)系,物品本身質(zhì)量決定了的偏移;
用戶偏移量 ():有些用戶喜歡打高分,有些用戶喜歡打低分,用戶決定的偏移;
全局偏移量 ():根據(jù)全局打分設(shè)置的偏移,可能和整體用戶群和物品質(zhì)量有相對(duì)應(yīng)的關(guān)系。
BiasSVD的預(yù)測(cè)結(jié)果為:
損失函數(shù)為:
SVD++算法是在BiasSVD的基礎(chǔ)上引入隱式反饋(如用戶歷史瀏覽、用戶歷史評(píng)分、電影歷史瀏覽、電影歷史評(píng)分等)作為新的參數(shù),其預(yù)測(cè)結(jié)果為:
其優(yōu)化如下:
雖然矩基于矩陣分解的方法原理簡(jiǎn)單,容易編程實(shí)現(xiàn),具有較好的擴(kuò)展性,在小規(guī)模數(shù)據(jù)上也有不錯(cuò)的表現(xiàn)。但對(duì)于如今互聯(lián)網(wǎng)推薦場(chǎng)景的數(shù)據(jù)量級(jí),矩陣分解方法很難與深度學(xué)習(xí)算法一戰(zhàn)。
三、基于內(nèi)容的Embedding方法
對(duì)于基于內(nèi)容的embedding方法,主要是針對(duì)文本類型數(shù)據(jù)(對(duì)圖像、音視頻等多媒體數(shù)據(jù)embedding方法,感興趣的可以自行查閱相關(guān)技術(shù))。下圖是從word2vec到BERT的發(fā)展歷史(最新已經(jīng)發(fā)展到了GPT3了,模型更新太快,還沒來得及用,就已經(jīng)過時(shí)了),從圖中可以看出自從2013年word2vec橫空出世后,文本embedding方法不斷被優(yōu)化。從最開始的靜態(tài)向量方法(如word2vec、GloVe和FastText)發(fā)展為能根據(jù)上下文語義實(shí)現(xiàn)動(dòng)態(tài)向量化的方法如(ELMo、GPT和BERT)。下面主要從分靜態(tài)向量和動(dòng)態(tài)向量?jī)蓚€(gè)方面來介紹相應(yīng)的方法。
1、靜態(tài)向量
所謂靜態(tài)向量指的是一旦訓(xùn)練完成后,對(duì)應(yīng)的向量便不再發(fā)生改變,比如一個(gè)詞經(jīng)過向量化之后,在后續(xù)的場(chǎng)景中該詞對(duì)應(yīng)的向量不會(huì)發(fā)生改變。這些方法主要包括Word2Vec、GloVe和FastText。
A) Word2vec
Word2vec是2013年Google發(fā)布的無監(jiān)督詞向embedding模型。該模型采用CBOW或Skip-gram模型來訓(xùn)練詞向量,將詞從one-hot編碼的向量映射成d維稠密向量:
其中CBOW是采用詞的上下文來預(yù)測(cè)該詞,而Skip-gram則是采用詞來預(yù)測(cè)其上下文。兩者網(wǎng)絡(luò)結(jié)構(gòu)相似,通常所得到的詞向量效果相差不大;但對(duì)于大型語料,Skip-gram要優(yōu)于CBOW。
B) GloVe
GloVe(Global Vectors for Word Representation)是2014年由斯坦福大學(xué)提出的無監(jiān)督詞向量表示學(xué)習(xí)方法,是一個(gè)基于全局詞頻統(tǒng)計(jì)(count-based & overall statistics)的詞表征工具。由它得到的詞向量捕捉到單詞之間一些語義特性,比如相似性、類比性等。GloVe主要分為三步:
基于語料構(gòu)建詞的共現(xiàn)矩陣
表示詞和詞在特定大小的窗口內(nèi)共同出現(xiàn)的次數(shù)。如對(duì)于語料:I play cricket, I love cricket and I love football,窗口為2的的共現(xiàn)矩陣可以表示為:
構(gòu)造詞向量和貢獻(xiàn)矩陣之間的關(guān)系:
其中,和是要求解的詞向量,和是兩個(gè)詞向量的偏差項(xiàng)。
最終 GloVe 的 loss function 如下:
其中,表示語料庫(kù)中詞個(gè)數(shù)。在語料庫(kù)中,多個(gè)單詞會(huì)一起出現(xiàn)多次,表示權(quán)重函數(shù)主要有以下原則:
非遞減函數(shù),用于確保多次一起出現(xiàn)的單詞的權(quán)重要大于很少在一起出現(xiàn)的單詞的權(quán)重
權(quán)重不能過大,達(dá)一定程度之后應(yīng)該不再增加
,確保沒有一起出現(xiàn)過的單詞不參與loss的計(jì)算
在論文中,作者給出了如下分段函數(shù):
通過實(shí)驗(yàn),作者得到了效果相對(duì)較好的 ,,此時(shí)對(duì)應(yīng) 曲線如下圖:
CBOW和Skip-gram是local context window的方法,缺乏了整體的詞和詞的關(guān)系,負(fù)樣本采樣會(huì)缺失詞的關(guān)系信息。此外,直接訓(xùn)練Skip-gram類型的算法,很容造成高曝光詞匯得到過多的權(quán)重。Global Vector融合了矩陣分解Latent Semantic Analysis (LSA)的全局統(tǒng)計(jì)信息和local context window優(yōu)勢(shì)。融入全局的先驗(yàn)統(tǒng)計(jì)信息,可以加快模型的訓(xùn)練速度,又可以控制詞的相對(duì)權(quán)重。
C) FastText
FastText是FaceBook在2017年提出的文本分類模型(有監(jiān)督學(xué)習(xí))。詞向量則是FastText的一個(gè)副產(chǎn)物。FastText模型結(jié)果如下圖所示:
其中表示一個(gè)文本中的n-gram向量,每個(gè)特征是詞向量的平均值。從模型結(jié)構(gòu)可以看出,FastText與CBOW模型的結(jié)構(gòu)相似,不同在于FastText預(yù)測(cè)的是全部的n-gram去預(yù)測(cè)指定類別,而CBOW預(yù)測(cè)的是中間詞。
2、動(dòng)態(tài)向量
由于靜態(tài)向量表示中每個(gè)詞被表示成一個(gè)固定的向量,無法有效解決一詞多義的問題。在動(dòng)態(tài)向量表示中,模型不再是向量對(duì)應(yīng)關(guān)系,而是一個(gè)訓(xùn)練好的模型。在使用時(shí),將文本輸入模型中,模型根據(jù)上下文來推斷每個(gè)詞對(duì)應(yīng)的意思,從而得到該文本的詞向量。在對(duì)詞進(jìn)行向量表示時(shí),能結(jié)合當(dāng)前語境對(duì)多義詞進(jìn)行理解,實(shí)現(xiàn)不同上下文,其向量會(huì)有所改變。下面介紹三種主流的動(dòng)態(tài)向量表示模型:ELMo、GPT和BERT。
A) ELMo
ELMo(Embeddings from Language Models)是2018年3月發(fā)表,獲得了NAACL18的Best Paper。ELMo的模型結(jié)構(gòu)如下圖所示:
由于當(dāng)時(shí)并沒有提出現(xiàn)在火熱的Transformer結(jié)構(gòu),ELMo采用的是多層雙向LSTM來搭建模型。在給定一個(gè)包含N個(gè)token的文本(t1, t2, ..., tN):
前向語言模型用于計(jì)算給定句子t1,t2,...,tk-1,目標(biāo)為tk的概率:
后向語言模型與前向相反,對(duì)于給定tk+1,tk+2,...,tN,目標(biāo)為tk的概率:
最終目標(biāo)函數(shù)為:
其中,是輸入token的embedding,表示softmax層的參數(shù),和分別是雙向LSTM的參數(shù)。
對(duì)于每個(gè)輸入的token,一個(gè)L層的雙向LSTM輸出有2L+1個(gè)向量:
其中,表示第層中底個(gè)節(jié)點(diǎn)的輸出(和分別表示前向和反向),表示token layer,表示雙向LSTM layer。
在下游的任務(wù)中, ELMo把所有層的R壓縮在一起形成一個(gè)向量:
具體步驟如下:
預(yù)訓(xùn)練biLM模型,通常由兩層bi-LSTM組成,之間用residual connection連接起來。
在任務(wù)語料上fine tuning上一步得到的biLM模型,這里可以看做是biLM的domain transfer。
利用ELMo提取word embedding,將word embedding作為輸入來對(duì)任務(wù)進(jìn)行訓(xùn)練。
B) GPT
GPT-1(Generative Pre-Training)是OpenAI在2018年提出的,采用pre-training和fine-tuning的下游統(tǒng)一框架,將預(yù)訓(xùn)練和finetune的結(jié)構(gòu)進(jìn)行了統(tǒng)一,解決了之前兩者分離的使用的不確定性(例如ELMo)。此外,GPT使用了Transformer結(jié)構(gòu)克服了LSTM不能捕獲遠(yuǎn)距離信息的缺點(diǎn)。GPT主要分為兩個(gè)階段:pre-training和fine-tuning
Pre-training(無監(jiān)督學(xué)習(xí))
預(yù)訓(xùn)練模型采用前向Transformer結(jié)構(gòu)如下圖所示:
GPT采用auto regressive language model對(duì)大量文本進(jìn)行無監(jiān)督學(xué)習(xí),目標(biāo)函數(shù)就是語言模型最大化語句序列出現(xiàn)的概率,其損失函數(shù)為:
其中,k為上文的窗口,表示參數(shù)為的神經(jīng)網(wǎng)絡(luò)模型。
表示左側(cè)窗口的上下文詞向量,表示Transformer的層數(shù),表示詞向量矩陣,表示position embedding矩陣(作者對(duì)position embedding矩陣進(jìn)行隨機(jī)初始化并訓(xùn)練學(xué)習(xí))。
Fine-tuning(有監(jiān)督學(xué)習(xí))
采用無監(jiān)督學(xué)習(xí)預(yù)訓(xùn)練好模型后后,可以把模型模型遷移到新的任務(wù)中,并根據(jù)新任務(wù)來調(diào)整模型的參數(shù)。
假設(shè)數(shù)據(jù)集的一個(gè)樣本為,則將輸入到預(yù)訓(xùn)練好的模型中,得到文本的embedding向量,最后采用線性層和softmax來預(yù)測(cè)標(biāo)簽,輸出和損失分別為:
其中,為下游任務(wù)的參數(shù)。
為避免在Fine-Tuning時(shí),模型陷入過擬合和加速收斂,添加了輔助訓(xùn)練目標(biāo)的方法,就是在使用最后一個(gè)詞的預(yù)測(cè)結(jié)果進(jìn)行監(jiān)督學(xué)習(xí)的同時(shí),前面的詞繼續(xù)上一步的無監(jiān)督訓(xùn)練。最終的損失函數(shù)為:
其中,用于控制無監(jiān)督目標(biāo)權(quán)重,一般取。
總體來說,Fine-tuning階段需要的額外參數(shù)是和以隔符token的embedding。其他任務(wù)遷移的輸入格式可參考下張圖:
C) BERT
BERT (Bidirectional Encoder Representations from Transformers)是Goole在2018年10月發(fā)表的,當(dāng)時(shí)刷新了11項(xiàng)NLP任務(wù),從此成為NLP領(lǐng)域“最靚的仔”。BERT、ELMo和GPT模型結(jié)構(gòu)對(duì)比圖如下圖所示:
相較于ELMo,BERT采用句子級(jí)負(fù)采樣來得到句子表示/句對(duì)關(guān)系,使用Transformer模型代替LSTM,提升模型表達(dá)能力,Masked LM解決“自己看到自己”的問題。相較于GPT,BERT采用了雙向的Transformer,使得模型能夠挖掘左右兩側(cè)的語境。此外,BERT進(jìn)一步增強(qiáng)了詞向的型泛化能力,充分描述字符級(jí)、詞級(jí)、句子級(jí)甚至句間的關(guān)系特征。
BERT的輸入的編碼向量(長(zhǎng)度為512)是3種Embedding特征element-wise和,如下圖所示:
這三種Embedding特征分別是:
Token Embedding (WordPiece):將單詞劃分成一組有限的公共詞單元,能在單詞的有效性和字符的靈活性之間取得一個(gè)折中的平衡。如圖中的“playing”被拆分成了“play”和“ing”;
Segment Embedding:用于區(qū)分兩個(gè)句子,如B是否是A的下文(對(duì)話場(chǎng)景,問答場(chǎng)景等)。對(duì)于句子對(duì),第一個(gè)句子的特征值是0,第二個(gè)句子的特征值是1;
Position Embedding:將單詞的位置信息編碼成特征向量,Position embedding能有效將單詞的位置關(guān)系引入到模型中,提升模型對(duì)句子理解能力;
最后,[CLS]表示該特征用于分類模型,對(duì)非分類模型,該符合可以省去。[SEP]表示分句符號(hào),用于斷開輸入語料中的兩個(gè)句子。
在模型預(yù)訓(xùn)練階段,BERT采用兩個(gè)自監(jiān)督任務(wù)采用來實(shí)現(xiàn)模型的多任務(wù)訓(xùn)練:1)Masked Language Model;2)Next Sentence Prediction
Masked Language Model (MLM)
MLM的核心思想早在1953年就被Wilson Taylor[Wilson]提出,是指在訓(xùn)練時(shí)隨機(jī)從輸入語料中mask掉一些單,然后通過該詞上下文來預(yù)測(cè)它(非常像讓模型來做完形填空),如下圖所以:
在論文實(shí)驗(yàn)中,只有15%的Token會(huì)被隨機(jī)Mask掉。在訓(xùn)練模型時(shí),一個(gè)句子會(huì)被多次輸入模型中用于參數(shù)調(diào)優(yōu),對(duì)于某個(gè)要被Mask的Token并不是每次都一定會(huì)被Mask掉:
80%概率直接替換為[MASK],如my dog is hairy -> my dog is [mask]
10%概率替換為其他任意Token,如my dog is hairy -> my dog is apple
10%概率保留為原始Token,如my dog is hairy -> my dog is hairy
這樣做的好處主要有:
如果某個(gè)Token100%被mask掉,在fine-tuning的時(shí)候會(huì)這些被mask掉的Token就成為OOV,反而影響模型的泛化性;
加入隨機(jī)Token是因?yàn)門ransformer要保持對(duì)每個(gè)輸入Token的分布式表征,否則模型就會(huì)記住這個(gè)[MASK]=“hairy”
雖然加入隨機(jī)單詞帶來的負(fù)面影響,但由于單詞被隨機(jī)替換掉的概率只有15%*10% =1.5%,負(fù)面影響可以忽略不計(jì)
Next Sentence Prediction (NSP)
許多重要的下游任務(wù)譬如QA、NLI需要語言模型理解兩個(gè)句子之間的關(guān)系,而傳統(tǒng)的語言模型在訓(xùn)練的過程沒有考慮句對(duì)關(guān)系的學(xué)習(xí)。BERT采用NSP任務(wù)來增強(qiáng)模型對(duì)句子關(guān)系的理解,即給出兩個(gè)句子A、B,模型預(yù)測(cè)B是否是A的下一句,如下圖所示:
訓(xùn)練數(shù)據(jù)集構(gòu)造上,從平行語料中隨機(jī)抽取連續(xù)的兩句話:50%保留抽取的兩句話(label=IsNext);50%的第二句話隨機(jī)從語料中抽取(label=NotNext)
Fine-tuning
在https://github.com/google-research/bert.git中有N多種預(yù)訓(xùn)練模型,大家可以根據(jù)需要下載對(duì)應(yīng)的模型,下面主要給出兩個(gè)常用的模型:
BERT-Base_L-12_H-768_A-12,總參數(shù)為110M
BERT-Large_L-24_H-1024_A-16,總參數(shù)為340M
其中,L表示網(wǎng)絡(luò)層數(shù)(Transformer blocks數(shù)量),A表示Multi-Head Attention中self-Attention數(shù),filter的尺寸是4H
BERT提供了4中不同的下游任務(wù)的微調(diào)方案,大家根據(jù)自己的語料在預(yù)訓(xùn)練好的模型上采用這些任務(wù)來微調(diào)模型:
句對(duì)關(guān)系判斷:第一個(gè)起始符號(hào)[CLS]經(jīng)過編碼后,增加Softmax層,即可用于分類;
單句分類任務(wù):實(shí)現(xiàn)同“句對(duì)關(guān)系判斷”;
問答類任務(wù):問答系統(tǒng)輸入文本序列的question和包含answer的段落,并在序列中標(biāo)記answer,讓BERT模型學(xué)習(xí)標(biāo)記answer開始和結(jié)束的向量來訓(xùn)練模型;
序列標(biāo)準(zhǔn)任務(wù):識(shí)別系統(tǒng)輸入標(biāo)記好實(shí)體類別(人、組織、位置、其他無名實(shí)體)文本序列進(jìn)行微調(diào)訓(xùn)練,識(shí)別實(shí)體類別時(shí),將序列的每個(gè)Token向量送到預(yù)測(cè)NER標(biāo)簽的分類層進(jìn)行識(shí)別。
BERT是截止至2018年10月的最新的的SOTA模型,通過預(yù)訓(xùn)練和精調(diào)可以解決11項(xiàng)NLP的任務(wù)。采用Transformer作為算法的主框架,能更好地捕捉更長(zhǎng)距離的依賴和語句中的雙向關(guān)系。與之前的預(yù)訓(xùn)練模型相比,BERT能捕捉到正意義上的bidirectional context信息。采用MLP+NSP多任務(wù)方法使模型具有更強(qiáng)的泛化能力。最后,強(qiáng)大的計(jì)算資源+更大的數(shù)據(jù)造就了更強(qiáng)更復(fù)雜的模型。
四、基于Graph的Embedding方法
基于內(nèi)容的Embedding方法(如word2vec、BERT等)都是針對(duì)“序列”樣本(如句子、用戶行為序列)設(shè)計(jì)的,但在互聯(lián)網(wǎng)場(chǎng)景下,數(shù)據(jù)對(duì)象之間更多呈現(xiàn)出圖結(jié)構(gòu),如1)有用戶行為數(shù)據(jù)生成的物品關(guān)系圖;2)有屬性和實(shí)體組成的只是圖譜。
對(duì)于圖結(jié)構(gòu)數(shù)據(jù),基于內(nèi)容的embedding方法不太好直接處理了。因此,為了解決土結(jié)構(gòu)數(shù)據(jù)的問題,Graph Embedding開始得到大家的重視,并在推薦系統(tǒng)領(lǐng)域流行起來。
Graph Embedding是一種將圖結(jié)構(gòu)數(shù)據(jù)映射為低微稠密向量的過程,從而捕捉到圖的拓?fù)浣Y(jié)構(gòu)、頂點(diǎn)與頂點(diǎn)的關(guān)系、以及其他的信息。目前,Graph Embedding方法大致可以分為兩大類:1)淺層圖模型;2)深度圖模型。
1、淺層圖模型
淺層圖模型主要是采用random-walk + skip-gram模式的embedding方法。主要是通過在圖中采用隨機(jī)游走策略來生成多條節(jié)點(diǎn)列表,然后將每個(gè)列表相當(dāng)于含有多個(gè)單詞(圖中的節(jié)點(diǎn))的句子,再用skip-gram模型來訓(xùn)練每個(gè)節(jié)點(diǎn)的向量。這些方法主要包括DeepWalk、Node2vec、Metapath2vec等。
A) DeepWalk
DeepWalk是第一個(gè)將NLP中的思想用在Graph Embedding上的算法,輸入是一張圖,輸出是網(wǎng)絡(luò)中節(jié)點(diǎn)的向量表示,使得圖中兩個(gè)點(diǎn)共有的鄰居節(jié)點(diǎn)(或者高階鄰近點(diǎn))越多,則對(duì)應(yīng)的兩個(gè)向量之間的距離就越近。
DeepWalk得本質(zhì)可以認(rèn)為是:random walk + skip-gram。在DeepWalk算法中,需要形式化定義的是random walk的跳轉(zhuǎn)概率,即到達(dá)節(jié)點(diǎn)后,下一步遍歷其鄰居節(jié)點(diǎn)的概率:
其中,表示及節(jié)點(diǎn)的所有出邊連接的節(jié)點(diǎn)集合,表示由節(jié)點(diǎn)連接至節(jié)點(diǎn)的邊的權(quán)重。由此可見,原始DeepWalk算法的跳轉(zhuǎn)概率是跳轉(zhuǎn)邊的權(quán)重占所有相關(guān)出邊權(quán)重之和的比例。算法具體步驟如下圖所示:
DeepWalk算法原理簡(jiǎn)單,在網(wǎng)絡(luò)標(biāo)注頂點(diǎn)很少的情況也能得到比較好的效果,且具有較好的可擴(kuò)展性,能夠適應(yīng)網(wǎng)絡(luò)的變化。但由于DeepWalk采用的游走策略過于簡(jiǎn)單(BFS),無法有效表征圖的節(jié)點(diǎn)的結(jié)構(gòu)信息。
B) Node2vec
為了克服DeepWalk模型的random walk策略相對(duì)簡(jiǎn)單的問題,斯坦福大學(xué)的研究人員在2016年提出了Node2vec模型。該模型通過調(diào)整random walk權(quán)重的方法使得節(jié)點(diǎn)的embedding向量更傾向于體現(xiàn)網(wǎng)絡(luò)的同質(zhì)性或結(jié)構(gòu)性。
同質(zhì)性:指得是距離相近的節(jié)點(diǎn)的embedding向量應(yīng)近似,如下圖中,與節(jié)點(diǎn)相連的節(jié)點(diǎn)、、和的embedding向量應(yīng)相似。為了使embedding向量能夠表達(dá)網(wǎng)絡(luò)的同質(zhì)性,需要讓隨機(jī)游走更傾向于DFS,因?yàn)镈FS更有可能通過多次跳轉(zhuǎn),到達(dá)遠(yuǎn)方的節(jié)點(diǎn)上,使游走序列集中在一個(gè)較大的集合內(nèi)部,使得在一個(gè)集合內(nèi)部的節(jié)點(diǎn)具有更高的相似性,從而表達(dá)圖的同質(zhì)性。
結(jié)構(gòu)性:結(jié)構(gòu)相似的節(jié)點(diǎn)的embedding向量應(yīng)近似,如下圖中,與節(jié)點(diǎn)結(jié)構(gòu)相似的節(jié)點(diǎn)的embedding向量應(yīng)相似。為了表達(dá)結(jié)構(gòu)性,需要隨機(jī)游走更傾向于BFS,因?yàn)锽FS會(huì)更多的在當(dāng)前節(jié)點(diǎn)的鄰域中游走,相當(dāng)于對(duì)當(dāng)前節(jié)點(diǎn)的網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行掃描,從而使得embedding向量能刻畫節(jié)點(diǎn)鄰域的結(jié)構(gòu)信息。
在Node2vec中,同樣是通過控制節(jié)點(diǎn)間的跳轉(zhuǎn)概率來控制BFS和DFS傾向性的。如下圖所示,當(dāng)算法先由節(jié)點(diǎn)跳轉(zhuǎn)到節(jié)點(diǎn),準(zhǔn)備從節(jié)點(diǎn)跳轉(zhuǎn)至下一個(gè)節(jié)點(diǎn)時(shí)(即 ),各節(jié)點(diǎn)概率定義如下:
其中,是節(jié)點(diǎn)和邊的權(quán)重,定義如下:
這里表示節(jié)點(diǎn)與的最短路徑,如與的最短路徑為1(即),則。作者引入了兩個(gè)參數(shù)和來控制游走算法的BFS和DFS傾向性:
return parameter p:值越小,隨機(jī)游走回到節(jié)點(diǎn)的概率越大,最終算法更注重表達(dá)網(wǎng)絡(luò)的結(jié)構(gòu)性
In-out parameter q:值越小,隨機(jī)游走到遠(yuǎn)方節(jié)點(diǎn)的概率越大,算法更注重表達(dá)網(wǎng)絡(luò)的同質(zhì)性
當(dāng)時(shí),Node2vec退化成了DeepWalk算法。
下圖是作者通過調(diào)整p和q,使embedding向量更傾向于表達(dá)同質(zhì)性和結(jié)構(gòu)性的可視化結(jié)果:
從圖中可以看出,同質(zhì)性傾向使相鄰的節(jié)點(diǎn)相似性更高,而結(jié)構(gòu)性相似使得結(jié)構(gòu)相似的節(jié)點(diǎn)具有更高的相似性。Node2vec的算法步驟如下:
相較于DeepWalk,Node2vec通過設(shè)計(jì)biased-random walk策略,能對(duì)圖中節(jié)點(diǎn)的結(jié)構(gòu)相似性和同質(zhì)性進(jìn)行權(quán)衡,使模型更加靈活。但與DeepWalk一樣,Node2vec無法指定游走路徑,且僅適用于解決只包含一種類型節(jié)點(diǎn)的同構(gòu)網(wǎng)絡(luò),無法有效表示包含多種類型節(jié)點(diǎn)和邊類型的復(fù)雜網(wǎng)絡(luò)。
C) Metapath2vec
為了解決Node2vec和DeepWalk無法指定游走路徑、處理異構(gòu)網(wǎng)絡(luò)的問題,Yuxiao Dong等人在2017年提出了Metapath2vec方法,用于對(duì)異構(gòu)信息網(wǎng)絡(luò)(Heterogeneous Information Network, HIN)的節(jié)點(diǎn)進(jìn)行embedding。
Metapath2vec總體思想跟Node2vec和DeepWalk相似,主要是在隨機(jī)游走上使用基于meta-path的random walk來構(gòu)建節(jié)點(diǎn)序列,然后用Skip-gram模型來完成頂點(diǎn)的Embedding。
作者首先給出了異構(gòu)網(wǎng)絡(luò)(Heterogeneous Network)的定義:
即,存在多種類型節(jié)點(diǎn)或邊的網(wǎng)絡(luò)為異構(gòu)網(wǎng)絡(luò)。
雖然節(jié)點(diǎn)類型不同,但是不同類型的節(jié)點(diǎn)會(huì)映射到同一個(gè)特征空間。由于異構(gòu)性的存在,傳統(tǒng)的基于同構(gòu)網(wǎng)絡(luò)的節(jié)點(diǎn)向量化方法很難有效地直接應(yīng)用在異構(gòu)網(wǎng)絡(luò)上。
為了解決這個(gè)問題,作者提出了meta-path-based random walk:通過不同meta-path scheme來捕獲不同類型節(jié)點(diǎn)之間語義和結(jié)構(gòu)關(guān)系。meta-path scheme定義如下:
其中表示不同類型節(jié)點(diǎn)和之間的關(guān)系。節(jié)點(diǎn)的跳轉(zhuǎn)概率為:
其中,,表示節(jié)點(diǎn)的類型的鄰居節(jié)點(diǎn)集合。me ta-path的定義一般是對(duì)稱的,比如user-item-tag-item-user。最后采用skip-gram來訓(xùn)練節(jié)點(diǎn)的embedding向量:
其中:表示節(jié)點(diǎn)的上下文中,類型為的節(jié)點(diǎn),
通過分析metapath2vec目標(biāo)函數(shù)可以發(fā)現(xiàn),該算法僅在游走是考慮了節(jié)點(diǎn)的異構(gòu)行,但在skip-gram訓(xùn)練時(shí)卻忽略了節(jié)點(diǎn)的類型。為此,作者進(jìn)一步提出了metapath2vec++算法,在skip-gram模型訓(xùn)練時(shí)將同類型的節(jié)點(diǎn)進(jìn)行softmax歸一化:
metaptah2vec和metapath2vec++的skip-gram模型結(jié)構(gòu)如下圖所示:
metapath2vec++具體步驟如下圖所示:
2、深度圖模型
上一節(jié)講的淺層圖模型方法在世紀(jì)應(yīng)用中是先根據(jù)圖的結(jié)構(gòu)學(xué)習(xí)每個(gè)節(jié)點(diǎn)的embedding向量,然后再講得到的embedding向量應(yīng)用于下游任務(wù)重。然而,embedding向量和下游任務(wù)是分開學(xué)習(xí)的,也就是說學(xué)得的embedding向量針對(duì)下游任務(wù)來說不一定是最優(yōu)的。為了解決這個(gè)embedding向量與下游任務(wù)的gap,研究人員嘗試講深度圖模型是指將圖與深度模型結(jié)合,實(shí)現(xiàn)end-to-end訓(xùn)練模型,從而在圖中提取拓?fù)鋱D的空間特征。主要分為四大類:Graph Convolution Networks (GCN),Graph Attention Networks (GAT),Graph AutoEncoder (GAE)和Graph Generative Networks (GGN)。
本節(jié)主要簡(jiǎn)單介紹GCN中的兩個(gè)經(jīng)典算法:1)基于譜的GCN (GCN);2)基于空間的GCN (GraphSAGE)。
其他方法有興趣的同學(xué)可以參考。。。
提取拓?fù)鋱D的空間特征的方法主要分為兩大類:1)基于空間域或頂點(diǎn)域spatial domain(vertex domain)的;2)基于頻域或譜域spectral domain的。通俗點(diǎn)解釋,空域可以類比到直接在圖片的像素點(diǎn)上進(jìn)行卷積,而頻域可以類比到對(duì)圖片進(jìn)行傅里葉變換后,再進(jìn)行卷積。
基于spatial domain:基于空域卷積的方法直接將卷積操作定義在每個(gè)結(jié)點(diǎn)的連接關(guān)系上,跟傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(luò)中的卷積更相似一些。主要有兩個(gè)問題:1)按照什么條件去找中心節(jié)點(diǎn)的鄰居,也就是如何確定receptive field;2)按照什么方式處理包含不同數(shù)目鄰居的特征。
基于spectral domain:借助卷積定理可以通過定義頻譜域上的內(nèi)積操作來得到空間域圖上的卷積操作。
A) GCN
圖神經(jīng)網(wǎng)絡(luò)的核心工作是對(duì)空間域(Spatial Domain)中節(jié)點(diǎn)的Embedding進(jìn)行卷積操作(即聚合鄰居Embedding信息),然而Graph和Image數(shù)據(jù)的差別在于節(jié)點(diǎn)鄰居個(gè)數(shù)、次序都是不定的,使得傳統(tǒng)用于圖像上的CNN模型中的卷積操作不能直接用在圖上,因此需要從頻譜域(Spectral Domain)上重新定義卷積操作再通過卷積定理轉(zhuǎn)換回空間域上。
譜圖卷積是直接對(duì)圖結(jié)構(gòu)數(shù)據(jù)及節(jié)點(diǎn)進(jìn)行卷機(jī)操作,其定信號(hào)與卷積核(為參數(shù)化的濾波器)在傅立葉域上的乘積為:
其中,是歸一化的拉普拉斯矩陣的特征向量的矩陣:,和分別表示度矩陣和圖的鄰接矩陣。由于上述卷積運(yùn)算的計(jì)算復(fù)雜度較高(相乘的計(jì)算復(fù)雜度為$O(N^2),以及圖的拉普拉斯分解計(jì)算量較大),使得傳統(tǒng)的普卷積運(yùn)算無法得到有效應(yīng)用。
為了緩解計(jì)算問題,Hammond在2011年的論文《Wavelets on graphs via spectral graph theory - HAL-Inria》中提出可以用切比雪夫多項(xiàng)式近似核卷積:
其中, ,表示的最大特征值。是切比雪夫多項(xiàng)式系數(shù)向量。通過使用切比雪夫多項(xiàng)式展開,卷積運(yùn)算可以通過遞歸近似:取多項(xiàng)式的前K項(xiàng)表示對(duì)k跳的領(lǐng)據(jù)及特征進(jìn)行卷機(jī)運(yùn)算。
Thomas等人在2017年對(duì)上式做了進(jìn)一步簡(jiǎn)化:限制每個(gè)卷積層僅處理一階鄰居特征,通過采用分層傳播規(guī)則疊加多層卷機(jī),從而實(shí)現(xiàn)對(duì)多階鄰居特征的傳播。通過限制卷機(jī)核的一階近似能緩解節(jié)點(diǎn)度分布非常寬的圖對(duì)局部鄰域結(jié)構(gòu)的過度擬合問題。如下圖所示,通過集聯(lián)多個(gè)卷積層,節(jié)點(diǎn)能聚合多個(gè)鄰居節(jié)點(diǎn)特征。
使用切比雪夫一階展開(K=1)的核卷積+非線性單元如下:
其中,表示第層卷積核的輸出,作為的數(shù)據(jù),為各節(jié)點(diǎn)的特征。是卷積核的一階近似,可以簡(jiǎn)單理解成鄰接節(jié)點(diǎn)特征的加權(quán)平均。為非線性激活函數(shù),為第層的卷積核參數(shù)(每個(gè)節(jié)點(diǎn)共享)。
Thomas等人在設(shè)計(jì)卷積核時(shí)做了兩個(gè)trick:
每個(gè)節(jié)點(diǎn)增加了selp-loop,使在卷積計(jì)算時(shí)能考慮當(dāng)前節(jié)點(diǎn)自身特征:
對(duì)進(jìn)行對(duì)稱歸一化:。避免了鄰接節(jié)點(diǎn)數(shù)越多,卷積后結(jié)果越大的情況。此外這個(gè)操作還能考慮鄰接節(jié)點(diǎn)度大小對(duì)卷積核的影響。
B) GraphSAGE
GraphSAGE(Graph SAmple and aggreGatE)是基于空間域方法,其思想與基于頻譜域方法相反,是直接在圖上定義卷積操作,對(duì)空間上相鄰的節(jié)點(diǎn)上進(jìn)行運(yùn)算。其計(jì)算流程主要分為三部:
對(duì)圖中每個(gè)節(jié)點(diǎn)領(lǐng)據(jù)節(jié)點(diǎn)進(jìn)行采樣
根據(jù)聚合函數(shù)聚合鄰居節(jié)點(diǎn)信息(特征)
得到圖中各節(jié)點(diǎn)的embedding向量,供下游任務(wù)使用
GraphSAGE生成Embedding向量過程如下:
其中K表示每個(gè)節(jié)點(diǎn)能夠聚合的鄰居節(jié)點(diǎn)的跳數(shù)(例如K=2時(shí),每個(gè)頂點(diǎn)可以最多根據(jù)其2跳鄰居節(jié)點(diǎn)的信息來表示自身的embedding向量)。算法直觀上是在每次迭代中,節(jié)點(diǎn)聚合鄰居信息。隨著不斷迭代,節(jié)點(diǎn)得到圖中來自越來越遠(yuǎn)的節(jié)點(diǎn)信息。
鄰居節(jié)點(diǎn)采樣:在每個(gè)epoch中,均勻地選取固定大小的鄰居數(shù)目,每次迭代選取不同的均勻樣本。
GraphSAGE的損失函數(shù)如下:
其中,和表示節(jié)點(diǎn)和的embedding向量,是固定長(zhǎng)度的鄰居覺點(diǎn),是sigmoid函數(shù),和分別表示負(fù)樣本分布和數(shù)目。
對(duì)于聚合函數(shù)的,由于在圖中節(jié)點(diǎn)的鄰居是無序的,聚合函數(shù)應(yīng)是對(duì)稱的(改變輸入節(jié)點(diǎn)的順序,函數(shù)的輸出結(jié)果不變),同時(shí)又具有較強(qiáng)的表示能力。主要有如下三大類的聚合函數(shù):
Mean aggretator:將目標(biāo)節(jié)點(diǎn)和其鄰居節(jié)點(diǎn)的第k-1層向量拼接起來,然后對(duì)計(jì)算向量的element-wise均值,最后通過對(duì)均值向量做非線性變換得到目標(biāo)節(jié)點(diǎn)鄰居信息表示:
Pooling aggregator:先對(duì)目標(biāo)節(jié)點(diǎn)的鄰居節(jié)點(diǎn)向量做非線性變換并采用pooling操作(maxpooling或meanpooling)得到目標(biāo)節(jié)點(diǎn)的鄰居信息表示:
LSTM aggretator:使用LSTM來encode鄰居的特征,為了忽略鄰居之間的順序,需要將鄰居節(jié)點(diǎn)順序打亂之后輸入到LSTM中。LSTM相比簡(jiǎn)單的求平均和Pooling操作具有更強(qiáng)的表達(dá)能力。
五、總結(jié)
針對(duì)當(dāng)前熱門的embedding技術(shù),本文系統(tǒng)的總結(jié)了能處理各類型數(shù)據(jù)的embedding方法,如傳統(tǒng)基于矩陣分解的方法(如SVD分解)、處理文本的embedding方法(如Word2vec、FastText等)以及處理圖數(shù)據(jù)的embedding方法(如DeepWalk、GraphSAGE等)。在推薦系統(tǒng)中,針對(duì)于不同數(shù)據(jù)類型,可以靈活采用上述方法來實(shí)現(xiàn)對(duì)數(shù)據(jù)的抽象表示。如可以基于用戶行為,構(gòu)造item列表,采用基于文本的方法對(duì)item進(jìn)行向量化;也可以通過構(gòu)建user和item關(guān)系圖,采用基于圖的方法來對(duì)user和item進(jìn)行向量化。在實(shí)際過程中,不同的向量化方法得到的embedding結(jié)果也會(huì)有較大差異,需要根據(jù)具體業(yè)務(wù)需求來選擇相應(yīng)的算法。如要挖掘用戶與用戶的同質(zhì)性,可以嘗試采用Node2vec;此外,如果需要結(jié)合物品或Item的side-info,可以考慮GraphSAGE算法來對(duì)圖中節(jié)點(diǎn)進(jìn)行embedding。跟深度學(xué)習(xí)煉丹術(shù)一樣,要熟練掌握各類embedding技術(shù),需要根據(jù)具體應(yīng)用場(chǎng)景不斷試錯(cuò)積累經(jīng)驗(yàn)。最后,要司慶了,祝我們“煉丹人”能快樂搬磚!
參考文獻(xiàn)
Simon Funk. Netflix Update: Try This at Home. http://www.sifter.org/~simon/journal/20061211.html. 2006
Koren, Yehuda. "Factorization meets the neighborhood: a multifaceted collaborative filtering model." Proceedings of the 14th ACM SIGKDD international conference on Knowledge discovery and data mining. 2008
Mikolov, Tomas, et al. "Distributed representations of words and phrases and their compositionality." Advances in neural information processing systems. 2013.
Pennington, Jeffrey, et al. "Glove: Global vectors for word representation." Conference on empirical methods in natural language processin. 2014.
Bojanowski, Piotr, et al. "Enriching word vectors with subword information." Transactions of the Association for Computational Linguistics 5 (2017): 135-146.
Peters, Matthew E., et al. "Deep contextualized word representations." arXiv preprint arXiv:1802.05365 (2018). Radford, Alec, et al. "Improving language understanding by generative pre-training." (2018): 12.
Devlin, Jacob, et al. "Bert: Pre-training of deep bidirectional transformers for language understanding." arXiv preprint arXiv:1810.04805 (2018).
Perozzi, Bryan, et al. "Deepwalk: Online learning of social representations." ACM SIGKDD international conference on Knowledge discovery and data mining. 2014.
Grover, Aditya, et al. "node2vec: Scalable feature learning for networks." Proceedings of the 22nd ACM SIGKDD international conference on Knowledge discovery and data mining. 2016.
Dong, Yuxiao, et al. "metapath2vec: Scalable representation learning for heterogeneous networks." Proceedings of the 23rd ACM SIGKDD international conference on knowledge discovery and data mining. 2017.
Wilson L Taylor. 1953. cloze procedure: A new tool for measuring readability. Journalism Bulletin, 30(4):415–433.
Hammond, David K., Pierre Vandergheynst, and Rémi Gribonval. "Wavelets on graphs via spectral graph theory." Applied and Computational Harmonic Analysis 30.2 (2011): 129-150.
Kipf, Thomas N., and Max Welling. "Semi-supervised classification with graph convolutional networks." arXiv preprint arXiv:1609.02907 (2016).
Hamilton, Will, et al. "Inductive representation learning on large graphs." Advances in neural information processing systems. 2017.
云開發(fā)者專屬盛會(huì)
邀你一起「重新定義開發(fā)」
超強(qiáng)干貨來襲 云風(fēng)專訪:近40年碼齡,通宵達(dá)旦的技術(shù)人生總結(jié)
以上是生活随笔為你收集整理的用万字长文聊一聊 Embedding 技术的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一个即将写入MySQL源码的官方bug解
- 下一篇: 简单理解 Kafka 的消息可靠性策略