吳恩達《神經網絡和深度學習》學習筆記

第一週 深度學習概論

1.1 歡迎來到深度學習工程師微專業

將會學到什麼?
此順序的課程(專業)

  • 1.神經網絡和深度學習
  • 2.改進的深層神經網絡:超參數整定,正則化和優化
  • 3.構建你的機器學習項目
  • 4.卷積神經網絡
  • 5.自然語言處理:建立序列模型

1.2 什麼是神經網絡?

什麼是神經網絡

它是一個強大的學習算法,靈感來自大腦的工作原理。

例子1-單神經網絡
給定房地產市場上房屋大小的數據,你需要擬合一個函數來預測它們的價格。這是一個線性迴歸問題,因爲價格作爲尺寸的函數是一個連續的產出。
我們知道價格永遠不會是負的,所以我們創建一個稱爲修正線性單位(Relu)的函數,它從零開始。
輸入是房屋的尺寸(x)(x)
輸出是價格(y)(y)
“神經元”使用了Relu激活函數(blue line)。


第二週 神經網絡基礎

2.1 二分分類

神經網絡的計算過程可以分爲前向傳播和反向傳播。
logistic迴歸是一個用於二分分類的算法。
在計算機中,一張圖片可以以RGB矩陣的形式存儲。
可以定義一個特徵向量xx
x=[255,231,42,22,...,255,134,202,22,...,255,134,93,22]Tx=[255, 231, 42, 22,...,255, 134, 202, 22,...,255,134, 93,22]^{T}
x=[R...G...B]Tx=[R...G...B]^{T}
以表示這張圖片。
nx=64643=12288n_{x}=64*64*3=12288,來表示輸入特徵向量xx的維度。

符號約定:

  • (x,y)(x, y):表示一個單獨的樣本
  • xxnxn_{x}維的特徵向量
  • yy的值爲0或者1
  • 訓練集由m個訓練樣本構成,(x(1),y(1))(x^{(1)},y^{(1)})表示樣本1的輸入輸出。(x(2),y(2))(x^{(2)},y^{(2)})表示樣本2的輸入輸出。(x(m),y(m))(x^{(m)},y^{(m)})表示樣本m的輸入輸出。
  • mm表示訓練的樣本數
  • mtrainm_{train}表示訓練樣本數,mtestm_{test}表示測試樣本數。
  • 定義一個XX表示訓練集x(1),x(2),...x(m)x^{(1)},x^{(2)},...x^{(m)}
    X=[x(1)x(2)...x(m)] X=\begin{bmatrix} |&|&&&&|\\ |&|&&&&|\\ x^{(1)}&x^{(2)}&.&.&.&x^{(m)}\\ |&|&&&&|\\ |&|&&&&|\\ \end{bmatrix}
    XRnxmX\in\mathbb{R}^{n_{x}*m}X.shape=(nx,m)X.shape=(n_{x}, m)
  • 定義一個YY表示訓練集y(1),y(2),...y(m)y^{(1)},y^{(2)},...y^{(m)}
    Y=[y(1)y(2)...y(m)] Y=\begin{bmatrix} y^{(1)}&y^{(2)}&.&.&.&y^{(m)}\\ \end{bmatrix}
    YR1mY\in\mathbb{R}^{1*m}Y.shape=(1,m)Y.shape=(1, m)

2.2 logistic迴歸

Logistic Regression

logistic迴歸是一種用於有監督學習問題的學習算法,當輸出yy爲0或1時。logistic迴歸的目標是使預測值與訓練數據之間的誤差最小。
例子:貓or不是貓
給定由特徵向量xx表示的圖像,該算法將評估一隻貓出現在圖像中的概率。
Given x, y^=P(y=1x), where 0y^1Given\ x,\ \hat{y}=P(y=1|x),\ where\ 0\le\hat{y}\le1
logistic迴歸中使用的參數是:

  • 輸入特徵向量:xRnxx\in\mathbb{R}^{n_{x}},其中nxn_{x}是特徵數
  • 訓練標籤:y0,1y\in0,1
  • 權重:wRnxw\in\mathbb{R}^{n_{x}},其中nxn_{x}是單個樣本的特徵數
  • 閾值:bRb\in\mathbb{R}
  • 輸出:y^=σ(wTx+b)\hat{y}=\sigma(w^{T}x+b)y^\hat{y}爲預測值。
  • sigmoid函數:s=σ(wTx+b)=σ(z)=11+ezs=\sigma(w^{T}x+b)=\sigma(z)=\frac{1}{1+e^{-z}}
    Sigmoid function

(wTx+b)(w^{T}x+b)是線性函數(ax+b)(ax+b),但由於我們在[0,1]之間尋找一個概率約束,所以使用了sigmoid函數。如上圖所示,函數在[0,1]之間有界。
從圖上觀察:

  • 如果zz無窮大,σ(z)=1\sigma(z)=1
  • 如果zz很小或者負無窮數,σ(z)=0\sigma(z)=0
  • 如果z=0z=0σ(z)=0.5\sigma(z)=0.5

2.3 logistic迴歸損失函數

邏輯迴歸:成本函數

爲了訓練參數wwbb,我們需要定義一個成本函數。
簡要回顧:

y^(i)=σ(wTx(i)+b), where σ(z(i))=11+ez(i)\hat{y}^{(i)}=\sigma(w^{T}x^{(i)}+b),\ where\ \sigma(z^{(i)})=\frac{1}{1+e^{-z^{(i)}}}

x(i)x^{(i)}是第ii個訓練樣本

Given {(x(1),y(1)),...,(x(m),y(m))}Given\ \left\{(x^{(1)}, y^{(1)}),...,(x^{(m)}, y^{(m)})\right\},我們希望y^(1)y(i)\hat{y}^{(1)} \approx y^{(i)}

損失函數

損失函數測量預測值(y^(i)\hat{y}^{(i)})和期望輸出(y(i)y^{(i)})之間的差異。
換句話說,loss函數計算單個訓練示例的損失值。

不好的損失函數:

L(y^(i),y(i))=12(y^(i)y(i))2L(\hat{y}^{(i)}, y^{(i)})=\frac{1}{2}(\hat{y}^{(i)}-y^{(i)})^{2}

好的損失函數

L(y^(i),y(i))=(y(i)log(y^(i))+(1y(i))log(1y^(i)))L(\hat{y}^{(i)}, y^{(i)})=-(y^{(i)}log(\hat{y}^{(i)})+(1-y^{(i)})log(1-\hat{y}^{(i)}))

  • if y^=1if\ \hat{y}=1: L(y^(i),y(i))=log(y^(i))L(\hat{y}^{(i)}, y^{(i)})=-log(\hat{y}^{(i)}) where log(y^(i))log(\hat{y}^{(i)}) and y^(i)\hat{y}^{(i)} should be closed to 1.
  • if y^=0if\ \hat{y}=0: L(y^(i),y(i))=log(1y^(i))L(\hat{y}^{(i)}, y^{(i)})=-log(1-\hat{y}^{(i)}) where log(1y^(i))log(1-\hat{y}^{(i)}) and y^(i)\hat{y}^{(i)} should be closed to 0.

總之原則是使得損失函數最小。
那麼當y=1y=1時,要使得損失函數最小,那麼y^\hat{y}必定會接近於1,所以會選擇下面的損失函數。
y=0y=0時,要使得損失函數最小,那麼y^\hat{y}必定會接近於0,所以會選擇下面的損失函數。

成本函數

成本函數是整個訓練集損失函數的平均值。
我們要找到使總體成本函數最小的參數wwbb
J(w,b)=1mi=1mL(y^(i),y(i))=1mi=1m[y(i)log(y^(i))+(1y(i))log(1y^(i))]J(w,b)=\frac{1}{m}\sum_{i=1}^{m}L(\hat{y}^{(i)},y^{(i)})=-\frac{1}{m}\sum_{i=1}^{m}[y^{(i)}log(\hat{y}^{(i)})+(1-y^{(i)})log(1-\hat{y}^{(i)})]


2.4 梯度下降法

通過梯度下降發法找到w, bw,\ b,使得J(w,b)J(w, b)最小。
重複

w:=wαdJ(w,b)dww:=w-\alpha\frac{d{J(w, b)}}{dw}

b:=bαdJ(w,b)dbb:=b-\alpha\frac{d{J(w, b)}}{db}


2.5 導數

f(a)=3af(a)=3af(a)f'(a)=3。


2.6 更多導數的例子

f(a)=a2, f(a)=2af(a)=a^{2},\ f'(a)=2a
f(a)=a3, f(a)=3a2f(a)=a^{3},\ f'(a)=3a^{2}


2.7 計算圖

J(a,b,c)=3(a+bc)J(a,b,c)=3(a+bc)

{u=bcv=a+uJ=3v\left\{ \begin{aligned} u & = & bc \\ v & = & a+u \\ J & = & 3v \end{aligned} \right.

a
b
c
u=bc
v=a+u
J=3v

2.8 計算圖的導數計算

a
b
c
u=bc
v=a+u
J=3v

導數的鏈式法則

dJdv=3\frac{dJ}{dv}=3

dJda=dJdvdvda\frac{dJ}{da}=\frac{dJ}{dv}\frac{dv}{da}

dvda=1\frac{dv}{da}=1

通常在代碼中使用dada表示dvda\frac{dv}{da}


2.9 logistic迴歸中的梯度下降法

x1
z=w1x1+w2x2+b
w1
x2
w2
b
a=sigma z
L
  • 損失函數

L(y^(i),y(i))=(y(i)log(y^(i))+(1y(i))log(1y^(i)))L(\hat{y}^{(i)}, y^{(i)})=-(y^{(i)}log(\hat{y}^{(i)})+(1-y^{(i)})log(1-\hat{y}^{(i)}))

L(a,y)=(yloga+(1y)log(1a))L(a, y)=-(yloga + (1-y)log(1-a))

L(a,y)=yloga(1y)log(1a)L(a,y)=-yloga-(1-y)log(1-a)

求導

da

da=dL(a,y)da=y1aln2(1y)1(1a)ln2(1)da=\frac{dL(a,y)}{da}=-y*\frac{1}{aln2}-(1-y)\frac{1}{(1-a)ln2}*(-1)

=yaln2+1y(1a)(ln2)=-\frac{y}{aln2}+\frac{1-y}{(1-a)(ln2)}

=1ln2(ya+1y1a)=\frac{1}{ln2}(-\frac{y}{a}+\frac{1-y}{1-a})


da/dz

  • 激活函數

sigmoid函數:

a=σ(wTx+b)=σ(z)=11+eza =\sigma(w^{T}x+b)=\sigma(z)=\frac{1}{1+e^{-z}}

求導

dadz=1(1+ez)1(1+ez)(1+ez)2\frac{da}{dz}=\frac{1'(1+e^{-z})-1(1+e^{-z})'}{(1+e^{-z})^2}

=(z)(ez)(1+ez)2=\frac{-(-z)'(e^{-z})}{(1+e^{-z})^2}

=ez(1+ez)2=\frac{e^{-z}}{(1+e^{-z})^2}


a=11+eza=\frac{1}{1+e^{-z}}

1a=1+ez1+ez11+ez1-a=\frac{1+e^{-z}}{1+e^{-z}}-\frac{1}{1+e^{-z}}

=ez1+ez=\frac{e^{-z}}{1+e^{-z}}

a(1a)=ez(1+ez)2a(1-a)=\frac{e^{-z}}{(1+e^{-z})^{2}}

所以

dadz=a(1a)\frac{da}{dz}=a(1-a)


dz
dz=dLdzdz=\frac{dL}{dz}

=dL(a,y)dz=\frac{dL(a, y)}{dz}

=dLdadadz=\frac{dL}{da}*\frac{da}{dz}

=(ya+1y1a)a(1a)=(-\frac{y}{a}+\frac{1-y}{1-a})*a(1-a)

=ay=a-y


dLdw1=dw1=x1dz\frac{dL}{dw_{1}}=dw_{1}=x_{1}*{dz}

dLdw2=dw2=x2dz\frac{dL}{dw_{2}}=dw_{2}=x_{2}*{dz}

db=dzdb=dz

總結
{da=(ya+1y1a)dz=aydw1=x1dzdw2=x2dzdb=dz \left\{ \begin{aligned} da & = & (-\frac{y}{a}+\frac{1-y}{1-a}) \\ dz & = & a-y \\ dw_{1} & = & x_{1}dz \\ dw_{2} & = & x_{2}dz \\ db & = & dz \\ \end{aligned} \right.
梯度下降
{w1:=w1αdw1w2:=w2αdw2b:=bαdb \left\{ \begin{aligned} w_{1} & := & w1-\alpha dw_{1} \\ w_{2} & := & w2-\alpha dw_{2} \\ b & := & b-\alpha db \\ \end{aligned} \right.


2.10 m個樣本的梯度下降

J(w,b)=1mi=1mL(y^(i),y(i))=1mi=1m[y(i)log(y^(i))+(1y(i))log(1y^(i))]J(w,b)=\frac{1}{m}\sum_{i=1}^{m}L(\hat{y}^{(i)},y^{(i)})=-\frac{1}{m}\sum_{i=1}^{m}[y^{(i)}log(\hat{y}^{(i)})+(1-y^{(i)})log(1-\hat{y}^{(i)})]

在這裏插入圖片描述


2.11 向量化

使用Numpy的內置函數而不是for 循環去做做向量的點積。

2.12 向量化的更多例子


第三週

3.1 神經網絡概覽

使用(1)(1)(2)(2)(3)(3)(n)(n)代表樣本1、2、3…n的數據。
使用[1][1][2][2][3][3][n][n]代表單個神經網絡,1、2、3…n層的數據。


3.2 神經網絡表示

w.shape=(4, 3)
w.shape=(4, 3)
x.shape = (3, 1)


3.3 計算神經網絡的輸出

z1[1]z^{[1]}_{1}表示神經網絡第1層的的第一個節點的zz


3.8 激活函數的導數

if g(z)=11+ez:if\ g(z)=\frac{1}{1+e^{-z}}:

g(z)=11+ezg'(z)=\frac{1}{1+e^{-z}}

=dg(z)dz=\frac{dg(z)}{dz}

=1(1+ez)1(1+ez)(1+ez)2=\frac{1'(1+e^{-z})-1(1+e^{-z})'}{(1+e^{-z})^2}

=(z)(ez)(1+ez)2=\frac{-(-z)'(e^{-z})}{(1+e^{-z})^2}

=ez(1+ez)2=\frac{e^{-z}}{(1+e^{-z})^2}

=11+ez(111+ez)=\frac{1}{1+e^{-z}}(1-\frac{1}{1+e^{-z}})

=g(z)(1g(z))=g(z)(1-g(z))

oror

=a(1a)=a(1-a)


if g(z)=tanh(z):if\ g(z)=tanh(z):

=ezezez+ez=\frac{e^{z}-e^{-z}}{e^{z}+e^{-z}}

g(z)=1(1tanh(z))2g'(z)=1-(1-tanh(z))^{2}

=1g(z)2=1-g(z)^{2}

=1a2=1-a^{2}


if g(z)=max(0,z):if\ g(z)=max(0,z):
g(z)={0if z<01if z0g'(z)=\left\{ \begin{aligned} 0 & & if\ z<0 \\ 1 & &if\ z\ge0 \end{aligned} \right.


if g(z)=max(0.01z,z):if\ g(z)=max(0.01z, z):
g(z)={0.01if z<01if z0g'(z)=\left\{ \begin{aligned} 0.01 & & if\ z<0 \\ 1 & &if\ z\ge0 \end{aligned} \right.


激活函數的導數總結
名稱 公式 導數
SigmoidSigmoid a=g(z)=11+eza=g(z)=\frac{1}{1+e^{-z}} a(a1)a(a-1)
TanhTanh a=g(z)=ezezez+eza=g(z)=\frac{e^{z}-e^{-z}}{e^{z}+e^{-z}} 1a21-a^{2}
ReLU a=g(z)=max(0,z)a=g(z)=max(0,z) g(z)={0if z<01if z0g'(z)=\left\{\begin{aligned}0 & & if\ z<0 \\1 & &if\ z\ge0\end{aligned}\right.
Leaky ReLU a=g(z)=max(0.01z,z)a=g(z)=max(0.01z,z) g(z)={0.01if z<01if z0g'(z)=\left\{\begin{aligned}0.01 & & if\ z<0 \\1 & &if\ z\ge0\end{aligned}\right.

W.shape = ()
dz.shape=(1, 1)
a.shape=(n1, 1)
a.T.shape=(1, n1)
dz*a.T.shape=(1, n1)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章