1. 程式人生 > >吳恩達第一課第三周隨筆

吳恩達第一課第三周隨筆

imu tro 廣播 最終 表示 調用 大小 有關 使用

2.1 雙層神經網絡

技術分享圖片

圖 1

技術分享圖片

圖 2

圖1是一個雙層網絡模型,實際上有三層,但是通常把輸入層給忽略掉 技術分享圖片稱為輸入層

註意技術分享圖片層了,圖1技術分享圖片層有4個節點,圖2只要1個,

所以圖1 技術分享圖片應該是一個(4,3)的矩陣,圖2的技術分享圖片是一個(1,3)的矩陣

ps:堅持將前一層的特征的權重技術分享圖片做成一列放入技術分享圖片矩陣中,所以每一個技術分享圖片都是(3,1)的列向量

以前一直都是使用,np.dot(技術分享圖片.T,X),這裏也同樣也沿用這個設定

所以技術分享圖片,所以技術分享圖片 是一個(4,3)矩陣

技術分享圖片 ,b是一個[4,1]的列向量,要生成矩陣節點在前

圖1的正向傳播算法:

技術分享圖片

A,Z的橫向表示第幾個樣本,豎向表示第幾個節點

2.2理解m個樣本向量化

重點在於np.dot這個函數,向量的點積運算

C=np.dot(A,B)

技術分享圖片

這是點積運算的定義(下面的W值得是技術分享圖片

W是一個(4,3)的矩陣,表示總共有 4行3個特征權重 組成的權重矩陣

X是一個(3,m)的矩陣,表示有m個樣本,每個樣本有3個特征

技術分享圖片 觀察z的計算形成,x的每一個特征與對應的權重相乘並累加

3個 x特征 技術分享圖片權重相乘並累加成一個值,這個值就是技術分享圖片

由於有4行這樣的權重值,每一行的權重值都與第i個樣本的3個特征相乘就形成了一個4為列向量如技術分享圖片

最終W與X點積,形成一個(4,m)的矩陣。至於+b就是numpy的廣播功能了

註意b是一個(4,1)的列向量,每一個節點都有對應的b值 即技術分享圖片

2.3 更多的激活函數

技術分享圖片

技術分享圖片

優點:平均值接近0,比起sigmod接近0.5的平均值,接近0,更易於下一層的計算

tanh各方面吊打sigmod,除了作為二分分類輸出層時,才會使用sigmod作為作為激活函數

缺點:兩個函數,都在Z很大的時候,梯度都接近0,這樣會拖慢學習速率。梯度下降與學習率技術分享圖片以及梯度有關。

另外一個激活函數:relu函數 np.maximum(0,z), 比較0,和Z和大小,取大的

技術分享圖片特點:

1. 在Z>0時,梯度永遠為1,

2. 在Z=0時,梯度為0,不過,你可以設置當Z=0時,梯度為多少

3. 缺點:當Z為負數時,順帶的也把梯度變成0了,不好使用梯度下降的方法

這個激活函數很強大,就是這麽強,當不知道選用什麽激活函數時,就選這個reluc函數(修正線性函數)

帶泄露的relu函數 :np.maximum(0.01Z,Z),他會在負值有一個平緩的線條,讓其也有梯度

技術分享圖片為了表示清楚,選用的是0.1。 0.01是經驗總結出來的一個參數

建立神經網絡有一系列東西需要選擇,如隱藏單元個數,激活函數,初始化

這些東西全靠經驗選擇出的,選擇困難戶

2.4 非線性激活函數的必要性

如果去掉非線性激活函數,那麽你的輸出與輸入還是一個成線性關系,那麽你後面的無論有多少隱藏層,都會等價於只做了一個線性輸出。

在輸出層會有可能需要做線性變換,才會用到線性激活函數。

中間隱藏層,如果需要做一些伸縮變化,也會用到線性激活函數(這種情況很復雜)

2.5 激活函數的導數

技術分享圖片

註釋:技術分享圖片

記住:a=tanh(z) a=1-a2

Relu函數以及帶泄露的Relu函數:記住在z=0處是沒有導數的,因為左右的偏導不相等,需要自己定義

2.6 神經網絡下的梯度下降

技術分享圖片

正反向傳播公式計算

正向請翻上面

假設這是一個二分分類的雙層神經網絡

技術分享圖片

註意點:

  1. 技術分享圖片是一個列向量,在橫向累加,所以axis=1,為了確保累加之後不會出現一個秩為1的數組,所以調用keepdims=True
  2. 計算技術分享圖片時,技術分享圖片技術分享圖片是對應為相乘,不再是點積了

    技術分享圖片是一個(1,4)轉置之後是一個(4,1),技術分享圖片是一個(1,m),點積之後變成(4,m)

    技術分享圖片是一個(4,m)矩陣,對應位相乘。這是從矩陣形狀來看

    dZ_1的計算並不需要累加,且不需要累加到m,然後除以m

還剩下一個隨機初始化權重,留到明天學習

吳恩達第一課第三周隨筆