#Datawhale_NLP Task5 基於深度學習的文本分類2

文本表示方法Parts3

word2Vec模型

語言模型+訓練算法
自然語言處理最細的粒度是詞語,詞語是人類的抽象總結,是一種符號,對計算機而言是無法識別的。因此,要先把詞語表示成可以讓計算機識別並處理的數字或向量,這個過程叫做詞嵌入(word Embedding)方法。

word2Vec模型
語言模型 CBOW:預測目標單詞 SG:預測上下文
訓練算法 Hierachical Softmax Negtive Sampling

基本思想

word2vec模型背後的基本思想是出現在上下文環境裏的詞進行預測。對於每一條輸入文本,選取一個上下文窗口和一箇中心詞,並基於中心詞去預測窗口裏其他詞出現的概率。

  • 兩種常見的語言模型的網絡結構:

在這裏插入圖片描述

符號說明:w(t)代表當前詞語在句子中位置t,其他記號同理。在這兩種語言模型的示意圖中,窗口大小爲5,除了當前詞語之外的其他詞語共同構成上下文。

  • Word2Vec模型實際上分爲了兩個部分,第一部分是建立模型,第二部分是通過模型獲取嵌入詞向量。
  • Word2Vector的整個建模過程實際上與自編碼器的思想很相似,即先基於訓練數據構建一個神經網絡,當這個模型訓練好以後,我們並不會以這個訓練好的模型處理新的任務,我們真正需要的是這個模型通過訓練數據所學的的參數,例如隱層的權重矩陣。後面我們將會看到這些權重在Word2Vec中實際上就是我們試圖去學習的「word vectors」。

如果看不懂的話,還有更白話的解釋,神仙指路

語言模型

  • 在統計自然語言處理中,語言模型指的是計算一個句子的概率模型。傳統的語言模型中詞的表示是原始的、面向字符串的、兩個語義相似地詞的字符串可能完全不同,比如「土豆」和「洋芋」。字符串本身無法儲存語義信息。
  • 神經概率語言模型(Neuaral Probabilistic Language
    Model)中詞的表示是向量形式、面向語義的。是一種有監督的機器學習模型。

語言模型CBOW

sample
{ ( C o n t e x t ( w ) , w ) w C } \{(Context(w),w)|w\in C\}
model
y = f ( x ) y=f(x)
goal: 基於訓練集數據用機器學習算法得到語言模型f。這樣做的好處是:利用這個f的模型參數得到輸入x的某種向量化表示。

最大化對數似然函數
L = w C l o g P ( w C o n t e x t ( w ) ) L=\sum_{w \in C} log P(w|Context(w))
其中w表示語料庫C中任意一個詞。

  • Input(輸入層)是下文詞語的詞向量(什麼!我們不是在訓練詞向量嗎?不不不,我們是在訓練CBOW模型,詞向量只是個副產品,確切來說,是CBOW模型的一個參數。訓練開始的時候,詞向量是個隨機值,隨着訓練的進行不斷被更新)
  • Projection(投影層)對其求和,所謂求和,就是簡單的向量加法。
  • Output(輸出層)輸出最可能的w。由於語料庫中詞彙量是固定的|C|個,所以上述過程其實可以看做一個多分類問題。給定特徵,從|C|個分類中挑一個。

在這裏插入圖片描述
解決基於神經網絡模型的多分類問題常用方法是softmax迴歸。
[ p ( y ( i ) = 1 x ( i ) ; θ ) p ( y ( i ) = 2 x ( i ) ; θ ) . . . p ( y ( i ) = k x ( i ) ; θ ) ] = 1 j = 1 k e θ j T x ( i ) [ e θ j T x ( 1 ) e θ j T x ( 2 ) . . . e θ j T x ( n ) ] \begin{gathered} \begin{bmatrix} p(y^{(i)} = 1| x^{(i)};\theta) \\p(y^{(i)} = 2| x^{(i)};\theta)\\...\\p(y^{(i)} = k| x^{(i)};\theta) \end{bmatrix}=\frac{1}{\sum_{j=1}^k e^{\theta^{T}_{j}x^{(i)}} }\begin{bmatrix} e^{\theta^{T}_{j}x^{(1)}} \\e^{\theta^{T}_{j}x^{(2)}}\\...\\e^{\theta^{T}_{j}x^{(n)}} \end{bmatrix} \end{gathered}
也就是說,softmax迴歸需要對語料庫中每個詞語(類)都計算一遍輸出概率並進行歸一化。(一個詞一個類 ????這。。)因此,
爲了避免要計算所有詞的softmax概率,word2vec採樣了霍夫曼樹來代替從隱藏層到輸出softmax層的映射。在這裏插入圖片描述
CBOW模型的網絡輸出層就是一個霍夫曼樹
非葉子節點相當於一個神經元(感知機,邏輯斯諦迴歸就是感知機的輸出帶入 f ( x ) = 1 1 + e x f(x)=\frac{1}{1+ e ^{x}} ),二分類決策輸出1或者0,分別代表向下左轉或向下右轉;每個葉子節點代表語料庫中的一個詞語,於是每個詞語都可以被01唯一地編碼,並且其編碼序列對應一個事件序列,於是我們可以計算條件概率
P ( w C o n t e x t ( w ) ) P(w|Context(w)) 具體的推算過程可見數學推導

語言模型Skip-grams

舉例說明Skip-grams過程:
假如我們有一個句子「The dog barked at the mailman」。
1、首先我們選句子中間的一個詞作爲我們的輸入詞,例如我們選取‘doa’作爲input word,稱其爲中心詞
2、有了中心詞,我們再設置一個skip_window
的參數,它代表着我們從當前input word的一側(左邊或者右邊)選取詞的數量,稱其爲窗口大小。如果我們設置skip_window = 2,那我們最終獲得窗口的詞就是[‘The’, ‘dog’,‘barked’,‘at’]。skip_window = 2代表着選取左input word左側2個詞和右側2個詞進入我們的窗口,所以整個窗口大小span = 2*2=4。中心詞兩側的詞稱其爲背景詞。另一個參數叫做num_skips,它代表着我們從整個窗口中選取多少個不同的詞作爲我們的output word。語料庫中的每一個詞都有兩種身份,中心詞或者背景詞。
3、神經網絡基於這些訓練數據將會輸出一個概率分佈,這個概率代表着我們的詞典中每個詞作爲input word的ouput word 的可能性。

  • 模型構建:
    sample
    { ( w , C o n t e x t ( w ) ) w C } \{(w,Context(w))|w\in C\}
    model
    y = f ( x ) y=f(x)
    goal: 基於訓練集數據用機器學習算法得到語言模型f。這樣做的好處是:利用這個f的模型參數得到輸入x的某種向量化表示。
    在這裏插入圖片描述