深度學習算法(第24期)----自然語言處理中的Word Embedding

2021-03-02 智能算法

上期我們一起學習了RNN的GRU模塊,

深度學習算法(第23期)----RNN中的GRU模塊
今天我們一起簡單學習下自然語言處理中的Word Embedding.

遇到了什麼問題?

我們知道,在前面的RNN或者CNN中,我們在訓練網絡的時候,不管輸入還是輸出,都是數值型的數據參與數學矩陣就算,然而面對自然語言中的單詞,是沒辦法進行矩陣運算的,那麼單詞該怎麼輸入到網絡中呢?

怎麼解決?

其實Word Embedding就是解決上面的問題的,也就是對單詞的轉換表述。我們在之前的分類中常用的標籤標示方法為one-hot向量,那麼這裡能不能也用one-hot向量呢?假如我們的詞彙有5000個詞,那麼一個詞用one-hot的方法標示的話,將會是一個5000維度的向量,這種稀疏的標示方法效率是及其低下的。
理想情況下,我們希望相似的詞有相似的標示方法,這樣模型就比較容易從一個詞推斷出和它相似的詞有相同的用法。比如說,如果我們告訴模型「I drink milk」是一個有效的句子,並且如果模型知道「milk」和「water」比較接近,跟「shoes」相差比較遠的話,那麼模型將知道句子「I drink milk」比「I drink shoes」靠譜的多。
標示詞彙中的一個詞最常用的方法就是用一個相對小的,稠密(非稀疏)的向量(比如150維),稱為一個embedding。那麼接下來的任務就是讓神經網絡對每一個詞訓練出一個比較好的embedding。在訓練的初期,embeddings基本上是隨機選擇的,但是經過網絡的前後傳輸之後,最終相似的詞將會聚類到一起,甚至會以某種更有意義的方式聚集到一起,比如性別,單複數,動名詞等等。
在tensorflow中,我們應該首先為詞彙中的每一個詞創建一個embedding(隨機初始化),如下:

vocabulary_size = 50000
embedding_size = 150
embeddings = tf.Variable(
tf.random_uniform([vocabulary_size, embedding_size], -1.0, 1.0))

現在,假如我們想將「I drink milk」輸入到網絡中,那麼我們首先需要對句子做預處理,比如將句子拆分成已知的詞,移除不必要的字符,替換未知字符。例如用[unk]代替未知的詞,用[num]代替數字,用[url]代替網址等等。一旦我們有了已知單詞的列表,那麼我們就可以從詞彙表中查找到相應單詞的整數索引(0~4999),比如說「I drink milk」轉換之後為[72, 3335, 288]。

train_inputs = tf.placeholder(tf.int32, shape=[None]) 
embed = tf.nn.embedding_lookup(embeddings, train_inputs)

如上,這個時候,我們就可以用一個placeholder來將這個句子輸入到網絡中了,並且用函數embedding_lookup()來獲取相應的embedding。
一旦我們的模型學到了比較好的embeddings,那麼這些embeddings也可以用在其他NLP的應用中,畢竟,「milk」基本上在任何應用中都和「water」相近,而和「shoes」相遠。事實上,一般情況下,我們都會去down一個別人訓練好的embeddings,而不是自己去重新訓練一個。就和之前學的復用訓練好的層一樣,復用別人訓練好的embeddings。

好了,至此,今天我們簡單學習了自然語言處理的word embedding的簡單知識,希望有些收穫,下期我們將一起學習下機器翻譯中的編碼解碼器,歡迎留言或進社區共同交流,喜歡的話,就點個「在看」吧,您也可以置頂公眾號,第一時間接收最新內容。

智能算法,與您攜手,沉澱自己,引領AI!

相關焦點

  • 自然語言處理 (三) 之 word embedding
  • 閒聊word_embedding
    NLP word embedding概述依稀記得去年數據挖掘課有講過這個概念,年輕不懂事,沒認真聽,只能現在補課對於自然語言處理其實目前涉及的比較少
  • 【CCCF專題】深度學習在自然語言處理中的應用
    來源:《中國計算機學會通訊》 2015年第3期《專題》作者:劉樹傑 董力 張家俊等深度學習簡介深度學習是近年來機器學習領域發展最為迅速的領域
  • 深度學習在自然語言處理研究上的進展
    在自然語言處理領域,雖然深度學習方法也收到越來越多的關注,在很多任務上也取得了一定效果,但是並沒有其它領域那麼顯著。傳統的主流自然語言處理方法是基於統計機器學習的方法,所使用的特徵大多數是基於onehot向量表示的各種組合特徵。這個特徵表示方式會導致特徵空間非常大,但也帶來一個優點。就是在非常高維的特徵空間中,很多任務上都是近似線性可分的。
  • NLP算法|解析Word Embedding
    但是如果詞袋中的詞成千上萬呢?那意味著需要構建較長的特徵向量,無論是計算還是作為特徵輸入到其他機器學習模型都不便;詞袋法生成的向量是one-hot encoding,它僅僅將單詞符號化,不包含任何語義信息。如何改進以上這二點呢?答案是Word embedding。Word embedding介紹首先我們介紹一下什麼是Embedding。
  • 萬物皆Embedding,從經典的word2vec到深度學習基本操作item2vec
    (https://zhuanlan.zhihu.com/wangzhenotes) 的第四篇文章,之前我們一起討論了阿里的DIN,YouTube的深度學習推薦系統,本來今天想再分享另一篇科技巨頭的業界前沿文章,Airbnb的Embedding方法 但因為文章中涉及word2vec的技術細節,為了保證一些初學者的知識是自洽的,我還是想在此之前詳細介紹一下深度學習的基本操作
  • 深度學習中不得不學的Graph Embedding方法
    word2vec和由其衍生出的item2vec是embedding技術的基礎性方法(我在之前的文章中也詳細介紹了二者的技術原理,王喆:萬物皆Embedding,從經典的word2vec到深度學習基本操作item2vec,連結:https://zhuanlan.zhihu.com/p/53194407),但二者都是建立在「序列」樣本(比如句子、推薦列表)
  • Graph Embedding:深度學習推薦系統的基本操作
    不論是 NLP(Normal Language Processing,自然語言處理),搜索排序,還是推薦系統,或者 CTR (Click-Through-Rate,點擊通過率)模型,Embedding 都扮演著不可或缺的角色。什麼是 Embedding?Embedding 在數學上表示一個映射關係, F: X -> Y, 也就是一個函數。
  • 自然語言處理中的深度遷移學習——文本預訓練
    我們從過去學到的知識中轉移和利用我們的知識來處理各種各樣的任務。有了計算機視覺,我們就有了優秀的大型數據集,比如ImageNet,在它之上我們可以獲得一套世界級的、最先進的預訓練模型來利用遷移學習。但是自然語言處理呢?考慮到文本數據是如此的多樣化、充斥著噪音以及非結構化的特點,這是一個嚴峻的挑戰。
  • 實踐入門NLP:基於深度學習的自然語言處理
    特別是最近兩年,基於深度學習的自然語言處理逐漸取得了一定進展,在人機對話、問答系統、語言翻譯等方向的應用也一直是自然語言處理中的熱門話題,而這些應用的實現,基本依賴於底層技術和模型的進步,再加上自然語言處理領域也算是一個多學科交叉的行業,自然語言處理的未來發展對於很多相關學科和方向都具有深遠的影響力。
  • 預告 | 跟李沐一起動手學深度學習第十六課:詞向量(word2vec)
    北京時間1月20日(周六)上午11點是將門聯合亞馬遜AI主任科學家李沐博士的《動手學深度學習》系列課程
  • 深度學習Keras中的Embedding層的理解與使用
    從文本學習單詞嵌入方法的兩個流行例子包括:除了這些精心設計的方法之外,還可以將詞嵌入學習作為深度學習模型的一部分。這可能是一個較慢的方法,但可以通過這樣為特定數據集定製模型。嵌入層用隨機權重進行初始化,並將學習訓練數據集中所有單詞的嵌入。它是一個靈活的圖層,可以以多種方式使用,例如:它可以單獨使用來學習一個單詞嵌入,以後可以保存並在另一個模型中使用。它可以用作深度學習模型的一部分,其中嵌入與模型本身一起學習。
  • 復旦大學黃萱菁:自然語言處理中的表示學習
    2020年6月20日,第16期「AI未來說·青年學術論壇」NLP前沿技術及產業化線上專場論壇以「線上平臺直播+微信社群圖文直播」形式舉行。復旦大學黃萱菁帶來報告《自然語言處理中的表示學習》。黃萱菁,復旦大學計算機科學技術學院教授、博士生導師。1998年於復旦大學獲計算機理學博士學位,研究領域為人工智慧、自然語言處理、信息檢索和社會媒體分析。
  • 深度學習之文本處理(6.1)
    後面章節介紹的深度學習序列處理模型有文檔分類、情感分析、作者識別和限制語境問答(QA)。當然了,要記住的是:這些深度學習模型並不是真正意義上以人的思維去理解文字,而只是書面語的統計結構映射而已。基於深度學習的自然語言處理可以看作對字詞、句子和段落的模式識別,這有點像計算機視覺中對像素的模式識別。
  • 從語言學到深度學習NLP,一文概述自然語言處理
    本文從兩篇論文出發先簡要介紹了自然語言處理的基本分類和基本概念,再向讀者展示了深度學習中的 NLP。這兩篇論文都是很好的綜述性入門論文,希望詳細了解自然語言處理的讀者可以進一步閱讀這兩篇論文。第二部分描述的是基於深度學習的 NLP,該論文首先描述了深度學習中的詞表徵,即從 one-hot 編碼、詞袋模型到詞嵌入和 word2vec 等,我們首先需要數字表徵詞彙才能進一步做自然語言處理。
  • 深度學習用於自然語言處理中的文本分類:工程實踐、三級文本、整體認識
    目錄一、深度學習用於文本分類自然語言處理等(13638字)11文本分類實戰--從TFIDF到深度學習(附代碼)[1](2714字)12文本分類實戰--分詞時加詞性標註,單獨訓練詞向量(附代碼)[2](1705字)83深度學習在三級文本分類中的應用[3](589字)9
  • 自然語言處理——圖解Word2vec
    如果你曾經使用Siri、Google Assistant、Alexa、Google翻譯,甚至智慧型手機鍵盤進行下一詞預測,那麼你很有可能從這個已經成為自然語言處理模型核心的想法中受益。在過去的幾十年中,嵌入技術用於神經網絡模型已有相當大的發展。尤其是最近,其發展包括導致BERT和GPT2等尖端模型的語境化嵌入。
  • 【自然語言處理】Word2Vec 概述及中文語料實戰
    對自然語言來說,本身並沒有包含計算機擅長處理的數值信息,因此,需要通過一定的手段將「自然語言」量化,進而利用已有的機器學習方法對自然語言進行處理、分析和預測。獨熱編碼也稱One-hot編碼 (一位有效碼),其方法是使用N位狀態寄存器來對N個狀態進行編碼,每個狀態都有它獨立的寄存器位,並且在任意時候,其中只有一位有效。
  • 深度學習推薦系統中各類流行的Embedding方法 (下)
    Microstrong將門好聲音第58期Embedding,中文直譯為「嵌入」,也可以被譯為「向量化」或者「向量映射」。形式上來說,Embedding就是用一個低維的向量表示一個物體,可以是一個詞,一個商品,或是一個電影。
  • 中文自然語言處理相關資料集合指南
    Includes BERT and word2vec embedding.QA-Snake (Python) 基於多搜尋引擎和深度學習技術的自動問答使用TensorFlow實現的Sequence to Sequence的聊天機器人模型 (Python)使用深度學習算法實現的中文閱讀理解問答系統 (Python)DuReader中文閱讀理解Baseline代碼 (Python)基於SmartQQ的自動機器人框架