nlp研究領域與方法的知識體系

看到一篇“語義分析的一些方法”的文章,對構建nlp知識體系比較有用,來源爲:

http://www.flickering.cn/ads/2015/02/%E8%AF%AD%E4%B9%89%E5%88%86%E6%9E%90%E7%9A%84%E4%B8%80%E4%BA%9B%E6%96%B9%E6%B3%95%E4%B8%80/

http://www.flickering.cn/ads/2015/02/%E8%AF%AD%E4%B9%89%E5%88%86%E6%9E%90%E7%9A%84%E4%B8%80%E4%BA%9B%E6%96%B9%E6%B3%95%E4%BA%8C/

主要分爲:

1.文本基本處理:分詞,語言模型(n-gram,rnn等),Term Weighting(可用於核心詞提取,包含TF-IDF等方法)。

2.文本語義分析:主題模型(pLSA,LDA等),詞向量句向量(word2vec),卷積神經網絡,文本分類

具體內容摘錄如下:

語義分析的一些方法(一)

語義分析,本文指運用各種機器學習方法,挖掘與學習文本、圖片等的深層次概念。wikipedia上的解釋:In machine learning, semantic analysis of a corpus is the task of building structures that approximate concepts from a large set of documents(or images)。

工作這幾年,陸陸續續實踐過一些項目,有搜索廣告,社交廣告,微博廣告,品牌廣告,內容廣告等。要使我們廣告平臺效益最大化,首先需要理解用戶,Context(將展示廣告的上下文)和廣告,才能將最合適的廣告展示給用戶。而這其中,就離不開對用戶,對上下文,對廣告的語義分析,由此催生了一些子項目,例如文本語義分析,圖片語義理解,語義索引,短串語義關聯,用戶廣告語義匹配等。

接下來我將寫一寫我所認識的語義分析的一些方法,雖說我們在做的時候,效果導向居多,方法理論理解也許並不深入,不過權當個人知識點總結,有任何不當之處請指正,謝謝。

本文主要由以下四部分組成:文本基本處理,文本語義分析,圖片語義分析,語義分析小結。先講述文本處理的基本方法,這構成了語義分析的基礎。接着分文本和圖片兩節講述各自語義分析的一些方法,值得注意的是,雖說分爲兩節,但文本和圖片在語義分析方法上有很多共通與關聯。最後我們簡單介紹下語義分析在廣點通“用戶廣告匹配”上的應用,並展望一下未來的語義分析方法。

1 文本基本處理

在講文本語義分析之前,我們先說下文本基本處理,因爲它構成了語義分析的基礎。而文本處理有很多方面,考慮到本文主題,這裏只介紹中文分詞以及Term Weighting。

1.1 中文分詞

拿到一段文本後,通常情況下,首先要做分詞。分詞的方法一般有如下幾種:

  • 基於字符串匹配的分詞方法。此方法按照不同的掃描方式,逐個查找詞庫進行分詞。根據掃描方式可細分爲:正向最大匹配,反向最大匹配,雙向最大匹配,最小切分(即最短路徑);總之就是各種不同的啓發規則。
  • 全切分方法。它首先切分出與詞庫匹配的所有可能的詞,再運用統計語言模型決定最優的切分結果。它的優點在於可以解決分詞中的歧義問題。下圖是一個示例,對於文本串“南京市長江大橋”,首先進行詞條檢索(一般用Trie存儲),找到匹配的所有詞條(南京,市,長江,大橋,南京市,長江大橋,市長,江大橋,江大,橋),以詞網格(word lattices)形式表示,接着做路徑搜索,基於統計語言模型(例如n-gram)[18]找到最優路徑,最後可能還需要命名實體識別。下圖中“南京市 長江 大橋”的語言模型得分,即P(南京市,長江,大橋)最高,則爲最優切分。
    rnnlm1

    圖1. “南京市長江大橋”語言模型得分

  • 由字構詞的分詞方法。可以理解爲字的分類問題,也就是自然語言處理中的sequence labeling問題,通常做法裏利用HMM,MAXENT,MEMM,CRF等預測文本串每個字的tag[62],譬如B,E,I,S,這四個tag分別表示:beginning, inside, ending, single,也就是一個詞的開始,中間,結束,以及單個字的詞。 例如“南京市長江大橋”的標註結果可能爲:“南(B)京(I)市(E)長(B)江(E)大(B)橋(E)”。由於CRF既可以像最大熵模型一樣加各種領域feature,又避免了HMM的齊次馬爾科夫假設,所以基於CRF的分詞目前是效果最好的,具體請參考文獻[61,62,63]。除了HMM,CRF等模型,分詞也可以基於深度學習方法來做,如文獻[9][10]所介紹,也取得了state-of-the-art的結果。
    word_segmentation

    圖2. 基於深度學習的中文分詞

    上圖是一個基於深度學習的分詞示例圖。我們從上往下看,首先對每一個字進行Lookup Table,映射到一個固定長度的特徵向量(這裏可以利用詞向量,boundary entropy,accessor variety等);接着經過一個標準的神經網絡,分別是linear,sigmoid,linear層,對於每個字,預測該字屬於B,E,I,S的概率;最後輸出是一個矩陣,矩陣的行是B,E,I,S 4個tag,利用viterbi算法就可以完成標註推斷,從而得到分詞結果。

一個文本串除了分詞,還需要做詞性標註,命名實體識別,新詞發現等。通常有兩種方案,一種是pipeline approaches,就是先分詞,再做詞性標註;另一種是joint approaches,就是把這些任務用一個模型來完成。有興趣可以參考文獻[9][62]等。

一般而言,方法一和方法二在工業界用得比較多,方法三因爲採用複雜的模型,雖準確率相對高,但耗時較大。

1.2 語言模型

前面在講“全切分分詞”方法時,提到了語言模型,並且通過語言模型,還可以引出詞向量,所以這裏把語言模型簡單闡述一下。

語言模型是用來計算一個句子產生概率的概率模型,即P(w_1,w_2,w_3…w_m),m表示詞的總個數。根據貝葉斯公式:P(w_1,w_2,w_3 … w_m) = P(w_1)P(w_2|w_1)P(w_3|w_1,w_2) … P(w_m|w_1,w_2 … w_{m-1})。

最簡單的語言模型是N-Gram,它利用馬爾科夫假設,認爲句子中每個單詞只與其前n–1個單詞有關,即假設產生w_m這個詞的條件概率只依賴於前n–1個詞,則有P(w_m|w_1,w_2…w_{m-1}) = P(w_m|w_{m-n+1},w_{m-n+2} … w_{m-1})。其中n越大,模型可區別性越強,n越小,模型可靠性越高。

N-Gram語言模型簡單有效,但是它只考慮了詞的位置關係,沒有考慮詞之間的相似度,詞語法和詞語義,並且還存在數據稀疏的問題,所以後來,又逐漸提出更多的語言模型,例如Class-based ngram model,topic-based ngram model,cache-based ngram model,skipping ngram model,指數語言模型(最大熵模型,條件隨機域模型)等。若想了解更多請參考文章[18]。

最近,隨着深度學習的興起,神經網絡語言模型也變得火熱[4]。用神經網絡訓練語言模型的經典之作,要數Bengio等人發表的《A Neural Probabilistic Language Model》[3],它也是基於N-Gram的,首先將每個單詞w_{m-n+1},w_{m-n+2} … w_{m-1}映射到詞向量空間,再把各個單詞的詞向量組合成一個更大的向量作爲神經網絡輸入,輸出是P(w_m)。本文將此模型簡稱爲ffnnlm(Feed-forward Neural Net Language Model)。ffnnlm解決了傳統n-gram的兩個缺陷:(1)詞語之間的相似性可以通過詞向量來體現;(2)自帶平滑功能。文獻[3]不僅提出神經網絡語言模型,還順帶引出了詞向量,關於詞向量,後文將再細述。

ffnnlm

圖3. 基於神經網絡的語言模型

從最新文獻看,目前state-of-the-art語言模型應該是基於循環神經網絡(recurrent neural network)的語言模型,簡稱rnnlm[5][6]。循環神經網絡相比於傳統前饋神經網絡,其特點是:可以存在有向環,將上一次的輸出作爲本次的輸入。而rnnlm和ffnnlm的最大區別是:ffnnmm要求輸入的上下文是固定長度的,也就是說n-gram中的 n 要求是個固定值,而rnnlm不限制上下文的長度,可以真正充分地利用所有上文信息來預測下一個詞,本次預測的中間隱層信息(例如下圖中的context信息)可以在下一次預測裏循環使用。

simple_rnn

圖4. 基於simple RNN(time-delay neural network)的語言模型

如上圖所示,這是一個最簡單的rnnlm,神經網絡分爲三層,第一層是輸入層,第二層是隱藏層(也叫context層),第三層輸出層。 假設當前是t時刻,則分三步來預測P(w_m):

  • 單詞w_{m-1}映射到詞向量,記作input(t)
  • 連接上一次訓練的隱藏層context(t–1),經過sigmoid function,生成當前t時刻的context(t)
  • 利用softmax function,預測P(w_m)

參考文獻[7]中列出了一個rnnlm的library,其代碼緊湊。利用它訓練中文語言模型將很簡單,上面“南京市 長江 大橋”就是rnnlm的預測結果。

基於RNN的language model利用BPTT(BackPropagation through time)算法比較難於訓練,原因就是深度神經網絡裏比較普遍的vanishing gradient問題[55](在RNN裏,梯度計算隨時間成指數倍增長或衰減,稱之爲Exponential Error Decay)。所以後來又提出基於LSTM(Long short term memory)的language model,LSTM也是一種RNN網絡,關於LSTM的詳細介紹請參考文獻[54,49,52]。LSTM通過網絡結構的修改,從而避免vanishing gradient問題。

lstm_unit

圖5. LSTM memory cell

如上圖所示,是一個LSTM unit。如果是傳統的神經網絡unit,output activation bi = activation_function(ai),但LSTM unit的計算相對就複雜些了,它保存了該神經元上一次計算的結果,通過input gate,output gate,forget gate來計算輸出,具體過程請參考文獻[53,54]。

1.3 Term Weighting

Term重要性

對文本分詞後,接下來需要對分詞後的每個term計算一個權重,重要的term應該給與更高的權重。舉例來說,“什麼產品對減肥幫助最大?”的term weighting結果可能是: “什麼 0.1,產品 0.5,對 0.1,減肥 0.8,幫助 0.3,最大 0.2”。Term weighting在文本檢索,文本相關性,核心詞提取等任務中都有重要作用。

  • Term weighting的打分公式一般由三部分組成:local,global和normalization [1,2]。即
    TermWeight=L_{i,j} G_i N_j。L_{i,j}是term i在document j中的local weight,G_i是term i的global weight,N_j是document j的歸一化因子。
    常見的local,global,normalization weight公式[2]有:local_weight

    圖6. Local weight formulas

    global_weight

    圖7. Global weight formulas

    normlization_weight

    圖8. Normalization factors

    Tf-Idf是一種最常見的term weighting方法。在上面的公式體系裏,Tf-Idf的local weight是FREQ,glocal weight是IDFB,normalization是None。tf是詞頻,表示這個詞出現的次數。df是文檔頻率,表示這個詞在多少個文檔中出現。idf則是逆文檔頻率,idf=log(TD/df),TD表示總文檔數。Tf-Idf在很多場合都很有效,但缺點也比較明顯,以“詞頻”度量重要性,不夠全面,譬如在搜索廣告的關鍵詞匹配時就不夠用。

    除了TF-IDF外,還有很多其他term weighting方法,例如Okapi,MI,LTU,ATC,TF-ICF[59]等。通過local,global,normalization各種公式的組合,可以生成不同的term weighting計算方法。不過上面這些方法都是無監督計算方法,有一定程度的通用性,但在一些特定場景裏顯得不夠靈活,不夠準確,所以可以基於有監督機器學習方法來擬合term weighting結果。

    okapi

    圖9. Okapi計算公式

  • 利用有監督機器學習方法來預測weight。這裏類似於機器學習的分類任務,對於文本串的每個term,預測一個[0,1]的得分,得分越大則term重要性越高。既然是有監督學習,那麼就需要訓練數據。如果採用人工標註的話,極大耗費人力,所以可以採用訓練數據自提取的方法,利用程序從搜索日誌裏自動挖掘。從海量日誌數據裏提取隱含的用戶對於term重要性的標註,得到的訓練數據將綜合億級用戶的“標註結果”,覆蓋面更廣,且來自於真實搜索數據,訓練結果與標註的目標集分佈接近,訓練數據更精確。下面列舉三種方法(除此外,還有更多可以利用的方法):
    • 從搜索session數據裏提取訓練數據,用戶在一個檢索會話中的檢索核心意圖是不變的,提取出核心意圖所對應的term,其重要性就高。
    • 從歷史短串關係資源庫裏提取訓練數據,短串擴展關係中,一個term出現的次數越多,則越重要。
    • 從搜索廣告點擊日誌裏提取訓練數據,query與bidword共有term的點擊率越高,它在query中的重要程度就越高。

    通過上面的方法,可以提取到大量質量不錯的訓練數據(數十億級別的數據,這其中可能有部分樣本不準確,但在如此大規模數據情況下,絕大部分樣本都是準確的)。

    有了訓練數據,接下來提取特徵,基於邏輯迴歸模型來預測文本串中每個term的重要性。所提取的特徵包括:

    • term的自解釋特徵,例如term專名類型,term詞性,term idf,位置特徵,term的長度等;
    • term與文本串的交叉特徵,例如term與文本串中其他term的字面交叉特徵,term轉移到文本串中其他term的轉移概率特徵,term的文本分類、topic與文本串的文本分類、topic的交叉特徵等。
核心詞、關鍵詞提取
  • 短文本串的核心詞提取。對短文本串分詞後,利用上面介紹的term weighting方法,獲取term weight後,取一定的閾值,就可以提取出短文本串的核心詞。
  • 長文本串(譬如web page)的關鍵詞提取。這裏簡單介紹幾種方法。想了解更多,請參考文獻[69]。
    • 採用基於規則的方法。考慮到位置特徵,網頁特徵等。
    • 基於廣告主購買的bidword和高頻query建立多模式匹配樹,在長文本串中進行全字匹配找出候選關鍵詞,再結合關鍵詞weight,以及某些規則找出優質的關鍵詞。
    • 類似於有監督的term weighting方法,也可以訓練關鍵詞weighting的模型。
    • 基於文檔主題結構的關鍵詞抽取,具體可以參考文獻[71]。

參考文獻

  1. Term-weighting approaches in automatic text retrieval,Gerard Salton et.
  2. New term weighting formulas for the vector space method in information retrieval
  3. A neural probabilistic language model 2003
  4. Deep Learning in NLP-詞向量和語言模型
  5. Recurrent neural network based language models
  6. Statistical Language Models based on Neural Networks,mikolov博士論文
  7. Rnnlm library
  8. A survey of named entity recognition and classification
  9. Deep learning for Chinese word segmentation and POS tagging
  10. Max-margin tensor neural network for chinese word segmentation
  11. Learning distributed representations of concepts
  12. Care and Feeding of Topic Models: Problems, Diagnostics, and Improvements
  13. LightLda
  14. word2vec
  15. Efficient Estimation of Word Representations in Vector Space
  16. Deep Learning實戰之word2vec
  17. word2vec中的數學原理詳解 出處2
  18. 斯坦福課程-語言模型
  19. Translating Videos to Natural Language Using Deep Recurrent Neural Networks
  20. Distributed Representations of Sentences and Documents
  21. Convolutional Neural Networks卷積神經網絡
  22. A New, Deep-Learning Take on Image Recognition
  23. Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition
  24. A Deep Learning Tutorial: From Perceptrons to Deep Networks
  25. Deep Learning for Computer Vision
  26. Zero-shot leanring by convex combination of semantic embeddings
  27. Sequence to sequence learning with neural network
  28. Exploting similarities among language for machine translation
  29. Grammar as Foreign Language Oriol Vinyals, Lukasz Kaiser, Terry Koo, Slav Petrov, Ilya Sutskever, Geoffrey Hinton, arXiv 2014
  30. Deep Semantic Embedding
  31. 張家俊. DNN Applications in NLP
  32. Deep learning for natural language processing and machine translation
  33. Distributed Representations for Semantic Matching
  34. distributed_representation_nlp
  35. Deep Visual-Semantic Alignments for Generating Image Descriptions
  36. Convolutional Neural Networks for Sentence Classification
  37. Senna
  38. ImageNet Large Scale Visual Recognition Challenge
  39. Krizhevsky A, Sutskever I, Hinton G E. ImageNet Classification with Deep Convolutional Neural Networks
  40. Gradient-Based Learning Applied to Document Recognition
  41. Effetive use of word order for text categorization with convolutional neural network,Rie Johnson
  42. Learning Phrase Representations using RNN Encoder-Decoder for Statistical Machine Translation
  43. Show and Tell: A Neural Image Caption Generator
  44. Deep Image: Scaling up Image Recognition
  45. Large-Scale High-Precision Topic Modeling on Twitter
  46. A. Krizhevsky. One weird trick for parallelizing convolutional neural networks. arXiv:1404.5997, 2014
  47. A Brief Overview of Deep Learning
  48. Going deeper with convolutions. Christian Szegedy. Google Inc. 閱讀筆記
  49. Long Short-Term Memory Recurrent Neural Network Architectures for Large Scale Acoustic Modeling
  50. Semi-Supervised Learning Tutorial
  51. http://www.zhihu.com/question/24904450
  52. LONG SHORT-TERM MEMORY BASED RECURRENT NEURAL NETWORK ARCHITECTURES FOR LARGE VOCABULARY SPEECH RECOGNITION
  53. LSTM Neural Networks for Language Modeling
  54. LONG SHORT-TERM MEMORY
  55. Bengio, Y., Simard, P., Frasconi, P., “Learning long-term dependencies with gradient descent is difficult” IEEE Transactions on Neural Networks 5 (1994), pp. 157–166
  56. AliasLDA
  57. Gibbs sampling for the uninitiated
  58. Learning classifiers from only positive and unlabeled data
  59. TF-ICF: A New Term Weighting Scheme for Clustering Dynamic Data Streams
  60. LDA數學八卦
  61. Chinese Word Segmentation and Named Entity Recognition Based on Conditional Random Fields Models
  62. Conditional Random Fields: Probabilistic Models for Segmenting and Labeling Sequence Data
  63. Chinese Segmentation and New Word Detection using Conditional Random Fields
  64. Gregor Heinrich. Parameter estimation for text analysis
  65. Peacock:大規模主題模型及其在騰訊業務中的應用
  66. L. Yao, D. Mimno, and A. McCallum. Efficient methods for topic model inference on streaming document collections. In KDD, 2009.
  67. David Newman. Distributed Algorithms for Topic Models
  68. Xuemin. LDA工程實踐之算法篇
  69. Brian Lott. Survey of Keyword Extraction Techniques
  70. Yi Wang, Xuemin Zhao, Zhenlong Sun, Hao Yan, Lifeng Wang, Zhihui Jin, Liubin Wang, Yang Gao, Ching Law, and Jia Zeng. Peacock: Learning Long-Tail Topic Features for Industrial Applications. TIST’2015.
  71. 劉知遠. 基於文檔主題結構的關鍵詞抽取方法研究
  72. Hinton. Reducing the Dimensionality of Data with Neural Networks
  73. Samaneh Moghaddam. On the design of LDA models for aspect-based opinion mining
  74. The FLDA model for aspect-based opinion mining: addressing the cold start problem
  75. Ross Girshick et. Rich feature hierarchies for accurate object detection and semantic segmentation
  76. J. Uijlings, K. van de Sande, T. Gevers, and A. Smeulders. Selective search for object recognition. IJCV, 2013.
  77. Baidu/UCLA: Explain Images with Multimodal Recurrent Neural Networks
  78. Toronto: Unifying Visual-Semantic Embeddings with Multimodal Neural Language Models
  79. Berkeley: Long-term Recurrent Convolutional Networks for Visual Recognition and Description
  80. Xinlei Chen et. Learning a Recurrent Visual Representation for Image Caption Generation
  81. Hao Fang et. From Captions to Visual Concepts and Back
  82. Modeling Documents with a Deep Boltzmann Machine
  83. A Deep Dive into Recurrent Neural Nets
  84. Xiang zhang et. Text Understanding from Scratch

語義分析的一些方法(二)

2 文本語義分析

前面講到一些文本基本處理方法。一個文本串,對其進行分詞和重要性打分後(當然還有更多的文本處理任務),就可以開始更高層的語義分析任務。

2.1 Topic Model

首先介紹主題模型。說到主題模型,第一時間會想到pLSA,NMF,LDA。關於這幾個目前業界最常用的主題模型,已經有相當多的介紹了,譬如文獻[60,64]。在這裏,主要想聊一下主題模型的應用以及最新進展(考慮到LDA是pLSA的generalization,所以下面只介紹LDA)。

LDA訓練算法簡單介紹

LDA的推導這裏略過不講,具體請參考文獻[64]。下面我們主要看一下怎麼訓練LDA。

在Blei的原始論文中,使用variational inference和EM算法進行LDA推斷(與pLSA的推斷過程類似,E-step採用variational inference),但EM算法可能推導出局部最優解,且相對複雜。目前常用的方法是基於gibbs sampling來做[57]。

  • Step1: 隨機初始化每個詞的topic,並統計兩個頻率計數矩陣:Doc-Topic 計數矩陣N(t,d),描述每個文檔中的主題頻率分佈;Word-Topic 計數矩陣N(w,t),表示每個主題下詞的頻率分佈。
  • Step2: 遍歷訓練語料,按照概率公式(下圖所示)重新採樣每個詞所對應的topic, 更新N(t,d)和N(w,t)的計數。
  • Step3: 重複 step2,直到模型收斂。

對文檔d中詞w的主題z進行重新採樣的公式有非常明確的物理意義,表示爲P(w|z)P(z|d),直觀的表示爲一個“路徑選擇”的過程。

lda_sampling

圖10. gibbs sampling過程圖

以上描述過程具體請參考文獻[65]。

對於LDA模型的更多理論介紹,譬如如何實現正確性驗證,請參考文獻[68],而關於LDA模型改進,請參考Newman團隊的最新文章《Care and Feeding of Topic Models》[12]。

主題模型的應用點
  • 在廣點通內部,主題模型已經在很多方面都得到成功應用[65],譬如文本分類特徵,相關性計算,ctr預估,精確廣告定向,矩陣分解等。具體來說,基於主題模型,可以計算出文本,用戶的topic分佈,將其當作pctr,relevance的特徵,還可以將其當作一種矩陣分解的方法,用於降維,推薦等。不過在我們以往的成功運用中,topic模型比較適合用做某些機器學習任務的特徵,而不適合作爲一種獨立的方法去解決某種特定的問題,例如觸發,分類。Blei是這樣評價lda的:it can easily be used as a module in more complicated models for more complicated goals。
  • 爲什麼topic model不適合作爲一種獨立的方法去解決某種特定的問題(例如分類,觸發等)。
    • 個人總結,主要原因是lda模型可控性可解釋性相對比較差:對於每個topic,不能用很明確的語義歸納出這個topic在講什麼;重新訓練一遍lda模型,每個topic id所對應的語義可能發生了變化;有些topic的準確性比較好,有些比較差,而對於比較差的topic,沒有特別好的針對性的方法去優化它;
    • 另外一個就是topic之間的重複,特別是在topic數目比較多的情況,重複幾乎是不可避免的,當時益總(yiwang)在開發peacock的時候,deduplicate topic就是一個很重要的任務。如果多個topic描述的意思一致時,用topic id來做檢索觸發,效果大半是不好的,後來我們也嘗試用topic word來做,但依舊不夠理想。
主題模型最新進展

首先主題模型自PLSA, LDA後,又提出了很多變體,譬如HDP。LDA的topic number是預先設定的,而HDP的topic number是不固定,而是從訓練數據中學習得到的,這在很多場景是有用的,具體參考hdp vs lda。想了解更多LDA模型的升級,請參考文獻[73,74]。

深度學習方面,Geoff Hinton及其學生用Deep Boltzmann Machine研究出了類似LDA的隱變量文本模型[82],文章稱其抽取的特徵在文本檢索與文本分類上的結果比LDA好。heavenfireray在其微博評論道:lda結構是word-hidden topic。類lda結構假設在topic下產生每個word是條件獨立而且參數相同。這種假設導致參數更匹配長文而非短文。該文章提出word-hidden topic-hidden word,其實是(word,hidden word)-hidden topic,增加的hidden word平衡了參數對短文的適配,在分類文章數量的度量上更好很自然。

其次,隨着目前互聯網的數據規模的逐漸增加,大規模並行PLSA,LDA訓練將是主旋律。大規模主題模型訓練,除了從系統架構上進行優化外,更關鍵的,還需要在算法本身上做升級。variational方法不太適合並行化,且速度相對也比較慢,這裏我們着重看sampling-base inference。

  • collapsed Gibbs sampler[57]:O(K)複雜度,K表示topic的總個數。
  • SparseLDA[66]:算法複雜度爲O(Kd + Kw),Kd表示文檔d所包含的topic個數,Kw表示詞w所屬的topic個數,考慮到一個文檔所包含的topic和一個詞所屬的topic個數是有限的,肯定遠小於K,所以相比於collapsed Gibbs,複雜度已有較大的下降。
  • AliasLDA[56]:利用alias table和Metropolis-Hastings,將詞這個維度的採樣複雜度降至O(1)。所以算法總複雜度爲O(Kd)。
  • Metropolis-Hastings sampler[13]:複雜度降至O(1)。這裏不做分析了,具體請參考文獻[13]
主題模型並行化

在文獻[67]中,Newman團隊提出了LDA算法的並行化版本Approximate distributed-LDA,如下圖所示:

ad_lda

圖11. AD-LDA算法

在原始gibbs sampling算法裏,N(w,t)這個矩陣的更新是串行的,但是研究發現,考慮到N(w,t)矩陣在迭代過程中,相對變化較小,多個worker獨立更新N(w,t),在一輪迭代結束後再根據多個worker的本地更新合併到全局更新N(w,t),算法依舊可以收斂[67]。

那麼,主題模型的並行化(不僅僅是主題模型,其實是絕大部分機器學習算法),主要可以從兩個角度來說明:數據並行和模型並行。

  • 數據並行。這個角度相對比較直觀,譬如對於LDA模型,可以將訓練數據按照worker數目切分爲M片(M爲worker數),每個worker保存一份全局的N(w,t)矩陣,在一輪迭代裏,各個worker獨立計算,迭代結束後,合併各個worker的本地更新。這個思路可以借用目前通用的並行計算框架,譬如Spark,Hadoop,Graphlab等來實現。
  • 模型並行。考慮到矩陣N(w,t)在大規模主題模型中相當巨大,單機內存不可能存下。所以直觀的想法,可以將N(w,t)也切分成多個分片。N(w,t)可以考慮使用全局的parameter server來存儲,也可以考慮存儲在不同worker上,利用MPI AllReduce來通信。

數據與模型並行,可以形象的描述爲一個棋盤。棋盤的行按照數據劃分,棋盤的列按照模型劃分。LDA的並行化,就是通過這樣的切分,將原本巨大的,不可能在單機存儲的矩陣切分到不同的機器,使每臺機器都能夠將參數存儲在內存。再接着,各個worker相對獨立計算,計算的過程中不時按照某些策略同步模型數據。

最近幾年裏,關於LDA並行化已有相當多的開源實現,譬如:

最近的並行LDA實現Peacock[70,65]和LigthLda[13]沒有開源,但我們可以從其論文一窺究竟,總體來說,並行化的大體思路是一致的。譬如LightLDA[13],下圖是實現架構框圖,它將訓練數據切分成多個Block,模型通過parameter server來同步,每個data block,類似於sliding windows,在計算完V1的採樣後,纔會去計算V2的採樣(下圖中V1,V2,V3表示word空間的劃分,即模型的劃分)。

parallelism_lda

圖12. LightLda並行結構圖

2.2 詞向量,句向量

詞向量是什麼

在文本分析的vector space model中,是用向量來描述一個詞的,譬如最常見的One-hot representation。One-hot representation方法的一個明顯的缺點是,詞與詞之間沒有建立關聯。在深度學習中,一般用Distributed Representation來描述一個詞,常被稱爲“Word Representation”或“Word Embedding”,也就是我們俗稱的“詞向量”。

詞向量起源於hinton在1986年的論文[11],後來在Bengio的ffnnlm論文[3]中,被發揚光大,但它真正被我們所熟知,應該是word2vec[14]的開源。在ffnnlm中,詞向量是訓練語言模型的一個副產品,不過在word2vec裏,是專門來訓練詞向量,所以word2vec相比於ffnnlm的區別主要體現在:

  • 模型更加簡單,去掉了ffnnlm中的隱藏層,並去掉了輸入層跳過隱藏層直接到輸出層的連接。
  • 訓練語言模型是利用第m個詞的前n個詞預測第m個詞,而訓練詞向量是用其前後各n個詞來預測第m個詞,這樣做真正利用了上下文來預測,如下圖所示。
word2vec

圖13. word2vec的訓練算法

上圖是word2vec的兩種訓練算法:CBOW(continuous bag-of-words)和Skip-gram。在cbow方法裏,訓練目標是給定一個word的context,預測word的概率;在skip-gram方法裏,訓練目標則是給定一個word,預測word的context的概率。

關於word2vec,在算法上還有較多可以學習的地方,例如利用huffman編碼做層次softmax,negative sampling,工程上也有很多trick,具體請參考文章[16][17]。

詞向量的應用

詞向量的應用點:

  • 可以挖掘詞之間的關係,譬如同義詞。
  • 可以將詞向量作爲特徵應用到其他機器學習任務中,例如作爲文本分類的feature,Ronan collobert在Senna[37]中將詞向量用於POS, CHK, NER等任務。
  • 用於機器翻譯[28]。分別訓練兩種語言的詞向量,再通過詞向量空間中的矩陣變換,將一種語言轉變成另一種語言。
  • word analogy,即已知a之於b猶如c之於d,現在給出 a、b、c,C(a)-C(b)+C(c)約等於C(d),C(*)表示詞向量。可以利用這個特性,提取詞語之間的層次關係。
  • Connecting Images and Sentences,image understanding。例如文獻,DeViSE: A deep visual-semantic em-bedding model。
  • Entity completion in Incomplete Knowledge bases or ontologies,即relational extraction。Reasoning with neural tensor net- works for knowledge base completion。
  • more word2vec applications,點擊link1link2

除了產生詞向量,word2vec還有很多其他應用領域,對此我們需要把握兩個概念:doc和word。在詞向量訓練中,doc指的是一篇篇文章,word就是文章中的詞。

  • 假設我們將一簇簇相似的用戶作爲doc(譬如QQ羣),將單個用戶作爲word,我們則可以訓練user distributed representation,可以藉此挖掘相似用戶。
  • 假設我們將一個個query session作爲doc,將query作爲word,我們則可以訓練query distributed representation,挖掘相似query。
句向量

分析完word distributed representation,我們也許會問,phrase,sentence是否也有其distributed representation。最直觀的思路,對於phrase和sentence,我們將組成它們的所有word對應的詞向量加起來,作爲短語向量,句向量。在參考文獻[34]中,驗證了將詞向量加起來的確是一個有效的方法,但事實上還有更好的做法。

Le和Mikolov在文章《Distributed Representations of Sentences and Documents》[20]裏介紹了sentence vector,這裏我們也做下簡要分析。

先看c-bow方法,相比於word2vec的c-bow模型,區別點有:

  • 訓練過程中新增了paragraph id,即訓練語料中每個句子都有一個唯一的id。paragraph id和普通的word一樣,也是先映射成一個向量,即paragraph vector。paragraph vector與word vector的維數雖一樣,但是來自於兩個不同的向量空間。在之後的計算裏,paragraph vector和word vector累加或者連接起來,作爲輸出層softmax的輸入。在一個句子或者文檔的訓練過程中,paragraph id保持不變,共享着同一個paragraph vector,相當於每次在預測單詞的概率時,都利用了整個句子的語義。
  • 在預測階段,給待預測的句子新分配一個paragraph id,詞向量和輸出層softmax的參數保持訓練階段得到的參數不變,重新利用梯度下降訓練待預測的句子。待收斂後,即得到待預測句子的paragraph vector。
sentence2vec0

圖14. sentence2vec cBow算法

sentence2vec相比於word2vec的skip-gram模型,區別點爲:在sentence2vec裏,輸入都是paragraph vector,輸出是該paragraph中隨機抽樣的詞。

sentence2vec1

圖15. sentence2vec Skip-gram算法

下面是sentence2vec的結果示例。先利用中文sentence語料訓練句向量,然後通過計算句向量之間的cosine值,得到最相似的句子。可以看到句向量在對句子的語義表徵上還是相當驚歎的。

sentence2vec4

圖16. sentence2vec 結果示例

詞向量的改進
  • 學習詞向量的方法主要分爲:Global matrix factorization和Shallow Window-Based。Global matrix factorization方法主要利用了全局詞共現,例如LSA;Shallow Window-Based方法則主要基於local context window,即局部詞共現,word2vec是其中的代表;Jeffrey Pennington在word2vec之後提出了GloVe,它聲稱結合了上述兩種方法,提升了詞向量的學習效果。它與word2vec的更多對比請點擊GloVe vs word2vecGloVe & word2vec評測
  • 目前通過詞向量可以充分發掘出“一義多詞”的情況,譬如“快遞”與“速遞”;但對於“一詞多義”,束手無策,譬如“蘋果”(既可以表示蘋果手機、電腦,又可以表示水果),此時我們需要用多個詞向量來表示多義詞。

2.3 卷積神經網絡

卷積

介紹卷積神經網絡(convolutional neural network,簡記cnn)之前,我們先看下卷積。

在一維信號中,卷積的運算,請參考wiki,其中的圖示很清楚。在圖像處理中,對圖像用一個卷積核進行卷積運算,實際上是一個濾波的過程。下面是卷積的數學表示:

f(x,y)w(x,y)=s=aat=bbw(s,t)f(xs,yt)

f(x,y)是圖像上點(x,y)的灰度值,w(x,y)則是卷積核,也叫濾波器。卷積實際上是提供了一個權重模板,這個模板在圖像上滑動,並將中心依次與圖像中每一個像素對齊,然後對這個模板覆蓋的所有像素進行加權,並將結果作爲這個卷積核在圖像上該點的響應。如下圖所示,卷積操作可以用來對圖像做邊緣檢測,銳化,模糊等。

convolution1convolution2

圖17. 卷積操作示例

什麼是卷積神經網絡

卷積神經網絡是一種特殊的、簡化的深層神經網絡模型,它的每個卷積層都是由多個卷積濾波器組成。它最先由lecun在LeNet[40]中提出,網絡結構如下圖所示。在cnn中,圖像的一小部分(局部感受區域)作爲層級結構的最低層的輸入,信息再依次傳輸到不同的層,每層通過多個卷積濾波器去獲得觀測數據的最顯著的特徵。lenet5

convolution5

圖18. Lenet5網絡結構圖

卷積神經網絡中的每一個特徵提取層(卷積層)都緊跟着一個用來求局部平均與二次提取的計算層(pooling層),這種特有的兩次特徵提取結構使網絡在識別時對輸入樣本有較高的畸變容忍能力。如下圖所示,就是一個完整的卷積過程[21]。

convolution6

圖19. 一次完整的卷積過程

它的特殊性體現在兩點:(1)局部感受野(receptive field),cnn的神經元間的連接是非全連接的;(2)同一層中同一個卷積濾波器的權重是共享的(即相同的)。局部感受野和權重共享這兩個特點,使cnn網絡結構更類似於生物神經網絡,降低了網絡模型的複雜度,減少了神經網絡需要訓練的參數的個數。

卷積神經網絡的一些細節

接下來結合文獻[25],再講講卷積神經網絡的一些注意點和問題。

  • 激勵函數,要選擇非線性函數,譬如tang,sigmoid,rectified liner。在CNN裏,relu用得比較多,原因在於:(1)簡化BP計算;(2)使學習更快。(3)避免飽和問題(saturation issues)
  • Pooling:其作用在於(1)對一些小的形態改變保持不變性,Invariance to small transformations;(2)擁有更大的感受域,Larger receptive fields。pooling的方式有sum or max。
  • Normalization:Equalizes the features maps。它的作用有:(1) Introduces local competition between features;(2)Also helps to scale activations at each layer better for learning;(3)Empirically, seems to help a bit (1–2%) on ImageNet
  • 訓練CNN:back-propagation;stochastic gradient descent;Momentum;Classification loss,cross-entropy;Gpu實現。
  • 預處理:Mean removal;Whitening(ZCA)
  • 增強泛化能力:Data augmentation;Weight正則化;在網絡里加入噪聲,包括DropOut,DropConnect,Stochastic pooling。
    • DropOut:只在全連接層使用,隨機的將全連接層的某些神經元的輸出置爲0。
    • DropConnect:也只在全連接層使用,Random binary mask on weights
    • Stochastic Pooling:卷積層使用。Sample location from multinomial。
  • 模型不work,怎麼辦?結合我自身的經驗,learning rate初始值設置得太大,開始設置爲0.01,以爲很小了,但實際上0.001更合適。
卷積神經網絡在文本上的應用

卷積神經網絡在image classify和image detect上得到諸多成功的應用,後文將再詳細闡述。但除了圖片外,它在文本分析上也取得一些成功的應用。

基於CNN,可以用來做文本分類,情感分析,本體分類等[36,41,84]。傳統文本分類等任務,一般基於bag of words(*解釋見最後)或者基於word的特徵提取,此類方法一般需要領域知識和人工特徵。利用CNN做,方法也類似,但一般都是基於raw text,CNN模型的輸入可以是word series,可以是word vector,還可以是單純的字符。比起傳統方法,CNN不需要過多的人工特徵。

  • 將word series作爲輸入,利用CNN做文本分類。如下圖所示[36],該CNN很簡單,共分四層,第一層是詞向量層,doc中的每個詞,都將其映射到詞向量空間,假設詞向量爲k維,則n個詞映射後,相當於生成一張n*k維的圖像;第二層是卷積層,多個濾波器作用於詞向量層,不同濾波器生成不同的feature map;第三層是pooling層,取每個feature map的最大值,這樣操作可以處理變長文檔,因爲第三層輸出只依賴於濾波器的個數;第四層是一個全連接的softmax層,輸出是每個類目的概率。除此之外,輸入層可以有兩個channel,其中一個channel採用預先利用word2vec訓練好的詞向量,另一個channel的詞向量可以通過backpropagation在訓練過程中調整。這樣做的結果是:在目前通用的7個分類評測任務中,有4個取得了state-of-the-art的結果,另外3個表現接近最好水平。
    cnn_text_classify

    圖20.基於CNN的文本分類

    利用cnn做文本分類,還可以考慮到詞的順序。利用傳統的”bag-of-words + maxent/svm”方法,是沒有考慮詞之間的順序的。文獻[41]中提出兩種cnn模型:seq-cnn, bow-cnn,利用這兩種cnn模型,均取得state-of-the-art結果。

  • 將doc character作爲輸入,利用CNN做文本分類。文獻[86]介紹了一種方法,不利用word,也不利用word vector,直接將字符系列作爲模型輸入,這樣輸入維度大大下降(相比於word),有利於訓練更復雜的卷積網絡。對於中文,可以將漢字的拼音系列作爲輸入。

2.4 文本分類

文本分類應該是最常見的文本語義分析任務了。首先它是簡單的,幾乎每一個接觸過nlp的同學都做過文本分類,但它又是複雜的,對一個類目標籤達幾百個的文本分類任務,90%以上的準確率召回率依舊是一個很困難的事情。這裏說的文本分類,指的是泛文本分類,包括query分類,廣告分類,page分類,用戶分類等,因爲即使是用戶分類,實際上也是對用戶所屬的文本標籤,用戶訪問的文本網頁做分類。

幾乎所有的機器學習方法都可以用來做文本分類,常用的主要有:lr,maxent,svm等,下面介紹一下文本分類的pipeline以及注意點。

  • 建立分類體系。
    • 分類相比於topic model或者聚類,一個顯著的特點是:類目體系是確定的。而不像在聚類和LDA裏,一個類被聚出來後,但這個類到底是描述什麼的,或者這個類與另外的類是什麼關係,這些是不確定的,這樣會帶來使用和優化上的困難。
    • 一般而言,類目體系是由人工設定的。而類目體系的建立往往需要耗費很多人工研究討論,一方面由於知識面的限制,人工建立的類目體系可能不能覆蓋所有情況;另一方面,還可能存在類目之間instance數的不平衡。比較好的方法,是基於目前已有的類目體系再做一些加工,譬如ODP,FreeBase等。
    • 還可以先用某種無監督的聚類方法,將訓練文本劃分到某些clusters,建立這些clusters與ODP類目體系的對應關係,然後人工review這些clusters,切分或者合併cluster,提煉name,再然後根據知識體系,建立層級的taxonomy。
    • 如果類目標籤數目很多的話,我們一般會將類目標籤按照一定的層次關係,建立類目樹,如下圖所示。那麼接下來就可以利用層次分類器來做分類,先對第一層節點訓練一個分類器,再對第二層訓練n個分類器(n爲第一層的節點個數),依次類推。利用層次類目樹,一方面單個模型更簡單也更準確,另一方面可以避免類目標籤之間的交叉影響,但如果上層分類有誤差,誤差將會向下傳導。
      taxonomy

       

      圖21. 層次類目體系

  • 獲取訓練數據
    • 一般需要人工標註訓練數據。人工標註,準確率高,但標註工作量大,耗費人力。
    • 爲了減少標註代價,利用無標記的樣本,提出了半監督學習(Semi-supervised Learning),主要考慮如何利用少量的標註樣本和大量的未標註樣本進行訓練和分類的問題。這裏介紹兩種常見的半監督算法,希望瞭解更多請參考文獻[49]。
      • Self-learning:兩個樣本集合,Labeled,Unlabeled。執行算法如下:
        • 用Labeled樣本集合,生成分類策略F
        • 用F分類Unlabeled樣本,計算誤差
        • 選取Unlabeled中誤差小的子集u,加入到Labeled集合。

        接着重複上述步驟。

        舉一個例子:以前在做page分類器時,先對每一個類人工篩選一些特徵詞,然後根據這些特徵詞對億級文本網頁分類,再然後對每一個明確屬於該類的網頁提取更多的特徵詞,加入原有的特徵詞詞表,再去做分類;中間再輔以一定的人工校驗,這種方法做下來,效果還是不錯的,更關鍵的是,如果發現那個類有badcase,可以人工根據badcase調整某個特徵詞的權重,簡單粗暴又有效。

      • Co-training:其主要思想是:每次循環,從Labeled數據中訓練出兩個不同的分類器,然後用這兩個分類器對Unlabeled中數據進行分類,把可信度最高的數據加入到Labeled中,繼續循環直到U中沒有數據或者達到循環最大次數。
      • 協同訓練,例如Tri-train算法:使用三個分類器.對於一個無標籤樣本,如果其中兩個分類器的判別一致,則將該樣本進行標記,並將其納入另一個分類器的訓練樣本;如此重複迭代,直至所有訓練樣本都被標記或者三個分類器不再有變化。
    • 半監督學習,隨着訓練不斷進行,自動標記的示例中的噪音會不斷積累,其負作用會越來越大。所以如term weighting工作裏所述,還可以從其他用戶反饋環節提取訓練數據,類似於推薦中的隱式反饋。
    • 我們看一個具體的例子,在文獻[45]中,twitter利用了三種方法,user-level priors(發佈tweet的用戶屬於的領域),entity-level priors(話題,類似於微博中的#*#),url-level priors(tweet中的url)。利用上面三種數據基於一定規則獲取到基本的訓練數據,再通過Co-Training獲取更多高質量的訓練數據。上述獲取到的都是正例數據,還需要負例樣本。按照常見的方法,從非正例樣本里隨機抽取作爲負例的方法,效果並不是好,文中用到了Pu-learning去獲取高質量的負例樣本,具體請參考文獻[58]。
      training_data_acquisition

      圖22.文獻[45]訓練數據獲取流程圖

  • 特徵提取
    • 對於每條instance,運用多種文本分析方法提取特徵。常見特徵有:
      • 分詞 or 字的ngram,對詞的權重打分,計算詞的一些領域特徵,又或者計算詞向量,詞的topic分佈。
      • 文本串的特徵,譬如sentence vector,sentence topic等。
    • 提取的特徵,從取值類型看,有二值特徵,浮點數特徵,離線值特徵。
    • 特徵的預處理包括:
      • 一般來說,我們希望instance各維特徵的均值爲0,方差爲1或者某個有邊界的值。如果不是,最好將該維度上的取值做一個變換。
      • 特徵缺失值和異常值的處理也需要額外注意。
    • 特徵選擇,下面這些指標都可以用作篩選區分度高的特徵。
      • Gini-index: 一個特徵的Gini-index越大,特徵區分度越高。
      • 信息增益(Information Gain)
      • 互信息(Mutual Information)
      • 相關係數(Correlation)
      • 假設檢驗(Hypothesis Testing)
  • 模型訓練
    • 模型選擇:通常來說,常用的有監督模型已經足夠了,譬如lr, svm, maxent, naive-bayes,決策樹等。這些基本模型之間的效果差異不大,選擇合適的即可。上一小節講到cnn時,提到深度神經網絡也可以用來做文本分類。深度神經網絡相比較於傳統方法,特徵表示能力更強,還可以自學習特徵。
    • 模型的正則化:一般來說,L1正則化有特徵篩選的作用,用得相對較多,除此外,L2正則化,ElasticNet regularization(L1和L2的組合)也很常用。
    • 對於多分類問題,可以選擇one-vs-all方法,也可以選擇multinomial方法。兩種選擇各有各的優點,主要考慮有:並行訓練multiple class model更復雜;不能重新訓練 a subset of topics。
    • model fine-tuning。借鑑文獻[72]的思路(訓練深度神經網絡時,先無監督逐層訓練參數,再有監督調優),對於文本分類也可以採用類似思路,譬如可以先基於自提取的大規模訓練數據訓練一個分類模型,再利用少量的有標註訓練數據對原模型做調優。下面這個式子是新的loss function,w是新模型參數,w0是原模型參數,l(w,b|xi,yi)是新模型的likelihood,優化目標就是最小化“新模型參數與原模型參數的差 + 新模型的最大似然函數的負數 + 正則化項”。

      minw,bδ2||ww0||221δni=1nl(w,b|xi,yi)+λ(α||w||1+1α2||w||22)
    • model ensemble:也稱“Multi-Model System”,ensemble是提升機器學習精度的有效手段,各種競賽的冠軍隊伍的是必用手段。它的基本思想,充分利用不同模型的優勢,取長補短,最後綜合多個模型的結果。Ensemble可以設定一個目標函數(組合多個模型),通過訓練得到多個模型的組合參數(而不是簡單的累加或者多數)。譬如在做廣告分類時,可以利用maxent和決策樹,分別基於廣告title和描述,基於廣告的landing page,基於廣告圖片訓練6個分類模型。預測時可以通過ensemble的方法組合這6個模型的輸出結果。
  • 評測
    • 評測分類任務一般參考Accuracy,recall, precision,F1-measure,micro-recall/precision,macro-recall/precision等指標。

參考文獻

  1. Term-weighting approaches in automatic text retrieval,Gerard Salton et.
  2. New term weighting formulas for the vector space method in information retrieval
  3. A neural probabilistic language model 2003
  4. Deep Learning in NLP-詞向量和語言模型
  5. Recurrent neural network based language models
  6. Statistical Language Models based on Neural Networks,mikolov博士論文
  7. Rnnlm library
  8. A survey of named entity recognition and classification
  9. Deep learning for Chinese word segmentation and POS tagging
  10. Max-margin tensor neural network for chinese word segmentation
  11. Learning distributed representations of concepts
  12. Care and Feeding of Topic Models: Problems, Diagnostics, and Improvements
  13. LightLda
  14. word2vec
  15. Efficient Estimation of Word Representations in Vector Space
  16. Deep Learning實戰之word2vec
  17. word2vec中的數學原理詳解 出處2
  18. 斯坦福課程-語言模型
  19. Translating Videos to Natural Language Using Deep Recurrent Neural Networks
  20. Distributed Representations of Sentences and Documents
  21. Convolutional Neural Networks卷積神經網絡
  22. A New, Deep-Learning Take on Image Recognition
  23. Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition
  24. A Deep Learning Tutorial: From Perceptrons to Deep Networks
  25. Deep Learning for Computer Vision
  26. Zero-shot leanring by convex combination of semantic embeddings
  27. Sequence to sequence learning with neural network
  28. Exploting similarities among language for machine translation
  29. Grammar as Foreign Language Oriol Vinyals, Lukasz Kaiser, Terry Koo, Slav Petrov, Ilya Sutskever, Geoffrey Hinton, arXiv 2014
  30. Deep Semantic Embedding
  31. 張家俊. DNN Applications in NLP
  32. Deep learning for natural language processing and machine translation
  33. Distributed Representations for Semantic Matching
  34. distributed_representation_nlp
  35. Deep Visual-Semantic Alignments for Generating Image Descriptions
  36. Convolutional Neural Networks for Sentence Classification
  37. Senna
  38. ImageNet Large Scale Visual Recognition Challenge
  39. Krizhevsky A, Sutskever I, Hinton G E. ImageNet Classification with Deep Convolutional Neural Networks
  40. Gradient-Based Learning Applied to Document Recognition
  41. Effetive use of word order for text categorization with convolutional neural network,Rie Johnson
  42. Learning Phrase Representations using RNN Encoder-Decoder for Statistical Machine Translation
  43. Show and Tell: A Neural Image Caption Generator
  44. Deep Image: Scaling up Image Recognition
  45. Large-Scale High-Precision Topic Modeling on Twitter
  46. A. Krizhevsky. One weird trick for parallelizing convolutional neural networks. arXiv:1404.5997, 2014
  47. A Brief Overview of Deep Learning
  48. Going deeper with convolutions. Christian Szegedy. Google Inc. 閱讀筆記
  49. Long Short-Term Memory Recurrent Neural Network Architectures for Large Scale Acoustic Modeling
  50. Semi-Supervised Learning Tutorial
  51. http://www.zhihu.com/question/24904450
  52. LONG SHORT-TERM MEMORY BASED RECURRENT NEURAL NETWORK ARCHITECTURES FOR LARGE VOCABULARY SPEECH RECOGNITION
  53. LSTM Neural Networks for Language Modeling
  54. LONG SHORT-TERM MEMORY
  55. Bengio, Y., Simard, P., Frasconi, P., “Learning long-term dependencies with gradient descent is difficult” IEEE Transactions on Neural Networks 5 (1994), pp. 157–166
  56. AliasLDA
  57. Gibbs sampling for the uninitiated
  58. Learning classifiers from only positive and unlabeled data
  59. TF-ICF: A New Term Weighting Scheme for Clustering Dynamic Data Streams
  60. LDA數學八卦
  61. Chinese Word Segmentation and Named Entity Recognition Based on Conditional Random Fields Models
  62. Conditional Random Fields: Probabilistic Models for Segmenting and Labeling Sequence Data
  63. Chinese Segmentation and New Word Detection using Conditional Random Fields
  64. Gregor Heinrich. Parameter estimation for text analysis
  65. Peacock:大規模主題模型及其在騰訊業務中的應用
  66. L. Yao, D. Mimno, and A. McCallum. Efficient methods for topic model inference on streaming document collections. In KDD, 2009.
  67. David Newman. Distributed Algorithms for Topic Models
  68. Xuemin. LDA工程實踐之算法篇
  69. Brian Lott. Survey of Keyword Extraction Techniques
  70. Yi Wang, Xuemin Zhao, Zhenlong Sun, Hao Yan, Lifeng Wang, Zhihui Jin, Liubin Wang, Yang Gao, Ching Law, and Jia Zeng. Peacock: Learning Long-Tail Topic Features for Industrial Applications. TIST’2015.
  71. 劉知遠. 基於文檔主題結構的關鍵詞抽取方法研究
  72. Hinton. Reducing the Dimensionality of Data with Neural Networks
  73. Samaneh Moghaddam. On the design of LDA models for aspect-based opinion mining
  74. The FLDA model for aspect-based opinion mining: addressing the cold start problem
  75. Ross Girshick et. Rich feature hierarchies for accurate object detection and semantic segmentation
  76. J. Uijlings, K. van de Sande, T. Gevers, and A. Smeulders. Selective search for object recognition. IJCV, 2013.
  77. Baidu/UCLA: Explain Images with Multimodal Recurrent Neural Networks
  78. Toronto: Unifying Visual-Semantic Embeddings with Multimodal Neural Language Models
  79. Berkeley: Long-term Recurrent Convolutional Networks for Visual Recognition and Description
  80. Xinlei Chen et. Learning a Recurrent Visual Representation for Image Caption Generation
  81. Hao Fang et. From Captions to Visual Concepts and Back
  82. Modeling Documents with a Deep Boltzmann Machine
  83. A Deep Dive into Recurrent Neural Nets
  84. Xiang zhang et. Text Understanding from Scratch

*: "bag of words"方法的解釋:(http://blog.csdn.net/u012507022/article/details/52442837)

BoW模型最初應用於文本處理領域,用來對文檔進行分類和識別。BoW 模型因爲其簡單有效的優點而得到了廣泛的應用。其基本原理可以用以下例子來給予描述。給定兩句簡單的文檔:

文檔 1:“我喜歡跳舞,小明也喜歡。”

文檔 2:“我也喜歡唱歌。”

基於以上這兩個文檔,便可以構造一個由文檔中的關鍵詞組成的詞典:

詞典={1:“我”,2:“喜歡”,3:“跳舞”,4:“小明”,5:“也”,6:“唱歌”}

這個詞典一共包含6個不同的詞語,利用詞典的索引號,上面兩個文檔每一個都可以用一個6維向量表示(用整數數字0~n(n爲正整數)表示某個單詞在文檔中出現的次數。這樣,根據各個文檔中關鍵詞出現的次數,便可以將上述兩個文檔分別表示成向量的形式:

文檔 1:[1, 2, 1, 1, 1, 0]

文檔 2:[0, 1, 0, 0, 1, 1]

從上述的表示中,可以很清楚地看出來,在文檔表示過程中並沒有考慮關鍵詞的順序,而是僅僅將文檔看成是一些關鍵詞出現的概率的集合(這是Bag-of-words模型的缺點之一),每個關鍵詞之間是相互獨立的,這樣每個文檔可以表示成關鍵詞出現頻率的統計集合,類似於直方圖的統計表示

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章