1. 程式人生 > >深度學習面試題總結

深度學習面試題總結

一、CNN為什麼可以在CV/NLP/Speech等領域都可以使用?

1. 卷積是因為輸入資料的區域性相關性;

2. 權值共享是因為輸入資料的區域性特徵具有平移不變性,即在不同位置具有共性的區域性特徵。這樣,經過多層次堆疊,低層區域性特徵可以抽取成高層全域性特徵。

3. 權值共享能夠降低引數量,而且降低了網路的訓練難度。

note: 如果權值不共享,那就是區域性連線層了。在某些應用,如人臉在不同的區域存在不同的特徵(眼睛/鼻子/嘴的分佈位置相對固定),當不存在全域性的區域性特徵分佈時,區域性連線層更適合特徵的提取。

二、CNN最成功的應用是在CV,那為什麼NLP和Speech的很多問題也可以用CNN解出來?為什麼AlphaGo裡也用了CNN?這幾個不相關的問題的相似性在哪裡?CNN通過什麼手段抓住了這個共性?

以上幾個不相關問題的相關性在於,都存在區域性與整體的關係,由低層次的特徵經過組合,組成高層次的特徵,並且得到不同特徵之間的空間相關性。如下圖:低層次的直線/曲線等特徵,組合成為不同的形狀,最後得到汽車的表示。

  • CNN抓住此共性的手段主要有四個:區域性連線/權值共享/池化操作/多層次結構。
  • 區域性連線使網路可以提取資料的區域性特徵;權值共享大大降低了網路的訓練難度,一個Filter只提取一個特徵,在整個圖片(或者語音/文字) 中進行卷積;池化操作與多層次結構一起,實現了資料的降維,將低層次的區域性特徵組合成為較高層次的特徵,從而對整個圖片進行表示。
  • 如果每一個點的處理使用相同的Filter,則為全卷積,如果使用不同的Filter,則為Local-Conv

為什麼很多做人臉的Paper會最後加入一個Local Connected Conv?

    • DeepFace 先進行了兩次全卷積+一次池化,提取了低層次的邊緣/紋理等特徵。
    • 後接了3個Local-Conv層,這裡是用Local-Conv的原因是,人臉在不同的區域存在不同的特徵(眼睛/鼻子/嘴的分佈位置相對固定),當不存在全域性的區域性特徵分佈時,Local-Conv更適合特徵的提取
  • 三、什麼樣的資料集不適合用深度學習?
    • 資料集太小,資料樣本不足時,深度學習相對其它機器學習演算法,沒有明顯優勢。
    • 資料集沒有區域性相關特性,目前深度學習表現比較好的領域主要是影象/語音/自然語言處理等領域,這些領域的一個共性是區域性相關性。影象中畫素組成物體,語音訊號中音位組合成單詞,文字資料中單詞組合成句子,這些特徵元素的組合一旦被打亂,表示的含義同時也被改變。對於沒有這樣的區域性相關性的資料集,不適於使用深度學習演算法進行處理。舉個例子:預測一個人的健康狀況,相關的引數會有年齡、職業、收入、家庭狀況等各種元素,將這些元素打亂,並不會影響相關的結果。