池化層的幾種實現方式


參考:https://blog.csdn.net/malefactor/article/details/51078135

一、CNN網絡模型

NLP中CNN模型網絡:

二、Pooling操作

1、CNN中的Max Pooling Over Time操作

(1)概念:

MaxPooling Over Time是NLP中CNN模型中最常見的一種下采樣操作。意思是對於某個Filter抽取到若干特征值,只取其中得分最大的那個值作為Pooling層保留值,其它特征值全部拋棄,值最大代表只保留這些特征中最強的,而拋棄其它弱的此類特征。

(2)CNN中采用MaxPooling好處:

①這個操作可以保證特征的位置與旋轉不變性,因為不論這個強特征在哪個位置出現,都會不考慮其出現位置而能把它提出來。對於圖像處理來說這種位置與旋轉不變性是很好的特性,但是對於NLP來說,這個特性其實並不一定是好事,因為在很多NLP的應用場合,特征的出現位置信息是很重要的,比如主語出現位置一般在句子頭,賓語一般出現在句子尾等等,這些位置信息其實有時候對於分類任務來說還是很重要的,但是Max Pooling 基本把這些信息拋掉了。
②MaxPooling能減少模型參數數量,有利於減少模型過擬合問題。因為經過Pooling操作后,往往把2D或者1D的數組轉換為單一數值,這樣對於后續的Convolution層或者全聯接隱層來說無疑單個Filter的參數或者隱層神經元個數就減少了。

③對於NLP任務來說,Max Pooling有個額外的好處;在此處,可以把變長的輸入X整理成固定長度的輸入。因為CNN最后往往會接全聯接層,而其神經元個數是需要事先定好的,如果輸入是不定長的那么很難設計網絡結構。前文說過,CNN模型的輸入X長度是不確定的,而通過Pooling 操作,每個Filter固定取1個值,那么有多少個Filter,Pooling層就有多少個神經元,這樣就可以把全聯接層神經元個數固定住(如圖2所示),這個優點也是非常重要的。
Pooling層神經元個數等於Filters個數

(3)CNN模型采取MaxPooling Over Time的缺點:

①特征的位置信息在這一步驟完全丟失。在卷積層其實是保留了特征的位置信息的,但是通過取唯一的最大值,現在在Pooling層只知道這個最大值是多少,但是其出現位置信息並沒有保留;

②有時候有些強特征會出現多次,比如我們常見的TF.IDF公式,TF就是指某個特征出現的次數,出現次數越多說明這個特征越強,但是因為Max Pooling只保留一個最大值,所以即使某個特征出現多次,現在也只能看到一次,就是說同一特征的強度信息丟失了

2、改進的Pooling操作:K-Max Pooling

(1)K-MaxPooling的概念:

原先的Max Pooling Over Time從Convolution層一系列特征值中只取最強的那個值,那么我們思路可以擴展一下,K-Max Pooling可以取所有特征值中得分在Top –K的值,並保留這些特征值原始的先后順序(圖3是2-max Pooling的示意圖),就是說通過多保留一些特征信息供后續階段使用。

很明顯,K-Max Pooling可以表達同一類特征出現多次的情形,即可以表達某類特征的強度;另外,因為這些Top K特征值的相對順序得以保留,所以應該說其保留了部分位置信息,但是這種位置信息只是特征間的相對順序,而非絕對位置信息。

(2)keras實現:https://blog.csdn.net/u010976347/article/details/80739208

3、Chunk-Max Pooling

(1)Chunk-MaxPooling的思想是:

把某個Filter對應的Convolution層的所有特征向量進行分段,切割成若干段后,在每個分段里面各自取得一個最大特征值,比如將某個Filter的特征向量切成3個Chunk,那么就在每個Chunk里面取一個最大值,於是獲得3個特征值。(如圖4所示,不同顏色代表不同分段)

乍一看Chunk-Max Pooling思路類似於K-Max Pooling,因為它也是從Convolution層取出了K個特征值,但是兩者的主要區別是:K-Max Pooling是一種全局取Top K特征的操作方式,而Chunk-Max Pooling則是先分段,在分段內包含特征數據里面取最大值,所以其實是一種局部Top K的特征抽取方式。

至於這個Chunk怎么划分,可以有不同的做法,比如可以事先設定好段落個數,這是一種靜態划分Chunk的思路;也可以根據輸入的不同動態地划分Chunk間的邊界位置,可以稱之為動態Chunk-Max方法(這種稱謂是我隨手命名的,非正式稱謂,請注意)。

Chunk-Max Pooling很明顯也是保留了多個局部Max特征值的相對順序信息,盡管並沒有保留絕對位置信息,但是因為是先划分Chunk再分別取Max值的,所以保留了比較粗粒度的模糊的位置信息;當然,如果多次出現強特征,則也可以捕獲特征強度。

Event Extraction via Dynamic Multi-Pooling Convolutional Neural Networks這篇論文提出的是一種ChunkPooling的變體,就是上面說的動態Chunk-Max Pooling的思路,實驗證明性能有提升。Local Translation Prediction with Global Sentence Representation 這篇論文也用實驗證明了靜態Chunk-Max性能相對MaxPooling Over Time方法在機器翻譯應用中對應用效果有提升。

總結:

如果思考一下,就會發現,如果分類所需要的關鍵特征的位置信息很重要,那么類似Chunk-Max Pooling這種能夠粗粒度保留位置信息的機制應該能夠對分類性能有一定程度的提升作用;但是對於很多分類問題,估計Max-Pooling over time就足夠了。

比如我們拿情感分類來說,估計用Chunk-max策略應該有幫助,因為對於這種表達模式:
“Blablabla….表揚了你半天,BUT…..你本質上就是個渣”
與這種表達模式
“雖然說你是個渣,但是…..Blablabla…..歐巴我還是覺得你最好,因為你最帥”

明顯位置信息對於判別整體情感傾向是有幫助作用的,所以引入位置信息應該有幫助。

所以,你分析下你手頭的問題,看看位置是不是重要特征,如果是,那么套用一下Chunk-Max策略,估計性能會有提升,比如上面舉的情感分類問題估計效果會有提升。

 

 


免責聲明!

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



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