面試常問的深度學習(DNN、CNN、RNN)的相關問題 面試常問的深度學習(DNN、CNN、RNN)的相關問題

面試常問的深度學習(DNN、CNN、RNN)的相關問題

神經網絡

的學習就是學習如何利用矩陣的線性變換激活函數的非線性變換,將原始輸入空間投向線性可分/稀疏的空間去分類/迴歸。增加節點數:增加維度,即增加線性轉換能力。增加層數:增加激活函數的次數,即增加非線性轉換次數。

對卡在局部極小值的處理方法:

1.調節步伐調節學習速率,使每一次的更新“步伐”不同2.優化起點:合理初始化權重(weights initialization)、預訓練網絡(pre-train),使網絡獲得一個較好的“起始點”,如最右側的起始點就比最左側的起始點要好。常用方法有:高斯分佈初始權重(Gaussian distribution)、均勻分佈初始權重(Uniform distribution)、Glorot 初始權重、He初始權、稀疏矩陣初始權重(sparse matrix)。

淺層VS深層

淺層神經網絡可以模擬任何函數,但數據量的代價是無法接受的。深層解決了這個問題。相比淺層神經網絡,深層神經網絡可以用更少的數據量來學到更好的擬合。深層的前提是:空間中的元素可以由迭代發展而來的。

防止過擬合

L2正則化Dropout(若規律不是在所有樣本中都存在,dropout會刪除這樣的規律),每個epoch之後shuffle訓練數據,設置early-stopping。加Batch Normalization(BN首先是把所有的samples的統計分佈標準化,降低了batch內不同樣本的差異性,然後又允許batch內的各個samples有各自的統計分佈)BN最大的優點爲允許網絡使用較大的學習速率進行訓練,加快網絡的訓練速度(減少epoch次數),提升效果。

爲何使用Batch Normalization

若用多個梯度的均值來更新權重的批量梯度下降法可以用相對少的訓練次數遍歷完整個訓練集,其次可以使更新的方向更加貼合整個訓練集,避免單個噪音樣本使網絡更新到錯誤方向。然而也正是因爲平均了多個樣本的梯度,許多樣本對神經網絡的貢獻就被其他樣本平均掉了,相當於在每個epoch中,訓練集的樣本數被縮小了。batch中每個樣本的差異性越大,這種弊端就越嚴重。一般的解決方法就是在每次訓練完一個epoch後,將訓練集中樣本的順序打亂再訓練另一個epoch,不斷反覆。這樣重新組成的batch中的樣本梯度的平均值就會與上一個epoch的不同。而這顯然增加了訓練的時間。同時因爲沒辦法保證每次更新的方向都貼合整個訓練集的大方向,只能使用較小的學習速率。這意味着訓練過程中,一部分steps對網絡最終的更新起到了促進,一部分steps對網絡最終的更新造成了干擾,這樣磕磕碰碰無數個epoch後才能達到較爲滿意的結果。

爲了解決這種不效率的訓練,BN首先是把所有的samples的統計分佈標準化,降低了batch內不同樣本的差異性,然後又允許batch內的各個samples有各自的統計分佈

1.     爲什麼神經網絡高效:並行的先驗知識使得模型可用線性級數量的樣本學習指數級數量的變體

2.     學習的本質是什麼:將變體拆分成因素和知識(Disentangle Factors of Variation

i.           爲什麼深層神經網絡比淺層神經網絡更高效:迭代組成的先驗知識使得樣本可用於幫助訓練其他共用同樣底層結構的樣本。

ii.           神經網絡在什麼問題上不具備優勢:不滿足並行與迭代先驗的任務

3.     非迭代:該層狀態不是由上層狀態構成的任務(如:很深的CNN因爲有max pooling,信息會逐漸丟失。而residual network再次使得迭代的先驗滿足)


CNN: 

1)卷積:對圖像元素的矩陣變換,是提取圖像特徵的方法,多種卷積核可以提取多種特徵。一個卷積核覆蓋的原始圖像的範圍叫做感受野(權值共享)。一次卷積運算(哪怕是多個卷積核)提取的特徵往往是局部的,難以提取出比較全局的特徵,因此需要在一層卷積基礎上繼續做卷積計算 ,這也就是多層卷積。

2)池化:降維的方法,按照卷積計算得出的特徵向量維度大的驚人,不但會帶來非常大的計算量,而且容易出現過擬合,解決過擬合的辦法就是讓模型儘量“泛化”,也就是再“模糊”一點,那麼一種方法就是把圖像中局部區域的特徵做一個平滑壓縮處理,這源於局部圖像一些特徵的相似性(即局部相關性原理)。
3) 全連接:softmax分類
訓練過程:
卷積核中的因子(×1或×0)其實就是需要學習的參數,也就是卷積核矩陣元素的值就是參數值。一個特徵如果有9個值,1000個特徵就有900個值,再加上多個層,需要學習的參數還是比較多的。

CNN的三個優點:

sparse interaction(稀疏的交互),parameter sharing(參數共享),equivalent respresentation(等價表示)。適合於自動問答系統中的答案選擇模型的訓練。

CNNDNN的區別

DNN的輸入是向量形式,並未考慮到平面的結構信息,在圖像和NLP領域這一結構信息尤爲重要,例如識別圖像中的數字,同一數字與所在位置無關(換句話說任一位置的權重都應相同),CNN的輸入可以是tensor,例如二維矩陣,通過filter獲得局部特徵,較好的保留了平面結構信息。

filter尺寸計算Feature Map的尺寸等於(input_size + 2 * padding_size − filter_size)/stride+1


RNN:

1.      爲什麼具有記憶功能?
這個是在RNN就解決的問題,就是因爲有遞歸效應,上一時刻隱層的狀態參與到了這個時刻的計算過程中,直白一點呢的表述也就是選擇和決策參考了上一次的狀態。
2.      爲什麼LSTM記的時間長?
因爲特意設計的結構中具有CEC的特點,誤差向上一個狀態傳遞時幾乎沒有衰減,所以權值調整的時候,對於很長時間之前的狀態帶來的影響和結尾狀態帶來的影響可以同時發揮作用,最後訓練出來的模型就具有較長時間範圍內的記憶功能。
誤差回傳的主力還是通過了Memory Cell而保持了下來。所以我們現在用的LSTM模型,依然有比較好的效果。
最後整個梳理一下誤差回傳的過程,誤差通過輸出層,分類器,隱層等進入某個時刻的Block之後,先將誤差傳遞給了Output Gate和Memory Cell兩個地方。
到達輸出門的誤差,用來更新了輸出門的參數w,到達Memory Cell之後,誤差經過兩個路徑,
1是通過這個cell向前一個時刻傳遞或者更前的時刻傳遞,
2是用來傳遞到input gate和block的輸入,用來更新了相應的權值(注意!不會經過這裏向前一個時刻傳遞誤差)。
最關鍵的問題就是,這個回傳的算法,只通過中間的Memory Cell向更前的時刻傳遞誤差。


在RNN中U、V、W的參數都是共享的,也就是隻需要關注每一步都在做相同的事情,只是輸入不同,這樣來降低參數個數和計算量。


RNN特點

時序長短可變(只要知道上一時刻的隱藏狀態ht−1ht−1與當前時刻的輸入xtxt,就可以計算當前時刻的隱藏狀態htht。並且由於計算所用到的WxhWxhWhhWhh在任意時刻都是共享的。遞歸網絡可以處理任意長度的時間序列)顧及時間依賴,未來信息依賴(雙向遞歸)

RNN主要包括LSTM,GRU

GRULSTM做了兩個大改動

1.     將輸入門、遺忘門、輸出門變爲兩個門:更新門(Update Gate)和重置門(Reset Gate)。

2.     將單元狀態與輸出合併爲一個狀態:。

GRU只用了兩個gates,將LSTM中的輸入門和遺忘門合併成了更新門。並且並不把線性自更新建立在額外的memory cell上,而是直接線性累積建立在隱藏狀態上,並靠gates來調控。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章