神經網絡是由神經層(layer)搭建起來的。由輸入層,隱藏層、輸出層組成。輸入層就是特徵的輸入;隱藏層有多層,包含神經網絡自生成的新特徵(輸入特徵的屢次項組合);輸出層爲預測結果。簡單的神經網絡以下圖所示:html
其中$a_{i}^{j}$表示第j層第i個節點,每一條帶箭頭的線,都有不一樣的權重參數,至關於以前講過的模型參數θ,表示符號爲$\Theta_{ik}^{j}$,含義爲:第j層第k個節點指向(j+1)層第i個節點的權重。在計算第(j+1)層節點時,每每加入$a_{0}^{j}$,做爲偏置,其值爲1。基於神經網絡能夠寫出各節點、輸出與輸入的關係式:網絡
$a_{i}^{j}=function(\sum_{k=0}^{n} \Theta _{ik}^{j-1}a_{k}^{j-1}) $機器學習
其中function能夠是邏輯迴歸中的邏輯函數,也能夠像線性迴歸直接將求和結果做爲輸出。下面給出節點的列向量形式和權重的二維矩陣形式:函數
根據這兩個列向量,咱們能夠將關係式以矩陣形式給出:學習
$a^{j}=\Theta^{j-1}a^{j-1}$spa
對於上面圖中例子,能夠用矩陣表示輸入與輸出的關係,爲了跟圖中統一,輸入層視做第一層,輸出層爲第3層:htm
$a^{2}=\Theta^{1}x$blog
$a^{3}=\Theta^{2}a^{2}$get
$h_{\Theta}(x)=a^{3}$io
神經網絡之因此能很好地解決非線性迴歸,在於它能夠創造並選擇最好的多項式。對於網絡第一層(輸入層),每一個節點都是一次項,第二層是二次項,第n層是n次項。也就是說正常狀況下神經網絡層數越多,功能也就越強大。神經網絡自動調節權值,來強化某個多項式的做用,或弱化某個多項式的影響。來看一個神經網絡實現邏輯迴歸的例子:
對於與運算,當輸入全爲1是,結果爲10,根據邏輯函數,其機率應該接近於1;當輸入不全爲1時,結果小於-10,其機率接近於0。或非、或運算也是這個道理。在實際應用中,咱們只要給出一堆訓練數據,神經網絡就能夠學會這些權值,而不用人工調節。再來看同或運算,輸出與輸出層不變,隱藏層能夠看作神經網絡本身添加了一個新節點(其實是強化),這樣經過兩個隱藏節點就能夠實現比與或非複雜的運算,而這一切都是神經網絡本身學習所得。
在《機器學習筆記(二)》中曾討論過多元邏輯迴歸,當時的思想是維護多個假設函數,而後最終比較各個函數算出來的機率大小。在神經網絡中,咱們從新定義解決多分類的方法。
如上圖,表示了四分類的網絡結構,輸出層共四個節點,分別表明各分類的結果(0/1),實際上這張網絡也是維護了4個假設函數。不一樣於以前的定義,這裏將結果用列向量來表示。網絡的目標是使輸出層儘量符合所給的列向量$y^{i}$。