神經網絡在分類中的應用

我們知道,邏輯迴歸可以用來分類,但僅僅是對於特徵量很少時,當特徵量特別多時,就不適用了,所以引入了神經網絡。

聲明一下,當類別數C>=3時,輸出層有C個結點,否則只用一個結點就可以了;激活函數就是非線性函數比如sigmoid、Relu等。

1.神經網絡

首先了解一下單一神經元內部的構造(圖片來源https://blog.csdn.net/tyhj_sf/article/details/79932893)我們可以看到,一個神經元裏邊做了兩件事,計算theta的轉置*x(此時theta是一個4*1的矩陣,x也是4*1的矩陣,經過計算得到一個數)第二件事是將算出來的值帶入到sigmoid函數(logistics)中計算,然後將計算出來的值傳遞給下一層,理解了這個,再來看多個神經元就好理解了。

 

神經網絡的代價函數

具體推導公式參考https://blog.csdn.net/CarryLvan/article/details/103120782

2.梯度檢測

估計梯度值,對比其和自己代碼算出來的值是否相絲(確保他們只有幾位小數的差距),判斷程序算出來的梯度值正確與否。(進行學習,或訓練網絡時要關掉梯度檢驗;計算量很大,速度慢,檢測確定後要及時關閉)

3.隨機初始 化

不管是梯度下降還是高級優化算法,都需要對theta進行初始化,建議用隨機初始化(不能設置爲0)範圍在接近0的[-epsilon,epsilon]之內。

4.流程化總結

4.1選擇一種網絡架構(神經元之間的連接方式:隱藏層的層數和每一層的結點個數)

輸入層:特徵個數m

輸出層:分類類別數o(轉化成向量)

隱藏層:默認只有一個隱藏層,若隱藏層個數>1,那麼默認每一個隱藏層的神經單元相等(通常情況下,隱藏單元越多越好,但需要相匹配,可以等於輸入神經元個數,也可以是輸入神經元的若干倍)

4.2訓練神經網絡的步驟

1)隨機初始化權重(小到接近於0的值)

2)執行前向傳播算法,得到預測結果

3)計算代價函數J(theta)

4)實現反向傳播算法,求出偏導數項

5)梯度檢測(注意不用時關閉)

6)使用梯度下降、最優算法LBFGS、共軛梯度法等來最小化代價函數J(theta)

 

 

 

 

 

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