sklearn第十八講 神經網路模型

2021-08-21 10:25:50 字數 2666 閱讀 7003

多層感知器(multi-layer perceptron, mlp)是乙個有監督學習演算法,它在乙個訓練集上學習乙個函式 f(⋅

):rm

→rof(\cdot): \mathbf^m\rightarrow\mathbf^o

f(⋅):r

m→ro

, m

mm 是輸入維數, o

oo 是輸出維數。給定乙個特徵集 x=x

1,x2

,…,x

mx=x_1, x_2, \dots, x_m

x=x1​,

x2​,

…,xm

​ 和目標變數 y

yy, mlp能學習乙個非線性函式近似器,用於分類或回歸。它與logistic回歸的區別在於,在輸入層和輸出層之間,有乙個或多個非線性層,稱隱藏層。下圖顯示了有乙個隱藏層的mlp, 輸出是常量。

最左邊的層,稱輸入層,組成乙個神經元集

\代表輸入特徵。

隱藏層裡的每乙個神經元將來自上一層的值,用乙個加權線性加和 w1x

1+w2

x2+⋯

+wmx

mw_1x_1+w_2x_2+\dots +w_mx_m

w1​x1​

+w2​

x2​+

⋯+wm

​xm​

變換,然後作用乙個非線性啟用函式 g(⋅

):r→

rg(\cdot): \mathbf\rightarrow\mathbf

g(⋅):r

→r, 比如雙曲正切函式。輸出層接收來自最後的隱藏層的值,把它們轉換為輸出值。

scikit-learn模組包括公開的屬性coefs_ and intercepts_. coefs_是乙個權矩陣列表,矩陣裡的索引 i

ii 代表第 i

ii 層與 i+1

i+1i+

1 層之間的權。intercepts_是乙個偏差向量列表,索引 i

ii 的向量代表增加到第 i+1

i+1i+

1 層的偏差值。

多層感知器的優勢是:

多層感知器的不足包括:

mlpclassifier執行乙個多層感知器演算法,該演算法使用向後傳播訓練。mlp訓練兩個陣列:(n_samples, n_features)陣列x, 裝載表示浮點特徵向量的樣本。(n_samples,)陣列y, 裝載訓練樣本的目標變數,即類標籤。

from sklearn.neural_network import mlpclassifier

x = [[0., 0.], [1., 1.]]

y = [0, 1]

clf = mlpclassifier(solver='lbfgs', alpha=1e-5,

hidden_layer_sizes=(5, 2), random_state=1)

clf.fit(x, y)

在擬合後,模型就能**新樣本的標籤了。

clf.predict([[2., 2.], [-1., -2.]])
mlp能在訓練資料上擬合乙個非線性模型,clf.coefs_屬性包括由模型引數組成的權矩陣。

[coef.shape for coef in clf.coefs_]
當前,mlpclassifier僅支援交叉熵損失函式,通過執行predict_proba方法,可以估計概率。

mlp使用向後傳播法訓練,更確切地說,它使用經向後傳播計算的梯度下降訓練模型。對於分類問題,它最小化交叉熵損失,給出每個樣本的概率估計向量 p(y

∣x)\mathcal(y | x)

p(y∣x)

.

print(clf.predict_proba([[2., 2.], [1., 2.]]))
通過應用softmax作為輸出函式,mlpclassifier支援多類別分類。進一步,模型支援多標籤分類,即,乙個樣本能夠屬於多個類。對於每乙個類,原始輸出經歷logistic函式。大於等於0.5的值,記為1;否則,記為0. 對於乙個樣本的**輸出,值是1的索引代表分派給那個樣本的類。

mlpregressor執行乙個多層感知器,使用向後傳播法訓練,在輸出層無啟用函式。它使用平方誤差作為損失函式,輸出是乙個連續值集。mlpregressor也支援多輸出回歸,即,乙個樣本可以有多個目標值。

mlpregressor and mlpclassifier使用引數 α

\alpha

α 作為正則項(l2正則),通過懲罰數量級大的權,避免過度擬合。下圖顯示了 α

\alpha

α 取不同值的決策函式。

第十八講 中介者模式

mediator模式也叫中介者模式,是由gof提出的23種軟體設計模式中的一種。mediator模式是行為模式之一,在mediator模式中,類之間的互動行為被統一放在mediator的物件中,物件通過mediator物件同其他物件互動,mediator物件起著控制器的作用。mediator 中介者...

sklearn神經網路引數

下面寫了乙個超級簡單的例項,訓練和測試資料是mnist手寫識別資料集 from sklearn.neural network import mlpclassifier import gzip import pickle with gzip.open mnist.pkl.gz as f gz trai...

第十講 迴圈神經網路 課時23

image captioning 是由cnn和rnn連線起來的網路 cnn處理圖形後不再產生乙個向量,而是對的每個位置各產生乙個向量,即輸入到rnn的是乙個向量組 hard attention 不可微分,需要高階bp演算法 增強學習中會介紹 將rnn單元縮寫 whh,whx兩個矩陣橫著擺放 ht 1...