日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

神经网络相关的笔试题目集合(一)

發(fā)布時間:2024/7/23 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 神经网络相关的笔试题目集合(一) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在找工作的過程中發(fā)現(xiàn)好多公司沒有專門的、傳統(tǒng)的圖像處理崗位,所以只能參加算法類的筆試甚至AI類的筆試。在AI的筆試中幾乎全是關(guān)于神經(jīng)網(wǎng)絡(luò)的問題,其實也都是很基礎(chǔ)的一些問題,如果事先做了準備,可以從容應對。而對于我這種從傳統(tǒng)圖像處理算法向深度學習靠攏的新手,不失為一種很好的入門方法。

既然是考察神經(jīng)網(wǎng)絡(luò),激活函數(shù)activation function作為模擬人腦中神經(jīng)元之間的激活/抑制的關(guān)鍵,經(jīng)常會被考察。問:常用的激活函數(shù)有什么,各自有什么特點。關(guān)于這個問題可以從網(wǎng)上找到很多答案,比如參考鏈接1和2,主要講了常見的激活函數(shù)Sigmoid、tanh、ReLu、Leaky ReLus。Sigmoid范圍在0~1(這也是具有壓縮數(shù)據(jù)功能的原因),所以Tanh=2*Sigmoid(2x)-1的范圍在[-1,1],tanh讀作Hyperbolic Tangent,解決了Sigmoid的均值非0的問題(這會導致后一層的神經(jīng)元將得到上一層輸出的非0均值的信號作為輸入),但是梯度消失的問題更加嚴重(紅色梯度曲線下降得更快,參數(shù)的學習要靠梯度的后向傳播)。而ReLU=max(0,x),在輸入很大的情況下梯度也不會像Sigmoid一樣飽和,且由于計算簡單,利用SGD(隨機梯度下降)算法收斂速度更快,但缺點是在輸入為復數(shù)的時候激活函數(shù)直接為0,造成所謂的神經(jīng)元壞死,不能給之后的神經(jīng)元傳遞信息,這時就必須十分小心learning Rate的選取,步長不能太大,也可以使用adagrad自動調(diào)節(jié)learningrate,同時參數(shù)的初始化也很重要,一般使用Xavier初始化。Leaky ReLU是為了解決ReLU神經(jīng)元壞死的問題的,在輸入小于0時,輸出不再是0,而是一條斜率較小(a)的通過原點的直線。但是現(xiàn)在還沒有足夠的理論證明Leaky ReLU一定好于ReLU。也可以將斜率a也作為參數(shù)進行訓練,即PReLU,kaiming He在2015年的論文中就使用了Parametric ReLU。

?

Randomized Leaky ReLU. Randomized Leaky ReLU 是 leaky ReLU 的random 版本, 其核心思想就是,在訓練過程中,a是從一個高斯分布中隨機出來的,然后再在測試過程中進行修正。

這么多的激活函數(shù)都有一個共同點,就是他們都是非線性的。拋開用激活函數(shù)去模擬神經(jīng)元的仿生想法,激活函數(shù)的作用在數(shù)學上到底有什么意義呢?從網(wǎng)上資料看就是為了加入非線性因素。因為感知機其實是最原始的神經(jīng)網(wǎng)絡(luò),同時感知機是一個判別模型,可用于分類,如果沒有激活函數(shù),我們就無法實現(xiàn)線性不可分問題,包括簡單的異或XOR問題。如果沒有激活函數(shù),多個感知機的組合得到的仍然是一個線性分類器,仍然無法解決非線性問題。

參考鏈接2中知乎有人的回答中提到Google的論文Batch normalization: Accelerating deep network training by reducing internal covariate shift盡可能保證每一層網(wǎng)絡(luò)的輸入具有相同的分布,解決了Sigmoid的saturate的問題,但效果仍然沒有ReLU好。正好筆試過程中也遇到了Batch Normalization的問題,那么接下來就看一下它到底為何物。

先來說歸一化,歸一化是對于輸入特征來說的,特征可能是多維的,同時他們之間的量綱可能不一樣,就會造成不同維度的大小存在很大的差異,這對于訓練來說不太友好,因為我們設(shè)置的learning rate不可能適應所有的維度,會導致訓練過慢。

歸一化不僅能加快訓練速度(最快梯度下降法的求解),有時候還可以提高精度。比如KNN分類器中要求樣本之間的距離,歸一化使得不同維度對距離造成的影響大小相同,而不會使得結(jié)果主要取決于某一維度。

歸一化常用方法有最大最小歸一化(線性歸一化),max和min值不穩(wěn)定時可以取常數(shù);z-score標準化(均值方差標準化),歸一化后的數(shù)據(jù)符合標準正態(tài)分布,即進行白化whiten;函數(shù)轉(zhuǎn)化(非線性歸一化,函數(shù)可使用對數(shù)、正切等)。

其實之前提到的歸一化是相對于機器學習領(lǐng)域說的。在深度學習中由于涉及到了多層的網(wǎng)絡(luò)模型,歸一化會顯得更加重要,因為機器學習中有一個數(shù)據(jù)之間是獨立同分布IID的假設(shè)(這樣才能通過訓練樣本預測新的數(shù)據(jù)),而神經(jīng)網(wǎng)絡(luò)中由于底層參數(shù)的更新會影響之后高層的輸入,這在paper中被稱為Internal Covariate Shift(ICS)問題。所以我們就需要對每一層的輸出都進行歸一化。但是底層的輸出被歸一化也意味著之前學到的特征分布被破壞了,所以batch Normalization(BN)又加入了變換重構(gòu),引入了可學習參數(shù)縮放因子和平移因子。

這里簡單介紹一下batch的概念。首先,我們的訓練數(shù)據(jù)集是有限的,我們會使用這一訓練數(shù)據(jù)集訓練多次,相對于鞏固學習,但訓練太多次又會導致過擬合。每次訓練后參數(shù)完成一次更新,稱這一過程是一個epoch。而在每次epoch中,我們把訓練數(shù)據(jù)集分成幾個較小的子集,這就是batch,子集的大小是batch_size。數(shù)據(jù)集較大不利于通過訓練網(wǎng)絡(luò),分成子集有利于加快訓練。訓練數(shù)據(jù)集分成子集,epoch也分成了幾個iteration。根據(jù)batch_size的選擇,可以把訓練情況分成三種,第一種是batch取最大值,即Full Batch Learning,一次性將訓練數(shù)據(jù)通過訓練網(wǎng)絡(luò),這只適用于訓練數(shù)據(jù)少的情況。第二種是另外一個極端,batch_size取1,即Online Learning在線學習/Stochastic隨機學習,這種情況難以收斂,因為每次梯度方向以各自樣本的梯度方向收斂。我們看到batch_size其實是在內(nèi)存利用率和內(nèi)存容量之間的平衡,增大了batch_size,相對于通過并行化提高了內(nèi)存利用率,但占用的內(nèi)存也變大。第三種是Mini-batch,在之前兩個極端情況下選擇一個平衡點。BN就是基于了Mini-batch SGD。BN適用于mini-batch樣本量較大且與各mini-batch分布相近似的場景下(訓練前需進行充分的shuffle)。不適用于動態(tài)網(wǎng)絡(luò)結(jié)構(gòu)和RNN。

結(jié)合前面講到的激活函數(shù),BN在歸一化的同時還可以解決Sigmoid函數(shù)的梯度飽和的問題。因為經(jīng)過BN后,通過激活函數(shù)的輸入是標準正態(tài)分布,經(jīng)過非線性變換時的輸入大概率保持在0均值附近,反向傳播時梯度值較大,從而避免了梯度消失。BN增加scale和shift的原因也可以通過對激活函數(shù)的輸入的處理來說明。因為在進入激活函數(shù)之前進行了歸一化,將輸入集中在了Sigmoid中心附近,而Sigmoid函數(shù)雖然本身是非線性函數(shù),但是中心附近是接近線性的,這樣一來我們就失去了非線性函數(shù)的優(yōu)勢,而補救措施就是增加scale和shift元素。BN的細節(jié)還是要看論文《Batch Normalization: Accelerating Deep Network Training by? Reducing Internal Covariate Shift》。

總結(jié)一下BN的優(yōu)勢:1.提升了訓練速度(避免了梯度雙端飽和,保證了IID)2.類似于Dropout,可以防止過擬合(加入了隨機性的scale、shift?)3.對初始化的要求沒有那么高(因為不必使用ReLU?即使使用ReLU也可以避免梯度為0),可以使用較大的學習率。

除了BN,還有其他的歸一化方式。BN針對的是單一的神經(jīng)元,Layer Normalization考慮一層的信息,并將該層的均值和方差作為歸一化標準。weight normalization則將參數(shù)也進行了規(guī)范化。

Reference:

  • 面面觀https://blog.csdn.net/cyh_24/article/details/50593400
  • 神經(jīng)網(wǎng)絡(luò)激勵函數(shù)的作用是什么?有沒有形象的解釋? - 論智的回答 - 知乎https://www.zhihu.com/question/22334626/answer/465380541
  • https://blog.csdn.net/yangdashi888/article/details/78015448
  • 激活函數(shù)的作用https://blog.csdn.net/program_developer/article/details/78704224
  • DeeplearningAI實用層面https://www.cnblogs.com/cloud-ken/p/7709447.html
  • 歸一化優(yōu)點和方法和結(jié)構(gòu)https://blog.csdn.net/qq_28618765/article/details/78221571
  • Batch_size知乎https://www.zhihu.com/question/32673260
  • 深度學習29https://blog.csdn.net/hjimce/article/details/50866313
  • Normalization方式https://blog.csdn.net/qq_24153697/article/details/79880202
  • 總結(jié)

    以上是生活随笔為你收集整理的神经网络相关的笔试题目集合(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。