神經網路在機器學習中有很大的應用,甚至涉及到方方面面。本文主要是簡單介紹一下神經網路的基本理論概念和推算。同時也會介紹一下神經網路在資料分類方面的應用。
首先,當我們建立乙個回歸和分類模型的時候,無論是用最小二乘法(ols)還是最大似然值(mle)都用來使得殘差達到最小。因此我們在建立模型的時候,都會有乙個loss function。
而在神經網路裡也不例外,也有個類似的loss function。
對回歸而言:
對分類而言:
然後同樣方法,對於w開始求導,求導為零就可以求出極值來。
關於式子中的w。我們在這裡以三層的神經網路為例。先介紹一下神經網路的相關引數。
第一層是輸入層,第二層是隱藏層,第三層是輸出層。
在x1,x2經過w1的加權後,達到隱藏層,然後經過w2的加權,到達輸出層
其中,我們有:
至此,我們建立了乙個初級的三層神經網路。
當我們要求其的loss function最小時,我們需要逆向來求,也就是所謂的backpropagation。
我們要分別對w1和w2進行求導,然後求出其極值。
從右手邊開始逆推,首先對w2進行求導。
代入損失函式公式:
然後,我們進行化簡:
化簡到這裡,我們同理再對w1進行求導。
我們可以發現當我們在做bp網路時候,有乙個逆推回去的誤差項,其決定了loss function 的最終大小。
在實際的運算當中,我們會用到梯度求解,來求出極值點。
總結一下來說,我們使用向前推進來理順神經網路做到回歸分類等模型。而向後推進來計算他的損失函式,使得引數w有乙個最優解。
當然,和線性回歸等模型相類似的是,我們也可以加上正則化的項來對w引數進行約束,以免使得模型的偏差太小,而導致在測試集的表現不佳。
python 的實現:
使用了keras的庫
解決線性回歸:
複製**
model.add(dense(1, input_dim=n_features, activation='linear', use_bias=true))
# use mean squared error for the loss www.thd540.com metric and use the adam backprop algorithm
model.compile(loss='mean_squared_error', optimizer='adam')
# train the network (learn the weights)
# we need to convert from dataframe to numpyarray
history = model.fit(x_train.values, y_train.values, epochs=100,
batch_size=1, verbose=2, validation_split=0)
複製**
解決多重分類問題:
複製**
複製**
當我們選取最優引數時候,有很多種解決的途徑。這裡就介紹一種是gridsearchcv的方法,這是一種暴力檢索的方法,遍歷所有的設定引數來求得最優引數。
複製**
from sklearn.model_selection import gridsearchcv
def create_model(optimizer='rmsprop'):
model = sequential()
model.add(dense(64, activation='relu', input_dim=n_features))
model.add(dropout(0.5))
model.add(dense(64, activation='relu'))
model.add(dropout(0.5))
model.add(dense(7, activation='softmax'))
model.compile(loss='categorical_www.micheng178.com crossentropy', optimizer=optimizer, metrics=['accuracy'])
return model
model = kerasclassifier(build_fn=create_model, verbose=0)
optimizers = ['rmsprop']
epochs = [5, 10, 15]
batches = [128]
param_grid = dict(optimizer=optimizers, epochs=epochs, batch_size=batches, verbose=['2'])
grid = gridsearchcv(estimator=model, param_grid=param_grid)
grid.fit(x_train.values, y_train.values)
機器學習之神經網路
機器學習是一門致力於研究如何通過計算的手段,利用經驗來改善系統自身的效能。經驗通常以資料的形式存在,因此機器學習所研究的主要內容是關於在計算機上從資料中產生 模型 的演算法,即 學習演算法 有了學習演算法,將經驗資料提供給它,它就能基於這些資料產生模型 當面對新情況時,模型會給我們提供相應的判斷。一...
機器學習之神經網路NN
神經網路 neural network 以人腦中的神經網路為啟發而產生的,最著名對的演算法是backpropagation bp 演算法。可用來解決分類問題,也可用來解決回歸問題 詳情見前言 多層向前神經網路中使用了bp演算法 多層向前神經網路的組成,每一層由單元組成 圖中小圈圈 輸入層 由訓練集的...
python機器學習之神經網路 三
來自 前面兩篇文章都是參考書本神經網路的原理,一步步寫的 這篇博文裡主要學習了如何使用neurolab庫中的函式來實現神經網路的演算法。首先介紹一下neurolab庫的配置 neurolab需要採用python安裝第三方軟體包的方式進行安裝,這裡介紹一種安裝方式 1 進入cmd視窗 2 進入解壓檔案...