接著學習吳恩達老師第
三、四周的課程。(均來自吳恩達老師課件)
1. 普通的淺層網路
第0層(
輸入層 隱藏層 輸出層
2. 淺層網路(單樣本)
直觀上理解,輸入層有3個特徵。隱藏層的4個節點實際上都在重複的計算sigmoid,因此每個節點可產生乙個w(1*3)和b(1*1),隱藏層可產生w[1](4*3),b[1](4*1),由sigmoid啟用函式推出a[1](4*1)。這相當於4個隱藏節點各自計算函式得到了4個值。但是w[2]和b[2]和a[2]不是很好理解其意義,我暫且理解為:原始輸入特徵為x,而在隱藏層設定4個節點,通過sigmoid啟用函式將原始的3個特徵對映為4個特徵,因此在輸出層w[2]的維度為1*4,最後再通過sigmoid得出**值。其實總結來說,也就是隱藏層與輸出層都使用sigmoid作為啟用函式。
當擴充套件為多樣本,又是向量化的過程,注意符號的寫法。矩陣中每一列應代表乙個樣本,而每一行應代表某個指標(特徵,節點等)。
3. 啟用函式: 令 a = g(z)(代表啟用函式)
(1)sigmoid:除非作為二元分類(0,1)的輸出層,否則選用tanh替代,因為其效果更好。
g『(z) = a(1-a)
(2)雙曲正切函式 tanh 值域(-1,1)
數學上看,即是將sigmoid函式向下平移經過原點,並使其值域拉伸到(-1,1),效果幾乎總比sigmoid函式好,因為其有乙個類似於中心化的功能(使均值在0,而sigmoid在0.5)
g』(z) = 1 – g(z)^2
(3)relu max(0,z)不知道用什麼的時候,可以嘗試,效果不錯,注意在0的時候的斜率(自己定義)
(4)leaky relu max(0.01z,z),0.01的值可以自己定義。修正了relu在負值時,斜率為0的問題,效果比relu好,但是不經常用 。
4. 理解前向傳播及後向傳播
在推導後向傳播時保證矩陣的維度匹配。
理解後向傳播以及前向傳播,在於理解傳播二字。根據輸入特徵得到輸出,前向傳播的是一步步的計算過程。通過輸出的反饋,後向傳播的是更新的過程。
初始化神經網路的權重 很重要,不要初始化為0,而是隨機初始化。若初始化權重(w)都為0 ,會使隱藏層的節點做著相同的函式計算,使得隱藏層的計算沒有意義。常常隨機初始化權重為較小的值,例如numpy.random.rand()*0.01。其實設定初始化權值跟所用的啟用函式有關。由於我們採用sigmoid(或者tanh),並且使用梯度下降法進行收斂,當初始化權值太大或者太小時,會使其收斂的速度較慢。
1. 符號太多了,注意符號的標記。
2. 前向傳播的過程,最外層的for迴圈無法捨棄(即在每一層傳播的過程)。
3. 深度網路中,清晰的認知到變數的維度很重要(w,b,z…),關鍵在於捕捉到網路的層數l,每層的節點數l[i],以及輸入樣本的m和n(
4. 為什麼要用深度網路表示?總結出了兩方面原因:(1)以人臉識別為例,深度網路的每層是乙個特徵探測器(邊緣檢測),每個神經元可以理解為再找乙個特徵,之後再將這些神經元組合起來,便可以得出檢測結果。也就是說隨著神經網路的前向傳播,逐漸由小特徵匯聚成大特徵(類似於金字塔結構)。(2)另一方面是,同一問題,若利用相對較淺的網路,那麼需要的節點個數會指數級增長。
5. 前向與後向傳播流程
這裡有幾點關注的地方:
(1)前向傳播過程中,對於中間變數的快取,可提到計算效率。
(2)後向傳播的推導的過程,注意矩陣間的運算,(維度,轉置)。
(3) 多樣本情形時,w和b的更新記得取平均。
6. 超引數:某種程度上控制著引數的預先設定的引數。(不斷的嘗試)深度學習的應用實則上就是乙個經驗的嘗試(資料驅動的本質以及不同環境的配置等),如何選取好的超引數,只能不斷的嘗試。
神經網路與深度學習筆記
1 代價函式 在當前小批量資料中的所有訓練樣本 2 改進神經網路的學習方法 更好的代價函式的選擇 交叉熵代價函式 四種 規範化 方法 l1和l2規範化,棄權和訓練資料的人為擴充套件,讓我們的網路在訓練集之外的資料上更好地泛化。3 在錯誤不是很好地定義時,學習過程會變得很緩慢。但在犯錯時也存在學習緩慢...
神經網路與深度學習 三 CPP神經網路庫
簡單的介紹 1.總體上的架構是,將全連線層,輸出層進行封裝,同時引入了connector的資料結構,用於連線兩層,使用了模板的專用化技術,可以連線特定型別的兩層,其中,在bp神經網路中,後一層要向connector提交閾值的修改權 指標 在反向傳播時還要提交反響傳播因子,前一層通過connector...
深度學習入門課程學習筆記 初探神經網路
首先咱們先來回顧一下之前課程所講前向傳播和反向傳播知識點,前往傳播就是從輸入x到最終得到loss值的過程,反向傳播是從最終的loss值經過梯度的傳播最終計算出權重矩陣w中所有引數對於最終的loss值影響大小,更新引數就是通過不同權重引數對終loss值的影響來調節引數,使得咱們的引數矩陣w能夠更擬合咱...