丁香五月天婷婷久久婷婷色综合91|国产传媒自偷自拍|久久影院亚洲精品|国产欧美VA天堂国产美女自慰视屏|免费黄色av网站|婷婷丁香五月激情四射|日韩AV一区二区中文字幕在线观看|亚洲欧美日本性爱|日日噜噜噜夜夜噜噜噜|中文Av日韩一区二区

您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號(hào)安全和更好的產(chǎn)品體驗(yàn),強(qiáng)烈建議使用更快更安全的瀏覽器
此為臨時(shí)鏈接,僅用于文章預(yù)覽,將在時(shí)失效
人工智能開(kāi)發(fā)者 正文
發(fā)私信給恒亮
發(fā)送

0

如何用人工神經(jīng)網(wǎng)絡(luò)處理決策邊界問(wèn)題?這里有一份簡(jiǎn)單的代碼參考

本文作者: 恒亮 2017-02-22 17:19
導(dǎo)語(yǔ):我們將首先嘗試用傳統(tǒng)的邏輯回歸算法來(lái)處理決策邊界問(wèn)題,接著引入 ANN,通過(guò)對(duì)比我們將看到 ANN 的強(qiáng)大。

從本質(zhì)上說(shuō),人工神經(jīng)網(wǎng)絡(luò)(ANN)是一種信息處理的范式,它受到人腦信息處理流程的啟發(fā),目前在機(jī)器學(xué)習(xí)領(lǐng)域得到了非常廣泛的應(yīng)用。

然而,可能許多人并不知道的是,ANN 早在 40 年代就被提出了。在最初的那幾年,ANN 曾在一定程度上引起了業(yè)界的關(guān)注,但由于那時(shí)沒(méi)有當(dāng)前強(qiáng)大的硬件運(yùn)算能力和高效的模型訓(xùn)練算法,因此ANN很快就銷(xiāo)聲匿跡了。但隨著時(shí)代的進(jìn)步,技術(shù)的發(fā)展,目前 ANN 幾乎成了人工智能的代名詞,特別是隨著自動(dòng)編碼器、卷積網(wǎng)絡(luò)、Dropout 正則化(dropout regularization)和其他各種技術(shù)的出現(xiàn),ANN 的性能表現(xiàn)得到了顯著提升。

醫(yī)學(xué)研究表明:人腦的神經(jīng)網(wǎng)絡(luò)由神經(jīng)元組成,它們通過(guò)神經(jīng)突觸相互連接,傳輸信號(hào)。一般情況下,只有當(dāng)一個(gè)神經(jīng)元接收的信號(hào)量超過(guò)某一閾值,它才會(huì)向與之相連的其他神經(jīng)元傳輸這一信號(hào)。而且,人腦的神經(jīng)網(wǎng)絡(luò)可以在任何神經(jīng)元之間建立連接關(guān)系,甚至自己和自己連接。如果完全照搬人腦的這種鏈接結(jié)構(gòu),那么人工神經(jīng)網(wǎng)絡(luò)將很難訓(xùn)練,因此在大部分的實(shí)際應(yīng)用場(chǎng)景中,研究者們通常會(huì)對(duì)人工神經(jīng)網(wǎng)絡(luò)做出一些精簡(jiǎn)和限制(例如不能自己和自己連接等)。

在多層感知機(jī)(multi-layer perceptron)的情況下,神經(jīng)元會(huì)被按層排列,并且每個(gè)神經(jīng)元只能向下一層的神經(jīng)元發(fā)送信號(hào)。第一層由輸入數(shù)據(jù)組成,最后一層輸出最終的預(yù)測(cè)值,稱(chēng)為輸出層。這里所有的神經(jīng)元都通過(guò)所謂的突觸(synapse)連接。

如何用人工神經(jīng)網(wǎng)絡(luò)處理決策邊界問(wèn)題?這里有一份簡(jiǎn)單的代碼參考

與人腦神經(jīng)網(wǎng)絡(luò)傳輸信號(hào)時(shí)的閾值相對(duì)應(yīng),在 ANN 中通常會(huì)使用 Sigmoid 函數(shù)來(lái)計(jì)算神經(jīng)元的輸出。函數(shù)圖像和表達(dá)式如下所示。

如何用人工神經(jīng)網(wǎng)絡(luò)處理決策邊界問(wèn)題?這里有一份簡(jiǎn)單的代碼參考如何用人工神經(jīng)網(wǎng)絡(luò)處理決策邊界問(wèn)題?這里有一份簡(jiǎn)單的代碼參考

一般情況下,ANN 的訓(xùn)練過(guò)程大概可以分為如下兩個(gè)階段:

1. 前向傳遞,數(shù)據(jù)從輸入經(jīng)過(guò) ANN 流向輸出,被稱(chēng)為前饋(feed forward)。

2. 反向傳遞,從輸出端開(kāi)始,計(jì)算每個(gè)神經(jīng)元的誤差,然后根據(jù)計(jì)算結(jié)果調(diào)整網(wǎng)絡(luò)權(quán)重,被稱(chēng)為反向傳播(Backpropagation)。

下文中,我們將首先嘗試用傳統(tǒng)的邏輯回歸算法來(lái)處理決策邊界問(wèn)題,接著引入 ANN,通過(guò)對(duì)比我們將看到 ANN 的強(qiáng)大。需要說(shuō)明的是,這里我們只實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的三層 ANN 結(jié)構(gòu)(即上圖中的 hidden layer 有 3 層),并且,我們省略了一些數(shù)學(xué)和機(jī)器學(xué)習(xí)的基礎(chǔ)知識(shí)介紹,包括分類(lèi)、正則化和梯度下降等。另外,我們還采用了一些基于 Python 的現(xiàn)成的機(jī)器學(xué)習(xí)庫(kù)。

邏輯回歸

我們首先用邏輯回歸的方法處理決策邊界問(wèn)題,即訓(xùn)練一個(gè)邏輯回歸分類(lèi)器。這里分類(lèi)器的輸入是來(lái)自數(shù)據(jù)集的x值或y值,輸出是我們的預(yù)測(cè)分類(lèi)結(jié)果(在本例中就是0或1,分別代表紅色和藍(lán)色兩種顏色)。

下面的代碼聲明了我們所需要的支持庫(kù)。

# Package imports 

import matplotlib.pyplot as plt 

import numpy as np 

import sklearn 

import sklearn.datasets 

import sklearn.linear_model 

import matplotlib

下面的代碼用隨機(jī)數(shù)的方法生成了需要進(jìn)行邊界決策的數(shù)據(jù)集。

# Generate a dataset and plot it

np.random.seed(0)

X, y = sklearn.datasets.make_moons(200, noise=0.20)

plt.scatter(X[:,0], X[:,1], s=40, c=y, cmap=plt.cm.Spectral)

plt.show()

根據(jù)數(shù)據(jù)集繪制的點(diǎn)狀分布圖如下所示。

如何用人工神經(jīng)網(wǎng)絡(luò)處理決策邊界問(wèn)題?這里有一份簡(jiǎn)單的代碼參考

在scikit-learn庫(kù)的幫助下,我們用此數(shù)據(jù)訓(xùn)練邏輯回歸分類(lèi)器,代碼如下。

# Train the logistic regression classifier

clf = sklearn.linear_model.LogisticRegressionCV()

clf.fit(X, y)

# Plot the decision boundary (the method is in the main code link provided in the end)

plot_decision_boundary(lambda x: clf.predict(x))

plt.title("Logistic Regression")

最終的輸出結(jié)果如下。

如何用人工神經(jīng)網(wǎng)絡(luò)處理決策邊界問(wèn)題?這里有一份簡(jiǎn)單的代碼參考

可以看到,邏輯回歸分類(lèi)器用直線將數(shù)據(jù)分為紅、藍(lán)兩類(lèi),雖然結(jié)果已經(jīng)相當(dāng)令人滿(mǎn)意了(可以看到絕大部分的紅、藍(lán)色點(diǎn)已經(jīng)被分開(kāi)了),但如果我們想要得到更精準(zhǔn)的結(jié)果(即完全把紅、藍(lán)色點(diǎn)分開(kāi)),顯然需要借助更強(qiáng)大的解決方案,也就是下文即將實(shí)現(xiàn)的 ANN。

人工神經(jīng)網(wǎng)絡(luò)

下面我們構(gòu)建一個(gè)三層 ANN 來(lái)解決該問(wèn)題,看看結(jié)果和邏輯回歸相比有何不同。

如何用人工神經(jīng)網(wǎng)絡(luò)處理決策邊界問(wèn)題?這里有一份簡(jiǎn)單的代碼參考

首先是關(guān)于隱藏層(hidden layer)維度(即節(jié)點(diǎn)數(shù)量)的選擇,一般認(rèn)為更多的節(jié)點(diǎn),就能實(shí)現(xiàn)更加復(fù)雜的函數(shù)。但高維度在模型訓(xùn)練和結(jié)果預(yù)測(cè)時(shí)又需要巨大的計(jì)算能力支撐,而且大量的參數(shù)還可能造成過(guò)擬合(overfitting)問(wèn)題。因此,如何選擇隱藏層的維度大小,還是要取決于具體的待解問(wèn)題,而且它更多的是一門(mén)藝術(shù)而并非科學(xué)。下文我們將看到隱藏層的維度如何影響 ANN 的輸出,這里首先給出幾條最基礎(chǔ)的 ANN 維度規(guī)則。

1. ANN 通常都會(huì)具有一個(gè)輸入層,一個(gè)隱藏層和一個(gè)輸出層。

2. 輸入層的節(jié)點(diǎn)數(shù)量由輸入數(shù)據(jù)的維度決定。

3. 輸出層的節(jié)點(diǎn)數(shù)量由輸出類(lèi)別的數(shù)量決定。(本例中輸出層的維度是2,因?yàn)槲覀冎挥?和1兩種結(jié)果)。

下面我們還需要為隱藏層選擇一個(gè)激活函數(shù)(activation function)。激活函數(shù)負(fù)責(zé)將某一層的輸入轉(zhuǎn)換為輸出,一般非線性函數(shù)用于擬合非線性的假設(shè)。激活函數(shù)最常見(jiàn)的選擇包括:雙曲正切函數(shù)(tanh),Sigmoid 函數(shù)和 ReLu(Rectified Linear Units)函數(shù)等。本例中采用的是雙曲正切函數(shù) tanh。

因?yàn)槲覀兿胍淖罱K結(jié)果是概率,因此輸出層的激活函數(shù)選擇 Softmax 函數(shù)會(huì)比較合適,這是一個(gè)將原始的數(shù)字結(jié)果轉(zhuǎn)換為概率的最簡(jiǎn)單的方法。這里可以將 Softmax 函數(shù)視為 Logistic 函數(shù)對(duì)多個(gè)分類(lèi)的泛化(generalization)。

ANN如何進(jìn)行預(yù)測(cè)?

如上文所述,整個(gè)訓(xùn)練大概可以分為兩個(gè)過(guò)程。一是前向傳遞,即訓(xùn)練數(shù)據(jù)從輸入端流向輸出,得到最終的預(yù)測(cè)值,這是一個(gè)前饋過(guò)程。二是反向傳遞,即通過(guò)參數(shù)學(xué)習(xí)(learning the parameters),找到一組最合適的參數(shù)組合,使得 ANN 的訓(xùn)練誤差最小化。我們一般將測(cè)量誤差的函數(shù)稱(chēng)為損失函數(shù)(loss function),由于上文我們將 Softmax 函數(shù)作為輸出層的激活函數(shù),因此按照一般的習(xí)慣,這里將 cross-entropy loss(交叉熵?fù)p失函數(shù))作為損失函數(shù)。

ANN的實(shí)現(xiàn)

首先我們?yōu)楹罄m(xù)的梯度下降過(guò)程定義一些變量和參數(shù),代碼如下。

num_examples = len(X) # the training set size

nn_input_dim = 2 # dimension of the input layer

nn_output_dim = 2 # dimension of the output layer

# Gradient descent parameters

epsilon = 0.01 # the learning rate for gradient descent

reg_lambda = 0.01 # the strength of regularization

接著定義損失函數(shù)。

def calculate_loss(model):

定義輔助函數(shù)(helper function)預(yù)測(cè)輸出結(jié)果(0或1)。

def predict(model, x):

最后,我們定義 ANN 的訓(xùn)練函數(shù),它使用上面定義的反向傳播導(dǎo)數(shù)實(shí)現(xiàn)批量梯度下降(batch gradient descent)。

def build_model(nn_hdim, num_passes=20000, print_loss=False):

ANN的預(yù)測(cè)結(jié)果

下面我們用上文提到的點(diǎn)狀數(shù)據(jù)對(duì) ANN 展開(kāi)訓(xùn)練。

# Build a model with a 3-dimensional hidden layer

model = build_model(3, print_loss=True)

# Plot the decision boundary

plot_decision_boundary(lambda x: predict(model, x))

plt.title("Decision Boundary for hidden layer size 3")

如何用人工神經(jīng)網(wǎng)絡(luò)處理決策邊界問(wèn)題?這里有一份簡(jiǎn)單的代碼參考

從以上結(jié)果可以看到,隨著訓(xùn)練次數(shù)的增多,模型的預(yù)測(cè)結(jié)果也就越好。低維的隱藏層可以很好地捕獲數(shù)據(jù)的總體趨勢(shì),而更高的維度可能會(huì)因?yàn)橛洃浶?yīng)而產(chǎn)生過(guò)擬合,但是其總體形狀還是正確的。如果我們要在其他的數(shù)據(jù)集上對(duì)模型進(jìn)行測(cè)試,那么隱藏層維度更小的模型可能會(huì)得到更好的效果,因?yàn)樗鼈兎夯母谩A硗?,雖然可以采用更強(qiáng)的正則化來(lái)抵消高維度引起的過(guò)擬合,但選擇一個(gè)合適的隱藏層維度則是更為經(jīng)濟(jì)的方案。

完整源代碼:https://github.com/NSAryan12/nn-from-scratch/blob/master/nn-from-scratch.ipynb

來(lái)源:medium,雷鋒網(wǎng)編譯,雷鋒網(wǎng)版權(quán)文章

雷鋒網(wǎng)相關(guān)閱讀:

Google軟件工程師解讀:深度學(xué)習(xí)的activation function哪家強(qiáng)?

MIT重磅研究:基于人工神經(jīng)網(wǎng)絡(luò),探索抑制神經(jīng)元的生物學(xué)意義

如何對(duì)神經(jīng)網(wǎng)絡(luò)人工智能硬件進(jìn)行優(yōu)化設(shè)計(jì)?

雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見(jiàn)轉(zhuǎn)載須知。

如何用人工神經(jīng)網(wǎng)絡(luò)處理決策邊界問(wèn)題?這里有一份簡(jiǎn)單的代碼參考

分享:
相關(guān)文章

編輯

歡迎交流,微信:whl123465
當(dāng)月熱門(mén)文章
最新文章
請(qǐng)?zhí)顚?xiě)申請(qǐng)人資料
姓名
電話
郵箱
微信號(hào)
作品鏈接
個(gè)人簡(jiǎn)介
為了您的賬戶(hù)安全,請(qǐng)驗(yàn)證郵箱
您的郵箱還未驗(yàn)證,完成可獲20積分喲!
請(qǐng)驗(yàn)證您的郵箱
立即驗(yàn)證
完善賬號(hào)信息
您的賬號(hào)已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
立即設(shè)置 以后再說(shuō)