簡介
早在2009年,深度學習還隻是一個新興領域,隻有少數人認為它是一個多産的研究方向。今天,深度學習正在被用來開發那些過去被認為是不可能完成的應用。
語音識别,圖像識别,資料中的模式識别,照片中的對象分類,字元文本生成,自動駕駛汽車等等隻是其中幾個示例。是以,熟悉深度學習及其概念顯得尤為重要。
在這個測試中,我們考察了社群成員的深度學習基本概念。總共有1070人參加了這項技能測試。
如果你錯過了這次測試,下面這些問題就是你檢查自身技能水準的好機會。
總體結果
下面是成績的分布圖,有助您評估自己的表現。
你可以在這裡擷取到全部的成績,超過200人參加了這項測試,最高得分是35分。這裡是成績分布的統計描述:
總體分布
平均分: 16.45
中位數: 20
衆數: 0
看起來很多人很晚才開始比賽,或者隻回答了幾個題目就沒有繼續下去。我并不知道确切的原因,可能是測試題目對大多數參與者過于困難。
如果你對這個現象背後的原因有任何洞見,歡迎聯系我們。
有用的資源
·fundamentals of deep learning – starting with artificial neural network(https://www.analyticsvidhya.com/blog/2016/03/introduction-deep-learning-fundamentals-neural-networks/)
·practical guide to implementing neural networks in python (using theano)(https://www.analyticsvidhya.com/blog/2016/04/neural-networks-python-theano/)
·a complete guide on getting started with deep learning in python(https://www.analyticsvidhya.com/blog/2016/08/deep-learning-path/)
·tutorial: optimizing neural networks using keras (with image recognition case study)(https://www.analyticsvidhya.com/blog/2016/10/tutorial-optimizing-neural-networks-using-keras-with-image-recognition-case-study/)
·an introduction to implementing neural networks using tensorflow(https://www.analyticsvidhya.com/blog/2016/10/an-introduction-to-implementing-neural-networks-using-tensorflow/)
題目和答案
1
神經網絡模型(neural network)因受人腦的啟發而得名。
神經網絡由許多神經元(neuron)組成,每個神經元接受一個輸入,處理它并給出一個輸出。這裡是一個真實的神經元的圖解表示。下列關于神經元的陳述中哪一個是正确的?
一個神經元隻有一個輸入和一個輸出
一個神經元有多個輸入和一個輸出
一個神經元有一個輸入和多個輸出
一個神經元有多個輸入和多個輸出
上述都正确
答案:(e)
一個神經元可以有一個或多個輸入,和一個或多個輸出。
2
下圖是一個神經元的數學表達
神經元的組成部分表示為:
- x1, x2,…, xn:表示神經元的輸入。可以是輸入層的實際觀測值,也可以是某一個隐層(hidden layer)的中間值
- w1, w2,…,wn:表示每一個輸入的權重
- bi:表示偏差單元(bias unit)。作為常數項加到激活函數的輸入當中,和截距(intercept)項相似
- a:代表神經元的激勵(activation),可以表示為
- y:神經元輸出
考慮上述标注,線性等式(y = mx + c)可以被認為是屬于神經元嗎:
a. 是
b. 否
答案:(a)
一個不包含非線性的神經元可以看作是線性回歸函數(linear regression function)。
3
假設在一個神經元上實作和(and)函數,下表是和函數的表述
x1
x2
x1 and x2
激活函數為:
權重(weights)和偏差(bias)哪一組是正确的?
(提示:對哪一組w1, w2, b神經元可以實作and函數)
a. bias = -1.5, w1 = 1, w2 = 1
b. bias = 1.5, w1 = 2, w2 = 2
c. bias = 1, w1 = 1.5, w2 = 1.5
d. 以上都不正确
1. f(-1.5*1 + 1*0 + 1*0) = f(-1.5) = 0
2. f(-1.5*1 + 1*0 + 1*1) = f(-0.5) = 0
3. f(-1.5*1 + 1*1 + 1*0) = f(-0.5) = 0
4. f(-1.5*1 + 1*1+ 1*1) = f(0.5) = 1
帶入測試值,a選項正确
4
多個神經元堆疊在一起構成了神經網絡,我們舉一個例子,用神經網絡模拟同或門(xnor)。
你可以看見最後一個神經元有兩個輸入。所有神經元的激活函數是:
假設x1是0,x2是1,神經網絡的輸出是什麼?
a1輸出: f(0.5*1 + -1*0 + -1*1) = f(-0.5) = 0
a2輸出: f(-1.5*1 + 1*0 + 1*1) = f(-0.5) = 0
a3輸出: f(-0.5*1 + 1*0 + 1*0) = f(-0.5) = 0
正确答案是a
5
在一個神經網絡裡,知道每一個神經元的權重和偏差是最重要的一步。如果以某種方法知道了神經元準确的權重和偏差,你就可以近似任何函數。實作這個最佳的辦法是什麼?
随機指派,祈禱它們是正确的
搜尋所有權重和偏差的組合,直到得到最佳值
賦予一個初始值,通過檢查跟最佳值的內插補點,然後疊代更新權重
以上都不正确
答案:(c)
選項c是對梯度下降的描述。
6
梯度下降算法的正确步驟是什麼?
計算預測值和真實值之間的誤差
疊代跟新,直到找到最佳權重
把輸入傳入網絡,得到輸出值
初始化随機權重和偏差
對每一個産生誤差的神經元,改變相應的(權重)值以減小誤差
a. 1, 2, 3, 4, 5
b. 5, 4, 3, 2, 1
c. 3, 2, 1, 5, 4
d. 4, 3, 1, 5, 2
答案:(d)
選項d是正确的
7
假設你有輸入x,y,z,值分别是-2,5,-4。你有神經元q和f,函數分别為q = x + y,f = q * z。函數的圖示如下圖:
f對x,y和z的梯度分别是?(提示:計算梯度,你必須找到df/dx, df/dy和df/dz)
a. (-3,4,4)
b. (4,4,3)
c. (-4,-4,3)
d. (3,-4,-4)
選項c是正确的。
8
現在回顧之前的内容。我們學到了:
- 大腦是有很多叫做神經元的東西構成,神經網絡是對大腦的粗糙的數學表達。
- 每一個神經元都有輸入、處理函數和輸出。
- 神經元堆疊起來形成了網絡,用作近似任何函數。
- 為了得到最佳的神經網絡,我們用梯度下降方法不斷更新模型
給定上述關于神經網絡的描述,什麼情況下神經網絡模型被稱為深度學習模型?
加入更多層,使神經網絡的深度增加
有次元更高的資料
當這是一個圖形識别的問題時
更多層意味着網絡更深。沒有嚴格的定義多少層的模型才叫深度模型,目前如果有超過2層的隐層,那麼也可以及叫做深度模型。
9
神經網絡可以認為是多個簡單函數的堆疊。假設我們想重複下圖所示的決策邊界
使用兩個簡單的輸入h1和h2
最終的等式是什麼?
a. (h1 and not h2) or (not h1 and h2)
b. (h1 or not h2) and (not h1 or h2)
c. (h1 and h2) or (h1 or h2)
d. none of these
你可以看見,巧妙地合并h1和h2可以很容易地得到複雜的等式。參見這本書的第九章。
10
卷積神經網絡可以對一個輸入完成不同種類的變換(旋轉或縮放),這個表述正确嗎?
正确
錯誤
答案:(b)
資料預處理(也就是旋轉、縮放)步驟在把資料傳入神經網絡之前是必要的,神經網絡自己不能完成這些變換。
11
下列哪一種操作實作了和神經網絡中dropout類似的效果?
a. bagging
b. boosting
c. 堆疊(stacking)
dropout可以認為是一種極端的bagging,每一個模型都在單獨的資料上訓練,通過和其他模型對應參數的共享,模型的參數都進行了很強的正則化。參見這裡。
12
下列哪哪一項在神經網絡中引入了非線性?
随機梯度下降
修正線性單元(relu)
卷積函數
修正線性單元是非線性的激活函數。
13
訓練神經網絡過程中,損失函數在一些時期(epoch)不再減小
原因可能是:
學習率(learning rate)太低
正則參數太大
卡在了局部最小值
在你看來哪些是可能的原因?
a. 1 and 2
b. 2 and 3
c. 1 and 3
d. 都不是
以上原因都可能造成這個結果。
14
下列哪項關于模型能力(model capacity)的描述是正确的?(指模型能近似複雜函數的能力)
隐層層數增加,模型能力增加
dropout的比例增加,模型能力增加
學習率增加,模型能力增加
都不正确
隻有選項a正确。
15
如果增加多層感覺機(multilayer perceptron)的隐層層數,測試集的分類錯誤會減小。這種陳述正确還是錯誤?
并不總是正确。過拟合可能會導緻錯誤增加。
16
建構一個神經網絡,将前一層的輸出和它自身作為輸入。
下列哪一種架構有回報連接配接?
循環神經網絡
卷積神經網絡
限制玻爾茲曼機
都不是
選項a正确。
17
在感覺機中(perceptron)的任務順序是什麼?
初始化随機權重
去到資料集的下一批(batch)
如果預測值和輸出不一緻,改變權重
對一個輸入樣本,計算輸出值
a. 1, 2, 3, 4
b. 4, 3, 2, 1
c. 3, 1, 2, 4
d. 1, 4, 3, 2
順序d是正确的。
18
假設你需要改變參數來最小化代價函數(cost function),可以使用下列哪項技術?
a. 窮舉搜尋
b. 随機搜尋
c. bayesian優化
d. 以上任意一種
以上任意種技術都可以用來更新參數。
19
在哪種情況下,一階梯度下降不一定正确工作(可能會卡住)?
a.
b.
c.
這是鞍點(saddle point)的梯度下降的經典例子。
20
訓練好的三層卷積神經網絡的精确度(accuracy)vs 參數數量(比如特征核的數量)的圖示如下。
從圖中趨勢可見,如果增加神經網絡的寬度,精确度會增加到一個門檻值,然後開始降低。這一現象的可能是什麼原因是造成的?
即便核數量(number of kernels)增加,隻有一部分核被用于預測
當核數量增加,神經網絡的預測功效(power)降低
當核數量增加,其相關性增加,導緻過拟合
如c選項指出的那樣,可能的原因是核之間的相關性。
21
假設我們有一個隐層神經網絡,如上所示。隐層在這個網絡中用于降維。現在我們并不是采用這個隐層,而是使用例如主成分分析(principal component analysis, pca)的降維技術。
使用降維技術的網絡與隐層網絡總是有相同的輸出嗎?
a.是
b.否
因為pca用于相關特征而隐層用于有預測能力的特征
22
可以用神經網絡對函數(y=1/x)模組化嗎?
選項a是正确的,因為激活函數可以是互反函數
23
下列哪個神經網絡結構會發生權重共享?
a.卷積神經網絡
b.循環神經網絡
c.全連接配接神經網絡
d.選項a和b
24
批規範化是有幫助的,因為
a.在将所有的輸入傳遞到下一層之前對其進行歸一化(更改)
b.它将傳回歸一化的權重平均值和标準差
c.它是一種非常有效的反向傳播技術
d.這些均不是
要詳細了解批規範化,請參閱此視訊。
25
我們不是想要絕對零誤差,而是設定一個稱為貝葉斯(bayes)誤差(我們希望實作的誤差)的度量。使用貝葉斯(bayes)誤差的原因是什麼?
a.輸入變量可能不包含有關輸出變量的完整資訊
b.系統(建立輸入-輸出映射)可以是随機的
c.有限的訓練資料
d.所有
想在現實中實作準确的預測,是一個神話,是以我們的希望應該放在實作一個“可實作的結果”上。
26
在監督學習任務中,輸出層中的神經元的數量應該與類的數量(其中類的數量大于2)比對。對或錯?
a.正确
b.錯誤
它取決于輸出編碼。如果是獨熱編碼(one-hot encoding) 則正确。但是你可以有兩個輸出囊括四個類,并用二進制值表示出來(00,01,10,11)。
27
在神經網絡中,以下哪種技術用于解決過拟合?
a.dropout
b.正則化
c.批規範化
所有的技術都可以用于處理過拟合。
28
y = ax^2 + bx + c(二次多項式)
這個方程可以用具有線性門檻值的單個隐層的神經網絡表示嗎?
答案為否。因為簡單來說,有一個線性門檻值限制神經網絡就會使它成為一個相應的線性變換函數。
29
神經網絡中的死神經元(dead unit)是什麼?
a.在訓練任何其它相鄰單元時,不會更新的單元
b.沒有完全響應任何訓練模式的單元
c.産生最大平方誤差的單元
d.以上均不符合
30
以下哪項是對早期停止的最佳描述?
a.訓練網絡直到達到誤差函數中的局部最小值
b.在每次訓練期後在測試資料集上模拟網絡,當泛化誤差開始增加時停止訓練
c.在中心化權重更新中添加一個梯度下降加速算子,以便訓練更快地收斂
d.更快的方法是反向傳播,如‘quickprop’算法
31
如果我們使用的學習率太大該怎麼辦?
a.網絡将收斂
b.網絡将無法收斂
c.不确定
選項b正确,因為錯誤率會變得不穩定并且達到非常大的值
32
圖1所示的網絡用于訓練識别字元h和t,如下所示:
網絡的輸出是什麼?
a.
b.
d.可能是a或b,取決于神經網絡的權重
不知道神經網絡的權重和偏差是什麼,則無法評論它将會給出什麼樣的輸出。
33
假設在imagenet資料集(對象識别資料集)上訓練卷積神經網絡。然後給這個訓練模型一個完全白色的圖像作為輸入。這個輸入的輸出機率對于所有類都是相等的。對或錯?
将存在一些不為白色像素激活的神經元作為輸入,是以類不會相等。
34
當在卷積神經網絡中添加池化層(pooling layer)時,變換的不變性保持穩定,這樣的了解是否正确?
使用池化時會導緻出現不變性。
35
q35.當資料太大而不能同時在ram中處理時,哪種梯度技術更有優勢?
a.全批量梯度下降(full batch gradient descent )
b.随機梯度下降(stochastic gradient descent)
36
該圖表示,使用每個訓練時期的激活函數,-訓練有四個隐藏層的神經網絡梯度流。神經網絡遭遇了梯度消失問題。
下列哪項正确?
a.隐藏層1對應于d,隐藏層2對應于c,隐藏層3對應于b,隐藏層4對應于a
b.隐藏層1對應于a,隐藏層2對應于b,隐藏層3對應于c,隐藏層4對應于d
這是對消失梯度描述的問題。由于反向傳播算法進入起始層,學習能力降低。
37
對于分類任務,我們不是将神經網絡中的随機權重初始化,而是将所有權重設為零。下列哪項是正确的?
a.沒有任何問題,神經網絡模型将正常訓練
b.神經網絡模型可以訓練,但所有的神經元最終将識别同樣的事情
c.神經網絡模型不會進行訓練,因為沒有淨梯度變化
d.這些均不會發生
38
開始時有一個停滞期,這是因為神經網絡在進入全局最小值之前陷入局部最小值。
為了避免這種情況,下面的哪個政策有效?
a.增加參數的數量,因為網絡不會卡在局部最小值處
b.在開始時把學習率降低10倍,然後使用梯度下降加速算子(momentum)
c.抖動學習速率,即改變幾個時期的學習速率
d.以上均不是
選項c可以将陷于局部最小值的神經網絡提取出來。
39
對于圖像識别問題(比如識别照片中的貓),神經網絡模型結構更适合解決哪類問題?
a.多層感覺器
b.卷積神經網絡
c.循環神經網絡
d.感覺器
卷積神經網絡将更好地适用于圖像相關問題,因為考慮到圖像附近位置變化的固有性質。
40
假設在訓練時,你遇到這個問題。在幾次疊代後,錯誤突然增加。
您确定資料一定有問題。您将資料描繪出來,找到了原始資料有點偏離,這可能是導緻出現問題的地方。
你将如何應對這個挑戰?
a.歸一化
b.應用pca然後歸一化
c.對資料進行對數變換
d.以上這些都不符合
首先您将相關的資料去掉,然後将其置零。
41
以下哪項是神經網絡的決策邊界?
a) b
b) a
c) d
d) c
e) 以上所有
神經網絡被稱為通用函數拟合器(universal function approximator),是以它理論上可以表示任何決策邊界。
42
在下面的圖中,我們觀察到錯誤有許多“起伏”,我們該為此而擔心嗎?
a.是,因為這意味着神經網絡的學習速率有問題。
b.否,隻要訓練和驗證錯誤累積減少,我們就不必擔心。
選項b是正确的,為了減少這些“起伏”,可以嘗試增加批尺寸(batch size)
43
什麼是影響神經網絡的深度選擇的因素?
1.神經網絡的類型,例如:多層感覺機(multi-layer perceptrons, mlp),卷積神經網絡(convolutional neural networks, cnn)
2.輸入資料
3.計算能力,即硬體和軟體能力
4.學習率
5.輸出函數映射
a. 1, 2, 4, 5
b. 2, 3, 4, 5
c. 1, 3, 4, 5
d. 以上均是
所有上述因素對于選擇神經網絡模型的深度都是重要的。
44
考慮這種情況:您嘗試解決的問題有少量的資料。幸運的是,您有一個之前訓練過的針對類似問題的神經網絡模型。您将使用以下哪種方法來使用該預先訓練的模型?
a.對于新的資料集重新訓練模型
b.在每一層評估模型如何執行,隻選擇其中的一些
c.隻微調最後幾層
d.當機除最後一層之外的所有層,重新訓練最後一層
如果資料集大部分相似,最好的方法是隻訓練最後一層,因為前面的所有層都用于特征提取。
45
增大卷積核的大小必然會提高卷積神經網絡的性能。
增加核函數的大小不一定會提高性能。這個問題在很大程度上取決于資料集。
原文釋出時間為:2017-02-27
本文來自雲栖社群合作夥伴“大資料文摘”,了解相關資訊可以關注“bigdatadigest”微信公衆号