1. 程式人生 > >吳恩達第一門-神經網路和深度學習第三週6-10學習筆記

吳恩達第一門-神經網路和深度學習第三週6-10學習筆記

吳恩達第一門-神經網路和深度學習第三週6-10學習筆記

3.6啟用函式

在這裡插入圖片描述

啟用函式

圖中給出了前面課程中所學到的利用神經網路計算輸出值的具體步驟。其中的 σ ( z ) \sigma(z) ,也就是sigmoid函式在這裡被稱為啟用函式。
啟用函式常用 g

g 來表示,除了sigmoid函式外,tanh函式或者雙曲正切函式等一些非線性函式也是啟用函式,而且他們甚至要優於sigmoid函式。
在這裡插入圖片描述

tanh函式

a = t a n h

( z ) = e z e
z
e z + e z
a=tanh(z)=\frac{e^z-e^{-z}}{e^z+e^{-z}}
tanh函式是sigmoid的向下平移和伸縮後的結果,其值域介於+1和-1之間,它的均值相比sigmoid函式更接近於0而不是0.5。結果表明tanh函式的效果要優於sigmoid函式。

但同時tanh函式也具有與sigmoid相同的缺點,在z特別大或者特別小的情況下,其導數的梯度、函式的斜率會變得特別小,最後就會接近於0,導致梯度下降的速度變得非常慢。

Relu函式

Relu函式是修正線性單元的函式,只要z是正值的情況下,導數恆等於1,當z是負值的時候,導數恆等於0。

還有一種版本的Relu函式,叫作Leaky Relu函式,當z是負值時,Leaky Relu函式的值不是等於0,取而代之的是一條略微傾斜的直線。

其優點在於:
第一,速度快,在的區間變動很大的情況下,啟用函式的導數或者啟用函式的斜率都會遠大於0,在程式實現就是一個if-else語句,而sigmoid函式需要進行浮點四則運算。

第二,無彌散,sigmoid和tanh函式的導數在正負飽和區的梯度都會接近於0,這會造成梯度彌散,而Relu和Leaky ReLu函式大於0部分都為常數,不會產生梯度彌散現象。

使用情況

sigmoid啟用函式:除了輸出層是一個二分類問題基本不會用它。
tanh啟用函式:tanh是非常優秀的,幾乎適合所有場合。
ReLu啟用函式:最常用的預設函式,如果不確定用哪個啟用函式,就使用ReLu或者Leaky ReLu

3.7為什麼需要非線性啟用函式

本章主要圍繞一個問題:我們為什麼需要非線性啟用函式?
證明:
如果我們讓神經網路正向傳播的方程中的啟用函式 g ( z ) = z g(z)=z ,這是一個線性啟用函式。我們可以得到新的神經網路正向傳播方程:
a [ 1 ] = z [ 1 ] = W [ 1 ] x + b [ 1 ] a^{[1]}=z^{[1]}=W^{[1]}x+b^{[1]}
a [ 2 ] = z [ 2 ] = W [ 2 ] a [ 1 ] + b [ 2 ] a^{[2]}=z^{[2]}=W^{[2]}a^{[1]}+b^{[2]}
將前式代入後式中得到:
a [ 2 ] = z [ 2 ] = W [ 1 ] W [ 2 ] x + W [ 2 ] b [ 1 ] + b [ 2 ] a^{[2]}=z^{[2]}=W^{[1]}W^{[2]}x+W^{[2]}b^{[1]}+b^{[2]}
也就是說,最終得到的還是一個線性關係,所有的隱藏層都是可以去掉的。即使你的網路層數再多,也只能停留在對線性關係的描述,無法研究“更加有趣的函式”。
只有一個地方可以使用線性啟用函式,類似於 g ( z ) = z g(z)=z ,就是在做機器學習中的迴歸問題時。 此時輸出是一個實數,比如在第一章中舉過一個例子,想要預測房地產價格, 此時不是二分類任務0或1,而是要輸出一個實數,這種情況可以在輸出層使用線性啟用函式。

所以,不能在隱藏層用線性啟用函式,可以用ReLU、tanh、leaky ReLU或者其他的非線性啟用函式,一般來說,唯一可以用線性啟用函式的通常就是輸出層。

3.8啟用函式的導數

本章主要介紹了對啟用函式進行的求導操作,作為使用梯度下降法的基礎。

sigmoid函式

在這裡插入圖片描述
a = g ( z ) , g ( z ) = d g ( z ) d z = a ( 1 a ) a=g(z),{g(z)}'=\frac{dg(z)}{dz}=a(1-a)

tanh函式

在這裡插入圖片描述
g ( z ) = t a n h ( z ) = e z e z e z + e z g(z)=tanh(z)=\frac{e^{z}-e^{-z}}{e^{z}+e^{-z}}
g ( z ) = 1 ( t a n h ( z ) ) 2 g'(z)=1-(tanh(z))^2

ReLU函式和Leaky ReLU函式

在這裡插入圖片描述
ReLU:
在這裡插入圖片描述
Leaky ReLU:
在這裡插入圖片描述

3.9 神經網路的梯度下降

包含的引數為 W [ 1 ] W^{[1]} b [ 1 ] b^{[1]} W [ 2 ] W^{[2]} b [ 2 ] b^{[2]} 。令輸入層的特徵向量個數nx=n[0],隱藏層神經元個數為n[1],輸出層神經元個數為n[2]=1。則W[1]的維度為(n[1],n[0]),b[1]的維度為(n[1],1),W[2]的維度為(n[2],n[1]),b[2]的維度為(n[2],1)。
正向傳播過程:
Z [ 1 ] = W [ 1 ] X + b [ 1 ] Z^{[1]}=W^{[1]}X+b^{[1]}
A [ 1 ] = g ( Z [ 1 ] ) A^{[1]}=g(Z^{[1]})
Z [ 2 ] = W [ 2 ] A [ 1 ] + b [ 2 ] Z^{[2]}=W^{[2]}A^{[1]}+b^{[2]}
A [ 2 ] = g ( Z [ 2 ] ) A^{[2]}=g(Z^{[2]})
反向傳播過程(求導):
d Z [ 2 ] = A [ 2 ] Y dZ^{[2]}=A^{[2]}-Y
d W [ 2 ] = 1 m d Z [ 2 ] A [ 1 ] T dW^{[2]}=\frac{1}{m}dZ^{[2]}A^{[1]T}

相關推薦

第一-神經網路深度學習第二6-10學習筆記

神經網路和深度學習第二週6-10學習筆記 6.更多導數的例子 在本節中,為上一節的導數學習提供更多的例子。在上一節中,我們複習了線性函式的求導方法,其導數值在各點中是相等的。本節以y=a^2這一二次函式為例,介紹了導數值在各點處發生變化時的求導方法。求導大家都會,y=x ^3的導數是

第一-神經網路深度學習6-10學習筆記

吳恩達第一門-神經網路和深度學習第三週6-10學習筆記 3.6啟用函式 啟用函式 圖中給出了前面課程中所學到的利用神經網路計算輸出值的具體步驟。其中的 σ

改善深層神經網路:超引數除錯、正則化以及優化 第一

吳恩達 改善深層神經網路:超引數除錯、正則化以及優化 課程筆記  第一週 深度學習裡面的實用層面 1.1 測試集/訓練集/開發集        原始的機器學習裡面訓練集,測試集和開發集一般按照6:2:2的比例來進行劃分。但是傳統的機器學習

Deeplearning--卷積神經網路-第一作業01-Convolution Networks(python)

Convolutional Neural Networks: Step by StepWelcome to Course 4's first assignment! In this assignment, you will implement convolutional (

實驗(神經網絡深度學習第一周,代碼和數據集,親測可運行

HR tps size nac www cond -c 自己 c-c 代碼和數據集已上傳到文件中 應該可以直接下載吧(第一次上傳文件,感覺是),解壓後把文件夾拷貝到jupyter工作空間即可 註:我對下載的代碼的格式稍作了修改,原來定義函數與調用函數在兩個單元格裏,我直

卷積神經網路——深度卷積網路:例項探究

經典網路 LeNet5 隨著網路的加深,影象的高度和寬度在縮小,通道數量增加 池化後使用sigmoid函式 AlexNet 與LeNet相似,但大得多 使用ReLu函式 VGG-16 網路大,但結構並不複雜 影象縮小的比例和通道增加的比例是有規律的 64->

卷積神經網路——卷積神經網路

計算機視覺 相關問題: 1)影象分類: 2)目標檢測: 3)影象風格遷移: 挑戰:資料輸入可能會非常大 輸入10001000的彩色影象,則需要輸入的資料量為100010003 =3M,這意味著特徵向量X的維度高達3M ,如果在第一隱藏層有1000個神經元,使用標準全連線,那麼權值矩

改善深層神經網路引數:超引數除錯、正則化以及優化——優化演算法

機器學習的應用是一個高度依賴經驗的過程,伴隨著大量的迭代過程,你需要訓練大量的模型才能找到合適的那個,優化演算法能夠幫助你快速訓練模型。 難點:機器學習沒有在大資料發揮最大的作用,我們可以利用巨大的資料集來訓練網路,但是在大資料下訓練網路速度很慢; 使用快速的優化演算法大大提高效率

Coursera 深度學習 deep learning.ai 神經網路深度學習 第一課 第二 程式設計作業 Python Basics with Numpy

Python Basics with Numpy (optional assignment) Welcome to your first assignment. This exercise gives you a brief introduction to P

學習日記】深度學習工程師微專業第一課:神經網路深度學習

以下內容是我聽吳恩達深度學習微專業第一課做的學習筆記,主要是按自己的理解回答一些問題,並非全部出自課程內容。1. 什麼是神經網路?神經網路是諸多機器學習方法中的一種,受人類大腦工作方式的啟發而發明的。人類大腦的一個神經元通過多個樹突來接收來自不同神經元的訊號,接著細胞核處理訊

Coursera--深度學習-神經網路深度學習-week1-測驗

本文章內容: Coursera吳恩達深度學習課程,第一課神經網路和深度學習Neural Networks and Deep Learning, 第一週:深度學習引言(Introduction to Deep Learning) 部分的測驗,題目及答案截圖。 正確:ABC

Coursera深度學習課程筆記(1-1)神經網路深度學習-深度學習概論

這系列文章是我在學習吳恩達教授深度學習課程時為了加深自己理解,同時方便後來對內容進行回顧而做的筆記,其中難免有錯誤的理解和不太好的表述方式,歡迎各位大佬指正並提供建議。1、什麼是神經網路               在簡單的從房屋面積預測價格時,神經網路可以理解為將輸入的房屋

神經網路深度學習 4周程式設計作業

由於csdn的markdown編輯器及其難用,已將本文轉移至此處NoteThese are my personal programming assignments at the 4th week after studying the course neural-network

DeepLearning.ai(神經網路深度學習) 第二程式設計作業

轉載於:http://blog.csdn.net/Koala_Tree/article/details/78057033吳恩達Coursera課程 DeepLearning.ai 程式設計作業系列,本文為《神經網路與深度學習》部分的第二週“神經網路基礎”的課程作業(做了無用部分的刪減)。Part 1:Pyth

Deeplearning.ai筆記神經網路深度學習1

Introduction to Deep Learning What is a neural neural network? 當對於房價進行預測時,因為我們知道房子價格是不可能會有負數的,因此我們讓面積小於某個值時,價格始終為零。 其實對於以上這麼一個預測的模型就可以看

Deeplearning.ai筆記神經網路深度學習3

Shallow Neural Network Neural Networks Overview 同樣,反向傳播過程也分成兩層。第一層是輸出層到隱藏層,第二層是隱藏層到輸入層。其細節部分我們之後再來討論。 Neural Network Representation

神經網路深度學習 3周程式設計作業

由於csdn的markdown編輯器及其難用,已將本文轉移至此處NoteThese are my personal programming assignments at the third week after studying the course neural-netwo

視訊學習課後作業(01.神經網路深度學習--week2/assignment2_2)

最近從頭開始學習深度學習,想借此記錄學習過程用於日後複習或者回看,以下是個人見解,如有錯誤請見諒並指出,謝謝。 目的 Assignment2_2作業主要是引導新手從頭開始建一個用邏輯迴歸分類器( classififier, LR)來識別影象中是否有貓。簡單來說,邏輯迴

Coursera deep learning 神經網路深度學習 四周 程式設計作業 Building your Deep Neural Network

def two_layer_model(X, Y, layers_dims, learning_rate = 0.0075, num_iterations = 3000, print_cost=False):     """     Implements a two-layer neural network

深度學習-神經網路深度學習》4--深層神經網路

1. 深層神經網路長什麼樣?所謂深層神經網路其實就是含有更多的隱藏層或隱藏層單元的神經網路。2. 前向傳播深層神經網路前向傳播的向量化實現:這裡需要逐層計算每層的z和a,一般只能用for迴圈(從第1層到第L層,輸入層被稱為第0層)3. 如何確定矩陣的維數n[0]是輸入層的特徵