Lecture_Neural Networks Part 1
單個神經元建模
生物動機和連線
將神經元的啟用率建模為啟用函式(activation function)f,它表達了軸突上啟用訊號的頻率.啟用函式,非線性函式,"扭曲"得分函式.
由於歷史原因,啟用函式常常選擇使用sigmoid函式,該函式輸入實數值(求和後的訊號強度),然後將輸入值壓縮到0-1之間。
作為線性分類器的單個神經元
一個單獨的神經元可以用來實現一個二分類分類器,比如二分類的Softmax或者SVM分類器。
常用的啟用函式
左邊是Sigmoid非線性函式,將實數壓縮到[0,1]之間。右邊是tanh函式,將實數壓縮到[-1,1]。
Sigmoid:
- Sigmoid函式飽和使梯度消失
- Sigmoid函式的輸出不是零中心的
Tanh: (tanh神經元是一個簡單放大的sigmoid神經元)
- Tanh也存在飽和問題
- Tanh的輸出是零中心的
ReLU(校正線性單元:Rectified Linear Unit)啟用函式:
- ReLU對於隨機梯度下降的收斂有巨大的加速作用
- ReLU單元比較脆弱並且可能“死掉”.通過合理設定學習率,這種情況的發生概率會降低
- Leaky ReLU是為解決“ReLU死亡”問題的嘗試
-
Maxout: Maxout是對ReLU和leaky ReLU的
一般化歸納
.
在同一個網路中混合使用不同型別的神經元是非常少見的.
神經網路結構
層組織
將神經網路演算法以神經元的形式圖形化
左邊是一個2層神經網路,隱層由4個神經元(也可稱為單元(unit))組成,輸出層由2個神經元組成,輸入層是3個神經元。該網路有4+2=6個神經元(輸入層不算),[3x4]+[4x2]=20個權重,還有4+2=6個偏置,共26個可學習的引數。
右邊是一個3層神經網路,兩個含4個神經元的隱層。該網路有4+4+1=9個神經元,[3x4]+[4x4]+[4x1]=32個權重,4+4+1=9個偏置,共41個可學習的引數。
注意:全連線層(fully-connected layer)。全連線層中的神經元與其前後兩層的神經元是完全成對連線的,但是在同一個全連線層內的神經元之間沒有連線.上面兩個神經網路的圖例,都使用的全連線層.
前向傳播計算例子
完整的3層神經網路的前向傳播就是簡單的3次矩陣乘法,其中交織著啟用函式的應用。
# 一個3層神經網路的前向傳播:
f = lambda x: 1.0/(1.0 + np.exp(-x)) # 啟用函式(用的sigmoid)
x = np.random.randn(3, 1) # 含3個數字的隨機輸入向量(3x1)
h1 = f(np.dot(W1, x) + b1) # 計算第一個隱層的啟用資料(4x1)
h2 = f(np.dot(W2, h1) + b2) # 計算第二個隱層的啟用資料(4x1)
out = np.dot(W3, h2) + b3 # 神經元輸出(1x1)
全連線層的前向傳播一般就是先進行一個矩陣乘法,然後加上偏置並運用啟用函式。
表達能力
神經網路可以近似任何連續函式。
雖然在理論上深層網路(使用了多個隱層)和單層網路的表達能力是一樣的,但是就實踐經驗而言,深度網路效果比單層網路好(設定的網路深度也應適度而行)。
設定層的數量和尺寸
注意:不應該因為害怕出現過擬合而使用小網路。相反,應該進儘可能使用大網路,然後使用正則化技巧來控制過擬合。
小節
- 介紹了生物神經元的粗略模型;
- 討論了幾種不同型別的啟用函式,其中ReLU是最佳推薦;
- 介紹了神經網路,神經元通過全連線層連線,層間神經元兩兩相連,但是層內神經元不連線;
- 理解了分層的結構能夠讓神經網路高效地進行矩陣乘法和啟用函式運算;
- 理解了神經網路是一個通用函式近似器,但是該性質與其廣泛使用無太大關係。之所以使用神經網路,是因為它們對於實際問題中的函式的公式能夠某種程度上做出“正確”假設。
- 討論了更大網路總是更好的這一事實。然而更大容量的模型一定要和更強的正則化(比如更高的權重衰減)配合,否則它們就會過擬合。在後續章節中我們講學習更多正則化的方法,尤其是dropout。
相關文章
- Webshell-Part1&Part2Webshell
- Study Plan For Algorithms - Part1Go
- ICLR2021-1:MULTI-HOP ATTENTION GRAPH NEURAL NETWORKSICLR
- Writing your first Django app, part 1DjangoAPP
- Part1 17個題目
- [SwiftUI 100 天] iExpense - part1SwiftUI
- [SwiftUI 100天] WorldScramble · part1SwiftUI
- SQLMap的前世今生(Part1)SQL
- [譯] part18: golang 介面 1Golang
- 【譯】NodeJS事件迴圈 Part 1NodeJS事件
- PyCon2018 回顧 (Part 1)
- Android Architecture Components Part1:RoomAndroidOOM
- IDAPython 讓你的生活更滋潤 part1 and part2Python
- CSS2基礎(part-1)CSS
- VDI/VDE 2634 Part1 2022:05
- 協程Part1-boost.Coroutine.md
- [SwiftUI 100天] Bucket List - part1SwiftUI
- CCNA-Part1:網路基礎概念
- [SwiftUI 100 天] Cupcake Corner - part1SwiftUIPCA
- day14-李大人part1
- day12-李大人part1
- 【Arranging an Appointment】Unit1 Part3APP
- 前端測試:Part1 (介紹)前端
- Flutter 入門指北(Part 1)之 DartFlutterDart
- 【tidyverse】part1:資料匯入
- Understanding LSTM Networks
- 第十一章 圖論 Part1圖論
- Day6 雜湊表part1
- 編譯實踐學習 Part1編譯
- Oracle 20C Concepts(Part III-1)Oracle
- Oracle 20C Concepts(Part V-1)Oracle
- SQLMAP原始碼分析Part1:流程篇SQL原始碼
- Fireeye Mandiant 2014 安全報告 Part1
- [part 1] 第一個 Django 應用程式Django
- 《軟體工程思想》讀書摘抄 Part 1軟體工程
- 翻譯 | Learning React Without Using React Part 1React
- 1. MySQL Galera Cluster全解析 Part 1 Galera Cluster 簡介MySql
- Convolutional Neural Networks(CNN)CNN