第一節(jié) 概論
一、什么是神經(jīng)網(wǎng)絡
由人腦的工作模式啟發(fā)衍生的強力學習算法
例 1 – 單神經(jīng)網(wǎng)絡
給出有關(guān)房地產(chǎn)市場房屋大小的數(shù)據(jù),擬合一個函數(shù)來預測其他房地產(chǎn)數(shù)據(jù)的價格。這是一個線性回歸問題,因為作為大小函數(shù)的價格是連續(xù)輸出。由于價格不可以為負數(shù),因此我們建立了一個修正線性單元(ReLU),該函數(shù)從零開始。

輸入是房子面積x,輸出是房價y
“神經(jīng)”構(gòu)造了該ReLU函數(shù)。
The input is the size of the house (x) The output is the price (y) The “neuron” implements the function ReLU (blue line)
例 2 – 多神經(jīng)網(wǎng)絡
房價由多種情況影響,如大小、臥室數(shù)量、郵編、街區(qū)富裕情況......神經(jīng)網(wǎng)絡在預測的時候會產(chǎn)生隱藏單元,我們并不會指定每個隱藏單元代表什么意思,只需要給出相應的輸入x和輸出y就好了。

二、監(jiān)督學習
1.監(jiān)督學習基本分為兩大問題:
輸入和輸出都是有參照的,根據(jù)參照,給定一個新的輸入,預測新的輸出。如房價:給定某地房子大小和房價的數(shù)據(jù),根據(jù)這些數(shù)據(jù),給定一個房子尺寸大小,預測該尺寸對應的房價。
分類:
- 線性回歸類:預測連續(xù)輸出值
- 分類問題:預測離散輸出值
2.常用的神經(jīng)網(wǎng)絡
image : CNN
sequence data (audio,language...) RNN or complex RNNS
Structured data : 每個特征有清晰的定義
Unstructured data : Audio Image text
第二節(jié) 神經(jīng)網(wǎng)絡基礎(chǔ)
一、logistic 回歸
1.二分分類問題
二分分類問題的目標是訓練出一個分類器以圖片的特征向量x作為輸入,預測輸出的結(jié)果標簽y是1還是0。
其中X 是每個特征向量集合成的大矩陣,
因此
2.Logistic Regression
給出 X ,想要預估的
參數(shù) :
輸出 :
其中sigmoid函數(shù)表示為:

在實際編程中會把w和b分開,b對應一個攔截器。
3.logistic regression cost function
所以在給定數(shù)據(jù)集,我們想要讓對每個
的預測值
if 想要損失函數(shù)小,我們需要
大
if 想要損失函數(shù)小,我們需要
小
loss function :基于單個訓練樣本
cost function:基于參數(shù)的總樣本
cost function:
最終目的是使代價函數(shù)盡可能小
4.梯度下降
為了將J減小,我們必須找到合適的w和b。
梯度下降算法中,重復{
}
α被稱作 學習率,決定了迭代步長
對m個樣本梯度下降
算法:
For i = 1 to m
?
?
?
?
?
?
?
//如果多余2個特征值 w值延續(xù)到nx
//在這時
以此類推 其他的d值也都成為了J對該值的偏導數(shù)
該算法中會出現(xiàn)兩次顯性的for循環(huán),這是非常低效的,為了解決這樣的問題,使用向量化的方法。
二、向量化
GPU和CPU都有SIMD指令,即允許單指令多數(shù)據(jù)流,能夠復制多個操作數(shù),并把它們打包在大型寄存器的一組指令集。GPU更擅長SIMD指令操作。
在實際編程中盡可能地避免顯性for循環(huán)。
在python編程中善用np.dot()函數(shù)
e.g.將轉(zhuǎn)變?yōu)?img class="math-inline" src="https://math.jianshu.com/math?formula=u%3D%20%5Cbegin%7Bbmatrix%7D%20e%5E%7Bv_%7B1%7D%7D%20%5C%5C%20%5Cvdots%5C%5C%20e%5E%7Bv_%7Bn%7D%7D%20%5Cend%7Bbmatrix%7D" alt="u= \begin{bmatrix} e^{v_{1}} \\ \vdots\\ e^{v_{n}} \end{bmatrix}" mathimg="1">
u = np.zeros((n,1))
for i in range(n):
u[i] = math.exp(v[i])
import numpy as np
u = np.exp(v)
np.log(v)
np.abs(v)
np.maximum(v,0)
v**2
1/v
對logistic regression算法進行向量化
?定義一個大矩陣
算法:
? = np.dot(w.T,X)+b
//反向更新w
//反向更新b
關(guān)于正向傳播和反向傳播的理解,參考https://www.cnblogs.com/charlotte77/p/5629865.html,該作者用數(shù)字化的演示詳細地闡述了back propagation的重要意義。直觀地將,逐步更新權(quán)值項w和截距項b的過程就是BP的主要過程。
第三節(jié) 淺層神經(jīng)網(wǎng)絡
一、神經(jīng)網(wǎng)絡

雙層神經(jīng)網(wǎng)絡,一般不把輸入層算入標準層,輸入層也被稱作第零層。隱藏層和最后的輸出層是帶有參數(shù)的,隱藏層帶有兩個相關(guān)的參數(shù)W和b。在本圖中,?是一個4×3的矩陣。4來源于四個隱藏層,3來自于三個輸入層。?是一個4×1的矩陣。?是一個1×4的矩陣,因為隱藏層有四個隱藏單元,只有1個對應的輸出,?是一個1×1的矩陣。
二、激活函數(shù)
tanh函數(shù)的平均值接近0,因此有數(shù)據(jù)中心化的效果。在效果上比sigmoid函數(shù)要好。
另外,求導的結(jié)果是
在做二元分類的時候可以使用sigmoid函數(shù),因為需要輸出結(jié)果在0到1之間。
ReLU函數(shù)
帶泄露的ReLU:
如果所有隱藏單元都使用線性激活函數(shù)的話,那么在邏輯上是沒有意義的。
三、梯度下降
對于神經(jīng)網(wǎng)絡的梯度下降

權(quán)重的隨機初始化也非常重要,如果在一開始的時候全都賦值為0的話,很有可能會造成所有隱藏神經(jīng)元都在進行同一個函數(shù)的計算,這樣的話該神經(jīng)網(wǎng)絡會發(fā)生“對稱”。
第四節(jié) 深層神經(jīng)網(wǎng)絡
一、前向傳播
深層神經(jīng)前向傳播的過程大致如此,l從1一直迭代到最深層。在這一步可能需要一個顯性的for循環(huán)。
總結(jié)起來的維度必須是
,
的維度是
二、參數(shù)和超參數(shù)
參數(shù):
超參數(shù):某種程度上決定了最終的W和b
- 學習率 α
- 梯度下降法的循環(huán)數(shù)量
- 隱藏層數(shù)L
- 隱藏單元數(shù):
。
- 激活函數(shù)
······