神經網路方面的研究很早就已出現,今天「神經網路」已是乙個相當大的、多學科交叉的學科領域。神經網路中最基本的成分是神經元模型。
上圖中每個圓圈都是乙個神經元,每條線表示神經元之間的連線。我們可以看到,上面的神經元被分成了多層,層與層之間的神經元有連線,而層內之間的神經元沒有連線。
為了理解神經網路,我們應該先理解神經網路的組成單元——神經元。神經元也叫做感知器。還記得之前的線性回歸模型中權重的作用嗎?每乙個輸入值與對應權重的乘積之和得到的資料或通過啟用函式來進行判別。下面我們看一下感知器:
可以看到,乙個感知器有如下組成部分:
我們了解過sigmoid函式是這樣,在之前的線性回歸中它對於二類分類問題非常擅長。所以在後續的多分類問題中,我們會用到其它的啟用函式
那麼我們繼續往後看,神經網路是啥?
神經網路其實就是按照一定規則連線起來的多個神經元。
那麼我們以下面的例子來看一看,圖上已經標註了各種輸入、權重資訊。
對於每乙個樣本來說,我們可以得到輸入值x_1,x_2,x_3x1,x2,x3,也就是節點1,2,3的輸入值,那麼對於隱層每乙個神經元來說都對應有乙個偏置項bb,它和權重一起才是乙個完整的線性組合
sigmoid\left(* x_1}* x_2}* x_3}}\right)a4=sigmoid(w41∗x1+w42∗x2+w43∗x3+w4b)
sigmoid\left(* x_1}* x_2}* x_3}}\right)a5=sigmoid(w51∗x1+w52∗x2+w53∗x3+w5b)
sigmoid\left(* x_1}* x_2}* x_3}}\right)a6=sigmoid(w61∗x1+w62∗x2+w63∗x3+w6b)
sigmoid\left(* x_1}* x_2}* x_3}}\right)a7=sigmoid(w71∗x1+w72∗x2+w73∗x3+w7b)
這樣得出隱層的輸出,也就是輸出層的輸入值.
矩陣表示
同樣,對於輸出層來說我們已經得到了隱層的值,可以通過同樣的操作得到輸出層的值。那麼重要的一點是,分類問題的類別個數決定了你的輸出層的神經元個數
我們可以說神經網路是乙個模型,那麼這些權值就是模型的引數,也就是模型要學習的東西。然而,乙個神經網路的連線方式、網路的層數、每層的節點數這些引數,則不是學習出來的,而是人為事先設定的。對於這些人為設定的引數,我們稱之為超引數。
神經網路的訓練類似於之前線性回歸中的訓練優化過程。前面我們已經提到過梯度下降的意義,我們可以分為這麼幾步:
這樣我們可以得出每乙個引數在進行一次計算結果之後,通過特定的數學理論優化誤差後會得出乙個變化率\alphaα
就是說通過誤差最小得到新的權重等資訊,然後更新整個網路引數。通常我們會指定學習的速率\lambdaλ(超引數),通過變化率和學習速率率乘積,得出各個權重以及偏置項在一次訓練之後變化多少,以提供給第二次訓練使用
在使用梯度下降時候,一般需要指定學習速率
tf.train.gradientdescentoptimizer(0.5)
init構造乙個新的梯度下降優化器
__init__(
learning_rate,
use_locking=false,
name='gradientdescent'
)
minimize
minimize(
loss,
global_step=none,
var_list=none,
gate_gradients=gate_op,
aggregation_method=none,
colocate_gradients_with_ops=false,
name=none,
grad_loss=none
)
Python與人工神經網路(8) 改進神經網路
話說,有沒有人想過這些引數是怎麼來的。其實我猜作者寫到這部分的時候也應該很蛋疼,因為他說是試出來的,目前這個領域的研究並沒有特別好的成果,多半靠經驗和試驗,作者就此傳授了一些經驗給我們 學習速率引數 所以學習速率,就是在隨機梯度下降演算法中下降的快慢,我們來看乙個示例圖 假設這個曲面就是成本函式,我...
人工神經網路 多層神經網路
模型原型 sklearn.neural network.mlpclassifier hidden layer sizes 100,activation relu algorithm adam alpha 0.0001,batch size auto learning rate constant le...
人工神經網路之前饋神經網路
1.基本概念 深度前饋神經網路也叫作多層感知機,是深度學習中最常用的模型。它包含輸入層,隱含層和輸出層三個部分。它的目的是為了實現輸入到輸出的對映。它定義了乙個函式 y f x,theta 並且通過學習theta,得到了對映函式f。深度前饋神經網路之所以稱之為深度是因為它包含了很多層 隱含層可能會有...