機器之心分析師網絡
在本文中,作者首先為讀者普及了 word2vec 的基礎知識,然後以六篇論文為示例詳細介紹了當前研究如何利用經典 word2vec 進行拓展性研究。其中,作者重點介紹的部分是知識嵌入空間的生成過程,對於其完整應用感興趣的讀者可以參閲原論文。
隨着深度學習的興起,每個模型都需要一個輸入,而我們現實生活中的對象(文字、圖片)等等都不是數字,計算機無法處理。所以如何為每個任務確定一個合適的 “輸入” 就變得尤其重要了,這個過程也被叫做表徵學習。
word2vec 做的就是把文字變成對計算機有意義的輸入,簡單來説就是把這些東西映射到一個空間裏,我們平時為了表示位置可能是三維空間,也就是 xyz,但是在圖片啊、文本啊這種領域裏,三維空間不太夠,就可能去到另外一個 N 維空間,在這個空間裏,就像三維空間裏人的鼻子要跟嘴捱得近一樣,我們也希望相似的東西在這個新的空間裏也距離近,比如文本里的 “鼻子” 和“嘴”我們就也希望它們能捱得近一點,因為都屬於五官,那麼 “鼻子” 和“腿”就相對離得遠一點。
顧名思義,word2vec 是把文字轉換成計算機可以識別的輸入,所以這個技術最開始應用、也是應用最多的地方就是自然語言處理領域(NLP)。其實在之前對於表徵學習,我基於 ICLR 和 CVPR 做過兩次 high-level 的總結,但是這次這篇文章主要着眼於 word2vec,從細節着手,看看 word2vec 中發現的空間是如何被改進並使用的,同時也看一下基於 word2vec 的原理髮現的新空間。在開始正題之前,為了防止有人不清楚 word2vec 從而影響對後文的理解,這裏科普一下本文會用到的相關基本概念。
1、word2vec 簡介
什麼是 word2vec:Word2Vec 是一個過程(技術),在這個過程中,將文本作為神經網絡的訓練數據,這個神經網絡的輸出向量被稱作嵌入,這些嵌入(向量)在訓練後會包含單詞的語義信息。這個過程做的就是從每個單詞有多個維度的空間嵌入到具有低得多維度的連續向量空間。向量嵌入可以在真實對象的 “離散” 世界和機器學習的 “可微分” 世界之間架起一座橋樑,因此在數據庫研究方面具有巨大的潛力。一類對象的嵌入向量是從 X 映射到某個向量空間,稱為潛空間,我們通常假設它是一個有限維 d 的實向量空間 R^d。
如何去衡量:在使用嵌入的時候,我們應該考慮幾個問題——對象的哪些屬性用嵌入表示?我們用的距離測量的意義是什麼?潛空間的幾何性質是否對應了 X 上有意義的關係?當然同時,我們也要考慮計算向量嵌入的計算成本。
2、完善舊空間
瞭解了 word2vec 的基本常識,就可以正式進入正題了。在上一節説過,我們在建立一個嵌入空間的時候,我們要考慮的是對象的那些屬性需要在嵌入空間中被表徵。word2vec 在傳統的 NLP 任務中表現得很好,但是在一些新的、較為複雜的任務中,有一些屬性就不能很好的被體現了,因為最開始 word2vec 模型是完全基於文本進行訓練,而很多關係是在文本中很難體現出的,比如 “看” 和“吃”,單獨看這兩個詞,就算是我們也很難想到它們是有聯繫的。
這也不難理解,人類在感知這個世界的時候用到的模式不只是看,還有聽、聞等等,同樣的,在看的時候,看的也不只是書面上的文字,而語言卻是傳遞知識的載體,所以現在研究者開始用不同的感知模式(聲音、圖片)來學習語言模型(multi-modal learning),從而讓語言模型學出的嵌入能夠更加全面的表徵我們人類的理解能力。
至於技術層面,其實回溯到語言模型最開始起源的那階段,語言模型跟遷移學習類似於一對兄弟,只不過進入了不同的領域,也就有了不同的名字。比如説在 NLP 任務中,語言模型先被訓練好,然後後面直接用預訓練好的語言模型來進行下面的任務,像不像凍住了前面幾層的遷移學習(如果這個看不懂,也不太影響後面的理解,覺得放不下的可以看看機器之心之前的文章,有很多基礎教程的,這裏就不做介紹啦)。
之所以説遷移學習,是因為如果想要達到完善 word2vec 空間的效果,其實就是類似於遷移學習裏的全局 finetune,把前面的語言模型(一開始凍住的層)也放進訓練裏來。
為了展示當前研究具體是怎麼利用 word2vec 進行拓展應用,這一節對四篇論文進行簡要介紹,從而展示圖片和聲音是如何加強已有的 word2vec 嵌入空間的表徵能力的。當然這裏介紹的知識嵌入空間的生成過程,原論文中還有其他的創新點,如果有興趣可以再去拜讀一下完整論文。
2.1 Visual Word2Vec (vis-w2v) [1]
論文鏈接:https://arxiv.org/pdf/1511.07067.pdf
獲取了 H(N_H 就是嵌入的維度)之後,這個 H 就作為最終的特徵向量,利用 W_O 將其進行映射 N_K 維(一共有 N_K 類,這裏的 N_K 後面解釋),對其進行 softmax 操作之後,就可以知道這段文本(w_1-w_l)屬於哪一類了,這一步就是做了一個分類。
如果瞭解 NLP 任務的話,H 的獲取的第一步跟平時我們獲取 embedding 的方式一樣,因為這裏的 W_I 是初始化為傳統 CBOW 的權重,所以這一步其實就是獲取這些詞的傳統嵌入,然後對其取平均作為整個窗口所有詞的特徵,然後做了一個分類任務。
然後回到 w,這裏的 w 允許對各種形式的 w 進行選擇,比如完整的句子或形式的元組 (主要對象、關係、次要對象)。w 的選擇取決於我們所關心的任務。例如,在常識斷言分類和基於文本的圖像檢索中,w 是元組中的短語,而在視覺釋義中,w 是句子。給定 w,S_w 也是可調的。它可以包括所有的 w(例如,從元組中的一個短語學習時) 或單詞的一個子集(例如,從句子中的一個 n 元上下文窗口學習時)。
最後再説一下效果,這個任務其實就是在 w2v 的基礎上進行 finetune,這種直接進行全局 finetune 的效果,據論文中所説,也可以保持最開始 w2v 的效果,就是如果一些詞在 finetune 過程中沒有出現,它們就會保持原有的語義特性,這種全局 finetune 並不會讓新型的 w2v 在傳統任務中變得更差。
如下表 1 所示的視覺轉述任務對比中,vis-w2v 的效果比單純的 w2v 任務要好很多。
表 1:轉述任務平均準確率(AP)。表源:[1]
2.2 Visually Supervised Word2Vec (VS-Word2Vec) [2]
論文鏈接:https://ieeexplore.ieee.org/abstract/document/8675640?casa_token=lw7U2LlGUk4AAAAA:uhM9BVykvRQyYoWE5KCq3BfjUSjLRED2yV7nktCUgw3jDcAh_R2xx8iV7Az3pBWTZPBQ87cQzEgd
這篇論文也是想將圖片中的信息傳遞給 w2v,讓 w2v 空間能夠更好地表徵圖片中的信息。上一篇論文是將廣義的圖片信息加入到 w2v 中(通過圖片的相似度來引導詞的相似度),而這篇論文的全稱則是 Embedded Representation of Relation Words with Visual Supervision,顧名思義,就是為了讓嵌入空間能夠更好地表徵關係詞(“我拿着包”裏的 “拿着” 就是關係詞)。
本文除了與第一篇論文要表徵的信息不同之外,所用的方法也不一樣,其根本思想就是:如果這個詞是關係詞,那麼就讓上面(CNN)產生的詞嵌入跟下面產生的嵌入儘量相同,但是如果這個詞不是關係詞,那就不管上面的,跟傳統的 CBOW 訓練完全一樣。
這裏的 y_wi 就是某個關係詞 wi 的表徵,具體就是利用 VGG 來得到這個關係詞對應的所有圖片(Q_i 張圖)的特徵向量(y_wi^q),然後對這些特徵向量取平均值。前面説過,如果訓練的詞屬於關係詞,那麼作者希望通過 CBOW 和通過 CNN 生成的兩種 embedding 儘量一致,本文中的不一致性則由下式衡量:
這裏的 s_ij 表示關係詞 i 和關係詞 j 的餘弦相似度,右下角標的 r 代表這是關係詞,x 則代表 CBOW 中產生的詞嵌入,v 則代表 CNN 中生成的詞嵌入,這個式子中 J 越小越好。
首先 D 是 CBOW 的訓練集,然後對於這個訓練集中的每個詞,計算兩個損失 e1 和 e2,e1 就是前半部分,也就是傳統 CBOW 的損失,e2 是後半部分,衡量了兩種 embedding 的不一致性(J_V),\lambda 就是個可調的超參數,p_t 表示 w_t 是不是關係詞,如果是關係詞,那麼 p_t=1,保留後半部分,如果不是關係詞,則變成傳統的 CBOW 訓練過程。
使用這種方法後,作者在 SimVerb-3500 中的九個類別的同義詞(SYNONYMS, ANTONYMS, HYPER/HYPONYMS, COHYPONYM,NONE )進行了對比,對比結果如表 2 所示,總體來説是比 CBOW 要好的,而且一些特別的類中,效果的提升還很大。
表 2:同義詞一致性結果。表源:[2]
2.3 Action2Vec [4]
論文鏈接:https://arxiv.org/pdf/1901.00484.pdf
具體來説,左邊先使用由 [5] 中數據集預訓練好的 C3D 模型來提取每一幀的圖片的特徵向量,然後使用了一個 Hierarchical Recurrent Neural Network (HRNN) ,並加入了自注意力機制,最後通過一個全連接層(fully connected weights)將 LSTM2 得到的視頻嵌入變成跟詞嵌入相同維度的向量,最後這個向量又通過一個全連接層做了一個分類任務,判斷這個視頻對應的動作是什麼。然後通過一個“雙損失”(cross entropy+pairwise ranking)來讓改善後的 joint embedding space 同時具有視頻和文本的語義信息。
雙損失(dual loss):這裏的雙損失就是指 cross entropy 加 pairwise ranking loss,cross entropy 這裏就不多做介紹,對應的就是上面説的分類任務,pairwise ranking loss(PR loss)如果不瞭解的可以看一下這篇文章(https://gombru.github.io/2019/04/03/ranking_loss/),會更容易理解下面的式子。這裏的 PR loss 定義為下式:
最後需要説明的一點是因為兩個數據庫的詞並不能完全一致,可能會出現視頻數據庫中的詞在 word2vec 詞庫中不存在的情況,這時這些動詞就會被轉化成對應的形式(如 walking 變成 walk 等)。
實驗部分,作者在 ZSAL(Zero Shot Action Learning)任務中與其他 ZSL 模型進行了對比,可見作者提出的模型在各個數據集上的效果都是最好的。
表 3:ZSAL(Zero Shot Action Learning)模型效果對比。表源:[4]
2.4 sound-word2vec [7]
論文鏈接:https://arxiv.org/pdf/1703.01720.pdf
與第一篇論文一樣,這裏分類任務的標籤又是來自於聚類。s 先經過聚類得到類別標籤,然後這個標籤就用於訓練 W_P 和 W_O。整體上來説,這篇論文的思想跟第一篇論文差不多,但是論文中關於聲音如何表徵等的聲音處理還是很具有啓發性的,同時這篇論文再一次證明了整體 finetune 可以在改善傳統詞嵌入空間上取得不錯的效果。
這個方法的效果如表 4 所示,在普通詞上,效果跟 word2vec 差不多,但是在擬聲詞上,sound-word2vec 明顯表現就要好很多了。作者還在一些基於文本的擬聲詞識別任務中進行了實驗,效果比普通的 baseline 模型都要好很多(具體細節可以去看一下原論文)。
表 4:相似詞示例。表源:[7]
3、探索新空間
論文鏈接:https://link.springer.com/article/10.1007/s00521-018-3923-1
Google 在去年利用語言模型將蛋白質序列轉換成嵌入,從而實現了很多相關任務的飛躍,這個我曾經寫過一篇文章來專門介紹,這裏就不多做贅述,今天主要介紹這個方法是如何應用於音樂上,從而產生一個新的基於音樂的嵌入空間,新的嵌入空間樂理知識進行了表徵——音樂 + word2vec [6]。
因為這篇論文包含了比較專業的樂理知識,而對應的機器學習方法就相對比較傳統,就是一個 skip-gram 模型加上對樂譜進行編碼。但是論文中對樂譜各項樂理知識在樂譜嵌入空間的表徵情況進行了詳細分析,表明了 skip-gram 很好地從樂譜中學習到了樂理知識。
如果音片長於一拍,我們可能會失去音調和和絃變化上的細微差別。相反,如果切片短於一個節拍,則可能有太多重複的切片(其中切片之間的內容是相同的)。尋找切片的最佳持續時間也很重要,但是這篇文章並沒有涉及,相信一個更好的編碼方式會讓這個研究的效果更好。
因為這篇文章的價值不在於用了什麼機器學習方法,只是用了 skip-gram,故而不再對訓練過程進行講述啦。當然,這篇論文除了證明了 skip-gram 可以在音樂領域很好的獲取 chord 和 harmonic 特徵,還提供了很多音樂領域可以用的數據集(section 4),如果有興趣在這個領域做點什麼,這些數據集還是很有用的。
這篇論文的結果分析過於專業,如果想看一下音樂大師對這個模型的評價,可以去看一下原始論文,總之這個模型在各個方面表現的很好,對音樂有了解的同學可以看一下原論文中是怎麼分析的,或許對後續任務也有很大的幫助。
4、使用這個空間
論文鏈接:https://arxiv.org/pdf/1908.01211.pdf
最後,在討論瞭如何改善傳統詞嵌入空間和如何創建新嵌入空間之後,如何使用這個空間也很重要。但是因為本文不是對 word2vec 的介紹,所以傳統的 NLP 任務中 word2vec 的應用在此就不再多做介紹了,網上已經有很多實踐上或是理論上的科普文。這裏主要介紹詞嵌入是如何在 RL 中應用的——Word2vec to behavior [8]。
這裏的 a 代表聲學神經細胞,一開始先輸入命令,然後用這個命令的 embedding 初始化隱藏層 hi,這裏初始化是使用文中 5 個命令詞的 embedding 來先進行預訓練以初始化 h_1-h_5,命令詞為‘forward’, ‘backward’, ‘stop’, ‘cease’, ‘suspend’, and ‘halt’,其中後面四個詞表達的意思一致,所有一個不會被用來做初始化,作為測試組。初始化完成後,這些虛線的連接就會被刪除,然後機器人就進入仿真器開始仿真,將命令的嵌入輸入給機器人,然後通過各個傳感器 (s) 得到的信息進行動作。這個初始化就使得網絡獲取了語義信息。
經過評估後,將根據與命令配對的目標函數(例如懲罰運動的函數)對機器人的行為進行評分。然後,針對其他四個命令和目標函數,對同一策略進行四次以上的評估(B 和 C 分別對應兩次),對策略進行訓練,以針對所有這五個功能(D)最大化平均分數。經過訓練後,最佳策略會提供一個訓練時沒有的第六種同義詞 “cease”,並且其行為會根據“停止” 目標函數(E)進行評分。
最終的結果如下圖所示,每個顏色代表一種命令,可以看到作者的方法(第一個)訓練的機器人在 “停止” 這條命令上確實表現得比其他的要好。
總結
從本文提到的這些分析性或是創新性論文來看,skip-gram 和 CBOW 能夠很好地獲取我們生活生很多對象的語義(音樂、聲音等),而 multi-modal 是一個很好地完善現有嵌入空間的方法,在沒有 label 的情況下,合理的聚類也可以提供給模型輔助標籤。這個嵌入空間也不只是可以應用於 NLP 領域,還有很多其他領域可以直接套用 w2v 中生成的嵌入空間(如 RL)。
當然,未來還有很多其他可以探索的方向,比如發展比較初級的音樂領域,如何將聲音中的情緒結合到傳統的 w2v 模型中去等等。
總之,語言作為我們觀察和描述世界的一個基本要素,語言 基本覆蓋了我們生活的方方面面,在某些層面也反映了客觀世界的規律(比如語言學的“複合性原理”-compositionality),遇到無法解決的學習的問題的時候,語言模型或許會給你一點點啓發。
參考文獻
[1] Kottur, Satwik, et al. "Visual word2vec (vis-w2v): Learning visually grounded word embeddings using abstract scenes." Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2016.
[2] Wang, Xue, et al. "Embedded Representation of Relation Words with Visual Supervision." 2019 Third IEEE International Conference on Robotic Computing (IRC). IEEE, 2019.
[3] Lu, Cewu, et al. "Visual relationship detection with language priors." European conference on computer vision. Springer, Cham, 2016.
[4] Hahn, Meera, Andrew Silva, and James M. Rehg. "Action2vec: A crossmodal embedding approach to action learning." arXiv preprint arXiv:1901.00484 (2019).
[5] A. Karpathy, G. Toderici, S. Shetty, T. Leung, R. Sukthankar, and L. Fei-Fei. Large-scale video classification with convolutional neural networks. In CVPR, 2014. 4
[6] Chuan, C.-H., Agres, K., & Herremans, D. (2018). From context to concept: exploring semantic relationships in music with word2vec. Neural Computing and Applications. doi:10.1007/s00521-018-3923-1
[7] Vijayakumar, Ashwin K., Ramakrishna Vedantam, and Devi Parikh. "Sound-word2vec: Learning word representations grounded in sounds." arXiv preprint arXiv:1703.01720 (2017).
[8] Matthews, David, et al. "Word2vec to behavior: morphology facilitates the grounding of language in machines." arXiv preprint arXiv:1908.01211 (2019).
分析師介紹:
本文作者為王子嘉,目前在帝國理工學院人工智能碩士在讀。主要研究方向為 NLP 的推薦等,喜歡前沿技術,熱愛稀奇古怪的想法,是立志做一個不走尋常路的研究者的男人!