a. 爲什麼在神經網絡中加入非線性是必須的?
答:神經網絡的每一層主要是由 隱藏+激活函數構成。
隱藏:wX+b的形勢實現線性變換
激活函數如:sigmoid,relu完成非線性變換
由於N個線性變換的疊加最終還是線性變換。因此,如果沒有激活函數完成非線性變換,則神經網絡無法完成對非線性任務的迴歸及分類任務。
b. 寫出下列每個激活函數的表達式及其導數。在x∈[−5,5] y∈[−10,10]範圍內繪製原函數及其導數的圖像。總結各激活函數的利弊。
i. ReLU
在z=0時,通常給定導數1,0,當然z=0的情況很少。
ii. Sigmoid
導數爲:
iii. Tanh
導數爲:
c. 分類與迴歸的區別,以及softmax的作用
分類的output爲離散指,且多數情況下爲 one-hot 形勢,準確率通常用 cross entropy (CE)類似的方法來計算
迴歸的output往往是連續數字,準確率通常用 MSE\MSE類似的方法計算
d. 獨立手推ce損失函數
e. 批量梯度下降,隨機梯度下降,小批量梯度下降這三種分別是什麼意思,通常會用哪一種?爲什麼?其他兩種的缺點是什麼?
1)批量梯度下降
對全量集數據進行梯度計算,尋找負梯度方向進行優化
優點:
- 相比隨機梯度下降更爲穩定,避免受到個別數據擾動導致整體訓練方向跑偏。
缺點:
- 耗資源:對於超大樣本的情況下幾乎不可能完成(由於需要將全部數據導入內存進行梯度計算,會導致內存不夠用)
2)隨機梯度下降
隨機選取某一樣本計算梯度,尋找負梯度方向進行優化
優點
- 速度相比批量梯度下降顯著提升
缺點
- 很耗時間:對每一個梯度計算,優化,循環往復,總體耗時更長
- 可能出現局部最優或者無法優化的情況:由於部分樣本可能噪音很大,因此可能出現某些樣本的負梯度擾動導致整體訓練方向偏離比較大。無法找到真正的最優化方向。
3)小批量梯度下降
結合披露梯度下降與隨機梯度下降方法,折中方式,選擇小批量樣本進行梯度計算,尋找負梯度方向進行優化
優點:
- 隨着batch size 的增大,個別噪音數據的擾動降低到最小,整體優化方向與完整的披露梯度下降相差不大。
- 根據自己機器的內存設定適合的batch size,重複利用計算資源。
- 在時間與資源方面取得平衡
- 可實現並行優化
缺點:
- 引入了batch size 參數,事實上,batch size參數的選擇也成爲了優化網絡參數的一個關鍵問題。
關於batch size參數選擇的影響:
1)合理範圍內,增大batch size 好處:
- 內存利用率提升,大矩陣乘法並行化效率提升
- 完成一整個epoch所需迭代次數減少
- batch size越大,負梯度方向越準確,震盪越小
2)盲目增大batch size的壞處
- 可能導致在某些時間點,內存容量扛不住,導致崩潰
- 完成一個epoch的迭代次數減少,對於要達到相同精度,所花的時間可能大大增加,參數修正也顯得更加緩慢。
激活函數部分參考文章: