機(jī)器學(xué)習(xí)原理與應(yīng)用課件 第11章 人工神經(jīng)網(wǎng)絡(luò)_第1頁
機(jī)器學(xué)習(xí)原理與應(yīng)用課件 第11章 人工神經(jīng)網(wǎng)絡(luò)_第2頁
機(jī)器學(xué)習(xí)原理與應(yīng)用課件 第11章 人工神經(jīng)網(wǎng)絡(luò)_第3頁
機(jī)器學(xué)習(xí)原理與應(yīng)用課件 第11章 人工神經(jīng)網(wǎng)絡(luò)_第4頁
機(jī)器學(xué)習(xí)原理與應(yīng)用課件 第11章 人工神經(jīng)網(wǎng)絡(luò)_第5頁
已閱讀5頁,還剩50頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第11章

人工神經(jīng)網(wǎng)絡(luò)1學(xué)習(xí)目標(biāo)理解神經(jīng)網(wǎng)絡(luò)基本原理。掌握神經(jīng)網(wǎng)絡(luò)數(shù)學(xué)模型與求解方法。掌握Scikit-learn庫神經(jīng)網(wǎng)絡(luò)類庫的使用方法。1223目錄頁311.1基本原理11.2應(yīng)用實(shí)例人工神經(jīng)網(wǎng)絡(luò)神經(jīng)網(wǎng)絡(luò)最早是人工智能領(lǐng)域的一種算法或者說是模型,目前神經(jīng)網(wǎng)絡(luò)已經(jīng)發(fā)展成為一類多學(xué)科交叉的學(xué)科領(lǐng)域,特別是隨著深度學(xué)習(xí)取得的進(jìn)展重新受到重視和推崇。為什么說是“重新”呢?其實(shí),神經(jīng)網(wǎng)絡(luò)最為一種算法模型很早就已經(jīng)開始研究了,但是在取得一些進(jìn)展后,神經(jīng)網(wǎng)絡(luò)的研究陷入了一段很長時(shí)間的低潮期,后來隨著Hinton在深度學(xué)習(xí)上取得的進(jìn)展,神經(jīng)網(wǎng)絡(luò)又再次受到人們的重視。411.1基本原理神經(jīng)元模型神經(jīng)元是神經(jīng)網(wǎng)絡(luò)的基本結(jié)構(gòu)單元,設(shè)計(jì)靈感完全來源于生物學(xué)上神經(jīng)元的信息傳播機(jī)制。神經(jīng)元有兩種狀態(tài):興奮和抑制。一般情況下,一個(gè)神經(jīng)元處于“抑制”狀態(tài),當(dāng)受到刺激并導(dǎo)致其電位超過一定閾值時(shí)就會(huì)被激活(轉(zhuǎn)為“興奮”狀態(tài)),進(jìn)而向其他的神經(jīng)元傳播化學(xué)物質(zhì)(其實(shí)就是信息)。511.1基本原理神經(jīng)元主要由細(xì)胞體、樹突和軸突三部分組成。其中,細(xì)胞體是神經(jīng)元活動(dòng)的能量供應(yīng)地,在這里進(jìn)行新陳代謝等各種生化過程。樹突是細(xì)胞體的伸延部分產(chǎn)生的分枝,是接受從其它神經(jīng)元傳入的信息的入口。軸突是細(xì)胞體突起的最長的外伸管狀纖維(軸突最長可達(dá)1米以上),是把神經(jīng)元興奮的信息傳出到其它神經(jīng)元的出口。611.1基本原理在結(jié)構(gòu)上,神經(jīng)元由求和與激活兩部分功能構(gòu)成,其中求和功能用于根據(jù)相關(guān)權(quán)重融合不同來源的信息或不同類型的特征,而激活功能則用于對求和結(jié)果進(jìn)行非線性映射以確定輸入與輸出之間復(fù)雜的關(guān)系。711.1.1基本概念思考:如何表示此“神經(jīng)元”的輸入與輸出映射關(guān)系?根據(jù)神經(jīng)元的結(jié)構(gòu),一個(gè)神經(jīng)元的輸出可作為另一個(gè)神經(jīng)元的輸入以連接成復(fù)雜的神經(jīng)網(wǎng)絡(luò);神經(jīng)網(wǎng)絡(luò)一般由輸入層、隱層與輸出層三部分構(gòu)成,每層根據(jù)問題需求可設(shè)置不同數(shù)量的神經(jīng)元,同層神經(jīng)元互不相連、層與層之間的神經(jīng)元相互連接(全部或部分連接)。811.1.1基本概念9如右圖所示,左表示輸入層,中表示隱層,右表示輸出層。輸入層、隱層與輸出層分別包含2、3與2個(gè)神經(jīng)元,輸入層可接受包含兩個(gè)特征的樣本,而輸出層對應(yīng)兩個(gè)類別。11.1.1基本概念神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)

11.1.2數(shù)學(xué)模型10如何確定輸入X與輸出Y之間映射關(guān)系?Y=f(X)

11.1.2數(shù)學(xué)模型

11

11.1.2數(shù)學(xué)模型

12

11.1.2數(shù)學(xué)模型

13

11.1.2數(shù)學(xué)模型

14BP(BackPropagation,誤差逆?zhèn)鞑ィ┥窠?jīng)網(wǎng)絡(luò)是1986年由魯梅爾哈特(Rumelhart)和麥克萊蘭(McCelland)為首的科研小組提出,是一種按誤差逆?zhèn)鞑ニ惴ㄓ?xùn)練的多層前饋網(wǎng)絡(luò)。BP網(wǎng)絡(luò)能學(xué)習(xí)和存儲(chǔ)大量的輸入-輸出模式映射關(guān)系,而無須事前揭示描述這種映射關(guān)系的數(shù)學(xué)方程。它的學(xué)習(xí)規(guī)則是使用最速下降法,通過反向傳播來不斷調(diào)整網(wǎng)絡(luò)的權(quán)值和閾值,使網(wǎng)絡(luò)的誤差平方和最小。BP神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)過程由信號的正向傳播與誤差逆向反饋兩個(gè)過程組成。15

11.1.2數(shù)學(xué)模型

16

11.1.2數(shù)學(xué)模型

17

11.1.2數(shù)學(xué)模型

18

11.1.2數(shù)學(xué)模型Scikit-learn導(dǎo)入多層感知機(jī)是至少含有一個(gè)隱藏層的神經(jīng)網(wǎng)絡(luò),Scikit-learn庫的導(dǎo)入方式如下:fromsklearn.neural_networkimportMLPClassifier(分類)fromsklearn.neural_networkimportMLPRegressor(回歸)1911.2應(yīng)用實(shí)例

函數(shù)原型主函數(shù)(回歸與分類)為:mlp=MLPRegressor()/MLPClassifier(activation=‘relu’,hidden_layer_sizes=(50,50))2011.2應(yīng)用實(shí)例21

常用參數(shù)名稱說明hidden_layer_sizes隱層神經(jīng)元與層次,如hidden_layer_sizes=(4,6)表示兩個(gè)隱層(第1個(gè)隱層包含4個(gè)神經(jīng)元,第2個(gè)隱層包含6個(gè)神經(jīng)元)activation激活函數(shù)(默認(rèn)值為'relu'),可選項(xiàng)為{'identity','logistic','tanh','relu'}。①identity:返回f(x)=x;無操作激活,對實(shí)現(xiàn)線性瓶頸很有用;②logistic:logisticsigmoid函數(shù),返回f(x)=1/(1+exp(-x));③tanh:雙曲tan函數(shù),返回f(x)=tanh(x)=(exp(-x)-exp(-x))/(exp(-x)+exp(-x));④relu:整流后的線性單位函數(shù),返回f(x)=max(0,x)solver優(yōu)化算法(默認(rèn)'adam'),可選項(xiàng)為{'lbfgs','sgd','adam'}。①lbfgs:quasi-Newton方法(針對小數(shù)據(jù)集,可以更快地收斂并且表現(xiàn)更好);②sgd:隨機(jī)梯度下降方法;

③adam:自適應(yīng)時(shí)刻估計(jì)方法(針對包含數(shù)千個(gè)訓(xùn)練樣本及以上的大數(shù)據(jù)集較好)alphaL2懲罰(正則化項(xiàng))參數(shù),默認(rèn)為0.000111.2應(yīng)用實(shí)例22

常用方法名稱說明fit(X,y)利用訓(xùn)練樣本(X與y分別為訓(xùn)練樣本相應(yīng)的特征與分類標(biāo)記)訓(xùn)練決策樹模型predict(X)預(yù)測測試樣本特征對應(yīng)的分類標(biāo)記predict_proba(X)預(yù)測測試樣本特征所屬類別的概率score(X,y)利用指定測試樣本(X與y分別為訓(xùn)練樣本相應(yīng)的特征與分類標(biāo)記)評估模型的平均準(zhǔn)確度11.2應(yīng)用實(shí)例23

常用屬性名稱說明classes_每個(gè)輸出的類標(biāo)簽loss_損失函數(shù)計(jì)算出來的當(dāng)前損失值n_outputs_輸出的個(gè)數(shù)11.2應(yīng)用實(shí)例11.2.1學(xué)生表現(xiàn)預(yù)測學(xué)生學(xué)習(xí)成績或表現(xiàn)通常受學(xué)習(xí)習(xí)慣、家庭環(huán)境、興趣愛好等因素的影響,根據(jù)相關(guān)因素對學(xué)生學(xué)習(xí)成績或表現(xiàn)進(jìn)行預(yù)測有助于教師或家長及時(shí)對學(xué)生進(jìn)行針對性的引導(dǎo)與培養(yǎng)。(1)問題描述已知影響學(xué)生成績(Y:Score)的相關(guān)因素包括考前準(zhǔn)備(F1:TestPrep)、父母婚姻狀況(F2:ParentMaritalStatus)、日常運(yùn)動(dòng)情況(F3:PracticeSport)與是否為頭胎孩子(F4:IsFirstChild)。利用所給數(shù)據(jù)構(gòu)建學(xué)生表現(xiàn)預(yù)測模型以對學(xué)生表現(xiàn)進(jìn)行預(yù)測。2411.2.1學(xué)生表現(xiàn)預(yù)測具體要求如下:①加載數(shù)據(jù)并對其進(jìn)行標(biāo)準(zhǔn)化處理。②分析不同特征之間的相關(guān)性。③利用網(wǎng)格法確定模型的最優(yōu)參數(shù)并測試相應(yīng)的模型精度。25

數(shù)據(jù)格式2611.2.1學(xué)生表現(xiàn)預(yù)測

編程實(shí)現(xiàn)#導(dǎo)入科學(xué)計(jì)算相關(guān)庫importpandasaspdimportnumpyasnp#導(dǎo)入繪圖庫frommatplotlibimportpyplotaspltimportseabornassnsfromsklearn.neural_networkimportMLPClassifierfromsklearn.model_selectionimporttrain_test_split#導(dǎo)入數(shù)據(jù)劃分模型fromsklearn.preprocessingimportStandardScaler#導(dǎo)入特征標(biāo)準(zhǔn)化庫fromsklearn.model_selectionimportGridSearchCV#導(dǎo)入網(wǎng)格式參數(shù)調(diào)優(yōu)模塊fromsklearn.inspectionimportpermutation_importance#導(dǎo)入特征重要性評估模塊2711.2.1學(xué)生表現(xiàn)預(yù)測

編程實(shí)現(xiàn)#數(shù)據(jù)編碼edu_encoding={'TestPrep':{'completed':1,'none':0},'ParentMaritalStatus':{'widowed':3,'divorced':2,'married':1,'single':0

},}2811.2.1學(xué)生表現(xiàn)預(yù)測forcolumnindata:ifcolumninedu_encoding.keys():try:data[column]=data[column].apply(lambdax:edu_encoding[column][x])except:print(f"Skipped{column}")print('數(shù)據(jù)基本信息:',data.shape)#顯示數(shù)據(jù)基本信息(樣本數(shù)與特征數(shù))

編程實(shí)現(xiàn)#特征相關(guān)性分析plt.figure()plt.rcParams['figure.figsize']=(20,15)plt.style.use('ggplot')sns.heatmap(x.corr(),annot=True,cmap='Wistia')plt.show()2911.2.1學(xué)生表現(xiàn)預(yù)測

編程實(shí)現(xiàn)#數(shù)據(jù)標(biāo)準(zhǔn)化scaler=StandardScaler()x_=scaler.fit_transform(x)#將數(shù)據(jù)劃分為訓(xùn)練數(shù)據(jù)與測試數(shù)據(jù)x_train,x_test,y_train,y_test=train_test_split(x_,y,test_size=0.4)3011.2.1學(xué)生表現(xiàn)預(yù)測

編程實(shí)現(xiàn)#求取最優(yōu)參數(shù)param_grid={'hidden_layer_sizes':[(5,),(10,),(5,5)],'activation':['relu','tanh'],'solver':['lbfgs','sgd','adam'],'alpha':[0.0001,0.001,0.01],'learning_rate':['constant','invscaling','adaptive']}3111.2.1學(xué)生表現(xiàn)預(yù)測

編程實(shí)現(xiàn)#構(gòu)建MLP模型NN=MLPClassifier()#采用GridSearchCV進(jìn)行調(diào)參grid_search=GridSearchCV(NN,param_grid,cv=5)grid_search.fit(x_train,y_train)3211.2.1學(xué)生表現(xiàn)預(yù)測

編程實(shí)現(xiàn)#獲取特征重要性feature_importance=abs(NN.coefs_[0])#特征的重要性PI=permutation_importance(NN,x_test,y_test,n_repeats=10,random_state=1,n_jobs=2)sorted_idx=PI.importances_mean.argsort()plt.boxplot(PI.importances[sorted_idx].T,vert=False,labels=np.array(data.columns)[sorted_idx])plt.show()3311.2.1學(xué)生表現(xiàn)預(yù)測

結(jié)果分析3411.2.1學(xué)生表現(xiàn)預(yù)測特征相關(guān)性特征重要性11.2.2心臟病預(yù)測心臟病是一種心血管疾病,它通常指的是冠狀動(dòng)脈疾病,包括心肌梗死、心絞痛和冠狀動(dòng)脈硬化等病癥。這些疾病導(dǎo)致心臟供血不足,可能引發(fā)心臟功能障礙甚至死亡。(1)問題描述已知影響心臟疾?。╕:target)的相關(guān)因素包括胸腔疾病類型(F1:chestpaintype)、靜息血壓(F2:restingbloodpressure)、日常運(yùn)動(dòng)情況(F3:血清膽固醇)、最大心率(F4:maxheartrate)與主血管數(shù)量(F5:majorvessels),利用所給數(shù)據(jù)構(gòu)建心臟病預(yù)測模型以對發(fā)生心臟病概率進(jìn)行預(yù)測。3511.2.2心臟病預(yù)測具體要求如下:①對特征之間的相關(guān)性進(jìn)行可視化。②利用網(wǎng)格法確定最優(yōu)模型參數(shù)并構(gòu)建與測試相應(yīng)的心臟病預(yù)測模型。③將特征降至2維并重復(fù)步驟2以觀察相應(yīng)模型之間的差異。④對模型預(yù)測結(jié)果進(jìn)行可視化。36

數(shù)據(jù)格式3711.2.2心臟病預(yù)測

編程實(shí)現(xiàn)#導(dǎo)入數(shù)據(jù)結(jié)構(gòu)與分析庫importpandasaspdimportnumpyasnp#導(dǎo)入繪圖庫frommatplotlibimportpyplotaspltimportseabornassnsimportmatplotlibasmplfromsklearn.preprocessingimportStandardScaler#導(dǎo)入特征標(biāo)準(zhǔn)化庫fromsklearn.neural_networkimportMLPClassifier#導(dǎo)入多層感知機(jī)模塊fromsklearn.model_selectionimporttrain_test_split#導(dǎo)入數(shù)據(jù)劃分模型fromsklearn.decompositionimportPCA#導(dǎo)入主成分分析模塊fromsklearn.model_selectionimportGridSearchCV#導(dǎo)入網(wǎng)格式參數(shù)調(diào)優(yōu)模塊3811.2.2心臟病預(yù)測

編程實(shí)現(xiàn)#特征相關(guān)性分析orr=x[x.columns[0:]].corr()plt.figure(figsize=(10,8))ax=sns.heatmap(corr,vmin=-1,vmax=1,center=0,cmap=sns.diverging_palette(20,220,n=200),square=False,annot=True,fmt='.1f')3911.2.2心臟病預(yù)測ax.set_xticklabels(ax.get_xticklabels(),rotation=30,horizontalalignment='right')

編程實(shí)現(xiàn)#數(shù)據(jù)標(biāo)準(zhǔn)化scaler=StandardScaler()x_=scaler.fit_transform(x)#將數(shù)據(jù)劃分為訓(xùn)練數(shù)據(jù)與測試數(shù)據(jù)x_train,x_test,y_train,y_test=train_test_split(x_,y,test_size=0.3,random_state=5)4011.2.2心臟病預(yù)測

編程實(shí)現(xiàn)#求取最優(yōu)參數(shù)param_grid={'hidden_layer_sizes':[(5,),(10,),(5,5)],'activation':['relu','tanh'],'alpha':[0.0001,0.001,0.01],'learning_rate':['constant','invscaling','adaptive']}4111.2.2心臟病預(yù)測

編程實(shí)現(xiàn)#構(gòu)建MLP模型NN=MLPClassifier()#采用GridSearchCV進(jìn)行調(diào)參grid_search=GridSearchCV(NN,param_grid,cv=5)grid_search.fit(x_train,y_train)4211.2.2心臟病預(yù)測

編程實(shí)現(xiàn)#主成分分析pca=PCA(n_components=2,whiten=True).fit(x_train)x_train_pca=pca.transform(x_train)x_test_pca=pca.transform(x_test)4311.2.2心臟病預(yù)測

編程實(shí)現(xiàn)#采用GridSearchCV進(jìn)行調(diào)參grid_search=GridSearchCV(NN,param_grid,cv=5)grid_search.fit(x_train_pca,y_train)4411.2.2心臟病預(yù)測

編程實(shí)現(xiàn)#顯示分類效果plt.figure()x_min,x_max=x_test_pca[:,0].min(),x_test_pca[:,0].max()y_min,y_max=x_test_pca[:,1].min(),x_test_pca[:,1].max()xx,yy=np.meshgrid(np.linspace(x_min,x_max,200),np.linspace(y_min,y_max,200))grid_test=np.stack((xx.flat,yy.flat),axis=1)y_pred=NN.predict(grid_test)cm_pt=mpl.colors.ListedColormap(['w','g'])cm_bg=mpl.colors.ListedColormap(['r','y'])plt.xlim(x_min,x_max)plt.ylim(y_min,y_max)plt.pcolormesh(xx,yy,y_pred.reshape(xx.shape),cmap=cm_bg)plt.scatter(x_test_pca[:,0],x_test_pca[:,1],c=y_test,cmap=cm_pt,marker='o',linewidths=1,edgecolors='k')plt.grid(True)plt.show()4511.2.2心臟病預(yù)測

結(jié)果分析46特征相關(guān)性預(yù)測結(jié)果可視化11.2.2心臟病預(yù)測

結(jié)果分析人工神經(jīng)網(wǎng)絡(luò)的隱含層與神經(jīng)元數(shù)量決定了其復(fù)雜程度與非線性表達(dá)能力。從理論上而言,隱含層與神經(jīng)元數(shù)量越多,人工神經(jīng)網(wǎng)絡(luò)非線性表達(dá)能力越強(qiáng),但同時(shí)也更可能導(dǎo)致過擬合、訓(xùn)練難度等問題的發(fā)生。不同特征之間的相關(guān)性整體上并不高且數(shù)據(jù)量較少,因而利用單或雙隱層結(jié)構(gòu)的人工神經(jīng)網(wǎng)絡(luò)即可獲得較好結(jié)果。通過參數(shù)調(diào)優(yōu),特征降維前后模型的復(fù)雜度及預(yù)測精度相差不大,可實(shí)現(xiàn)大部分樣本的準(zhǔn)確預(yù)測。4711.2.2心臟病預(yù)測

結(jié)果分析通常情況下,每個(gè)隱層神經(jīng)元數(shù)可根據(jù)以下經(jīng)驗(yàn)設(shè)置。(1)每層神經(jīng)元數(shù)目應(yīng)當(dāng)在輸入層數(shù)目和輸出層數(shù)目之間。(2)每層神經(jīng)元數(shù)目應(yīng)當(dāng)小于輸入層數(shù)目的兩倍。(3)每層神經(jīng)元數(shù)目應(yīng)當(dāng)為2/3的輸入層數(shù)目加上輸出層數(shù)目。4811.2.2心臟病預(yù)測11.2.3曲線擬合(1)問題描述首先以正弦曲線為基礎(chǔ)通過均勻采樣的方式構(gòu)造真實(shí)數(shù)據(jù)點(diǎn)并添加服從正態(tài)分布的噪聲,然后構(gòu)建人工神經(jīng)網(wǎng)絡(luò)對帶噪數(shù)據(jù)點(diǎn)進(jìn)行擬合,具體要求如下。①求取不同激活函數(shù)對應(yīng)的擬合曲線并比較其間的差異。②求取不同隱層結(jié)構(gòu)設(shè)置對應(yīng)的擬合優(yōu)度并比較其間的擬合優(yōu)度差異。4950importnumpyasnp#導(dǎo)入科學(xué)計(jì)算庫#導(dǎo)入人工神經(jīng)網(wǎng)絡(luò)模塊fromsklearn.neural_networkimportMLPRegressorimportmatplotlib.pyplotasplt#導(dǎo)入繪圖庫fromsklearn.metricsimportr2_score#導(dǎo)入R2分?jǐn)?shù)模塊#構(gòu)造數(shù)據(jù)點(diǎn)x=np.c_[np.linspace(0,2*np.pi,40)]y=np.sin(x).ravel()+np.random.normal(0,0.2,len(x))

編程實(shí)現(xiàn)11.2.3曲線擬合

編程實(shí)現(xiàn)#曲線擬合[不同神經(jīng)元與不同激活函數(shù)]R2_Acc=[]plt.figure(1)plt.scatter(x,y,color='c',label='DataPoints',linewidths=1,edgecolors='k')NN_1=MLPRegressor(solver='lbfgs',activation='logistic',hidden_layer_sizes=(2,2))y_1=NN_1.fit(x,y).pre

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論