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

前言

這篇主要介紹一下基本的基於卷積神經網絡方法對序列特徵的處理,也就是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


分享到:


相關文章: