吳恩達給你的人工智能第一課 學習筆記一 神經網絡基礎

網易雲課堂 課程鏈接: https://mooc.study.163.com/smartSpec/detail/1001319001.htm

課程架構

一.、神經網絡和深度學習(https://mooc.study.163.com/course/2001281002#/info

1 深度學習概論

2 神經網絡基礎

3 淺層神經網絡

4 深層神經網絡

二. 改善深層神經網絡:超參數調試、正則化以及優化

三、 結構化機器學習項目

四、卷積神經網絡

五、序列模型

本文是博主對 神經網絡基礎 部分的學習筆記,記錄了重要公式、推導過程,用於分享、便於複習。

2.1 Binary Classification(二分分類)

訓練樣本:(x, y), x \in R^{n_{x}}, y \in \left \{ 0, 1 \right \}

m個樣本的訓練集:\left \{ \left ( x^{\left ( 1 \right )}, y^{\left ( 1 \right )}\right ), \left ( x^{\left ( 2\right )}, y^{\left ( 2 \right )}\right ), ..., \left ( x^{\left ( m \right )}, y^{\left ( m\right )}\right ) \right \}

更緊湊的寫法: X \in R^{n_{x}\times m} (nx行,m列的矩陣),y \in R^{1\times m}

2.2 Logistic Regression (logistic 迴歸)

輸入一個特徵向量x, \hat{y} 是對y的預測值:Given \ x, \ want \ \hat{y} = P \(y=1|x), \ x \in R^{n_{x}} , \ 0 \leqslant y \leqslant 1

    Parameters: w \in R^{n_{x}}, b \in R

    Output: \hat{y} = \sigma \(w^{T}x + b) = \sigma\(z) = \tfrac{1}{1+e^{-z}}, \ \sigma \ is \ Sigmoid \ function

設參數 \theta 由b和w組成,則公式簡化: x_{0}=1, \ x\in R^{n_{x}+1}, \ \theta^T=[b,w_1,w_2,...w_n],\ \theta \in R^{1+n_x},\ \hat{y}=\sigma(\theta ^{T}x)

2.3 Logistic Regression cost function(爲了訓練w和b,需要定義一個成本函數/損失函數)

    Given \left \{ \left ( x^{\left ( 1 \right )}, y^{\left ( 1 \right )}\right ), \left ( x^{\left ( 2\right )}, y^{\left ( 2 \right )}\right ), ..., \left ( x^{\left ( m \right )}, y^{\left ( m\right )}\right ) \right \}, want\ \hat{y}^i\approx y^i .

對單個樣本定義損失函數 Loss(error) function:

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

對全體樣本定義成本函數 Cost function (是個凸函數):

    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 Gradient Descent(梯度下降法)

α 爲自定義的學習率,對J求w的偏導, 重複 w := w - α dw, dw爲導數/斜率,逐步向最優點。

2.5-2.8 講了導數和導數計算的計算圖,數學基礎知識。

2.9 Logistic Regression Gradient descent(logistic迴歸中的梯度下降 —— 單個樣本)

定義符號:z=w^Tx+b,\ \hat{y}=a=\sigma(z),\ L(a,y)=-(ylog(a) + (1-y)log(1-a))

計算圖(反向計算導數):x_1,w_1,x_2,w_2,b \rightarrow z= w_1x_1 +w_2x_2+b\rightarrow a=\sigma(z)=\tfrac{1}{1+e^{-z}}\rightarrow L(a,y)

    da=\frac{dL(a,y)}{da} =-\frac{y}{a}+\frac{1-y}{1-a},  \frac{da}{dz}=\frac{e^{-z}}{(1+e^{-z})^2}=a(1-a)

    dz =\frac{dL}{dz}=\frac{dL(a,y)}{dz}=\frac{dL}{da}\frac{da}{dz}=(-\frac{y}{a}+\frac{1-y}{1-a})(a(1-a))=a-y

    dw_1=x_1\cdot dz, \ dw_2=x_2\cdot dz,\ db=dz

梯度下降:w_1 := w_1 - \alpha dw_1, \ w_2 := w_2 - \alpha dw_2, \ b :=b - \alpha db

2.10 Gradient descent on m examples (m個樣本的梯度下降)

    J(w,b)=\frac{1}{m}\sum_{i=1}^{m}L(a^{(i)}, y^{(i)}) , a^{(i)}=\hat{y}^{(i)}=\sigma(z^{(i)})=\sigma(w^Tx^{(i)}+b)

    \tfrac{\partial}{\partial w_1}J(w,b)=\tfrac{1}{m}\sum_{i=1}^{m}\tfrac{\partial}{\partial w_1}L(a^{(i)},y^{(i)})=\tfrac{1}{m}\sum_{i=1}^{m}dw_{1}^{(i)}

算法:

Init \ J=0; \ dw_1=0; \ dw_2=0;\ db=0

For\ i=1 \ to \ m

    z^{(i)} = w^Tx^{(i)}+b;

    a^{(i)}=\sigma(z^{(i)});

    J_t=-[(y^{(i)}log(a^{(i)}) + (1-y^{(i)})log(1-a^{(i)}))];

    dz^{(i)} = a^{(i)}-y^{(i)};\ dw_1\ +=\ x_1^{(i)}dz^{(i)}; \ dw_2 \ +=\ x_2^{(i)}dz^{(i)}; \ db \ +=\ dz^{(i)};

J\ /=\ m; \ dw_1\ /= \ m; \ dw_2\ /= \ m; \ db\ /= \ m;

2.11 - 2.12  Vectorization (向量化,驗證了python中向量運算比for循環快很多。)

2.13 - 2.14 Vectorizing Logistic Regression (向量化logistic迴歸,梯度下降的一次迴歸計算)

    Z=[z^{(1)}, z^{(2)}... z^{(m)}]=w^TX+[b,b,...b]=np.dot(w.T,x)+b; 

    A=[a^{(1)},a^{(2)}...a^{(m)}]=\sigma(Z);

    dZ=[a^{(1)}-y^{(1)},a^{(2)}-y^{(2)}...] = A-Y;

    db=\frac{1}{m}\sum_{i=1}^m dz^{(i)}=\frac{1}{m} np.sum(dZ);

    dw=\frac{1}{m}[x^{(1)}dz^{1}+...+x^{(m)}dz^{m}]=\frac{1}{m}XdZ^T;

    w:=w-\alpha dw; \ b := b-\alpha db;

說明:w是[n,1]數組,X是[n,m]數組,Z是[1,m]數組,b會從一個實數自動轉化爲[1,m]數組(python中的broadcasting)

2.15 Broadcasting in Python (Python中的廣播)

一個 [m,n] 矩陣, +-*/ 一個 [1,n] 或者 [m,1] 矩陣,則自動擴充爲 [m,n] 矩陣,逐個元素 +-*/。

2.16 A note on python/numpy vectors (關於 python/numpy 向量的說明)

不建議使用秩爲1的數組

2.17 Jupyter/ lpython 筆記本的快速指南

2.18 logistic損失函數的解釋

測試和作業

https://github.com/stormstone/deeplearning.ai

https://blog.csdn.net/u013733326/article/details/79827273

 

 

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