後續一個比較有價值的進展,是一個叫Lin Min的小夥子(我的PhD學生, 現在跟Bengio在做博士后)提出來的Network in Network。當初的想法是人的神經元具備非常複雜的結構,卷積外加非線性操作很難模擬它的功能,應該用一個更加複雜的結構來替代,這個結構可以是任意的網路結構;如果這個網路是一個多層感知機的話,那麼這種網路就變成了在通常的3×3,5×5卷積的基礎上,增加1×1卷積,從而提出一個1×1卷積的概念。
同時後面的全連接參數太多,容易overfitting,可以扔掉。既然前面有了比較複雜的子網路,後面則只要用Global average pooling,就可以得到我需要的feature。
GoogleNet借鑒了Network in Network的子網路和1x1卷積的思想,子網路設計得更加複雜並且非常合理,每個子網路擁有多通道,既有1×1的卷積,也有1×1,3×3的疊加,1×1,5×5疊加,或3×3 max pooling,1×1的疊加,可以實現多種尺度上的perception。 GoogleNet把自己的網路結構也叫做network in a network in a network。