序列特徵的處理方法之二:基於卷積神經網絡方法

前言

上一篇文章介紹了基本的基於注意力機制方法對序列特徵的處理,這篇主要介紹一下基本的基於卷積神經網絡方法對序列特徵的處理,也就是TextCNN方法。序列特徵的介紹,背景以及應用可以參考上一篇的詳細介紹,這裏簡單回顧一下定義,用戶在使用APP或網站的時候,用戶會產生一些針對物品的行爲,比如點擊感興趣的物品,收藏或購買物品等,而這些行爲往往代表着用戶對這些物品是感興趣的,而將這些交互過的物品放在時間軸來看,就形成了用戶感興趣的物品序列,我們要處理的數據對象類似如圖 1 所示具有時序關係的序列特徵,這裏拿用戶感興趣的物品序列爲例作爲處理對象。

▲ 圖1. 用戶感興趣的物品序列

 

我們都知道用戶的歷史行爲中可能存在着一些局部的連續行爲,比如最近新型冠狀病毒疫情嚴重,可能用戶在過去幾天內連續買了口罩和酒精這種消毒和防護用品,那麼在推薦中可以根據這種局部信息來推薦一些跟防護和消毒相關的商品。而淺層的卷積神經網絡由於其卷積感受野比較小,善於捕獲局部信息,因此可以利用淺層卷積神經網絡來對序列特徵中的局部行爲模式進行建模。鑑於針對句子序列建模的卷積神經網絡TextCNN也是針對embedding matrix做處理,因此選用TextCNN來對用戶感興趣的物品序列進行處理。

TextCNN原理

如圖 2 所示爲TextCNN對句子序列建模並進行分類的示意圖:

▲ 圖 2. TextCNN示意圖[1]

 

  1. Embedding:每個單詞包括標點都被處理成5維的embedding vector,句長爲7,因此處理之後爲7×5的矩陣,爲圖 2 的第一列所示。
  2. Convolution:經過 kernel_sizes分別爲2,3,4的一維卷積層,每個kernel_size 都有2個卷積核,因此經過卷積之後輸出6個卷積結果,其中卷積核的示意圖爲圖 2 第二列所示,卷積後的結果爲圖 2 第三列所示。需要說明的一點是,從圖 2 可以看出卷積核的高分別有2,3和4,而卷積核的寬都是都和embedding vector的維度一致,這是因爲每一個向量代表一個詞,在抽取特徵的過程中,詞做爲文本的最小粒度,應該保證其信息的完整性。
  3. MaxPooling:對卷積後得到的6個結果進行MaxPooling,然後進行concact,最終得到一個6維的特徵向量,如圖 2 第四列所示。
  4. Fully Connect and Softmax:在6維的特徵向量後加上一個神經元爲2的全連接層,並進行softmax歸一化得到分類概率值,如圖 2 第五列所示。

應用在序列特徵上

我們主要借鑑的是上面介紹的TextCNN提取特徵的方法,也就是上面介紹的如何把embedding matrix變爲最終的6維特徵向量的方法。如圖 3 所示:

▲ 圖 3. TextCNN的序列特徵處理

 

一般在把TextCNN應用在序列特徵的處理上時一維卷積的kernel_sizes設置爲2或3,或者同時都用,每個kernel_sizes的卷積核個數一般都爲1。一維卷積核大小分別設置爲2和3時可以提取不同範圍大小的局部信息,保證了特徵的多樣性。

除此之外,爲了彌補有關全局信息提取的不足之處,還可以結合max/mean/sum pooling提取全局特徵的方法,使得提取的特徵既有全局信息又有局部信息[2],如圖 4 所示,其中全局pooling和textCNN共享序列特徵的embedding matrix。

▲ 圖 4. 結合TextCNN和全局pooling的序列特徵處理

 

總結

卷積神經網絡因其滑動卷積的計算方式對局部特徵的提取有天然的優勢,因此成爲提取局部信息的首選建模方法。除此之外,還可以結合全局pooling的方法提取全局特徵,彌補對全局特徵提取的不足,提高特徵的多樣性。與此同時,之前介紹過多值類別特徵的處理方法,同樣可以採用textCNN進行局部特徵的提取。

參考文獻

[1] Convolutional Neural Networks for Sentence Classification

[2] Convolutional Sequence Embedding Recommendation Model

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