【論文筆記】Convolutional Neural Networks for Sentence Classification

paper鏈接 https://arxiv.org/abs/1408.5882
閱讀這篇paper的一些筆記:

Abstract

本文將CNN和NLP結合;
介紹了一系列的對比實驗,實驗結果說明了:

  • 一個簡單的(單層神經網絡)的CNN模型
  • 一點超參數的調節(Filter的個數)
  • static word vector

文本分類的效果很好

non-static就是詞向量隨着模型訓練變化,這樣的好處是詞向量可以根據數據集做適當調整

static就是直接使用word2vec訓練好的詞向量即可

卷積之後得到的列向量維度也是不同的,可以通過pooling來消除句子之間長度不同的差異

Introduction

主要是介紹了CNN近年來在NLP領域有一些發展

Model

這是本文的模型,基本也就是CNN的結構

左邊是一個n*k的矩陣,表示一句話的n個詞語,每個詞語是一個k維向量
(這裏word2vec)

然後設置一個滑窗的長度h,用這個滑窗滑過整個矩陣,然後通過下面這個公式的計算,算出h對應的一個特徵的向量c

w是權重,b是偏移量
f就是一個非線性函數
(卷積核)

形成這個向量,稱爲feature map

我們可以通過改變h的大小,生成很多feature maps

然後對於每個feature map,採取選出這個向量中的最大值,(意在找到最重要的特徵)

同時也解決了每個feature map不等長,統一了維度的問題

然後再將這個傳遞到 全連接層
這是一個softmax層(因爲涉及到句子的分類問題)

輸出的就是對於不同的label的概率分佈

數據集相對較小,很容易就會發生過擬合現象
所以這裏引如dropout來減少過擬合現象。

就是產生一定的概率來mask掉一些點

Regularization

這裏用到了dropout和l2正則項,避免過擬合
dropout就是將pooling之後的結果隨機mask一部分值
比如,我們在這裏pooling之後的結果是z,我們將z處理成y之後向前傳遞的時候,
然後我們就做一個 and 操作

每一次梯度下降,調整參數的時候,依靠這個閾值s來約束中間的參數

Result

這裏是一些數據集
然後作者對比了自己的模型和其他下面很多模型的表現,發現效果很好;
在這裏,rand是一個隨機的詞向量模型
static 就是用pre-trained word2vec詞向量
non-static 就是會根據specific task來調整詞向量(這裏也不太清楚)
multichannel就是兩種混合來用

Conclusion

CNN在NLP的一個嘗試,並且效果還不錯
說明了,pre-trained的word vector 是deep learning在NLP領域重要的組成部分
提特徵不同,我糾結於很多中間過程,但是瞭解的不多,或者思維習慣,

  • Ref

http://blog.csdn.net/stdcoutzyx/article/details/49022443

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