亚洲日本欧美日韩高观看,性高湖久久久久久久久,亚洲av成人噜噜无码网站,亚洲欧美日韩国产一区二区动图,亚洲欧美日韩国产精品一区二区


學AI,好工作 就找北大青鳥
關注小青 聽課做題,輕松學習
周一至周日
4000-9696-28

神經(jīng)網(wǎng)絡訓練中的調(diào)參“四重奏”

來源:北大青鳥總部 2023年02月22日 10:55

摘要: 數(shù)據(jù)科學家經(jīng)常把調(diào)整隱藏層節(jié)點數(shù)、增加隱藏層數(shù)量、調(diào)整激活函數(shù)、調(diào)整模型復雜度控制這四類調(diào)參方法正確有序地組合使用,使它們相互作用、交叉融合,讓神經(jīng)網(wǎng)絡模型產(chǎn)生了奇妙的效果。

數(shù)據(jù)科學家是人工智能、算法模型、大數(shù)據(jù)挖掘的專家,也是目前人工智能領域受人羨慕、集萬般寵愛于一身的職業(yè),聽起來怎么樣?高端、大氣、上檔次。作為高大上的數(shù)據(jù)科學家當然要附庸風雅一些(數(shù)據(jù)科學家:你在諷刺我嗎?J),他們在機器學習、模型訓練的枯燥工作閑暇之余,也要聽聽優(yōu)美、高雅的音樂放松下心情。在公認的高雅音樂中,有一種四重奏樂曲,它由4種樂器協(xié)奏,樂器之間有一定類似的特質(zhì)和旋律,在四位演奏家的高超技藝、默契良好地協(xié)調(diào)合作下,演奏出來的樂曲優(yōu)美動聽、音色純粹美麗,是廣大音樂愛好者和藝術家們最喜愛的一種樂曲形式。



在人工智能領域的深度學習過程中,尤其在數(shù)據(jù)科學家訓練神經(jīng)網(wǎng)絡時,經(jīng)常會對神經(jīng)網(wǎng)絡模型進行調(diào)參優(yōu)化,以獲得最佳的模型效果。其中有四類最基本的調(diào)參方法,它們分別是:調(diào)整隱藏層節(jié)點數(shù)、增加隱藏層數(shù)量、調(diào)整激活函數(shù)、調(diào)整模型復雜度控制。數(shù)據(jù)科學家經(jīng)常把這四類調(diào)參方法正確有序地組合起來使用,使它們相互作用、交叉融合,讓神經(jīng)網(wǎng)絡模型產(chǎn)生了奇妙的效果,此時數(shù)據(jù)科學家變身成為模型訓練的“藝術演奏家”,譜寫并奏響了神經(jīng)網(wǎng)絡訓練中的調(diào)參“四重奏”。



調(diào)參“四重奏”之“舞臺”與“樂器”

首先,我們來準備數(shù)據(jù)集和建立訓練模型,搭建“四重奏”的“舞臺”。本文通過python語言調(diào)用scikit-learn庫中的紅酒數(shù)據(jù)集,并使用MLP神經(jīng)網(wǎng)絡來進行分類模擬訓練。scikit-learn庫中的紅酒數(shù)據(jù)集共有178個數(shù)據(jù)樣本,它們被歸入三個類別中,分別是class_0,class_1,和class_2,其中class_0中包含59個樣本,class_1中包含71個樣本,class_2中包含48個樣本。我們開始準備數(shù)據(jù)集,搭建“四重奏舞臺”,輸入代碼如下:


#導入MLP神經(jīng)網(wǎng)絡

from sklearn.neural_network import MLPClassifier

#從sklearn的datasets模塊載入紅酒數(shù)據(jù)集

from sklearn.datasets import load_wine

wine_data = load_wine()

#導入數(shù)據(jù)集拆分工具

from sklearn.model_selection import train_test_split

X= wine_data['data']

y= wine_data['target']

#將數(shù)據(jù)集拆分為訓練數(shù)據(jù)集和驗證數(shù)據(jù)集

X_train, X_test, y_train, y_test = train_test_split(X,y,random_state=42)

#定義MLP分類器

mlp = MLPClassifier(solver='lbfgs')

mlp.fit(X_train, y_train)


運行結(jié)果如下:


MLPClassifier(activation='relu', alpha=0.0001, batch_size='auto', beta_1=0.9,beta_2=0.999, early_stopping=False, epsilon=1e-08,

hidden_layer_sizes=(100,), learning_rate='constant',

learning_rate_init=0.001, max_iter=200, momentum=0.9,

n_iter_no_change=10, nesterovs_momentum=True, power_t=0.5,

random_state=None, shuffle=True, solver='lbfgs', tol=0.0001,

validation_fraction=0.1, verbose=False, warm_start=False)


其次,我們再通俗理解下神經(jīng)網(wǎng)絡的這四類基礎調(diào)參的內(nèi)容,對于四重奏的重要角色——樂器我們可以比喻為這幾個基礎參數(shù):

小提琴、中提琴——隱藏層節(jié)點數(shù)、隱藏層數(shù)量(hidden_layer_sizes)。小提琴、中提琴的音色優(yōu)美柔和,在協(xié)奏中兩者配合起來非常協(xié)和,在神經(jīng)網(wǎng)絡調(diào)參中,隱藏層節(jié)點數(shù)與層數(shù)也是緊密配合使用,能充分調(diào)節(jié)神經(jīng)網(wǎng)絡的效果。在上面的運行結(jié)果中,就是指hidden_layer_sizes參數(shù)。該參數(shù)值默認情況下為[100,],表示模型中只有一個隱藏層,而隱藏層中的節(jié)點數(shù)是100。如果hidden_layer_sizes定義為[10,10],那就表示模型中有兩個隱藏層,每層有10個節(jié)點。

鋼琴——激活函數(shù)(activation)。鋼琴被人們稱作樂器之王,音色洪亮動聽,在協(xié)奏中能發(fā)揮主要的影響力,在神經(jīng)網(wǎng)絡調(diào)參中,激活函數(shù)的使用也能起到主要的影響作用。在上面的運行結(jié)果中,激活函數(shù)就是activation參數(shù),它是將隱藏單元進行非線性化的方法,一共有四種值:“identity”、“l(fā)ogistic”、“tanh”以及“relu”,而在默認情況下,參數(shù)值是“relu”。

大提琴——模型復雜度控制(alpha)。大提琴音色低沉穩(wěn)重,在協(xié)奏中有著深沉的控制力,訓練神經(jīng)網(wǎng)絡的調(diào)參中,對模型的復雜度控制也有類似的效果。在上面的運行結(jié)果中,模型復雜度控制就是alpha參數(shù)。它是一個用來控制正則化的程度,默認的數(shù)值是0.0001。



奏響神經(jīng)網(wǎng)絡的調(diào)參“四重奏”

下面使用上面搭建好的舞臺(數(shù)據(jù)集和模型),看看調(diào)參四重奏的表演效果。


1、缺省參數(shù)下的模型測試


print('缺省參數(shù)下MLP模型的測試數(shù)據(jù)集得分:{:.2f}'.format(mlp.score(X_test, y_test)))


輸出結(jié)果為:


缺省參數(shù)下MLP模型的測試數(shù)據(jù)集得分:0.96


這個數(shù)據(jù)集和訓練出來的MLP模型,表現(xiàn)還不錯。


2、小提琴獨奏——隱藏層節(jié)點數(shù)為200的MLP模型

我們嘗試一下修改隱藏層參數(shù)hidden_layer_sizes的節(jié)點數(shù),看看它自己的獨奏效果(當然其他參數(shù)并不是不起作用,而是在幕后充當了背景音樂):


#修改隱藏層參數(shù)hidden_layer_sizes的節(jié)點數(shù)為200

mlp_200=MLPClassifier(solver='lbfgs', hidden_layer_sizes=[200])

mlp_200.fit(X_train, y_train)

print('節(jié)點數(shù)為200的MLP模型測試數(shù)據(jù)集得分:{:.2f}'.format(mlp_200.score(X_test, y_test)))


輸出結(jié)果為:


節(jié)點數(shù)為200的MLP模型測試數(shù)據(jù)集得分:0.71


好像效果一般,我們再接著調(diào)整其他參數(shù),開始二重奏。


3、小提琴與中提琴協(xié)奏——隱藏層節(jié)點數(shù)為200、層數(shù)為2的MLP模型


#修改隱藏層參數(shù)hidden_layer_sizes的層數(shù)為2、節(jié)點數(shù)為200

mlp_2L=MLPClassifier(solver='lbfgs', hidden_layer_sizes=[200,200])

mlp_2L.fit(X_train, y_train)

print('隱藏層數(shù)為2、節(jié)點數(shù)為200的MLP模型測試數(shù)據(jù)集得分:{:.2f}'.format(mlp_2L.score(X_test, y_test)))


輸出結(jié)果為:


隱藏層數(shù)為2、節(jié)點數(shù)為200的MLP模型測試數(shù)據(jù)集得分:0.93


模型效果得到明顯的改善,繼續(xù)增加參數(shù)看看三重奏的效果。


4、小提琴、中提琴、鋼琴三重奏——隱藏層節(jié)點數(shù)為200、層數(shù)為2、激活函數(shù)值為tanh的MLP模型


#增加修改激活函數(shù)的值為tanh

mlp_tanh=MLPClassifier(solver='lbfgs', hidden_layer_sizes=[200,200],

activation='tanh')

mlp_tanh.fit(X_train, y_train)

print('隱藏層數(shù)為2、節(jié)點數(shù)為200、激活函數(shù)為tanh的MLP模型測試數(shù)據(jù)集得分:{:.2f}'.format(mlp_tanh.score(X_test, y_test)))


輸出結(jié)果為:


隱藏層數(shù)為2、節(jié)點數(shù)為200、激活函數(shù)為tanh的MLP模型測試數(shù)據(jù)集得分:0.84


好像有點不和諧了,模型效果反而降低了,也許是這個數(shù)據(jù)集不能這樣來調(diào)參吧,繼續(xù)增加參數(shù),嘗試一下四重奏的效果。


5、四重奏——隱藏層節(jié)點數(shù)為200、層數(shù)為2、激活函數(shù)值為tanh、模型復雜度控制alpha=1的MLP模型


mlp_4cz=MLPClassifier(solver='lbfgs', hidden_layer_sizes=[200,200],

activation='tanh',alpha=1)

mlp_4cz.fit(X_train, y_train)

print('隱藏層數(shù)為2、節(jié)點數(shù)為200、激活函數(shù)為tanh、模型復雜度控制為1的MLP模型測試數(shù)據(jù)集得分:{:.2f}'.format(mlp_4cz.score(X_test, y_test)))


輸出結(jié)果為:


隱藏層數(shù)為2、節(jié)點數(shù)為200、激活函數(shù)為tanh、模型復雜度控制為1的MLP模型測試數(shù)據(jù)集得分:0.82


好像效果也沒有提高,四重奏沒有發(fā)揮更大的效果。難道折騰了好一會的四重奏演奏會就這樣結(jié)束了,好像有點不甘心。


6、正確認識調(diào)參

其實,在神經(jīng)網(wǎng)絡訓練過程中(其他模型訓練也一樣),參數(shù)調(diào)整是通過不斷嘗試和磨合的,現(xiàn)實情況中,不能是只要覺得調(diào)整了參數(shù)就會一定有好的效果,就像作曲家譜寫的四重奏樂章,如果一定要把不合適的樂器、旋律、節(jié)奏搭配在一起,那么再優(yōu)秀的演奏家,做多大的努力進行協(xié)同演奏,也奏不出優(yōu)美動聽的音樂來。

注:本文為了幫助讀者朋友方便理解四個基本調(diào)參方法做的粗淺比喻,并不是指其他參數(shù)就不起作用了,其他參數(shù)都做了背景音樂,在幕后當著幕后英雄呢。而且在調(diào)參過程中,也可以多增加幾個參數(shù)一起調(diào)節(jié),可以奏響調(diào)參的五重奏、六重奏,甚至是交響樂團演奏,J。



調(diào)參四重奏之結(jié)語

根據(jù)上述對MLP神經(jīng)網(wǎng)絡簡單的訓練過程,我們可以小結(jié)如下:

l 本文對神經(jīng)網(wǎng)絡模型中的四種參數(shù)調(diào)節(jié)方法是常用的優(yōu)化手段,這四種調(diào)參需要不斷試驗組合,達到模型最佳。其中隱藏層的數(shù)量和隱藏層中節(jié)點的數(shù)量使用最多,但是神經(jīng)網(wǎng)絡的隱藏節(jié)點個數(shù)選取問題至今仍是一個 世界難題,根據(jù)經(jīng)驗,建議神經(jīng)網(wǎng)絡中隱藏層的節(jié)點數(shù)與訓練數(shù)據(jù)集的特征數(shù)量大致相等,但是一般不要超過500。

l 神經(jīng)網(wǎng)絡訓練中的調(diào)參還有很多方式,比如loss函數(shù)的選擇、Regularization、dropout、調(diào)節(jié)mini-batch size等等。限于篇幅,這里不再贅述,有興趣的讀者可以在網(wǎng)絡上查找資料進行操作演練。

l 本項目使用的MLP神經(jīng)網(wǎng)絡是一種多層感知器,在實際項目中應用不是太多,讀者朋友可以再使用卷積神經(jīng)網(wǎng)絡、遞歸神經(jīng)網(wǎng)絡等算法模型嘗試一下調(diào)參效果。



報名優(yōu)惠
免費試聽
課程資料
官方微信
返回頂部
培訓課程 熱門話題 站內(nèi)鏈接