做者:櫻花豬算法
摘要:編程
本文爲七月算法(julyedu.com)12月機器學習第十次次課在線筆記。人工神經網絡在支持圖像處理、文本、語言以及序列多種類型的數據處理時都用用到。本次課程更加側重於實踐,把抽象的人工神經網絡用程序展示出來,課上講述了編程使用的工具和方法,對於往後實驗有很是重要的幫助。網絡
引言:框架
人工神經網絡(Artificial Neural Network,即ANN ),是20世紀80 年代以來人工智能領域興起的研究熱點。它從信息處理角度對人腦神經元網絡進行抽象,創建某種簡單模型,按不一樣的鏈接方式組成不一樣的網絡。在工程與學術界也常直接簡稱爲神經網絡或類神經網絡。本次課程討論了神經網絡的基本框架、很是熱門的BP算法以及實際編程的要點。機器學習
預備知識:函數
機率論;梯度降低法工具
人工神經網絡學習
前向全鏈接網路優化
人工神經網絡求法編碼
1、人工神經網絡
人工神經網絡基礎形態是前向全鏈接網絡,同時擁有多種變形,這些變形構成了深度學習的主要內容。
卷積網路(CNN):屬於部分鏈接網絡,是深度學習結構核心之一
遞歸網絡(RNN):是一種更爲複雜的網絡結構,可以很好的應對序列數據。
自編碼器(Auto Encoder),一種數據特徵學習,相似於PCA的做用
2、前向全鏈接網路(Full connected Forward Network)
一、基礎神經單元
神經元是構成神經網絡的基本單元,一個神經元的組成包括:
輸入:n 維向量x;
線性加權:
激活函數:,求非線性,容易求導;
輸出標量:
二、經常使用激活函數:
a、sigmoid函數。輸出值域不對稱,兩頭過於平坦。
b、tanh函數。兩頭過於平坦
C、Rectified linear unit
收斂速度比sigmoid和tanh快,計算簡單高效。是目前最普遍使用的激活函數,特別應用在CNN。
三、叢神經元到網絡
輸入錯,輸入向量;
中間層(隱含層)
輸出層,輸出向量,用於預測、分類以及迴歸。
3、人工神經網絡求法
一、損失函數(Loss Function)
配合模型訓練,有Loss/Error Fuction:
Softmax / Cross-entropy loss:
SVM / hinge loss:
Least squares (L2 loss):
二、輸入數據的預處理:
若是輸入數據各個維度數據是相關的,將致使各個權重相互影響,不利於優化算法尋找局部最優解。
若是各個維度的規模不一致,將致使對應的Error Surface容易出現狹窄區域,不利於優化算法尋找局部最優。
一般對向量數據必需要用PCA和白化處理,而對於通常的數據只須要作到均值化和歸一化。
三、訓練算法(BP算法)
神經網絡的訓練目標是找到W和B使得損失函數最小。優化算法須要計算dW和dB。BP算法就是計算W和B導數的算法。
BP算法的核心是鏈式規則。
算法步驟:
a. forward計算一次
b. 逐層計算backwoard獲得各個層的dW和dB。
c. 應用隨機梯度降低法SGD,更新W,B
四、數值校驗
實現BP算法的過程當中比較容易出錯,所以有必要進行檢查。
五、算法優化
多層網絡的Error Surface很是複雜,存在不少局部最優,咱們要尋找儘量大的範圍內的局部最優。
動量法不隨更新W合適更新「更新W」的速度。
當位於距離較長的「坡」的時候動量法能夠加快滑動速度;當位於平緩的區域時,動量法也可以保持必定的速度。