目前分類:文獻閱讀 (12)

瀏覽方式: 標題列表 簡短摘要

abstract


本篇論文是解決卷積網路平移不變性的問題,即便訓練出一個準確率很高的網路,但往往圖片稍微移動一下,圖片的預測就會差很多,如下圖所示,橫軸代表對角線往下移動的元素,縱軸代表該類別輸出的機率,由圖可以發現沒有經過blur pool網路的輸出特別的不穩定,但使用本篇論文所提出的blur pool解決方法後就穩定許多。

main method

下圖是作者用一維空間來解釋為什麼會有上述現象發生的原因,如下圖所示,訊號源為[0,0,1,1,0,0,1,1],經過s=2,k=2的max pool後訊號會變成[0 1 0 1],但經過一個小小的shift之後,訊號就會變成[1 1 1 1],造成上述現象產生的原因就是因為有stride的原因

下圖是作者提出的解決方法

  • 首先對原訊號做dense max(k=2,s=1)的動作
    [0 1 1 1 0 1 1 1 0]
  • 再來使用blur pool (k=3,s=2)
    每層k的元素為[1 2 1]/4
    因此訊號前面補齊周邊的1就變成了 1 0 1 1 1 0 1 1 1 0
    做blur pool(shift 0)後就變成了 0.5 1 0.5 1 0.5 1
    做blur pool(shift 1)後就變成了 0.75 0.75 0.75 0.75
    這麼做的原因就會使得輸出變的平滑,有偏移與沒有偏移所產生的結果都會很相近,如同圖上灰色虛線所表示的

因此,套用到二維的圖片後也是相同的原理,前面先做一個dense max,後面再使用blur pool,作者提供了各種不同kernel size的卷積核,分別是

  • k=2, [1,1]/2
  • k=3, [1,2,1]/4
  • k=4, [1,3,3,1]/8
  • k=5, [1,4,6,4,1]/16

Darwin的AI天地 發表在 痞客邦 留言(0) 人氣()

以往我們對神經網路的概念都只是侷限在於輸入一張圖片然後對輸出做分類的動作,就像圖左邊的概念圖一樣,假設輸入的這張圖片是貓,那麼就會根據設定給出對應的學習輸出,在學術上我們稱作label,那麼未來在給定一張網路未曾見過的圖片時,若第一顆神經元的輸出數字很大,代表網路判定這張圖片有很高的機率為貓,這就是傳統的分類機器學習,學術上稱做classification。隨著研究的不斷發展,科學家們發現網路不單單只能做分類,還能做到更進階的物件定位,即在圖上把對應的物件以一個矩形框出對應的位置,學術上稱作localization,那麼學習的輸出應該給定什麼呢?很簡單,定義一個矩形就只要四個參數就可以決定了,分別是物件座標中心(X,Y)、物件的寬(W)、物件的高(H),但是一張圖的物件數量是未知的,若我們很確定未來預測的每張圖片都只有兩個物件,那麼輸出就只要設定成8顆神經元即可

但實際情況可不是這樣,每張圖片的物件數量不定,怎麼解決這個問題呢?科學家想出一個很棒的辦法,即利用特定設計的default box來做回歸學習,學術上也稱作anchor,假設anchor的位置和物件真實的位置(ground truth)很接近,那麼就會把學習偵測此物件的工作交由給此anchor學習,如此的動作在學術上稱做Bounding-Box regression

既然要把某個真實物件的座標(ground truth)交由特定的anchor學習,聰明的科學家們就設定出一套定義兩者之間的轉換公式,讓網路學習並定出相對定的label,在學術上稱做encode,而對於已經學習好的網路,拿到輸出並解析出在圖上真正位置稱為decode

encode

論文上的encode 公式定義如下

底下是各個參數對應名稱:
cx:代表物體中心的x座標
g:代表ground truth box
d:代表defaut box
i:是default box的索引
j:是ground truth box的索引
g^jcx:代表ground truth box中心點的x座標和defaut box中心點x座標相減並除以defaut box的寬
g^jcy:代表ground truth box中心點的y座標和defaut box中心點y座標相減並除以defaut box的高
g^jw:將ground truth box的寬除以defaut box的寬並取log
g^jh:將ground truth box的高除以defaut box的高並取log
m:是個集合,由四個元素組成,分別是cx,cy,w,h
lim:代表由網路預測出第i個defaut box的值

別被複雜的公式嚇跑了,其實白話文來說就是:
g^jcx= (ground truth中心點座標X-anchor中心點座標X)/anchor的寬
g^jcy= (ground truth中心點座標Y-anchor中心點座標Y)/anchor的高
g^jw= log(ground truth的寬/anchor的寬)
g^jh= log(ground truth的高/anchor的高)

文章標籤

Darwin的AI天地 發表在 痞客邦 留言(0) 人氣()

SSD:Single shot multibox detector

本文大部分的圖都是截自以下投影片,這是一家俄國新創深度學習公司的投影片,所以裡面的字體、講解都是俄文,不過投影片的圖就足夠讓我們清楚的了解SSD的整個原理,因此本文選擇以此投影片做為媒介講解。

SSD: Single Shot MultiBox Detector (How it works)

abstract:

SSD是當今最快的object detection算法,兼具了YOLO的速度與FasterRCNN的準度,本篇論文的最大特點是改進了YOLO只用最後一層來檢測目標而SSD運用多層feature map來做檢測,既兼顧大目標物體檢測亦提升小目標物體檢測的精度。本論文將YOLO在PASCAL VOC 2007 test的檢測精度由63.4%提升到74.3%,速度也從45FPS進展到59FPS(論文中闡述與圖中不同),此外,如果採用512*512的大圖片訓練的話,精度甚至可高達81.6%。

Main:

下面圖解說明YOLO與SSD的不同點:
YOLO 是以最後一層全連接層來做box regression的動作,而SSD是結合各層的卷積網路來做box regression
YOLO:

文章標籤

Darwin的AI天地 發表在 痞客邦 留言(0) 人氣()

  • Main idea
    • 大部分的時間Q-learning 都沒有善用到負的reward
    • 假若設牆壁的reward為-100的話,使用迷宮地圖當成實驗環境跑出來的數據會像下圖所示
    • image
    • 學習完的Q table只有靠近牆壁的Q值會變成負的,之後就不會再傳遞擴散了,這就是作者所說的負reward缺點,因此作者給出一個構想圖解釋
    • image

 

  • Proposed Method
    • image
    •  
    • 作者提出使用絕對值來更新Q value,如此一來負的reward就可以一直傳遞下去,圖三為作者的解釋,當要更新Q值的時候,原本的Q learning 演算法會下一個狀態最大的action value 做更新,但是遇到負的reward時,Q learning 通常都不會更新只會更新撞到牆壁的那一次,因此負的reward都不會傳遞開來,作者提出當要更新Q值的時候應該選擇argmax 絕對值大的來更新,如圖三所示,原本的Q learning 會選擇$a_1$,但作者提出應該使用$a_3$ 來做更新的動作(指公式三的p)
  • Experiment
    • 實驗環境
    • image​​​​​​​
      •  
      • exp-1. 1 positive area and 1 negative area are placed in the bait world.
      • exp-2. 1 positive area and 2 negative areas are placed in the bait world.
      • 作者提出兩個實驗環境,如上圖4所示,一個有兩個負reward的區域一個只有一個
      • 實驗結果
        • 實驗參數:the learning rate α = 0.1, and the discount factor γ = 0.9.
        • 實驗一:
          • image​​​​​​​
            • “exp1-p” 代表本文提出的方法,c 代表原本方法,pos代表正的reward 加總,neg代表負的reward 加總,由圖可以得知在正的reward兩種方法不相上下,但是在負的reward中作者提出的方法明顯比原來的方法好
          •  
        • 實驗二:
          • image
          • 在第二個實驗中表現更加明顯,因為第二個實驗環境有兩個負的reward區域,更能體現本文所提出的方法
        •  
  • Future
    • 作者認為在正的reward方面表現沒有很好,是未來需要改進的地方

Darwin的AI天地 發表在 痞客邦 留言(0) 人氣()

1.abstract

此篇文章說明越深的網路越難學,經由此篇網路所介紹的shortcut技巧,resnet可以把網路加深到152層(比VGG網路深8倍),並且使用ensemble的技巧加上resnet可以使得網路在2015 Imagenet 測試集上得到3.57%的錯誤率,是當時ILSVRC2015 比賽的第一名。


上圖即是說明此現象,由圖可以看出,當網路從20層加深到56層的時候,錯誤率更高了,這現象同時體現在訓練集以及測試集中

2.main

作者的想法很簡單,就是把前一層的輸入透過一個連接方式連接到下一層,這麼做可以解決梯度消失的問題,分成兩種,一種稱做identity mapping就是直接拉一個連接點,但有時候F(X)與X的大小不一定完全一樣,這時候就要透過其他方法來讓兩者的大小相等

  • A:使用padding增加dimension
  • B:使用projection shortcuts,也就是使用1*1的卷積核增加dimension,其餘的使用identity mapping
  • C:全部使用projection shortcuts

Darwin的AI天地 發表在 痞客邦 留言(0) 人氣()

Channel Pruning for Accelerating Very Deep Neural Networks

1.abstract:

本篇論文作者提供一個壓縮網路的演算法,藉由使用Lasso regression來找出filter中所存在的冗員,套用此方法來壓縮模型可以使得VGG16加速五倍但錯誤率僅僅上升0.3%,在Resnet上錯誤率上升1.4%但速度可以提升兩倍,在Xception上錯誤率上升1%但速度也提升兩倍。

code 作者也開源放在github上了:https://github.com/yihui-he/channel-pruning

2.main idea:



整篇想法的最主要公式表示如(1)所示,找到最適當的beta以及W使得卷積出來feature map與原始feature map差距最小。beta的參數可以經由lasso regression算出來,若參數裡面包含越多0則代表壓縮率越高,意思就是可以經由矩陣轉換將一些filter清除掉,之後再稍為改變下還沒清除fiter的權重,若input channel由原本的32化簡成8(beta vector裡面有24個0),且稍為改變剩下的channel(8)中的權重發現卷積出來feature map與原始的output feature map差距不大,如此即可單單用input channel為8的卷積核做運算以提升效率。

Y

  • Optimal:

但式子(1)在數學上是屬於NP-hard問題,因此可以加入regression term來解決,具體概念可以參考下面連結

Darwin的AI天地 發表在 痞客邦 留言(0) 人氣()

Building efficient convnets using redundant feature pruning

1.abstract:

本篇論文是基於Pruning filters for effecient convnets上的一個改進,前一篇論文選擇留下了最大的權重然後進行retrain來壓縮模型,在VGG16-CIFAR10的模型上得到了壓縮34%的結果,而套用本篇論文後壓縮的效果可以提升至40%,在Resnet-110也有相互比較但是只從38%變成39%,僅僅提升1%。

2.main method:

主要的概念就是引入分群法的概念來對channel做分群的動作,以cosin 距離來當作分群依據,在向量的世界中cosin距離越大的代表兩個向量的距離越相近,因此作者拿來當作刪除channel的依據,因為若兩者channel的向量相近的話代表其中一個是冗員,那麼即使刪除掉對整體準確率也不會造成太大的影響,因此此演算法的第一步就是將所有的channel做分群的動作,要砍成剩下多少channel數量就分成幾群,之後再從群集中隨便挑選一個代表,其餘的全部刪除,詳細演算法如下:

分群的方法是採取agglomerative clustering,此方法藉由合併兩個最相似的群集最終可以獲得一個tree的形狀,根據所選的群集數量可以在此一tree上任一劃一刀取出,演算法圖解如下,動畫圖摘自參考資料2:

上述演示的是以euclidean distance當作距離來量測,而本篇論文是採用cosine distance來當作距離量測,因此論文中定義兩群集合的平均距離如下所示,當兩個群集的相似度大於設定值時,則將兩個群集合在一起,最終會形成如上列所示的樹狀圖,之後再依造需求選取指定的群集然後做刪減channel的動作。

C_a: 叢集a,包含一群vector,單個代號以i表示
C_b: 叢集b,包含一群vector,單個代號以j表示

3.experiments

下表即為本篇論文與2017年論文(Pruning filters for effecient convnets)的互相比較,從表中可以得出在VGG-16這個網路中的確是優於前一篇論文許多,但在其他網路中相對的就沒顯得那麼出色了

Darwin的AI天地 發表在 痞客邦 留言(0) 人氣()

Visualizing and Understanding Convolutional Networks

一.abstract

本篇論文是可視化卷積神經網路的開山始祖,作者是卷積網路的發明者Yann Lecun的得意門生Matthew Zeiler,主要藉由提出來的可視化方法優化Alexnet網路,文中結果表示經過修改後的網路在勝過原始Alex網路1.7%(single model,test-top5),應用本文提供的方法可以很清楚的看出每一層到底學了什麼特徵,同時本篇論文也是2013年Imagenet分類任務的冠軍,是很值得學習的一篇文章。

二.main idea

文中說提出的方法很類似於[1],不同之處在於那篇文章是從全連接層去做映射,而此文章從卷積核去做映射。

底下為架構一個卷積神經網路的經典順序:

Input(pic) -> conv -> relu -> maxpool

而反卷積網路就將以上動作反著做以求出卷積核對圖片的哪些部分擁有最大激發值

Darwin的AI天地 發表在 痞客邦 留言(0) 人氣()

To prune, or not to prune: exploring the efficacy of pruning for model compression

1.abstract

這是篇Google2017年發佈的論文,主要是透過將矩陣變稀疏進而提升網路的運行速度。 文中最重要的重點就是發現大模型並加上稀疏矩陣表現會比小模型網路的準確度還高上許多。

2.method

稀疏矩陣視意圖:

在每次訓練之中會把權重由大排到小,只選擇那些較大的權重數字,其他較小的權重就由稀疏矩陣乘上0消除那個權重對網路的整體影響,且這個稀疏矩陣的稀疏度是慢慢增加的,如下圖所示,隨著學習率的慢慢遞減,稀疏矩陣的稀疏度慢慢的增加到設定值。文中表示一開始的學習率不能設太高,設太高的話會導致訓練結果不會收斂,像本篇論文實做在mobilenet的時候學習率是設為原本學習率的十分之一。

下面公式就是描述稀疏度的公式,藉由給定開始稀疏度與結束稀疏度以及時間區間就能計算出各個step的稀疏度出來

文章標籤

Darwin的AI天地 發表在 痞客邦 留言(0) 人氣()

MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications

1.Abstract

類神經網路在近幾年已取得巨大的突破,從最開始的Perceptron一直演化到AlexNet、VGG,精確度一直不斷的往上提升,但伴隨著的是模型複雜化,過度複雜的模型使得運算量極大以至於不能在低階產品(如手機上)運行,MobileNet的發明就是為了解決這想法而產生的,文中和許多當前有名的框架互相比較(Inception V3、VGG),速度真的提升許多,雖然精確度有稍許下降,但也都控制在可以接受的範圍內。

2.Main idea

文中最核心的思想就是把傳統的卷積過程簡化成計算量更少的過程,算式並沒有完全等效,但有趨近於等效的功用,主要是把過程分成Depthwise convolution 和 pointwise convolution,文中用公式來舉例說明

* 傳統卷積計算量:
$D_F$:代表輸入特徵圖片的邊長

文章標籤

Darwin的AI天地 發表在 痞客邦 留言(0) 人氣()

ImageNet Classification with Deep Convolutional Neural Networks (2012)

一.abstract

說到深度學習的重大突破就不得不了解這曠世鉅作-Alexnet,現今深度學習的許多技巧在此篇著作中還是可以看到,說明此篇論文對後世影響廣大阿。這CNN架構是模仿著當時很有名的Lenet做修改,隨後在ILSVRC-2010競賽中嶄露頭角,當時最好的成績也不過是錯誤率Top1-45%,Top5-25.7%,與第二名也才差個兩個百分比,可是Alexnet一下就名列前茅且錯誤率達到Top1-37.5%,Top5-17%,一下子就超越七八個百分比,且論文中提及因為運算資源的關係(GPU 只有3GB記憶體)所以網路只能設計這麼大,說明還有很大的進步空間阿,幾年後果不其然,出現了甚至低於人類辨識率的網路,說明CNN的強大阿。本篇論文提出非常多的構想,包括relu、lrn、dropout,以及最重要的概念-加深網路深度可以讓辨識率提高

二.main idea

a.relu nonlinearity


在Alexnet之前,大部分的網路都是採用tanh(x)當作激活函數,但alex從hinton的論文當中發現了relu函數可以使得訓練速度更快,因此便把這個技術引進CNN中,成為現在家喻戶曉的relu函數

Hinton relu 起源:rectified linear units improve restricted boltzmann machines

b.local response normalization


lrn起源是來自神經學中的later-inhibition,主要講述的是發出的神經元訊號會抑制周圍的神經元訊號,這也是我們人類會在某些圖片中擁有錯覺的主要原因,具體可以參考下面連結。文中說明可以使得top-1、top-5錯誤率下降1.4%、1.2%,在cifar-10資料庫中也可以下降2%,不過參考多篇論文心得後發現後續研究者證明這技巧並沒什麼功效。
http://linfengwei.pixnet.net/blog/post/10515788-lateral-inhibition(側抑制)
https://prateekvjoshi.com/2016/04/05/what-is-local-response-normalization-in-convolutional-neural-networks/

c.overlapping pooling

正常的pool層都是stride=n,kernel_size=n,這樣就都不會有重複到的地方,而overlapping pooling就是stride<kernel size的意思,這裡作者設k=3,s=2,作者與k=2,s=2的卷積網路比較發現可以降低top-1:0.4%,top-5:0.3%,不過後來也證實這沒什麼用處。

文章標籤

Darwin的AI天地 發表在 痞客邦 留言(0) 人氣()

Dueling Network Architectures for Deep Reinforcement Learning

 

 

上圖即為原始網路,下圖為dueling網路 主要的不同點在於--conv攤平後的神經元 分別分成兩邊

文章標籤

Darwin的AI天地 發表在 痞客邦 留言(1) 人氣()