深度學習:前饋網絡 Feedforward Networks


深度學習

深度學習是機器學習的分支,也就是神經網絡,為什么稱之為”深度“?因為有很多連接在一起的神經層!

前饋網絡

Feedforward Networks 也叫Multilayer Perceptrons(多層感知機),大致的結構如下圖所示

p1

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

\[h_i = tanh(\sum_jw_{ij}x_j + b_i)\ \ w_{ij}表示權重weight,b_i表示偏差bias,tanh是一種激活函數 \]

p2

對於最后的輸出層,我們可以根據任務的種類來選擇激活函數,如二分類任務中我們使用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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM