




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
深入淺出Embedding原理解析與應(yīng)用實(shí)踐目錄\h第一部分Embedding基礎(chǔ)知識\h第1章萬物皆可嵌入\h1.1處理序列問題的一般步驟\h1.2WordEmbedding\h1.2.1word2vec之前\h1.2.2CBOW模型\h1.2.3Skip-Gram模型\h1.2.4可視化Skip-Gram模型實(shí)現(xiàn)過程\h1.2.5HierarchicalSoftmax優(yōu)化\h1.2.6NegativeSampling優(yōu)化\h1.3ItemEmbedding\h1.3.1微軟推薦系統(tǒng)使用ItemEmbedding\h1.3.2Airbnb推薦系統(tǒng)使用ItemEmbedding\h1.4用Embedding處理分類特征\h1.5GraphEmbedding\h1.5.1DeepWalk方法\h1.5.2LINE方法\h1.5.3node2vec方法\h1.5.4GraphEmbedding在阿里的應(yīng)用\h1.5.5知識圖譜助力推薦系統(tǒng)實(shí)例\h1.6ContextualWordEmbedding\h1.6.1多種預(yù)訓(xùn)練模型概述\h1.6.2多種預(yù)訓(xùn)練模型的發(fā)展脈絡(luò)\h1.6.3各種預(yù)訓(xùn)練模型的優(yōu)缺點(diǎn)\h1.6.4常用預(yù)訓(xùn)練模型\h1.6.5Transformer的應(yīng)用\h1.7使用WordEmbedding實(shí)現(xiàn)中文自動摘要\h1.7.1背景說明\h1.7.2預(yù)處理中文語料庫\h1.7.3生成詞向量\h1.7.4把文檔的詞轉(zhuǎn)換為詞向量\h1.7.5生成各主題的關(guān)鍵詞\h1.7.6查看運(yùn)行結(jié)果\h1.8小結(jié)\h第2章獲取Embedding的方法\h2.1使用PyTorch的EmbeddingLayer\h2.1.1語法格式\h2.1.2簡單實(shí)例\h2.1.3初始化\h2.2使用TensorFlow2.0的EmbeddingLayer\h2.2.1語法格式\h2.2.2簡單實(shí)例\h2.3從預(yù)訓(xùn)練模型獲取Embedding\h2.3.1背景說明\h2.3.2下載IMDB數(shù)據(jù)集\h2.3.3進(jìn)行分詞\h2.3.4下載并預(yù)處理GloVe詞嵌入\h2.3.5構(gòu)建模型\h2.3.6訓(xùn)練模型\h2.3.7可視化訓(xùn)練結(jié)果\h2.3.8不使用預(yù)訓(xùn)練詞嵌入的情況\h2.4小結(jié)\h第3章計(jì)算機(jī)視覺處理\h3.1卷積神經(jīng)網(wǎng)絡(luò)\h3.1.1卷積網(wǎng)絡(luò)的一般架構(gòu)\h3.1.2增加通道的魅力\h3.1.3加深網(wǎng)絡(luò)的動機(jī)\h3.1.4殘差連接\h3.2使用預(yù)訓(xùn)練模型\h3.2.1遷移學(xué)習(xí)簡介\h3.2.2使用預(yù)訓(xùn)練模型的方法\h3.3獲取預(yù)訓(xùn)練模型\h3.4使用PyTorch實(shí)現(xiàn)數(shù)據(jù)遷移實(shí)例\h3.4.1特征提取實(shí)例\h3.4.2微調(diào)實(shí)例\h3.5小結(jié)\h第4章文本及序列處理\h4.1循環(huán)網(wǎng)絡(luò)的基本結(jié)構(gòu)\h4.1.1標(biāo)準(zhǔn)循環(huán)神經(jīng)網(wǎng)絡(luò)\h4.1.2深度循環(huán)神經(jīng)網(wǎng)絡(luò)\h4.1.3LSTM網(wǎng)絡(luò)結(jié)構(gòu)\h4.1.4GRU網(wǎng)絡(luò)結(jié)構(gòu)\h4.1.5雙向循環(huán)神經(jīng)網(wǎng)絡(luò)\h4.2構(gòu)建一些特殊模型\h4.2.1Encoder-Decoder模型\h4.2.2Seq2Seq模型\h4.3小結(jié)\h第5章注意力機(jī)制\h5.1注意力機(jī)制概述\h5.1.1兩種常見的注意力機(jī)制\h5.1.2注意力機(jī)制的本質(zhì)\h5.2帶注意力機(jī)制的Encoder-Decoder模型\h5.2.1引入注意力機(jī)制\h5.2.2計(jì)算注意力分配值\h5.2.3使用PyTorch實(shí)現(xiàn)帶注意力機(jī)制的Encoder-Decoder模型\h5.3可視化Transformer\h5.3.1Transformer的頂層設(shè)計(jì)\h5.3.2Encoder與Decoder的輸入\h5.3.3高并發(fā)長記憶的實(shí)現(xiàn)\h5.3.4為加深Transformer網(wǎng)絡(luò)層保駕護(hù)航的幾種方法\h5.3.5如何自監(jiān)督學(xué)習(xí)\h5.4使用PyTorch實(shí)現(xiàn)Transformer\h5.4.1Transformer背景介紹\h5.4.2構(gòu)建Encoder-Decoder模型\h5.4.3構(gòu)建Encoder\h5.4.4構(gòu)建Decoder\h5.4.5構(gòu)建MultiHeadedAttention\h5.4.6構(gòu)建前饋網(wǎng)絡(luò)層\h5.4.7預(yù)處理輸入數(shù)據(jù)\h5.4.8構(gòu)建完整網(wǎng)絡(luò)\h5.4.9訓(xùn)練模型\h5.4.10實(shí)現(xiàn)一個簡單實(shí)例\h5.5Transformer-XL\h5.5.1引入循環(huán)機(jī)制\h5.5.2使用相對位置編碼\h5.5.3Transformer-XL計(jì)算過程\h5.6使用PyTorch構(gòu)建Transformer-XL\h5.6.1構(gòu)建單個HeadAttention\h5.6.2構(gòu)建MultiHeadAttention\h5.6.3構(gòu)建Decoder\h5.7Reformer\h5.7.1使用局部敏感哈希\h5.7.2使用可逆殘差網(wǎng)絡(luò)\h5.8小結(jié)\h第6章從WordEmbedding到ELMo\h6.1從word2vec到ELMo\h6.2可視化ELMo原理\h6.2.1字符編碼層\h6.2.2雙向語言模型\h6.2.3生成ELMo詞嵌入\h6.3小結(jié)\h第7章從ELMo到BERT和GPT\h7.1ELMo的優(yōu)缺點(diǎn)\h7.2可視化BERT原理\h7.2.1BERT的整體架構(gòu)\h7.2.2BERT的輸入\h7.2.3掩碼語言模型\h7.2.4預(yù)測下一個句子\h7.2.5微調(diào)\h7.2.6使用特征提取方法\h7.3使用PyTorch實(shí)現(xiàn)BERT\h7.3.1BERTEmbedding類的代碼\h7.3.2TransformerBlock類的代碼\h7.3.3構(gòu)建BERT的代碼\h7.4可視化GPT原理\h7.4.1GPT簡介\h7.4.2GPT的整體架構(gòu)\h7.4.3GPT的模型結(jié)構(gòu)\h7.4.4GPT-2的Multi-Head與BERT的Multi-Head之間的區(qū)別\h7.4.5GPT-2的輸入\h7.4.6GPT-2計(jì)算遮掩自注意力的詳細(xì)過程\h7.4.7輸出\h7.4.8GPT與GPT-2的異同\h7.5GPT-3簡介\h7.6小結(jié)\h第8章BERT的優(yōu)化方法\h8.1可視化XLNet原理\h8.1.1排列語言模型簡介\h8.1.2使用雙流自注意力機(jī)制\h8.1.3融入Transformer-XL的理念\h8.1.4改進(jìn)后的效果\h8.2ALBERT方法\h8.2.1分解VocabularyEmbedding矩陣\h8.2.2跨層共享參數(shù)\h8.2.3用SOP代替NSP方法\h8.2.4其他優(yōu)化方法\h8.3ELECTRA方法\h8.3.1ELECTRA概述\h8.3.2RTD結(jié)構(gòu)\h8.3.3損失函數(shù)\h8.3.4ELECTRA與GAN的異同\h8.3.5評估\h8.4小結(jié)\h第9章推薦系統(tǒng)\h9.1推薦系統(tǒng)概述\h9.1.1推薦系統(tǒng)的一般流程\h9.1.2常用推薦算法\h9.2協(xié)同過濾\h9.2.1基于用戶的協(xié)同過濾\h9.2.2基于物品的協(xié)同過濾\h9.3深度學(xué)習(xí)在推薦系統(tǒng)中的應(yīng)用\h9.3.1協(xié)同過濾中與神經(jīng)網(wǎng)絡(luò)結(jié)合\h9.3.2融入多層感知機(jī)的推薦系統(tǒng)\h9.3.3融入卷積網(wǎng)絡(luò)的推薦系統(tǒng)\h9.3.4融入Transformer的推薦系統(tǒng)\h9.4小結(jié)\h第二部分Embedding應(yīng)用實(shí)例\h第10章用Embedding表現(xiàn)分類特征\h10.1項(xiàng)目背景\h10.1.1項(xiàng)目概述\h10.1.2數(shù)據(jù)集說明\h10.2TensorFlow2詳細(xì)實(shí)現(xiàn)\h10.2.1導(dǎo)入TensorFlow和其他庫\h10.2.2導(dǎo)入數(shù)據(jù)集并創(chuàng)建dataframe\h10.2.3將dataframe拆分為訓(xùn)練、驗(yàn)證和測試集\h10.2.4用tf.data創(chuàng)建輸入流水線\h10.2.5TensorFlow提供的幾種處理特征列的方法\h10.2.6選擇特征\h10.2.7創(chuàng)建網(wǎng)絡(luò)的輸入層\h10.2.8創(chuàng)建、編譯和訓(xùn)練模型\h10.2.9可視化訓(xùn)練過程\h10.2.10測試模型\h10.3小結(jié)\h第11章用Embedding提升機(jī)器學(xué)習(xí)性能\h11.1項(xiàng)目概述\h11.1.1數(shù)據(jù)集簡介\h11.1.2導(dǎo)入數(shù)據(jù)\h11.1.3預(yù)處理數(shù)據(jù)\h11.1.4定義公共函數(shù)\h11.2使用Embedding提升神經(jīng)網(wǎng)絡(luò)性能\h11.2.1基于獨(dú)熱編碼的模型\h11.2.2基于Embedding的模型\h11.3構(gòu)建XGBoost模型\h11.4使用Embedding數(shù)據(jù)的XGBoost模型\h11.5可視化Embedding數(shù)據(jù)\h11.6小結(jié)\h第12章用Transformer實(shí)現(xiàn)英譯中\(zhòng)h12.1TensorFlow2+實(shí)例概述\h12.2預(yù)處理數(shù)據(jù)\h12.2.1下載數(shù)據(jù)\h12.2.2分割數(shù)據(jù)\h12.2.3創(chuàng)建英文語料字典\h12.2.4創(chuàng)建中文語料字典\h12.2.5定義編碼函數(shù)\h12.2.6過濾數(shù)據(jù)\h12.2.7創(chuàng)建訓(xùn)練集和驗(yàn)證集\h12.3構(gòu)建Transformer模型\h12.3.1Transformer模型架構(gòu)圖\h12.3.2架構(gòu)說明\h12.3.3構(gòu)建scaled_dot_product_attention模塊\h12.3.4構(gòu)建MultiHeadAttention模塊\h12.3.5構(gòu)建point_wise_feed_forward_network模塊\h12.3.6構(gòu)建EncoderLayer模塊\h12.3.7構(gòu)建Encoder模塊\h12.3.8構(gòu)建DecoderLayer模塊\h12.3.9構(gòu)建Decoder模塊\h12.3.10構(gòu)建Transformer模型\h12.3.11定義掩碼函數(shù)\h12.4定義損失函數(shù)\h12.5定義優(yōu)化器\h12.6訓(xùn)練模型\h12.6.1實(shí)例化Transformer\h12.6.2設(shè)置checkpoint\h12.6.3生成多種掩碼\h12.6.4定義訓(xùn)練模型函數(shù)\h12.6.5訓(xùn)練模型\h12.7評估預(yù)測模型\h12.7.1定義評估函數(shù)\h12.7.2測試翻譯幾個簡單語句\h12.8可視化注意力權(quán)重\h12.9小結(jié)\h第13章Embedding技術(shù)在推薦系統(tǒng)中的應(yīng)用\h13.1Embedding在Airbnb推薦系統(tǒng)中的應(yīng)用\h13.2Transformer在阿里推薦系統(tǒng)中的應(yīng)用\h13.3BERT在美團(tuán)推薦系統(tǒng)中的應(yīng)用\h13.4小結(jié)\h第14章用BERT實(shí)現(xiàn)中文語句分類\h14.1背景說明\h14.1.1查看中文BERT字典里的一些信息\h14.1.2使用tokenizer分割中文語句\h14.2可視化BERT注意力權(quán)重\h14.2.1BERT對MASK字的預(yù)測\h14.2.2導(dǎo)入可視化需要的庫\h14.2.3可視化\h14.3用BERT預(yù)訓(xùn)練模型微調(diào)下游任務(wù)\h14.3.1準(zhǔn)備原始文本數(shù)據(jù)\h14.3.2將原始文本轉(zhuǎn)換成BERT的輸入格式\h14.3.3定義讀取數(shù)據(jù)的函數(shù)\h14.3.4讀取數(shù)據(jù)并進(jìn)行數(shù)據(jù)轉(zhuǎn)換\h14.3.5增加一個批量維度\h14.3.6查看一個批次數(shù)據(jù)樣例\h14.3.7微調(diào)BERT完成下游任務(wù)\h14.3.8查看微調(diào)后模型的結(jié)構(gòu)\h14.4訓(xùn)練模型\h14.4.1定義預(yù)測函數(shù)\h14.4.2訓(xùn)練模型\h14.5測試模型\h14.5.1用新數(shù)據(jù)測試模型\h14.5.2比較微調(diào)前后的數(shù)據(jù)異同\h14.5.3可視化注意力權(quán)重\h14.6小結(jié)\h第15章用GPT-2生成文本\h15.1GPT-2概述\h15.2用GPT-2生成新聞\h15.2.1定義隨機(jī)選擇函數(shù)\h15.2.2使用預(yù)訓(xùn)練模型生成新聞\h15.3微調(diào)GPT-2生成戲劇文本\h15.3.1讀取文件\h15.3.2對文件進(jìn)行分詞\h15.3.3把數(shù)據(jù)集轉(zhuǎn)換為可迭代對象\h15.3.4訓(xùn)練模型\h15.3.5使用模型生成文本\h15.4小結(jié)\h第16章Embedding技術(shù)總結(jié)\h16.1Embedding技術(shù)回顧\h16.1.1Embedding表示\h16.1.2多種學(xué)習(xí)Embedding表示的算法\h16.1.3幾種Embedding衍生技術(shù)\h16.1.4Embedding技術(shù)的不足\h16.2Embedding技術(shù)展望\h16.2.1從Embedding的表示方面進(jìn)行優(yōu)化\h16.2.2從Embedding的結(jié)構(gòu)上進(jìn)行優(yōu)化\h16.3小結(jié)\h附錄A基于GPU的TensorFlow2+、PyTorch1+升級安裝\h附錄B語言模型注:原文檔電子版(非掃描),需要的請下載本文檔后留言謝謝。第一部分
Embedding基礎(chǔ)知識第1章萬物皆可嵌入第2章獲取Embedding的方法第3章計(jì)算機(jī)視覺處理第4章文本及序列處理第5章注意力機(jī)制第6章從WordEmbedding到ELMo第7章從ELMo到BERT和GPT第8章BERT的優(yōu)化方法第9章推薦系統(tǒng)第1章
萬物皆可嵌入近些年在機(jī)器學(xué)習(xí)、深度學(xué)習(xí)等領(lǐng)域,嵌入(Embedding)技術(shù)可謂發(fā)展迅猛、遍地開花。那么,嵌入是什么?嵌入為何能引起大家的極大關(guān)注?嵌入有哪些新進(jìn)展?接下來會對這些問題進(jìn)行說明。簡單來說,嵌入是用向量表示一個物體,這個物體可以是一個單詞、一條語句、一個序列、一件商品、一個動作、一本書、一部電影等,可以說嵌入涉及機(jī)器學(xué)習(xí)、深度學(xué)習(xí)的絕大部分對象。這些對象是機(jī)器學(xué)習(xí)和深度學(xué)習(xí)中最基本、最常用、最重要的對象,正因如此,如何有效表示、學(xué)習(xí)這些對象就顯得非常重要。尤其word2vec這樣的WordEmbedding的廣泛應(yīng)用,更是帶來了更大范圍的延伸和拓展,嵌入技術(shù)由最初的自然語言處理領(lǐng)域向傳統(tǒng)機(jī)器學(xué)習(xí)、搜索排序、推薦、知識圖譜等領(lǐng)域延伸,具體表現(xiàn)為由WordEmbedding向ItemEmbedding、GraphEmbedding、CategoricalvariablesEmbedding等方向延伸。Embedding本身也在不斷更新,由最初表現(xiàn)單一的靜態(tài)向表現(xiàn)更豐富的動態(tài)延伸和拓展。具體表現(xiàn)為由靜態(tài)的WordEmbedding向ELMo、Transformer、GPT、BERT、XLNet、ALBERT等動態(tài)的預(yù)訓(xùn)練模型延伸。上面介紹了近幾年出現(xiàn)的一些英文熱詞,那么,這些詞語具體表示什么含義?功能是什么?如何使用?這就是本書接下來要介紹的主要內(nèi)容。本章主要涉及如下內(nèi)容:處理序列問題的一般步驟WordEmbeddingItemEmbedding用Embedding處理分類特征GraphEmbeddingContextualWordEmbedding使用WordEmbedding實(shí)現(xiàn)中文自動摘要1.1處理序列問題的一般步驟序列問題是非常常見的,如自然語言處理、網(wǎng)頁瀏覽、時(shí)間序列等都與序列密不可分。因此,如何處理序列問題、如何挖掘序列中隱含的規(guī)則和邏輯非常重要。以自然語言處理為例。假設(shè)你拿到一篇較長文章或新聞報(bào)道之類的語言材料,要求用自然語言處理(NLP)方法提煉出該材料的摘要信息,你該如何處理?需要考慮哪些內(nèi)容?涉及哪些步驟?先從哪一步開始?拿到一份語言材料后,不管是中文還是英文,首先需要做一些必要的清理工作,如清理特殊符號、格式轉(zhuǎn)換、過濾停用詞等,然后進(jìn)行分詞、索引化,再利用相關(guān)模型或算法把單詞、詞等標(biāo)識符向量化,最后輸出給下游任務(wù),具體處理步驟如圖1-1所示。圖1-1序列問題的一般處理步驟在圖1-1中,詞嵌入或預(yù)訓(xùn)練模型是關(guān)鍵,它們的質(zhì)量好壞直接影響下游任務(wù)的效果。詞嵌入與訓(xùn)練模型階段涉及的算法、模型較多,近幾年也取得了長足發(fā)展,如word2vec、Transformer、BERT、ALBERT等方法,刷新了自然語言處理、語言識別、推薦任務(wù)、搜索排序等任務(wù)在性能方面的紀(jì)錄。下面將從最基本的word2vec—WordEmbedding開始介紹。1.2WordEmbedding因機(jī)器無法直接接收單詞、詞語、字符等標(biāo)識符(token),所以把標(biāo)識符數(shù)值化一直是人們研究的內(nèi)容。開始時(shí)人們用整數(shù)表示各標(biāo)識符,這種方法簡單但不夠靈活,后來人們開始用獨(dú)熱編碼(One-HotEncoding)來表示。這種編碼方法雖然方便,但非常稀疏,屬于硬編碼,且無法重載更多信息。此后,人們想到用數(shù)值向量或標(biāo)識符嵌入(TokenEmbedding)來表示,即通常說的詞嵌入(WordEmbedding),又稱為分布式表示。不過WordEmbedding方法真正流行起來,還要?dú)w功于Google的word2vec。接下來我們簡單了解下word2vec的原理及實(shí)現(xiàn)方法。1.2.1word2vec之前從文本、標(biāo)識符、獨(dú)熱編碼到向量表示的整個過程,可以用圖1-2表示。圖1-2從文本、標(biāo)識符、獨(dú)熱編碼到向量表示從圖1-2可以看出,獨(dú)熱編碼是稀疏、高維的硬編碼,如果一個語料有一萬個不同的詞,那么每個詞就需要用一萬維的獨(dú)熱編碼表示。如果用向量或詞嵌入表示,那么這些向量就是低維、密集的,且這些向量值都是通過學(xué)習(xí)得來的,而不是硬性給定的。至于詞嵌入的學(xué)習(xí)方法,大致可以分為兩種。1.利用平臺的Embedding層學(xué)習(xí)詞嵌入在完成任務(wù)的同時(shí)學(xué)習(xí)詞嵌入,例如,把Embedding作為第一層,先隨機(jī)初始化這些詞向量,然后利用平臺(如PyTorch、TensorFlow等平臺)不斷學(xué)習(xí)(包括正向?qū)W習(xí)和反向?qū)W習(xí)),最后得到需要的詞向量。代碼清單1-1為通過PyTorch的nn.Embedding層生成詞嵌入的簡單示例。代碼清單1-1使用Embedding的簡單示例fromtorchimportnn
importtorch
importjieba
importnumpyasnp
raw_text="""越努力就越幸運(yùn)"""
#利用jieba進(jìn)行分詞
words=list(jieba.cut(raw_text))
print(words)
#對標(biāo)識符去重,生成由索引:標(biāo)識符構(gòu)成的字典
word_to_ix={i:wordfori,wordinenumerate(set(words))}
#定義嵌入維度,并用正態(tài)分布,初始化詞嵌入
#nn.Embedding模塊的輸入是一個標(biāo)注的下標(biāo)列表,輸出是對應(yīng)的詞嵌入
embeds=nn.Embedding(4,3)
print(embeds.weight[0])
#獲取字典的關(guān)鍵字
keys=word_to_ix.keys()
keys_list=list(keys)
#把所有關(guān)鍵字構(gòu)成的列表轉(zhuǎn)換為張量
tensor_value=torch.LongTensor(keys_list)
#把張量輸入Embedding層,通過運(yùn)算得到各標(biāo)識符的詞嵌入
embeds(tensor_value)運(yùn)行結(jié)果:['越','努力','就','越','幸運(yùn)']
tensor([-0.5117,-0.5395,0.7305],grad_fn=<SelectBackward>)
tensor([[-0.5117,-0.5395,0.7305],
[-0.7689,0.0985,-0.7398],
[-0.3772,0.7987,2.1869],
[-0.4592,1.0422,-1.4532]],grad_fn=<EmbeddingBackward>)2.使用預(yù)訓(xùn)練的詞嵌入利用在較大語料上預(yù)訓(xùn)練好的詞嵌入或預(yù)訓(xùn)練模型,把這些詞嵌入加載到當(dāng)前任務(wù)或模型中。預(yù)訓(xùn)練模型很多,如word2vec、ELMo、BERT、XLNet、ALBERT等,這里我們先介紹word2vec,后續(xù)將介紹其他預(yù)訓(xùn)練模型,具體可參考1.6節(jié)。1.2.2CBOW模型在介紹word2vec原理之前,我們先看一個簡單示例。示例展示了對一句話的兩種預(yù)測方式:假設(shè):今天下午2點(diǎn)鐘搜索引擎組開組會。方法1(根據(jù)上下文預(yù)測目標(biāo)值)對于每一個單詞或詞(統(tǒng)稱為標(biāo)識符),使用該標(biāo)識符周圍的標(biāo)識符來預(yù)測當(dāng)前標(biāo)識符生成的概率。假設(shè)目標(biāo)值為“2點(diǎn)鐘”,我們可以使用“2點(diǎn)鐘”的上文“今天、下午”和“2點(diǎn)鐘”的下文“搜索、引擎、組”來生成或預(yù)測目標(biāo)值。方法2(由目標(biāo)值預(yù)測上下文)對于每一個標(biāo)識符,使用該標(biāo)識符本身來預(yù)測生成其他詞匯的概率。如使用“2點(diǎn)鐘”來預(yù)測其上下文“今天、下午、搜索、引擎、組”中的每個詞。兩種預(yù)測方法的共同限制條件是,對于相同的輸入,輸出每個標(biāo)識符的概率之和為1。它們分別對應(yīng)word2vec的兩種模型,即CBOW模型(ContinuousBag-Of-WordsModel)和Skip-Gram模型。根據(jù)上下文生成目標(biāo)值(即方法1)時(shí),使用CBOW模型;根據(jù)目標(biāo)值生成上下文(即方法2)時(shí),采用Skip-Gram模型。CBOW模型包含三層:輸入層、映射層和輸出層。具體架構(gòu)如圖1-3所示。CBOW模型中的w(t)為目標(biāo)詞,在已知它的上下文w(t-2)、w(t-1)、w(t+1)、w(t+2)的前提下預(yù)測詞w(t)出現(xiàn)的概率,即p(w/context(w))。目標(biāo)函數(shù)為:圖1-3CBOW模型CBOW模型其實(shí)就是根據(jù)某個詞前后的若干詞來預(yù)測該詞,也可以看成是多分類。最樸素的想法就是直接使用Softmax來分別計(jì)算每個詞對應(yīng)的歸一化的概率。但對于動輒十幾萬詞匯量的場景,使用Softmax計(jì)算量太大,此時(shí)可以使用一種稱為二分類組合形式的HierarchicalSoftmax(輸出層為一棵二叉樹)來優(yōu)化。1.2.3Skip-Gram模型Skip-Gram模型同樣包含三層:輸入層、映射層和輸出層。具體架構(gòu)如圖1-4所示。Skip-Gram模型中的w(t)為輸入詞,在已知詞w(t)的前提下預(yù)測詞w(t)的上下文w(t-2)、w(t-1)、w(t+1)、w(t+2),條件概率寫為p(context(w)/w)。目標(biāo)函數(shù)為:圖1-4Skip-Gram模型我們通過一個簡單的例子來說明Skip-Gram的基本思想。假設(shè)有一句話:thequickbrownfoxjumpedoverthelazydog接下來,我們根據(jù)Skip-Gram模型的基本思想,按這條語句生成一個由序列(輸入,輸出)構(gòu)成的數(shù)據(jù)集。那么,如何構(gòu)成這樣一個數(shù)據(jù)集呢?我們首先對一些單詞以及它們的上下文環(huán)境建立一個數(shù)據(jù)集。可以以任何合理的方式定義“上下文”,這里是把目標(biāo)單詞的左右單詞視作一個上下文,使用大小為1的窗口(即window_size=1)定義,也就是說,僅選輸入詞前后各1個詞和輸入詞進(jìn)行組合,就得到一個由(上下文,目標(biāo)單詞)組成的數(shù)據(jù)集,具體如表1-1所示。表1-1由Skip-Gram算法構(gòu)成的訓(xùn)練數(shù)據(jù)集1.2.4可視化Skip-Gram模型實(shí)現(xiàn)過程前面我們簡單介紹了Skip-Gram的原理及架構(gòu),至于Skip-Gram如何把輸入轉(zhuǎn)換為詞嵌入、其間有哪些關(guān)鍵點(diǎn)、面對大語料庫可能出現(xiàn)哪些瓶頸等,并沒有展開說明。而了解Skip-Gram的具體實(shí)現(xiàn)過程,有助于更好地了解word2vec以及其他預(yù)訓(xùn)練模型,如BLMo、BERT、ALBERT等。所以,本節(jié)將詳細(xì)介紹Skip-Gram的實(shí)現(xiàn)過程,加深讀者對其原理與實(shí)現(xiàn)的理解。對于CBOW模型,其實(shí)現(xiàn)機(jī)制與Skip-Gram模型類似,本書不再贅述,感興趣的讀者可以自行實(shí)踐。1.預(yù)處理語料庫先來看下面的語料庫:text="naturallanguageprocessingandmachinelearningisfunandexciting"
corpus=[[word.lower()forwordintext.split()]]這個語料庫就是一句話,共10個單詞,其中and出現(xiàn)兩次,共有9個不同單詞。因單詞較少,這里暫不設(shè)置停用詞,而是根據(jù)空格對語料庫進(jìn)行分詞,分詞結(jié)果如下:["natural","language","processing","and","machine","learning","is","fun",
"and","exciting"]2.Skip-Gram模型架構(gòu)圖使用Skip-Gram模型,設(shè)置window-size=2,以目標(biāo)詞確定其上下文,即根據(jù)目標(biāo)詞預(yù)測其左邊2個和右邊2個單詞。具體模型如圖1-5所示。圖1-5Skip-Gram模型架構(gòu)圖在圖1-5中,這里語料庫只有9個單詞,V-dim=9,N-dim=10(詞嵌入維度),C=4(該值為2*window-size)。如果用矩陣來表示圖1-5,可寫成如圖1-6所示的形式。圖1-6Skip-Gram模型的矩陣表示注意生產(chǎn)環(huán)境語料庫一般比較大,涉及的單詞成千上萬。這里為便于說明,僅使用一句話作為語料。在一些文獻(xiàn)中,又將矩陣WV×N稱為查找表(lookuptable)。2.1.1節(jié)介紹PyTorch的EmbeddingLayer時(shí),會介紹查找表的相關(guān)內(nèi)容。3.生成中心詞及其上下文的數(shù)據(jù)集根據(jù)語料庫及window-size,生成中心詞與預(yù)測上下文的數(shù)據(jù)集,如圖1-7所示。圖1-7Skip-Gram數(shù)據(jù)集圖1-7中共有10對數(shù)據(jù),Xk對應(yīng)的詞為中心詞,其左邊或右邊的詞為上下文。4.生成訓(xùn)練數(shù)據(jù)為便于訓(xùn)練word2vec模型,首先需要把各單詞數(shù)值化。這里把每個單詞轉(zhuǎn)換為獨(dú)熱編碼。在前面提到的語料庫中,圖1-7中顯示了10對數(shù)據(jù)(#1到#10)。每個窗口都由中心詞及其上下文單詞組成。把圖1-7中每個詞轉(zhuǎn)換為獨(dú)熱編碼后,可以得到如圖1-8所示的訓(xùn)練數(shù)據(jù)集。圖1-8訓(xùn)練數(shù)據(jù)集5.Skip-Gram模型的正向傳播上述1~4步完成了對數(shù)據(jù)的預(yù)處理,接下來開始數(shù)據(jù)的正向傳播,包括輸入層到隱藏層、隱藏層到輸出層。(1)輸入層到隱藏層從輸入層到隱藏層,用圖來表示就是輸入向量與權(quán)重矩陣W1的內(nèi)積,如圖1-9所示。圖1-9輸入層到隱藏層這里將矩陣W9×10先隨機(jī)初始化為-1到1之間的數(shù)。(2)隱藏層到輸出層從隱藏層到輸出層,其實(shí)就是求隱含向量與權(quán)重矩陣W2的內(nèi)積,然后使用Softmax激活函數(shù)、得到預(yù)測值,具體過程如圖1-10所示。圖1-10隱藏層到輸出層(3)計(jì)算損失值損失值即預(yù)測值與實(shí)際值的差,這里以選擇數(shù)據(jù)集#1為例,即中心詞為natural,然后計(jì)算對應(yīng)該中心詞的輸出,即預(yù)測值,再計(jì)算預(yù)測值與實(shí)際值的差,得到損失值EI。中心詞natural的上下文(這里只有下文)為language和processing,它們對應(yīng)的獨(dú)熱編碼為w_c=1,w_c=2,具體計(jì)算過程如圖1-11所示。圖1-11計(jì)算損失值6.Skip-Gram模型的反向傳播我們使用反向傳播函數(shù)backprop,根據(jù)目標(biāo)詞計(jì)算的損失值EI,反向更新W1和W2。為幫助大家更好地理解,這里簡單說明一下反向傳播的幾個關(guān)鍵公式的推導(dǎo)過程。假設(shè)輸出值為u,即W'T·h=u,則預(yù)測值為:(1)定義目標(biāo)函數(shù)(2)求目標(biāo)函數(shù)關(guān)于的偏導(dǎo)數(shù)其中是第c個上下文在字典中對應(yīng)的索引。,當(dāng)時(shí),tc,j=1,否則,tc,j=0。,表示預(yù)測值與真實(shí)值的誤差。的計(jì)算過程可用圖1-12表示。圖1-12目標(biāo)函數(shù)關(guān)于的偏導(dǎo)計(jì)算過程示意圖(3)更新矩陣w'(即W2)利用梯度下降法更新梯度:式(1.8)的計(jì)算過程可用圖1-13及圖1-14表示。圖1-13參數(shù)更新示意圖(一)圖1-14參數(shù)更新示意圖(二)(4)求關(guān)于W(即W1)的偏導(dǎo)數(shù)其中。所以式(1.10)的計(jì)算過程可用圖1-15和圖1-16表示。圖1-15偏導(dǎo)計(jì)算結(jié)果(一)圖1-16偏導(dǎo)計(jì)算結(jié)果(二)更新參數(shù):更新權(quán)重參數(shù)的計(jì)算過程可用圖1-17和圖1-18表示。圖1-17權(quán)重參數(shù)更新結(jié)果(一)圖1-18權(quán)重參數(shù)更新結(jié)果(二)1.2.5HierarchicalSoftmax優(yōu)化結(jié)合上面內(nèi)容,我們需要更新兩個矩陣W和W′,但這兩個矩陣涉及的詞匯量較大(即V較大),所以更新時(shí)需要消耗大量資源,尤其是更新矩陣W′。正如前面一直提到的,無論是CBOW模型還是Skip-Gram模型,每個訓(xùn)練樣本(或者M(jìn)iniBatch)從梯度更新時(shí)都需要對W′的所有V×N個元素進(jìn)行更新,這個計(jì)算成本是巨大的。此外,在計(jì)算Softmax函數(shù)時(shí),計(jì)算量也很大。為此,人們開始思考如何優(yōu)化這些計(jì)算??紤]到計(jì)算量大的部分都是在隱藏層到輸出層階段,尤其是W′的更新。因此word2vec使用了兩種優(yōu)化策略:HierarchicalSoftmax和NegativeSampling。二者的出發(fā)點(diǎn)一致,即在每個訓(xùn)練樣本中,不再完全計(jì)算或者更新W′矩陣,換句話說,兩種策略中均不再顯式使用W′這個矩陣。同時(shí),考慮到上述訓(xùn)練和推理的復(fù)雜度高是因Softmax分母上的∑(求和)過程導(dǎo)致,因此上述的兩種優(yōu)化策略是對Softmax的優(yōu)化,而不僅僅是對word2vec的優(yōu)化。通過優(yōu)化,word2vec的訓(xùn)練速度大大提升,詞向量的質(zhì)量也幾乎沒有下降,這也是word2vec在NLP領(lǐng)域如此流行的原因。HierarchicalSoftMax(以下簡稱HS)并不是由word2vec首先提出的,而是由YoshuaBengio在2005年最早提出來的專門用于加速計(jì)算神經(jīng)語言模型中的Softmax的一種方式。這里主要介紹如何在word2vec中使用HS優(yōu)化。HS的實(shí)質(zhì)是基于哈夫曼樹(一種二叉樹)將計(jì)算量大的部分變?yōu)橐环N二分類問題。如圖1-19所示,原來的模型在隱藏層之后通過W′連接輸出層,經(jīng)過HS優(yōu)化后則去掉了W′,由隱藏層h直接與下面的二叉樹的根節(jié)點(diǎn)相連。圖1-19哈夫曼樹示意圖其中,白色的葉子節(jié)點(diǎn)表示詞匯表中的所有詞(這里有V個),黑色節(jié)點(diǎn)表示非葉子節(jié)點(diǎn),每一個葉子節(jié)點(diǎn)其實(shí)就是一個單詞,且都對應(yīng)唯一的一條從根節(jié)點(diǎn)出發(fā)的路徑。我們用n(w,j)表示從根節(jié)點(diǎn)到葉子節(jié)點(diǎn)w的路徑上的第j個非葉子節(jié)點(diǎn),并且每個非葉子節(jié)點(diǎn)都對應(yīng)一個向量,其維度與h相同。1.2.6NegativeSampling優(yōu)化訓(xùn)練一個神經(jīng)網(wǎng)絡(luò)意味著要輸入訓(xùn)練樣本并不斷調(diào)整神經(jīng)元的權(quán)重,從而不斷提高對目標(biāo)預(yù)測的準(zhǔn)確性。神經(jīng)網(wǎng)絡(luò)每訓(xùn)練一個樣本,該樣本的權(quán)重就會調(diào)整一次。正如上面所討論的,vocabulary的大小決定了Skip-Gram神經(jīng)網(wǎng)絡(luò)的權(quán)重矩陣的具體規(guī)模,所有這些權(quán)重需要通過數(shù)以億計(jì)的訓(xùn)練樣本來進(jìn)行調(diào)整,這是非常消耗計(jì)算資源的,并且在實(shí)際訓(xùn)練過程中,速度會非常慢。NegativeSampling(負(fù)采樣)解決了這個問題,它可以提高訓(xùn)練速度并改善所得到詞向量的質(zhì)量。不同于原本需要更新每個訓(xùn)練樣本的所有權(quán)重的方法,負(fù)采樣只需要每次更新一個訓(xùn)練樣本的一小部分權(quán)重,從而在很大程度上降低了梯度下降過程中的計(jì)算量。1.3ItemEmbedding隨著WordEmbedding在NLP很多領(lǐng)域取得不錯的成果,人們開始考慮把這一思想推廣到其他領(lǐng)域。從word2vec模型的實(shí)現(xiàn)原理可以看出,它主要依賴一條條語句,而每條語句就是一個序列。由此,只要有序列特征的場景應(yīng)該都適合使用這種Embedding思想。圖1-20表示了不同用戶在一定時(shí)間內(nèi)查詢物品(Item)形成的序列圖形,可以看出,物品形成的序列與詞形成的序列(語句)有很多相似的地方,因此,人們把WordEmbedding這種思想引入物品序列中,推廣到推薦、搜索、廣告等領(lǐng)域,并學(xué)習(xí)得到ItemEmbedding。圖1-20用戶在一定時(shí)間內(nèi)查詢物品形成的物品序列示意圖微軟寫了一篇實(shí)用性很強(qiáng)的關(guān)于將word2vec應(yīng)用于推薦領(lǐng)域的論文(詳見1.3.1節(jié))。該論文中的方法簡單易用,可以說極大拓展了word2vec的應(yīng)用范圍,使其從NLP領(lǐng)域直接擴(kuò)展到推薦、廣告、搜索排序等任何可以生成序列的領(lǐng)域。1.3.1微軟推薦系統(tǒng)使用ItemEmbeddingEmbedding是一種很好的思想,它不局限于自然語言處理領(lǐng)域,還可以應(yīng)用到其他很多領(lǐng)域。微軟研究人員把這種思想應(yīng)用到推薦系統(tǒng)中,并將其研究成果發(fā)表在論文Item2Vec:NeuralItemEmbeddingforCollaborativeFiltering中。論文中,他們主要參照了把WordEmbedding應(yīng)用到推薦場景的相似度計(jì)算中的方法,把item視為word,把用戶的行為序列視為一個集合。通過把word2vec的Skip-Gram和NegativeSampling(SGNS)的算法思路遷移到基于物品的協(xié)同過濾(Item-BasedCF)上,以物品的共現(xiàn)性作為自然語言中的上下文關(guān)系,構(gòu)建神經(jīng)網(wǎng)絡(luò)并學(xué)習(xí)出物品在隱空間的向量表示,讓使用效果得到較大提升。1.3.2Airbnb推薦系統(tǒng)使用ItemEmbedding作為全世界最大的短租網(wǎng)站,Airbnb的主要業(yè)務(wù)是在房主掛出的短租房(listing)和以旅游為主要目的的租客之間構(gòu)建一個中介平臺,以更好地為房主和租客服務(wù)。這個中介平臺的交互方式比較簡單,即客戶輸入地點(diǎn)、價(jià)位、關(guān)鍵詞等,Airbnb給出租房的搜索推薦列表。所以,借助這個推薦列表提升客戶訂購率顯得非常關(guān)鍵。那么,Airbnb是如何提升這個推薦列表質(zhì)量的呢?Airbnb發(fā)表的論文Real-timePersonalizationusingEmbeddingsforSearchRankingatAirbnb提到了具體解決思路。論文中提出了兩種通過Embedding分別捕獲用戶的短期興趣和長期興趣的方法,即利用用戶點(diǎn)擊會話(clicksession)和預(yù)定會話(bookingsession)序列,如圖1-21所示。圖1-21利用Skip-Gram模型生成房源Embedding示意圖如圖1-21所示,這里瀏覽點(diǎn)擊的房源之間存在強(qiáng)時(shí)序關(guān)系,即前面房源會對后面房源產(chǎn)生很大的影響,可以把一段時(shí)間內(nèi)連續(xù)發(fā)生的房源序列看作句子,把序列中的房源看作句子中的詞,這樣的結(jié)構(gòu)看上去與word2vec的訓(xùn)練數(shù)據(jù)的構(gòu)造并沒什么區(qū)別,因此可以直接按照word2vec的方法(這里采用Skip-Gram模型)進(jìn)行Embedding訓(xùn)練。訓(xùn)練生成ListingEmbedding和User-type&Listing-typeEmbedding,并將Embedding特征輸入搜索場景下的rank模型,以提升模型效果。Airbnb將業(yè)務(wù)模式與Embedding相結(jié)合的實(shí)踐案例可以說是應(yīng)用word2vec思想于公司業(yè)務(wù)的典范。具體來說,它通過客戶點(diǎn)擊或預(yù)定方式生成租客類型、房租類型等的Embedding,來獲取用戶對短期租賃和長期租賃的興趣。更詳細(xì)的內(nèi)容將在后續(xù)章節(jié)進(jìn)一步說明。1.4用Embedding處理分類特征傳統(tǒng)機(jī)器學(xué)習(xí)的輸入數(shù)據(jù)中一般含有分類特征,對這些特征或字段的處理是特征工程的重要內(nèi)容之一。分類(Categorical)特征也被稱為離散特征,其數(shù)據(jù)類型通常是object,而機(jī)器學(xué)習(xí)模型通常只能處理數(shù)值數(shù)據(jù),所以需要將Categorical數(shù)據(jù)轉(zhuǎn)換成Numeric數(shù)據(jù)。Categorical特征包含兩類,我們需要理解它們的具體含義并進(jìn)行相應(yīng)轉(zhuǎn)換。(1)有序(Ordinal)類型有序類型的Categorical存在自然的順序結(jié)構(gòu),所以可以對該類型數(shù)據(jù)進(jìn)行升序或者降序排列,比如關(guān)于衣服型號特征的值可能有S(Small)、M(Middle)、L(Large)、XL(eXtraLarge)等不同尺碼,它們之間存在XL>L>M>S的大小關(guān)系。(2)常規(guī)(Nominal)類型或無序類型常規(guī)類型或無序類型是常規(guī)的Categorical類型,這類特征數(shù)據(jù)沒有大小之分,比如顏色特征的可能值有red、yellow、blue、black等,我們不能對Nominal類型數(shù)據(jù)進(jìn)行排序??梢允褂貌煌姆椒▽rdinal類型和Nominal類型數(shù)據(jù)轉(zhuǎn)換成數(shù)字。對于Nominal類型數(shù)據(jù),可以使用獨(dú)熱編碼進(jìn)行轉(zhuǎn)換,但當(dāng)遇到大數(shù)據(jù),如一個特征的類別有幾百、幾千或更多個時(shí),若將這些特征全部轉(zhuǎn)換成獨(dú)熱編碼,特征數(shù)將巨大!此外,獨(dú)熱編碼只是簡單把類別數(shù)據(jù)轉(zhuǎn)換成0或1,無法準(zhǔn)確反映這些特征內(nèi)容隱含的規(guī)則或這些類別的分布信息,如一個表示地址的特征,可能包括北京、上海、杭州、紐約、華盛頓、洛杉磯、東京、大阪等,這些屬性具有一定分布特性,北京、上海、杭州之間的距離較近,上海與紐約之間的距離應(yīng)該比較遠(yuǎn),而獨(dú)熱編碼是無法表示這些內(nèi)容的。是否有更好、更有效的處理方法呢?有,就是接下來將介紹的Embedding方法。近幾年,從計(jì)算機(jī)視覺到自然語言處理再到時(shí)間序列預(yù)測,神經(jīng)網(wǎng)絡(luò)、深度學(xué)習(xí)的應(yīng)用越來越廣泛。在深度學(xué)習(xí)的應(yīng)用過程中,Embedding這樣一種將離散變量轉(zhuǎn)變?yōu)檫B續(xù)向量的方式在各方面為傳統(tǒng)機(jī)器學(xué)習(xí)、神經(jīng)網(wǎng)絡(luò)的應(yīng)用帶來極大便利。該技術(shù)目前主要有兩種應(yīng)用,自然語言處理中常用的WordEmbedding以及用于類別數(shù)據(jù)的EntityEmbedding。簡單來說,Embedding就是用一個低維的向量表示一個事物,可以是一個詞、一個類別特征(如商品、電影、物品等)或時(shí)間序列特征等。通過學(xué)習(xí),Embedding向量可以更準(zhǔn)確地表示對應(yīng)特征的內(nèi)在含義,使幾何距離相近的向量對應(yīng)的物體有相近的含義,如圖1-22所示。圖1-22可視化german_states_embedding由圖1-22可知,德國的薩克森州、薩克森安哈爾特州、圖林根州彼此比較接近,其他各州也有類似屬性,這就是Embedding通過多次迭代,從數(shù)據(jù)中學(xué)習(xí)到的一些規(guī)則。具體代碼實(shí)現(xiàn)方法請參考本書第11章。Embedding層往往是神經(jīng)網(wǎng)絡(luò)的第一層,它可以訓(xùn)練,可以學(xué)習(xí)到對應(yīng)特征的內(nèi)在關(guān)系。含Embedding的網(wǎng)絡(luò)結(jié)構(gòu)可參考圖1-23,所以Embedding有時(shí)又稱為LearnedEmbedding。一個模型學(xué)習(xí)到的Embedding,也可以被其他模型重用。圖1-23含Embedding層的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖如圖1-23所示,兩個分類特征(input_3,input_4)轉(zhuǎn)換為Embedding后,與連續(xù)性輸入特征(input_5)合并在一起,然后,連接全連接層。在訓(xùn)練過程中,Embedding向量不斷更新。在結(jié)構(gòu)化數(shù)據(jù)上運(yùn)用神經(jīng)網(wǎng)絡(luò)時(shí),EntityEmbedding表現(xiàn)得很好。例如,在Kaggle競賽“預(yù)測出租車的距離問題”上獲得第1名的解決方案,就是使用EntityEmbedding來處理每次乘坐的分類元數(shù)據(jù)的(AlexandredeBrébisson,2015)。同樣,預(yù)測Rossmann藥店銷售任務(wù)獲得第3名的解決方案使用了比前兩個方案更簡單的方法:使用簡單的前饋神經(jīng)網(wǎng)絡(luò),再加上類別變量的EntityEmbedding。這個Rossmann系統(tǒng)包括超過1000個類別的變量,如商店ID(Guo&Berkahn,2016)。作者把比賽結(jié)果匯總在論文EntityEmbeddingsofCategoricalVariables中,并使用EntityEmbedding對傳統(tǒng)機(jī)器學(xué)習(xí)與神經(jīng)網(wǎng)絡(luò)進(jìn)行比較,結(jié)果如表1-2所示。表1-2傳統(tǒng)機(jī)器學(xué)習(xí)與神經(jīng)網(wǎng)絡(luò)的對比注:MAPE是指平均絕對百分比誤差。從表1-2可以看出,如果使用EntityEmbedding,神經(jīng)網(wǎng)絡(luò)的優(yōu)勢就更加明顯了。1.5GraphEmbedding前面幾節(jié)我們介紹了由WordEmbedding延伸出的ItemEmbedding等,這些延伸都建立在它們有序列特性的基礎(chǔ)上。其實(shí),可延伸的領(lǐng)域還有很多,有些初看起來與序列無關(guān)的領(lǐng)域,通過適當(dāng)變化后,也同樣適用。如圖1-24所示,左邊是人們在電商網(wǎng)站瀏覽物品的軌跡,這些軌跡呈圖結(jié)構(gòu),通過一些算法(具體有哪些算法,后文會詳細(xì)介紹)計(jì)算后,可以把左圖轉(zhuǎn)換為右圖這樣具有序列樣本特征的格式。圖1-24把圖轉(zhuǎn)換為序列樣本示意圖GraphEmbedding與WordEmbedding一樣,目的是用低維、稠密、實(shí)值的向量表示網(wǎng)絡(luò)中的節(jié)點(diǎn)。目前GraphEmbedding在推薦系統(tǒng)、搜索排序、廣告等領(lǐng)域非常流行,并且也取得了非常不錯的實(shí)踐效果。那么,應(yīng)該如何實(shí)現(xiàn)GraphEmbedding呢?圖(Graph)表示一種“二維”的關(guān)系,而序列(Sequence)表示一種“一維”的關(guān)系。因此,要將Graph轉(zhuǎn)換為GraphEmbedding,一般需要先通過一些算法把Graph變?yōu)镾equence;然后通過一些模型或算法把這些Sequence轉(zhuǎn)換為Embedding。1.5.1DeepWalk方法DeepWalk方法首先以隨機(jī)游走(RandomWalk)的方式在網(wǎng)絡(luò)中進(jìn)行節(jié)點(diǎn)采樣,生成序列,然后使用Skip-Gram模型將序列轉(zhuǎn)換為Embedding。那么,如何從網(wǎng)絡(luò)中生成序列呢?首先使用RandomWalk的方式進(jìn)行節(jié)點(diǎn)采樣。RandomWalk是一種可重復(fù)訪問已訪問節(jié)點(diǎn)的深度優(yōu)先遍歷算法。然后給定當(dāng)前訪問起始節(jié)點(diǎn),從其鄰居中隨機(jī)選擇一個節(jié)點(diǎn)作為下一個訪問節(jié)點(diǎn),重復(fù)此過程,直到訪問序列長度滿足預(yù)設(shè)條件。獲取足夠數(shù)量的節(jié)點(diǎn)訪問序列后,使用Skip-Gram模型進(jìn)行向量學(xué)習(xí),最終獲得每個節(jié)點(diǎn)的Embedding,如圖1-25所示。圖1-25DeepWalk原理示意圖DeepWalk方法的優(yōu)點(diǎn)首先是它可以按需生成,隨機(jī)游走。由于Skip-Gram模型也針對每個樣本進(jìn)行了優(yōu)化,因此隨機(jī)游走和Skip-Gram的組合使DeepWalk成為在線算法。其次,DeepWalk是可擴(kuò)展的,生成隨機(jī)游走和優(yōu)化Skip-Gram模型的過程都是高效且平凡的并行化。最重要的是,DeepWalk引入了深度學(xué)習(xí)圖形的范例。用Skip-Gram方法對網(wǎng)絡(luò)中節(jié)點(diǎn)進(jìn)行訓(xùn)練。那么,根據(jù)Skip-Gram的實(shí)現(xiàn)原理,最重要的就是定義Context,也就是Neighborhood。在自然語言處理中,Neighborhood是當(dāng)前Word周圍的字,本文用隨機(jī)游走得到Graph或者Network中節(jié)點(diǎn)的Neighborhood。1.5.2LINE方法DeepWalk只適用無向、無權(quán)重的圖。在2015年,微軟亞洲研究院發(fā)布了LINE(Large-scaleInformationNetworkEmbedding,大型信息網(wǎng)絡(luò)嵌入)。LINE使用邊采樣方法克服了傳統(tǒng)的隨機(jī)梯度法容易出現(xiàn)的NodeEmbedding聚集問題,同時(shí)提高了最后結(jié)果的效率和效果,如圖1-26所示。圖1-26對共同作者(co-author)網(wǎng)絡(luò)的可視化展示用學(xué)習(xí)到的Embedding作為輸入,使用t-SNE包,將作者映射到二維空間。節(jié)點(diǎn)的顏色表示作者所屬的技術(shù)領(lǐng)域:紅色為“數(shù)據(jù)挖掘”,藍(lán)色為“機(jī)器學(xué)習(xí)”,綠色為“計(jì)算機(jī)視覺”。從圖1-26可以看出:1)使用圖分解(GraphF,GF)得到的可視化意義并不大,屬于同一領(lǐng)域的作者并不聚集在一起。2)DeepWalk的效果較好,但是許多屬于不同領(lǐng)域的作者緊緊聚集在中心區(qū)域,其中大部分是高度頂點(diǎn)。這是因?yàn)镈eepWalk使用隨機(jī)游走的方法來擴(kuò)展頂點(diǎn)的鄰居,由于其具有隨機(jī)性,會給度數(shù)比較高的頂點(diǎn)帶來很多噪音。3)LINE(2nd)執(zhí)行得相當(dāng)好,并生成了有意義的網(wǎng)絡(luò)布局(內(nèi)容相似的節(jié)點(diǎn)分布得更近)。LINE方法可以應(yīng)用于有向圖、無向圖以及邊有權(quán)重的網(wǎng)絡(luò),并能夠通過將一階、二階的鄰近關(guān)系引入目標(biāo)函數(shù),使最終學(xué)習(xí)得到的NodeEmbedding的分布更為均衡、平滑。1階相似度(first-orderproximity):用于描述圖中成對頂點(diǎn)之間的局部相似度,可形象化描述為,若節(jié)點(diǎn)之間存在直連邊,則邊的權(quán)重即為兩個頂點(diǎn)的相似度;若不存在直連邊,則1階相似度為0。如圖1-27所示,節(jié)點(diǎn)6和7之間存在直連邊,且邊權(quán)較大,則認(rèn)為兩者相似且1階相似度較高,而5和6之間不存在直連邊,則兩者間1階相似度為0。2階相似度(second-orderproximity):如圖1-27所示,雖然節(jié)點(diǎn)5和6之間不存在直連邊,但是它們有很多相同的相鄰節(jié)點(diǎn)(1,2,3,4),表明節(jié)點(diǎn)5和6也是相似的,而1階相似度顯然并不能描述這種關(guān)系,所以會用到2階相似度來描述。圖1-27信息網(wǎng)絡(luò)的一個典型例子1.5.3node2vec方法在DeepWalk和LINE的基礎(chǔ)之上,斯坦福大學(xué)在2016年發(fā)布了node2vec。該算法不但關(guān)注了同質(zhì)性和結(jié)構(gòu)性,更可以在兩者之間進(jìn)行權(quán)衡。圖1-28展示了node2vec方法的兩種搜索策略,其中,BFS表示廣度優(yōu)先,DFS表示深度優(yōu)先。node2vec所體現(xiàn)的網(wǎng)絡(luò)的同質(zhì)性和結(jié)構(gòu)性在推薦系統(tǒng)中也是可以被直觀地解釋的。同質(zhì)性相同的物品很可能是同品類、同屬性或者經(jīng)常被一同購買的物品,而結(jié)構(gòu)性相同的物品則是各品類的爆款、最佳湊單商品等擁有類似趨勢或者結(jié)構(gòu)性屬性的物品。毫無疑問,同質(zhì)性和結(jié)構(gòu)性在推薦系統(tǒng)中都是非常重要的特征表達(dá)。由于node2vec的這種靈活性,以及發(fā)掘不同特征的能力,甚至可以把不同node2vec生成的Embedding融合輸入后續(xù)深度學(xué)習(xí)網(wǎng)絡(luò),以保留物品的不同特征信息。圖1-28節(jié)點(diǎn)U的BFS和DFS搜索策略1.5.4GraphEmbedding在阿里的應(yīng)用以淘寶為例,每天用戶瀏覽商品時(shí)都會留下軌跡,如圖1-29所示。圖1-29對用戶在淘寶瀏覽商品的GraphEmbedding示意這些軌跡或圖形中隱含著豐富的信息,如用戶對物品(Item)的偏好、用戶相似關(guān)系、各物品的優(yōu)劣、物品廣告的宣傳效果、物品之間的依賴關(guān)系、物品與用戶的關(guān)系等,如何通過這些信息對用戶進(jìn)行個性化推薦或優(yōu)先排序就顯得非常重要。阿里工程師把他們的經(jīng)驗(yàn)匯集成論文—Billion-scaleCommodityEmbeddingforE-commerceRecommendationinAlibaba,在業(yè)界引起了很大反響。阿里為此把整個過程分成如圖1-29所示的四個步驟。1)根據(jù)用戶的行為數(shù)據(jù),構(gòu)建每個用戶在每次會話中的瀏覽序列。例如,用戶U2兩次訪問淘寶,第一次查看了兩個物品B和E,第二次查看了三個物品D、E和F。2)通過用戶的行為數(shù)據(jù),建立一個商品圖(ItemGraph),可以看出,因?yàn)橛脩鬠1先后購買了物品A和物品B,所以物品A與B之間會產(chǎn)生一條由A到B的有向邊。如果后續(xù)產(chǎn)生了多條相同的有向邊,則有向邊的權(quán)重被加強(qiáng)。在將所有用戶行為序列都轉(zhuǎn)換成物品相關(guān)圖中的邊之后,全局的物品相關(guān)圖就建立起來了。3)通過隨機(jī)游走方式對圖進(jìn)行采樣,重新獲得物品序列。4)使用Skip-Gram模型進(jìn)行嵌入。在具體實(shí)施過程中,主要可能遇到如下幾個技術(shù)問題??蓴U(kuò)展性(Scalability)問題。盡管已經(jīng)存在很多可以在小規(guī)模數(shù)據(jù)集上很好地工作的推薦方法(例如數(shù)百萬的用戶和物品),但它們通常會在淘寶的海量數(shù)據(jù)集上試驗(yàn)失敗。數(shù)據(jù)稀疏性(Sparsity)問題。由于用戶趨向于只與小部分的物品交互,特別是當(dāng)用戶或物品只有少量交互時(shí),很難訓(xùn)練一個精準(zhǔn)的推薦模型,這通常被稱為“稀疏性”問題。冷啟動(ColdStart)問題。在淘寶,每小時(shí)均會有數(shù)百萬的新物品持續(xù)上傳。這些物品沒有用戶行為,所以,處理這些物品或者預(yù)測用戶對這些物品的偏好是個很大的挑戰(zhàn),這被稱為“冷啟動”問題。針對這些問題,阿里淘寶團(tuán)隊(duì)提出了基于GraphEmbedding的算法來解決。具體方法如下。1.BaseGraphEmbedding(BGE)使用DeepWalk算法來學(xué)習(xí)在圖1-29b中每個節(jié)點(diǎn)的Embedding。假設(shè)M表示圖1-29b的鄰近矩陣,Mij表示從節(jié)點(diǎn)i指向節(jié)點(diǎn)j的加權(quán)邊。先通過隨機(jī)游走的方式生成節(jié)點(diǎn)序列,然后在這些序列上運(yùn)行Skip-Gram算法。2.GraphEmbeddingwithSideInformation(GES)該方案增加物品的額外信息(例如category、brand、price等)以豐富物品表征力度。針對每件物品(Item),將得到item_embedding、category_embedding、brand_embedding、price_embedding等Embedding信息,然后對這些信息求均值,用于表示該物品。3.EnhancedGraphEmbeddingwithSideInformation(EGES)該組合模型在表示各item_embedding時(shí),會對物品和額外信息的Embedding施加不同的權(quán)重。權(quán)重值通過模型訓(xùn)練得到。EGES的流程圖見圖1-30。圖1-30GES和EGES的總框架關(guān)于圖1-30,有幾點(diǎn)需要說明。1)SI表示額外信息(SideInformation),其中“SI0”表示item自身。2)稀疏特征(SparseFeature)代表物品和額外信息的ID信息,類似于獨(dú)熱向量。3)稠密嵌入(DenseEmbedding)是物品和相應(yīng)的額外信息的Embedding信息。4)α1,α2,…,αn分別代表物品和額外信息的Embedding權(quán)重。5)隱藏層是物品和它相應(yīng)的額外信息的聚合Embedding。6)Softmax采樣分類器中的N代表采樣的負(fù)樣本,P代表正樣本。目前能進(jìn)行嵌入的“工具”只有Skip-Gram,只能處理類似序列這樣一維的關(guān)系輸入。因此,當(dāng)我們需要在二維關(guān)系上進(jìn)行“采樣”時(shí),可以使用隨機(jī)游走算法實(shí)現(xiàn)。1.5.5知識圖譜助力推薦系統(tǒng)實(shí)例將知識圖譜作為輔助信息引入推薦系統(tǒng)中,可以有效解決傳統(tǒng)推薦系統(tǒng)存在的稀疏性和冷啟動問題,近幾年有很多研究人員在做相關(guān)的工作。目前,將知識圖譜特征學(xué)習(xí)應(yīng)用到推薦系統(tǒng)中的方式主要有三種:依次學(xué)習(xí)(One-by-OneLearning)、聯(lián)合學(xué)習(xí)(JointLearning)以及交替學(xué)習(xí)(AlternateLearning)。1.依次學(xué)習(xí)依次學(xué)習(xí)的具體學(xué)習(xí)方法是首先使用知識圖譜特征學(xué)習(xí)得到實(shí)體向量和關(guān)系向量,然后將這些低維向量引入推薦系統(tǒng),學(xué)習(xí)得到用戶向量和物品向量,如圖1-31所示。圖1-31依次學(xué)習(xí)2.聯(lián)合學(xué)習(xí)聯(lián)合學(xué)習(xí)是指將知識圖譜特征學(xué)習(xí)與推薦算法的目標(biāo)函數(shù)結(jié)合,使用端到端(end-to-end)的方法進(jìn)行聯(lián)合學(xué)習(xí),如圖1-32所示。圖1-32聯(lián)合學(xué)習(xí)3.交替學(xué)習(xí)交替學(xué)習(xí)是指將知識圖譜特征學(xué)習(xí)和推薦算法視為兩個分離但又相關(guān)的任務(wù),使用多任務(wù)學(xué)習(xí)(Multi-TaskLearning)的框架進(jìn)行交替學(xué)習(xí),如圖1-33所示。圖1-33交替學(xué)習(xí)1.6ContextualWordEmbedding前面介紹了因word2vec而流行的WordEmbedding,這種表示方法比離散的獨(dú)熱編碼要好很多,因?yàn)樗粌H降低了維度,還可以反映出語義空間中的線性關(guān)系,如“國王-王后≈男-女”這種相似關(guān)系。因此word2vec及其他類似方法幾乎是所有深度模型必備的方法。但是,這類表示方法是根據(jù)語料庫生成的字典,一個單詞對應(yīng)一個固定長度的向量,如果遇到一詞多義的情況,它就無能為力了。例如,在由“蘋果股票正在上漲(Applestockisrising),我不要這個蘋果(Idon’twantthisapple)”構(gòu)成的語料中,如果用word2vec模型實(shí)現(xiàn)詞嵌入,就無法區(qū)分這兩個蘋果的含義。一詞多義的情況是非常普遍的,如何有效解決一詞多義的問題,一直是人們孜孜以求的目標(biāo)。本節(jié)將圍繞ContextualWordEmbedding(語境詞嵌入)這個話題展開,討論如何解決一詞多義的問題。根據(jù)word2vec生成詞嵌入的特點(diǎn),人們又稱其為靜態(tài)詞嵌入。無論上下文及其含義是什么,靜態(tài)詞嵌入都會給出相同的表示。所以,如果要考慮上下文,我們不能使用靜態(tài)詞嵌入的方法,而應(yīng)該使用動態(tài)詞嵌入(或預(yù)訓(xùn)練模型+微調(diào))的方法來處理。ELMo、GPT、GPT-2、BERT、ENRIE、XLNet、ALBERT等都屬于此類動態(tài)詞嵌入方法,它們極大提升了相關(guān)領(lǐng)域的性能,且目前還處于飛速發(fā)展之中。1.6.1多種預(yù)訓(xùn)練模型概述詞嵌入是預(yù)訓(xùn)練模型(Pre-TrainedModel,PTM)的學(xué)習(xí)載體,根據(jù)詞嵌入的學(xué)習(xí)方式,可分為上下文無關(guān)和上下文有關(guān)兩類,兩者的區(qū)別在于一個詞語的嵌入是否隨著上下文動態(tài)地變化。上下文無關(guān)的詞嵌入(Non-contextualWordEmbedding)只關(guān)注學(xué)習(xí)詞嵌入的單一表示的預(yù)訓(xùn)練模型(如word2vec),訓(xùn)練完成后,其詞嵌入就固定了(或處于靜態(tài)),而且一個詞對應(yīng)一個固定詞向量,其預(yù)訓(xùn)練的詞嵌入雖可以捕獲單詞的語義,但無法解決一詞多義問題,而一詞多義在NLP中是非常普遍的。為解決這個問題,人們提出了上下文有關(guān)的詞嵌入。上下文有關(guān)的詞嵌入(ContextualWordEmbedding)以學(xué)習(xí)上下文相關(guān)的詞嵌入的預(yù)訓(xùn)練模型(如ELMo、BERT、GPT、XLNet等)是目前的研究重點(diǎn),而且在很多領(lǐng)域取得了業(yè)內(nèi)最好水平(SOTA),原因主要在于這些采用上下文有關(guān)學(xué)習(xí)方式的預(yù)訓(xùn)練模型是動態(tài)的。它們之所以能動態(tài),是因?yàn)檫@些預(yù)訓(xùn)練模型除帶有學(xué)習(xí)到的結(jié)果(即詞嵌入)外,還帶有學(xué)習(xí)這些詞嵌入的模型架構(gòu)和學(xué)到的權(quán)重參數(shù)等。因此,把這些預(yù)訓(xùn)練模型遷移到下游任務(wù)時(shí),便可根據(jù)上下文動態(tài)調(diào)整。有些預(yù)訓(xùn)練模型甚至無須遷移,根據(jù)少量的提示語,就可直接生成新的語句,如GPT-2、GPT-3。這些動態(tài)的預(yù)訓(xùn)練模型,依據(jù)的語言模型不盡相同,可謂“八仙過海各顯神通”。ELMo、GPT采用自回歸語言模型(AutoregressiveLanguageModel,通常簡寫為ARLM)\h[1]、BERT使用掩碼語言模型(MaskLanguageModel,MLM)、XLNet采用排列語言模型(PermutedLanguageModel,PLM)。接下來對這三種語言模型做個簡單介紹,詳細(xì)說明請參考本書附錄B。1.自回歸語言模型自回歸語言模型是指通過給定文本的上文或下文,對當(dāng)前字進(jìn)行預(yù)測。例如,根據(jù)上文內(nèi)容預(yù)測下一個可能跟隨的單詞,即我們常說的自左向右的語言模型任務(wù),或者反過來,根據(jù)下文預(yù)測前面的單詞,這種類型的LM被稱為自回歸語言模型,其損失函數(shù)(從左到右)如下所示:其中:x<t={x1,x2,…,xt-1},T為輸入序列的長度。損失函數(shù)(從右到左)如下所示:其中:x>t={xt+1,xt+2,…,xT},T為輸入序列的長度。自回歸語言模型表示序列文本的聯(lián)合概率分布,為降低對長文本的概率估算難度,通常使用一個簡化的n-gram模型。代表模型有ELMo、GPT、GPT-2等。2.Mask語言模型Mask語言模型通過在輸入序列中隨機(jī)掩藏掉一部分單詞,然后通過訓(xùn)練來預(yù)測這些被掩藏掉的單詞。這點(diǎn)與噪音自編碼(DenoisingAutoencoder)很相似,那些被掩藏掉的單詞就相當(dāng)于在輸入側(cè)加入的所謂噪音。其損失函數(shù)如下所示:其中m(x)、分別表示從輸入序列X中被掩藏的標(biāo)識符集以及剩余的標(biāo)識符集。代表模型有BERT、ERNIE、ALBERT。3.排列語言模型排列語言模型綜合了自回歸語言模型和Mask語言模型的優(yōu)點(diǎn)。其損失函數(shù)如下所示:其中,Z<t=perm(X),即序列X的隨機(jī)排列。代表模型為XLNet。1.6.2多種預(yù)訓(xùn)練模型的發(fā)展脈絡(luò)近些年基于深度學(xué)習(xí)的NLP技術(shù)的重大進(jìn)展主要包括NNLM(2003)、WordEmbedding(2013)、Seq2Seq(2014)、Attention(2015)、Transformer(2017)、GPT(2018)、BERT(2018)、XLNet(2019)、GPT-2(2019)、GPT-3(2020)等,主要預(yù)訓(xùn)練模型的大致發(fā)展脈絡(luò)可用圖1-34所示。圖1-34預(yù)訓(xùn)練模型發(fā)展脈絡(luò)各種主要預(yù)訓(xùn)練模型的特征、抽取特征方法、使用語言模型類別等內(nèi)容如表1-3所示。表1-3各種預(yù)訓(xùn)練模型的特點(diǎn)1.6.3各種預(yù)訓(xùn)練模型的優(yōu)缺點(diǎn)上節(jié)介紹了各種預(yù)訓(xùn)練模型,這些模型各有優(yōu)點(diǎn)和缺點(diǎn),新模型往往是在解決舊模型缺點(diǎn)的基礎(chǔ)上提出的,如圖1-35所示。圖1-35近些年預(yù)訓(xùn)練模型遇到的問題及解決方法1.6.4常用預(yù)訓(xùn)練模型預(yù)訓(xùn)練模型很多,發(fā)展也很迅速,這節(jié)我們介紹幾種常用的預(yù)訓(xùn)練模型。1.ELMo預(yù)訓(xùn)練模型2018年的早些時(shí)候,AllenNLP的MatthewE.Peters等人在論文DeepContextualizedWordRepresentations(該論文獲得了NAACL最佳論文獎)中首次提出了ELMo(EmbeddingfromLanguageModel)預(yù)訓(xùn)練模型。從名稱上可以看出,ELMo為了利用無標(biāo)記數(shù)據(jù),使用了語言模型。ELMo是最早進(jìn)行語境化詞嵌入的方法之一,是典型的自回歸預(yù)訓(xùn)練模型,包括兩個獨(dú)立的單向LSTM實(shí)現(xiàn)的單向語言模型。ELMo的基本框架是一個雙層的Bi-LSTM,每層對正向和反向的結(jié)果進(jìn)行拼接,同時(shí)為增強(qiáng)模型的泛化能力,在第一層和第二層之間加入了一個殘差結(jié)構(gòu)。因此,ELMo在本質(zhì)上還是一個單向的語言模型,其結(jié)構(gòu)如圖1-36所示。圖1-36ELMo模型結(jié)構(gòu)2.Transformer簡介從表1-3可知,現(xiàn)在很多預(yù)訓(xùn)練模型均采用一種稱為Transformer的特征提取器,之前我們一般采用RNN、LSTM等方法處理序列問題,這些方法在處理自然語言處理、語音識別等序列問題方面有一定優(yōu)勢,但也存在一些不足,如需要按次序處理問題時(shí),這種按部就班的方法在大量的語料庫面前就顯得力不從心。其間雖然有人嘗試用CNN方法避免這種串聯(lián)式的運(yùn)行方法,但效果不佳。而現(xiàn)在很多自然語言處理、語言識別、推薦算法、搜索排序等問題都需要依賴大量的語料庫或成千上萬的用戶數(shù)據(jù)等,所以,如何解決這個問題成為新的瓶頸。Transformer就是為解決類似問題而提出的,目前在很多領(lǐng)域的性能已遠(yuǎn)超RNN、LSTM。Google于2017年6月在arxiv上發(fā)布了一篇非常經(jīng)典的文章—Attentionisallyouneed。該論文使用Self-Attention的結(jié)構(gòu)代替LSTM,拋棄了之前傳統(tǒng)的Encoder-Decoder模型必須結(jié)合CNN或者RNN的固有模式,在減少計(jì)算量和提高并行效率的同時(shí)還取得了更好的結(jié)果。該論文也被評為2017年NLP領(lǐng)域的年度最佳論文。Transformer有兩大亮點(diǎn):平行處理序列問題,利用Self-Attention機(jī)制有效解決長期依賴問題。詳細(xì)內(nèi)容將在本書第5章介紹。3.GPT、GPT-2和GPT-3預(yù)訓(xùn)練模型GPT是在OpenAI團(tuán)隊(duì)于2018年6月發(fā)表的一篇論文GenerativePre-Training中提出的。從名字上就可以看出GPT是一個生成式的預(yù)訓(xùn)練模型,與ELMo類似,也是一個自回歸語言模型。與ELMo不同的是,其采用多層單向的TransformerDecoder作為特征抽取器,多項(xiàng)研究也表明,Transformer的特征抽取能力是強(qiáng)于LSTM的。GPT-2、GPT-3與GPT模型框架沒有大的區(qū)別,GPT-2和GPT-3使用了更大的模型、更多的且質(zhì)量更高的數(shù)據(jù)、涵蓋范圍更廣的預(yù)訓(xùn)練數(shù)據(jù),并采用了無監(jiān)督多任務(wù)聯(lián)合訓(xùn)練等。4.BERT模型BERT模型是由GoogleAI的JacobDevlin和他的合作者們于2018年10月在arXiv上發(fā)表的一篇名為BERT:Pre-trainingofDeepBidirectionalTransformersforLanguageUnderstanding的論文中提出的。BERT屬于MLM模型,通過超大數(shù)據(jù)、巨大模型和極大的計(jì)算開銷訓(xùn)練而成,在11個自然語言處理的任務(wù)中取得了最優(yōu)(SOTA)結(jié)果,并在某些任務(wù)性能方面得到極大提升。1.6.5Transformer的應(yīng)用目前主流的預(yù)訓(xùn)練模型,大都以2017年谷歌提出的Transformer模型作為基礎(chǔ),并以此作為自己的特征抽取器。可以說,Transformer自從出現(xiàn)以來就徹底改變了深度學(xué)習(xí)領(lǐng)域,最早波及NLP領(lǐng)域,近些年又向傳統(tǒng)的搜索、推薦等領(lǐng)域拓展。更可喜的是,目前Transformer也開始在視覺處理領(lǐng)域開疆拓土、攻城略地了。本節(jié)就將介紹Transformer在推薦系統(tǒng)及視覺處理方面的典型應(yīng)用。1.Transformer在推薦系統(tǒng)中的應(yīng)用2019年阿里搜索推薦團(tuán)隊(duì)在arXiv上發(fā)布了論文BehaviorSequenceTransformerforE-commerceRecommendationinAlibaba。文中提出BST模型,利用Transformer中的多頭自注意力(Multi-HeadSelf-Attention)機(jī)制替換LSTM,捕捉用戶行為序列的序列信息,取得了非常好的效果,目前BST已經(jīng)部署在淘寶推薦的精排階段,每天為數(shù)億消費(fèi)者提供推薦服務(wù)。BST網(wǎng)絡(luò)架構(gòu)見圖1-37。圖1-37BST網(wǎng)絡(luò)架構(gòu)圖圖1-38是使用BST與傳統(tǒng)方法的比較結(jié)果。圖1-38BST與傳統(tǒng)方法的對比目前,比較常用的Transformer應(yīng)用實(shí)例有谷歌的推薦系統(tǒng)WDL(WideandDeepLearning)和阿里的推薦系統(tǒng)DIN(DeepInterestNetworkforClick-ThroughRatePrediction)。2.Transformer在視覺處理領(lǐng)域的應(yīng)用2020年12月,北京大學(xué)聯(lián)合華為諾亞方舟實(shí)驗(yàn)室、悉尼大學(xué)、鵬城實(shí)驗(yàn)室提出了一個圖像處理Transformer(ImageProcessingTransformer,IPT),他們把Transformer
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 第三單元第10課 秦末農(nóng)民大起義2023-2024學(xué)年七年級上冊歷史同步教學(xué)設(shè)計(jì)(部編版)
- 13 我想和你們一起玩(教學(xué)設(shè)計(jì))2023-2024學(xué)年統(tǒng)編版道德與法治 一年級下冊
- 2025至2030年中國抱壓式液壓閥門測試機(jī)數(shù)據(jù)監(jiān)測研究報(bào)告
- 商業(yè)計(jì)劃書中的財(cái)務(wù)分析
- 商務(wù)合作保密協(xié)議范本(2篇)
- 陜西省渭南市2022版八年級下學(xué)期物理期末考試試卷D卷
- 2025至2030年中國床榻數(shù)據(jù)監(jiān)測研究報(bào)告
- 二零二五年度餐飲店面租賃合同含特色餐飲培訓(xùn)課程
- 2025年度航空航天裝備制造資金入股合作協(xié)議書
- Starter Unit 1 Hello!SectionA (1a~2d)(第一課時(shí))教學(xué)設(shè)計(jì)- - 2024-2025學(xué)年人教版七年級英語上冊
- 《自主創(chuàng)新對于鋼結(jié)構(gòu)發(fā)展的重要性》2400字
- 食品采購與進(jìn)貨臺賬
- GB/T 24353-2022風(fēng)險(xiǎn)管理指南
- GB/T 6284-2006化工產(chǎn)品中水分測定的通用方法干燥減量法
- GB/T 3003-2017耐火纖維及制品
- GB/T 22080-2016信息技術(shù)安全技術(shù)信息安全管理體系要求
- GB/T 13915-2013沖壓件角度公差
- 制藥工程導(dǎo)論課件
- 瑜伽師地論(完美排版全一百卷)
- 槳聲燈影里的秦淮河1-課件
- 蘇教版五年級下冊科學(xué)知識點(diǎn)全冊
評論
0/150
提交評論