1. 程式人生 > >一次失敗的嘗試?使用 CNN+DT進行文字分類

一次失敗的嘗試?使用 CNN+DT進行文字分類

最近在搞機器學習,產品需要對句子進行主題分類,具體來說就是給你一兩句話,然後把他劃分到不同的主題上。

那經過調研測試,使用 text-cnn 進行主題分類效果不錯,準確率達到了92%。

今天突然來「靈感」了,覺得可以嘗試CNN+DesicionTree,如何實施呢?

1、進行 常規 cnn 模型的訓練

2、把測試集重新放入 cnn 模型,得到中間產物  max-pool 的 tensor,大概就是[None, hidden_dim],hidden_dim 就是我們進行決策樹訓練的特徵,然後放入DecisionTreeClassifier中進行訓練,測試

3、效果一般般 ?

不甘心呀,怎麼辦,就這麼宣佈失敗了??實在太想創新了?,想想使用 cnn 進行分類的過程,看看有沒有改進的地方:

1、embedding 層,好像沒有呀,這一層的主要工作就是通過字典,把句子變成了矩陣,變成詞級別?試過了效果不好

2、卷積層,這個應該是在卷積核大小(改變不同的卷積核,包括嘗試多個卷積核效果都不理想)?卷積核數目?都不理想

3、fc 層:看很多人說去掉 fc 層,沒嘗試,感覺作用不大,fc 層可以是的句子特徵充分表現出來,例如,我不想吃下午飯了[2,4,6],換個說法,我下午飯不想吃了,很有可能進過卷積後是[2,6,4],問題就在這裡了,如果沒有fc 層,經過 softmax 得到的分類就不一樣了

4、好,接著往下看,靈光一閃,是不是可以改進下啟用函式?現在用的是 relu,

這個好像有改進空間耶,它可以表示成啟用訊號、抑制訊號,但是沒有反向訊號!!!!語言中否定詞是不是就是逆向訊號呀?太好了,那就嘗試換個啟用函式,使用leaky_relu,加上反向訊號,

ok,再次測試,?,還是不怎麼滴,或許是資料量不大(1000條資料,尷尬,資料這麼少還要深度學習,哈哈)。