深度學習面試100題(第6-10題)

七月線上實驗室發表於2018-07-09

1.CNN的卷積核是單層的還是多層的?

解析:

一般而言,深度卷積網路是一層又一層的。層的本質是特徵圖, 存貯輸入資料或其中間表示值。一組卷積核則是聯絡前後兩層的網路參數列達體, 訓練的目標就是每個卷積核的權重引數組。


描述網路模型中某層的厚度,通常用名詞通道channel數或者特徵圖feature map數。不過人們更習慣把作為資料輸入的前層的厚度稱之為通道數(比如RGB三色圖層稱為輸入通道數為3),把作為卷積輸出的後層的厚度稱之為特徵圖數。


卷積核(filter)一般是3D多層的,除了面積引數, 比如3x3之外, 還有厚度引數H(2D的視為厚度1). 還有一個屬性是卷積核的個數N。


卷積核的厚度H, 一般等於前層厚度M(輸入通道數或feature map數). 特殊情況M > H。

卷積核的個數N, 一般等於後層厚度(後層feature maps數,因為相等所以也用N表示)。

卷積核通常從屬於後層,為後層提供了各種檢視前層特徵的視角,這個視角是自動形成的。

卷積核厚度等於1時為2D卷積,對應平面點相乘然後把結果加起來,相當於點積運算;

卷積核厚度大於1時為3D卷積,每片分別平面點求卷積,然後把每片結果加起來,作為3D卷積結果;1x1卷積屬於3D卷積的一個特例,有厚度無面積, 直接把每片單個點乘以權重再相加。


歸納之,卷積的意思就是把一個區域,不管是一維線段,二維方陣,還是三維長方塊,全部按照卷積核的維度形狀,對應逐點相乘再求和,濃縮成一個標量值也就是降到零維度,作為下一層的一個feature map的一個點的值!

可以比喻一群漁夫坐一個漁船撒網打魚,魚塘是多層水域,每層魚兒不同。

船每次移位一個stride到一個地方,每個漁夫撒一網,得到收穫,然後換一個距離stride再撒,如此重複直到遍歷魚塘。

A漁夫盯著魚的品種,遍歷魚塘後該漁夫描繪了魚塘的魚品種分佈;

B漁夫盯著魚的重量,遍歷魚塘後該漁夫描繪了魚塘的魚重量分佈;

還有N-2個漁夫,各自興趣各幹各的;

最後得到N個特徵圖,描述了魚塘的一切!


2D卷積表示漁夫的網就是帶一圈浮標的漁網,只打上面一層水體的魚;

3D卷積表示漁夫的網是多層巢狀的漁網,上中下層水體的魚兒都跑不掉;

1x1卷積可以視為每次移位stride,甩鉤釣魚代替了撒網;


下面解釋一下特殊情況的 M > H:

實際上,除了輸入資料的通道數比較少之外,中間層的feature map數很多,這樣中間層算卷積會累死計算機(魚塘太深,每層魚都打,需要的魚網太重了)。所以很多深度卷積網路把全部通道/特徵圖劃分一下,每個卷積核只看其中一部分(漁夫A的漁網只打撈深水段,漁夫B的漁網只打撈淺水段)。這樣整個深度網路架構是橫向開始分道揚鑣了,到最後才又融合。這樣看來,很多網路模型的架構不完全是突發奇想,而是是被引數計算量逼得。特別是現在需要在移動裝置上進行AI應用計算(也叫推斷), 模型引數規模必須更小, 所以出現很多減少握手規模的卷積形式, 現在主流網路架構大都如此。


2.什麼是卷積?

解析:

對影象(不同的資料視窗資料)和濾波矩陣(一組固定的權重:因為每個神經元的多個權重固定,所以又可以看做一個恆定的濾波器filter)做內積(逐個元素相乘再求和)的操作就是所謂的『卷積』操作,也是卷積神經網路的名字來源。

非嚴格意義上來講,下圖中紅框框起來的部分便可以理解為一個濾波器,即帶著一組固定權重的神經元。多個濾波器疊加便成了卷積層。

 

640?wx_fmt=png


OK,舉個具體的例子。比如下圖中,圖中左邊部分是原始輸入資料,圖中中間部分是濾波器filter,圖中右邊是輸出的新的二維資料。

 

640?wx_fmt=png


640?wx_fmt=jpeg

中間濾波器filter與資料視窗做內積,其具體計算過程則是:4*0 + 0*0 + 0*0 + 0*0 + 0*1 + 0*1 + 0*0 + 0*1 + -4*2 = -8



3.什麼是CNN的池化pool層?

解析:

池化,簡言之,即取區域平均或最大,如下圖所示(圖引自cs231n)


640?wx_fmt=jpeg 上圖所展示的是取區域最大,即上圖左邊部分中 左上角2x2的矩陣中6最大,右上角2x2的矩陣中8最大,左下角2x2的矩陣中3最大,右下角2x2的矩陣中4最大,所以得到上圖右邊部分的結果:6 8 3 4。


4.簡述下什麼是生成對抗網路。

解析:

GAN之所以是對抗的,是因為GAN的內部是競爭關係,一方叫generator,它的主要工作是生成圖片,並且儘量使得其看上去是來自於訓練樣本的。另一方是discriminator,其目標是判斷輸入圖片是否屬於真實訓練樣本。


更直白的講,將generator想象成假幣制造商,而discriminator是警察。generator目的是儘可能把假幣造的跟真的一樣,從而能夠騙過discriminator,即生成樣本並使它看上去好像來自於真實訓練樣本一樣。

640?wx_fmt=jpeg

如下圖中的左右兩個場景:

 

640?wx_fmt=png

更多請參見此課程:《生成對抗網路班》(連結:https://www.julyedu.com/course/getDetail/83)


5.學梵高作畫的原理是什麼?

解析:

這裡有篇如何做梵高風格畫的實驗教程《教你從頭到尾利用DL學梵高作畫:GTX 1070 cuda 8.0 tensorflow gpu版》(連結:http://blog.csdn.net/v_july_v/article/details/52658965),至於其原理請看這個視訊:NeuralStyle藝術化圖片(學梵高作畫背後的原理)(連結:http://www.julyedu.com/video/play/42/523)。

640?wx_fmt=gif

為了幫助大家更好的學習和理解深度學習,我們特意推出了“深度學習第四期”課程,7月31日開課,每週二週四晚上8~10點直播上課,每次課至少2小時,共10次課;本課程提供以下服務:直播答疑、課後回放、佈置作業且解答、畢業考試且批改、面試輔導。課程詳情可點選文末“閱讀原文”進行檢視,或者加微信客服:julyedukefu_02進行諮詢。

640?wx_fmt=jpeg

相關文章