国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

從零開始構(gòu)建簡(jiǎn)單人工神經(jīng)網(wǎng)絡(luò):1個(gè)隱藏層

譯文
人工智能
我們?cè)诒疚闹袑?gòu)建一個(gè)有1個(gè)輸入層、1個(gè)隱藏層和1個(gè)輸出層的神經(jīng)網(wǎng)絡(luò)。我們會(huì)看到,我們構(gòu)建的神經(jīng)網(wǎng)絡(luò)能夠找到非線性邊界。

【51CTO.com快譯】在上一篇文章《從零開始構(gòu)建一個(gè)人工神經(jīng)網(wǎng)絡(luò)(上)》中,我們一開始討論了什么是人工神經(jīng)網(wǎng)絡(luò),接著介紹了如何使用Python從零開始構(gòu)建一個(gè)簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò),只有1個(gè)輸入層和1個(gè)輸出層。這種神經(jīng)網(wǎng)絡(luò)名為Perceptron。然而,能夠執(zhí)行圖像分類和股市分析等復(fù)雜任務(wù)的實(shí)際神經(jīng)網(wǎng)絡(luò)除了輸入層和輸出層外還有多個(gè)隱藏層。

我們?cè)谏掀械贸鼋Y(jié)論,Perceptron能夠找到線性決策邊界。我們使用Perceptron借助虛擬數(shù)據(jù)集來(lái)預(yù)測(cè)某人是否患有糖尿病。然而,Perceptron無(wú)法找到非線性決策邊界。

我們?cè)诒疚闹袑?gòu)建一個(gè)有1個(gè)輸入層、1個(gè)隱藏層和1個(gè)輸出層的神經(jīng)網(wǎng)絡(luò)。我們會(huì)看到,我們構(gòu)建的神經(jīng)網(wǎng)絡(luò)能夠找到非線性邊界。

生成數(shù)據(jù)集

不妨先創(chuàng)造可供試用的數(shù)據(jù)集。幸好,scikit-learn有一些有用的數(shù)據(jù)集生成器,因此我們不需要自行編寫代碼。我們將使用make_moons函數(shù)。

  1. from sklearn import datasets  
  2. np.random.seed(0)  
  3. feature_set, labels = datasets.make_moons(300, noise=0.20)  
  4. plt.figure(figsize=(10,7))  
  5. plt.scatter(feature_set[:,0], feature_set[:,1], c=labels, cmap=plt.cm.Spectral) 

從零開始構(gòu)建簡(jiǎn)單人工神經(jīng)網(wǎng)絡(luò):1個(gè)隱藏層

圖1

我們生成的數(shù)據(jù)集有兩個(gè)類別,分別標(biāo)為紅點(diǎn)和藍(lán)點(diǎn)。可以將藍(lán)點(diǎn)視為男性患者,將紅點(diǎn)視為女性患者,x軸和y軸是醫(yī)學(xué)度量指標(biāo)。

我們的目的是訓(xùn)練可根據(jù)x和y坐標(biāo)預(yù)測(cè)正確類別(男性或女性)的機(jī)器學(xué)習(xí)分類器。請(qǐng)注意,數(shù)據(jù)不是線性可分離的,我們無(wú)法繪制將兩個(gè)類別分開的直線。這意味著,除非你手動(dòng)設(shè)計(jì)適用于特定數(shù)據(jù)集的非線性特征(比如多項(xiàng)式),否則線性分類器(比如沒(méi)有任何隱藏層甚至沒(méi)有邏輯回歸的ANN)將無(wú)法擬合數(shù)據(jù)。

有1個(gè)隱藏層的神經(jīng)網(wǎng)絡(luò)

這是我們的簡(jiǎn)單網(wǎng)絡(luò):

從零開始構(gòu)建簡(jiǎn)單人工神經(jīng)網(wǎng)絡(luò):1個(gè)隱藏層

圖2

我們有兩個(gè)輸入:x1和x2。有單單一個(gè)隱藏層,它有3個(gè)單元(節(jié)點(diǎn)):h1、h2和h3。最后,有兩個(gè)輸出:y1和y2。連接它們的箭頭是權(quán)重。有兩個(gè)權(quán)重矩陣:w和u。w權(quán)重連接輸入層和隱藏層,u權(quán)重連接隱藏層和輸出層。我們使用字母w和u,那樣更容易關(guān)注要關(guān)注的計(jì)算。你還能看到我們將輸出y1和y2與目標(biāo)t1和t2進(jìn)行了比較。

進(jìn)行計(jì)算之前,我們需要介紹最后一個(gè)字母。讓a成為激活前的線性組合。因此,我們有: 

 

由于我們無(wú)法窮盡所有激活函數(shù)和所有損失函數(shù),因此專注于兩種最常見(jiàn)的函數(shù)。Sigmoid激活和L2范數(shù)損失。有了該新信息和新符號(hào),輸出y等于激活的線性組合。

因此,就輸出層而言,我們有:

由于方法不同,我們將分別檢查輸出層和隱藏層的反向傳播。

我想提醒諸位:

Sigmoid函數(shù)是:

導(dǎo)數(shù)是:

輸出層的反向傳播

為了獲得更新規(guī)則:

我們必須計(jì)算

以單個(gè)權(quán)重uij為例。損失w.r.t. uij的偏導(dǎo)數(shù)等于:

其中i對(duì)應(yīng)上一層(該變換的輸入層),j對(duì)應(yīng)下一層(該變換的輸出層)。只要根據(jù)鏈?zhǔn)揭?guī)則即可計(jì)算出偏導(dǎo)數(shù)。

關(guān)注L2-范數(shù)損失導(dǎo)數(shù)。

關(guān)注Sigmoid導(dǎo)數(shù)。

最后,三階偏導(dǎo)數(shù)就是下面的導(dǎo)數(shù):

所以,

替換上面表達(dá)式中的偏導(dǎo)數(shù),我們得到:

因此,輸出層的單個(gè)權(quán)重的更新規(guī)則由下式給出:

隱藏層的反向傳播

與輸出層的反向傳播類似,wij將依賴:

關(guān)注鏈?zhǔn)揭?guī)則。利用到目前為止我們可以利用Sigmoid激活和線性模型進(jìn)行轉(zhuǎn)換的結(jié)果,我們得到:

反向傳播的實(shí)際問(wèn)題來(lái)自該術(shù)語(yǔ)

那是由于沒(méi)有“隱藏”目標(biāo)。可以在下面看看權(quán)重w11的解決方案。查看計(jì)算過(guò)程時(shí),建議先看一下上面顯示的NN圖。

從這里,我們可以計(jì)算

這就是我們想要的。最終的表達(dá)式是:

 

該方程的廣義形式是:

反向傳播的一般化

使用輸出層和隱藏層的反向傳播的結(jié)果,我們可以將它們放到一個(gè)公式中,在存在L2-范數(shù)損失和Sigmoid激活的情況下總結(jié)反向傳播。

其中就隱藏層而言

實(shí)現(xiàn)有1個(gè)隱藏層的神經(jīng)網(wǎng)絡(luò)的代碼

現(xiàn)在不妨實(shí)現(xiàn)我們剛使用Pytho從零開始的神經(jīng)網(wǎng)絡(luò)。我們將再次嘗試對(duì)上面創(chuàng)建的非線性數(shù)據(jù)進(jìn)行分類。

我們先為梯度下降定義一些有用的變量和參數(shù),比如訓(xùn)練數(shù)據(jù)集大小、輸入層和輸出層的維度。 

  1. num_examples = len(X) # training set size 
  2. nn_input_dim = 2 # input layer dimensionality 
  3. nn_output_dim = 2 # output layer dimensionality  

還定義梯度下降參數(shù)。 

  1. epsilon = 0.01 # learning rate for gradient descent  
  2. reg_lambda = 0.01 # regularization strength  

首先,不妨實(shí)現(xiàn)上面定義的損失函數(shù)。我們使用該函數(shù)來(lái)評(píng)估模型的表現(xiàn)有多好: 

  1. # Helper function to evaluate the total loss on the dataset  
  2. def calculate_loss(model, X, y):  
  3. num_examples = len(X) # training set size  
  4. W1, b1, W2, b2 = model['W1'], model['b1'], model['W2'], model['b2' 
  5. Forward propagation to calculate our predictions  
  6. z1 = X.dot(W1) + b1  
  7. a1 = np.tanh(z1)  
  8. z2 = a1.dot(W2) + b2  
  9. exp_scores = np.exp(z2)  
  10. probs = exp_scores / np.sum(exp_scores, axis=1, keepdims=True 
  11. # Calculating the loss  
  12. corect_logprobs = -np.log(probs[range(num_examples), y])  
  13. data_loss = np.sum(corect_logprobs)  
  14. Add regulatization term to loss (optional)  
  15. data_loss += Config.reg_lambda / 2 * (np.sum(np.square(W1)) + np.sum(np.square(W2)))  
  16. return 1. / num_examples * data_loss  

我們還實(shí)現(xiàn)了helper函數(shù),計(jì)算網(wǎng)絡(luò)的輸出。它進(jìn)行正向傳播,返回概率最大的類別。 

  1. def predict(model, x):  
  2. W1, b1, W2, b2 = model['W1'], model['b1'], model['W2'], model['b2' 
  3. Forward propagation  
  4. z1 = x.dot(W1) + b1  
  5. a1 = np.tanh(z1)  
  6. z2 = a1.dot(W2) + b2  
  7. exp_scores = np.exp(z2)  
  8. probs = exp_scores / np.sum(exp_scores, axis=1, keepdims=True 
  9. return np.argmax(probs, axis=1)  

最后是訓(xùn)練神經(jīng)網(wǎng)絡(luò)的函數(shù)。它使用我們?cè)谏厦嬲业降姆聪騻鞑?dǎo)數(shù)實(shí)現(xiàn)了批梯度下降。

該函數(shù)學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)的參數(shù)后返回模型。

nn_hdim:隱藏層中節(jié)點(diǎn)的數(shù)量。

num_passes:遍歷梯度下降訓(xùn)練數(shù)據(jù)的次數(shù)。

print_loss:如果是True,每1000次迭代就打印輸出損失。 

  1. def build_model(X, y, nn_hdim, num_passes=20000, print_loss=False):  
  2. # Initialize the parameters to random values. We need to learn these.  
  3. num_examples = len(X)  
  4. np.random.seed(0)  
  5. W1 = np.random.randn(Config.nn_input_dim, nn_hdim) / np.sqrt(Config.nn_input_dim)  
  6. b1 = np.zeros((1, nn_hdim))  
  7. W2 = np.random.randn(nn_hdim, Config.nn_output_dim) / np.sqrt(nn_hdim)  
  8. b2 = np.zeros((1, Config.nn_output_dim))# This is what we return at the end  
  9. model = {}# Gradient descent. For each batch...  
  10. for i in range(0, num_passes):# Forward propagation  
  11. z1 = X.dot(W1) + b1  
  12. a1 = np.tanh(z1)  
  13. z2 = a1.dot(W2) + b2  
  14. exp_scores = np.exp(z2)  
  15. probs = exp_scores / np.sum(exp_scores, axis=1, keepdims=True)# Backpropagation  
  16. delta3 = probs  
  17. delta3[range(num_examples), y] -= 1  
  18. dW2 = (a1.T).dot(delta3)  
  19. db2 = np.sum(delta3, axis=0, keepdims=True 
  20. delta2 = delta3.dot(W2.T) * (1 - np.power(a1, 2))  
  21. dW1 = np.dot(X.T, delta2)  
  22. db1 = np.sum(delta2, axis=0)# Add regularization terms (b1 and b2 don't have regularization terms)  
  23. dW2 += Config.reg_lambda * W2  
  24. dW1 += Config.reg_lambda * W1# Gradient descent parameter update  
  25. W1 += -Config.epsilon * dW1  
  26. b1 += -Config.epsilon * db1  
  27. W2 += -Config.epsilon * dW2  
  28. b2 += -Config.epsilon * db2# Assign new parameters to the model  
  29. model = {'W1': W1, 'b1': b1, 'W2': W2, 'b2': b2}# Optionally print the loss.  
  30. # This is expensive because it uses the whole dataset, so we don't want to do it too often.  
  31. if print_loss and i % 1000 == 0:  
  32. print("Loss after iteration %i: %f" % (i, calculate_loss(model, X, y)))return model  

最后是主方法:

  1. def main():  
  2. X, y = generate_data()  
  3. model = build_model(X, y, 3, print_loss=True 
  4. visualize(X, y, model)  

每1000次迭代打印輸出損失:

圖3

隱藏層中節(jié)點(diǎn)數(shù)量是3時(shí)的分類

現(xiàn)在了解不同的隱藏層大小對(duì)結(jié)果有何影響。 

  1. hidden_layer_dimensions = [1, 2, 3, 4, 5, 20, 50]  
  2. for i, nn_hdim in enumerate(hidden_layer_dimensions):  
  3. plt.subplot(5, 2, i+1)  
  4. plt.title('Hidden Layer size %d' % nn_hdim)  
  5. model = build_model(X, y,nn_hdim, 20000, print_loss=False 
  6. plot_decision_boundary(lambda x:predict(model,x), X, y)  
  7. plt.show()  

圖4

我們可以看到,低維度的隱藏層很好地捕獲了數(shù)據(jù)的總體趨勢(shì)。較高維度易于過(guò)擬合。它們?cè)?ldquo;記憶”數(shù)據(jù),而不是擬合總體形狀。

如果我們?cè)诹硗獾臏y(cè)試集上評(píng)估模型,由于更好的泛化能力,隱藏層尺寸較小的模型可能會(huì)表現(xiàn)更好。我們可以通過(guò)更強(qiáng)的正則化來(lái)抵消過(guò)擬合,但是為隱藏層選擇正確的尺寸是一種極為“經(jīng)濟(jì)”的解決方法。

你可以在該GitHub存儲(chǔ)庫(kù)中獲取全部代碼。

nageshsinghc4 / Artificial-Neural-Network-from-scratch-python

結(jié)論

我們?cè)诒疚闹薪榻B了如何使用Numpy Python,用數(shù)學(xué)導(dǎo)出有1個(gè)隱藏層的神經(jīng)網(wǎng)絡(luò),并創(chuàng)建了有1個(gè)隱藏層的神經(jīng)網(wǎng)絡(luò)。

原文標(biāo)題:Build an Artificial Neural Network From Scratch: Part 2,作者:Nagesh Singh Chauhan

【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】

 

責(zé)任編輯:龐桂玉 來(lái)源: 51CTO
相關(guān)推薦

2020-03-25 09:00:00

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

2020-12-27 21:09:50

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

2018-05-28 13:12:49

深度學(xué)習(xí)Python神經(jīng)網(wǎng)絡(luò)

2018-01-09 10:05:55

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

2025-02-19 18:00:00

神經(jīng)網(wǎng)絡(luò)模型AI

2021-08-25 13:13:58

神經(jīng)網(wǎng)絡(luò)AI算法

2018-07-03 16:10:04

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

2017-02-10 09:30:33

數(shù)據(jù)化運(yùn)營(yíng)流量

2010-02-22 09:39:52

HTML 5Web

2024-03-01 19:53:37

PyBuilderPython開發(fā)

2024-07-31 08:14:17

2024-05-17 17:29:00

CurdlingPython開發(fā)

2019-07-12 07:26:26

神經(jīng)網(wǎng)絡(luò)數(shù)學(xué)樂(lè)高

2025-01-09 11:14:13

2018-09-17 15:12:25

人工智能神經(jīng)網(wǎng)絡(luò)編程語(yǔ)言

2019-03-23 20:32:37

人工智能AI機(jī)器學(xué)習(xí)

2024-02-23 09:00:00

編程語(yǔ)言編譯器工具

2022-03-30 08:24:25

操作系統(tǒng)內(nèi)核開源軟件

2025-01-26 16:57:02

2024-12-06 17:02:26

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

91免费视频国产| 日日噜噜噜夜夜爽爽狠狠| 超碰在线成人| 国产一区二区三区视频免费| yiren22综合网成人| 18涩涩午夜精品.www| japanese在线视频| 久久经典综合| 久久精品国产美女| 亚洲乱码视频| 精品中文字幕一区| 136国产福利精品导航网址| 成人黄色午夜影院| 99久久久国产精品美女| 国产精品久久久久久五月尺| 亚洲精华一区二区三区| 91av视频在线观看| avtt综合网| 亚洲欧洲日韩女同| 天天色综合6| 中文字幕亚洲电影| 黄色春季福利在线看| 亚洲欧美日韩国产综合| 成年在线播放小视频| 亚洲欧美色图小说| 高清免费观看在线| 亚洲r级在线视频| 青青青草原在线| 欧美天堂亚洲电影院在线播放| 黄色片在线播放| 在线不卡中文字幕播放| 天堂va在线| 一区三区二区视频| 欧美在线观看在线观看| 丁香五六月婷婷久久激情| 欧美色视频免费| 欧美私人免费视频| av毛片午夜不卡高**水| 尤物yw午夜国产精品视频明星 | 国产九色精品成人porny| 国产乱子伦精品视频| 久久一日本道色综合| 成人拍拍拍免费视频网站| 欧美丝袜第一区| 日韩成人伦理| 欧美巨乳在线观看| 亚洲天堂免费| 国产美女视频免费| 中文字幕日韩欧美一区二区三区| 日韩写真在线| 精品国产sm最大网站| 国内精品视频| 92福利视频午夜1000合集在线观看| 日日夜夜精品免费视频| 国产aaa一级片| 激情亚洲一区二区三区四区| fc2ppv国产精品久久| 久久中文精品视频| 欧美视频网站| 免费av观看网址| 日韩欧美中文第一页| 激情开心成人网| 国产精品网址在线| 国产成人精品免费在线| 在线看的你懂得| 亚洲欧美一区二区三区久久| 精品一区在线| 大地资源第二页在线观看高清版| 亚洲视频小说图片| 欧美videos另类精品| 91高潮在线观看| 久久99精品久久久久| 偷偷要色偷偷| 亚洲人精选亚洲人成在线| 天堂8中文在线| 久久99久久久久久久噜噜| 亚洲乱亚洲高清| 国产精品人人爽人人爽| 69堂成人精品免费视频| 久久激情av| 超碰在线免费观看97| 图片区小说区区亚洲影院| 九九热线视频只有这里最精品| 国产精品永久免费在线| 99re热视频这里只精品| 2021国产在线| 成人妇女淫片aaaa视频| av亚洲精华国产精华精华| 在线视频1区2区| 国产91精品高潮白浆喷水| 精品一区二区综合| 大乳在线免费观看| 2019av中文字幕| 成人综合婷婷国产精品久久蜜臀| 国产黄色在线播放| 国产精国产精品| 久久久亚洲国产美女国产盗摄| 影音先锋男人在线资源| 国产在线观看91精品一区| 国产日产欧美精品一区二区三区| 欧美xxxx视频| 国产精品福利视频| 夜夜精品浪潮av一区二区三区| 欧美成人xxxx| 中国一级黄色录像| 717成人午夜免费福利电影| 天天久久综合| www.男人的天堂.com| 久久伊人精品天天| 国产高清精品网站| 国产在线xxx| 蜜桃麻豆www久久国产精品| 欧美视频在线观看 亚洲欧| 视频一区中文| 国产91大片| 欧美精品18videos性欧美| 粉嫩一区二区三区在线看 | 亚洲高清免费一级二级三级| 日韩中文字幕| 精品久久久久久久久久中文字幕| 精品调教chinesegay| 蜜芽一区二区三区| 香蕉成人app免费看片| 国产伦精品一区二区三区四区视频 | 99re成人精品视频| 中文在线中文资源| 日日骚一区二区网站| 欧美三级中文字幕在线观看| 我不卡神马影院| 香蕉国产在线| 亚洲精品日韩av| 欧美日韩亚洲精品内裤| 久久亚洲国产| 色视频免费在线观看| 亚洲va欧美va在线观看| 一本色道久久综合狠狠躁的推荐| 91综合在线| 电影av一区| 欧美成人免费在线| 欧美电影免费观看完整版| 蜜臀久久99精品久久久画质超高清 | 开心色怡人综合网站| 欧美日韩国产美| 在线精品亚洲| 人人澡人人添人人爽一区二区| 亚洲精品无人区| 亚洲人成电影在线| 久久在线免费观看| 清纯唯美亚洲经典中文字幕| 午夜神马福利影院| 肥熟一91porny丨九色丨| 3d成人h动漫网站入口| 麻豆精品精品国产自在97香蕉| 国产精品电影| 熟女性饥渴一区二区三区| 992tv成人免费视频| 精品久久久久久| 久久久www| 影音成人av| 欧美18—20岁hd第一次| 91情侣偷在线精品国产| 日韩美女视频在线| 91免费观看视频在线| 成人羞羞视频播放网站| 日本在线观看| 久久久久久久香蕉| 91av在线国产| 欧美剧情片在线观看| 国产精品一区二区男女羞羞无遮挡| 精品视频国内| 永久在线免费观看| 亚洲人一区二区| 久久乐国产精品| 日本丶国产丶欧美色综合| 精品中文av资源站在线观看| 国产精品高潮呻吟久久久久| 欧美高清成人| 国产成人永久免费视频| 欧美亚洲午夜视频在线观看| 制服丝袜日韩国产| 91热门视频在线观看| **女人18毛片一区二区| 成全电影大全在线观看| 99热手机在线观看| 欧美日韩一区综合| 国内精品免费午夜毛片| 欧美日韩精品电影| www国产亚洲精品久久麻豆| 自拍偷拍欧美专区| 日韩一区二区三免费高清在线观看| 在线视频专区| a级黄色片免费| 91色视频在线观看| 中文日韩电影网站| 欧美日韩在线影院| 91在线国产观看| www成人在线视频| 尤物网站在线| 国产精品50p| 久久亚洲高清|