深度學習
深度學習是機器學習的分支,也就是神經網絡,為什么稱之為”深度“?因為有很多連接在一起的神經層!
前饋網絡
Feedforward Networks 也叫Multilayer Perceptrons(多層感知機),大致的結構如下圖所示

其中,每一個節點都可以看做是一個函數,將上一層傳過來的輸入信息做線性變換,再經過一個激活函數輸出給下一層,如下圖所示

對於最后的輸出層,我們可以根據任務的種類來選擇激活函數,如二分類任務中我們使用sigmoid函數(也就是logistic函數),多分類任務中使用softmax函數(得到的值都在0-1之間,看做概率)。
Word Embedding
在NLP的深度學習中,現在最流行的表示詞的方法就是Word Embedding,它將詞map成(一般較低緯度的)向量的形式,而這些向量的背后也是具有含義的,比如貓和狗的向量表示會比貓和石頭來的接近(cosine距離)。那么要怎么得到詞的Word Embedding呢?也是可以用神經網絡來訓練得到(其實就是神經層的weights)。在后面的例子中可以看到具體是怎么實現的。
訓練
模型的輸入可以是one-hot,也可以是詞袋,詞向量,或者TF-IDF之類的表示,訓練過程其實就是參數的學習過程,通過最大化概率\(L = \prod_{i=0}^mP(y_i|x_i)\),或者最小化\(-logL\)來訓練,這里就需要用到梯度下降的方法,具體不再展開,實際中都是學習框架完成的,如TensorFlow,pytorch等。
有興趣的可以在我的github上查看簡單的示例。
優缺點
優點:
‣ Robust to word variation, typos, etc
‣ Excellent generalization
‣ Flexible — customised architecture for different tasks
缺點:
‣ Much slower than classical ML models... but GPU acceleration
‣ Lots of parameters due to vocabulary size
‣ Data hungry, not so good on tiny data sets
‣ Pre-training on big corpora helps
