數據技術課堂2021PyTorch深度學習實戰

愛共享 愛生活 加油 2021

 百度網盤python

提取碼:qhhv 面試

 

1、神經網絡基礎問題

(1)Backpropagation(反向傳播)算法

  後向傳播是在求解損失函數L對參數w求導時候用到的方法,目的是經過鏈式法則對參數進行一層一層的求導。這裏重點強調:要將參數進行隨機初始化而不是所有置0,不然全部隱層的數值都會與輸入相關,這稱爲對稱失效。編程

(2)梯度消失、梯度爆炸網絡

  梯度消失:這本質上是因爲激活函數的選擇致使的, 最簡單的sigmoid函數爲例,在函數的兩端梯度求導結果很是小(飽和區),致使後向傳播過程當中因爲屢次用到激活函數的導數值使得總體的乘積梯度結果變得愈來愈小,也就出現了梯度消失的現象。架構

  梯度爆炸:同理,出如今激活函數處在激活區,並且權重W過大的狀況下。可是梯度爆炸不如梯度消失出現的機會多。app

(3)過擬合框架

過擬合的緣由是算法的學習能力過強;一些假設條件(如樣本獨立同分布)多是不成立的;訓練樣本過少不能對整個空間進行分佈估計。機器學習

處理方法:分佈式

一、早中止:如在訓練中屢次迭代後發現模型性能沒有顯著提升就中止訓練

數據集擴增:在原始數據上作改動,從而可獲得更多的數據,作各類變換。如:將原始圖片旋轉一個小角度;在圖像上添加噪聲;作一些有彈性的畸變;截取原始圖像的一部分、原有數據加隨機噪聲、重採樣

二、正則化  L1 regularization,L2 regularization,

三、交叉驗證

四、特徵選擇/特徵降維

五、增長網絡的稀疏度,下降網絡的複雜度(深度)

六、添加Dropout,適當下降Learning rate,適當減小epoch的次數

(4)  爲什麼使用Batch Normalization:

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

爲了解決這種「不效率」的訓練,BN首先是把全部的samples的統計分佈標準化,下降了batch內不一樣樣本的差別性,而後又容許batch內的各個samples有各自的統計分佈。

(5)  神經網絡模型優化的經常使用方案

一、增長(減小)隱藏層的複雜度,如增長隱藏層數,調整隱藏層的神經元個數,或者在隱藏層使用更加複雜的網絡結構,如CNN、RNN、LSTM、GRU或者增長Attention層等等;

二、添加Dropout層,使用Dropout的原理優化網絡參數,防止過擬合;

三、嘗試不一樣的優化器,經常使用的優化器包括SGD、Adam、RMSprop(動量相關);

四、增長迭代次數,通常爲了快速檢驗模型效果訓練次數比較少,優化過程當中能夠增長訓練次數;

五、調整優化器的學習率,學習率過小會形成模型收斂速度降低,還有可能求出的是局部最優解,訓練模型時的損失函數降低慢;學習率過大會引發模型沒法到達最優解,在最優解附近來回跳轉,可是通常狀況下學習率並非一成不變的,而是隨着模型的訓練在優化;

六、增長批處理的大小,採用批處理的方式訓練數據時每一個batch的數據進行一次反向傳播,更新參數,因此每一個batch的數據分佈對模型訓練有着必定的影響,調整batch_size的大小,對模型優化有必定的做用;

七、正則化,能夠優化模型太過複雜而引發運行時間過長的問題,也能夠在必定程度上防止模型過擬合。(過擬合也就是模型把訓練數據的內部關係都記下來了,在訓練集損失函數很小,可是在測試集上損失函數開始增大,也就是在測試集上的效果開始降低)

(6)經常使用特徵提取方法

一、潛在語義索引:利用SVD奇異值分解方法來得到文本的主題

二、主成分分析(PCA), 是一種統計方法。經過正交變換將一組可能存在相關性的變量轉換爲一組線性不相關的變量,轉換後的這組變量叫主成分。

三、線性判別分析

       在天然語言處理領域, LDA是隱含狄利克雷分佈,他是一種處理文檔的主題模型。LDA是一種監督學習的降維技術,而PCA是無監督的降維技術,LDA是在降維的基礎上考慮了類別的因素,但願獲得的投影類內方差最小,類與類之間的方差最大。

(7)爲何要卷積?

第一種稱爲參數共享。理想的是,在圖像的一個部分中有用的特徵檢測器可能在圖像的另外一部分中有用。例如,邊緣檢測器可能對圖像的許多部分有用。參數的共享容許參數的數量很小而且還容許穩健的平移不變性。翻譯不變性是指貓移動和旋轉的概念仍然是貓的圖片。

第二個被稱爲稀疏鏈接。每一個輸出層只是少許輸入的函數(特別是濾波器大小的平方)。這大大減小了網絡中的參數數量,並容許更快的培訓。

 

2、CNN、RNN、DNN相關問題

1. CNN的三個優勢:

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

2. CNN與DNN的區別:

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

3. filter尺寸計算:

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

4.  RNN爲何具備記憶功能?

這個是在RNN就解決的問題,就是由於有遞歸效應,上一時刻隱層的狀態參與到了這個時刻的計算過程當中,直白一點呢的表述也就是選擇和決策參考了上一次的狀態。

5.   爲何LSTM記的時間長?

由於特地設計的結構中具備CEC的特色,偏差向上一個狀態傳遞時幾乎沒有衰減,因此權值調整的時候,對於很長時間以前的狀態帶來的影響和結尾狀態帶來的影響能夠同時發揮做用,最後訓練出來的模型就具備較長時間範圍內的記憶功能。

偏差回傳的主力仍是經過了Memory Cell而保持了下來。因此咱們如今用的LSTM模型,依然有比較好的效果。

最後整個梳理一下偏差回傳的過程,偏差經過輸出層,分類器,隱層等進入某個時刻的Block以後,先將偏差傳遞給了Output Gate和Memory Cell兩個地方。

到達輸出門的偏差,用來更新了輸出門的參數w,到達Memory Cell以後,偏差通過兩個路徑:一是經過這個cell向前一個時刻傳遞或者更前的時刻傳遞,二是用來傳遞到input gate和block的輸入,用來更新了相應的權值(注意!不會通過這裏向前一個時刻傳遞偏差)。

最關鍵的問題就是,這個回傳的算法,只經過中間的Memory Cell向更前的時刻傳遞偏差。

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

6. RNN特色:

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

7. RNN主要包括LSTM,GRU

GRU對LSTM作了兩個大改動:將輸入門、遺忘門、輸出門變爲兩個門:更新門(Update Gate)和重置門(Reset Gate); 將單元狀態與輸出合併爲一個狀態。

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

 

3、招聘需求

1.有過ocr(光學字符識別)、人臉識別或其餘圖像識別相關工做或研究經驗者優先;

2.熟悉至少一種經常使用的深度學習框架好比pytorch,tensorflow,Caffe,MxNet等 

3.在遙感圖像處理、目標檢測與分割框架(Mask_Rcnn、Yolo等)、對arcmap或者QGIS等地理信息軟件的處理等等有實踐經驗

 4.熟悉python、C/C++、Git 

5.用過opencv(計算機視覺庫)、dlib(機器學習、人臉識別相關庫),CNN、RNN等深度學習算法,熟悉一些經常使用的機器學習算法好比SVM,adaboost等

六、較流暢的英文技術材料閱讀能力;對系統優化和算法模型應用有濃厚興趣;閱讀過相關源碼,理解該類架構設計者優先;具有分佈式計算框架的使用和並行算法的開發經驗者優先。

七、精通Linux系統應用開發;瞭解機器學習算法原理,對算法高效實現有濃厚興趣,有必定機器學習算法實現經驗;有並行計算、GPU計算相關經驗者優先。

 
 

一、梯度降低算法的正確步驟是什麼?

a.計算預測值和真實值之間的偏差

b.重複迭代,直至獲得網絡權重的最佳值

c.把輸入傳入網絡,獲得輸出值

d.用隨機值初始化權重和誤差

e.對每個產生偏差的神經元,調整相應的(權重)值以減少偏差

 

A.abcde    B.edcba     C.cbaed      D.dcaeb

 

解析:正確答案D,考查知識點-深度學習。

 

二、已知:

- 大腦是有不少個叫作神經元的東西構成,神經網絡是對大腦的簡單的數學表達。

- 每個神經元都有輸入、處理函數和輸出。

- 神經元組合起來造成了網絡,能夠擬合任何函數。

- 爲了獲得最佳的神經網絡,咱們用梯度降低方法不斷更新模型

給定上述關於神經網絡的描述,什麼狀況下神經網絡模型被稱爲深度學習模型?

 

A.加入更多層,使神經網絡的深度增長

B.有維度更高的數據

C.當這是一個圖形識別的問題時

D.以上都不正確

 

解析:正確答案A,更多層意味着網絡更深。沒有嚴格的定義多少層的模型才叫深度模型,目前若是有超過2層的隱層,那麼也能夠及叫作深度模型。

 

三、訓練CNN時,能夠對輸入進行旋轉、平移、縮放等預處理提升模型泛化能力。這麼說是對,仍是不對?

A.對    B.不對

 

解析:對。如寒sir所說,訓練CNN時,能夠進行這些操做。固然也不必定是必須的,只是data augmentation擴充數據後,模型有更多數據訓練,泛化能力可能會變強。

 

四、下面哪項操做能實現跟神經網絡中Dropout的相似效果?

A.Boosting    B.Bagging    C.Stacking    D.Mapping

 

解析:正確答案B。Dropout能夠認爲是一種極端的Bagging,每個模型都在單獨的數據上訓練,同時,經過和其餘模型對應參數的共享,從而實現模型參數的高度正則化。

 

五、下列哪一項在神經網絡中引入了非線性?

A.隨機梯度降低

B.修正線性單元(ReLU)

C.卷積函數

D.以上都不正確

 

解析:正確答案B。修正線性單元是非線性的激活函數。

 

深度學習面試100題(第11-15題)
2018年07月25日 14:40:20  楊廣帥 閱讀數 842更多
分類專欄:  機器學習  機器人學習
 

1.請簡要介紹下tensorflow的計算圖。解析:Tensorflow是一個經過計算圖的形式來表述計算的編程系統,計算圖也叫數據流圖,能夠把計算圖看作是一種有向圖,Tensorflow中的每個節點都是計算圖上的一個Tensor, 也就是張量,而節點之間的邊描述了計算之間的依賴關係(定義時)和數學操做(運算時)。以下兩圖表示:

相關文章
相關標籤/搜索