自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

神經(jīng)網(wǎng)絡(luò)原來這么簡單,機器學(xué)習(xí)入門貼送給你 | 干貨

新聞 機器學(xué)習(xí)
你想學(xué)機器學(xué)習(xí)嗎?這里有一個入門貼適合你。什么神經(jīng)網(wǎng)絡(luò)、隨機森林、計算機視覺通通一網(wǎng)打盡。

 [[331060]]

本文經(jīng)AI新媒體量子位(公眾號ID:QbitAI)授權(quán)轉(zhuǎn)載,轉(zhuǎn)載請聯(lián)系出處。

你想學(xué)機器學(xué)習(xí)嗎?這里有一個入門貼適合你。

什么神經(jīng)網(wǎng)絡(luò)、隨機森林、計算機視覺通通一網(wǎng)打盡。

這個Facebook軟件工程師做了一個入門貼。

專為基礎(chǔ)為零的初學(xué)者打造。

有基礎(chǔ)的同學(xué),也可以來看看加深一下理解。

神經(jīng)網(wǎng)絡(luò)原來這么簡單,機器學(xué)習(xí)入門貼送給你 | 干貨

我們就以神經(jīng)網(wǎng)絡(luò)為例先來一睹為快吧!

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

作者說,神經(jīng)網(wǎng)絡(luò)并不復(fù)雜!

“神經(jīng)網(wǎng)絡(luò)”一詞很流行,人們通常認(rèn)為它很難,但其實要簡單得多。

是不是這樣呢?先看再說。

神經(jīng)網(wǎng)絡(luò)的理解主要分為三個部分,神經(jīng)元、神經(jīng)網(wǎng)絡(luò)的構(gòu)建、訓(xùn)練神經(jīng)網(wǎng)絡(luò)。

神經(jīng)元——神經(jīng)網(wǎng)絡(luò)的基本單元

 

神經(jīng)網(wǎng)絡(luò)原來這么簡單,機器學(xué)習(xí)入門貼送給你 | 干貨

 

這是2-input神經(jīng)元的樣子。

首先神經(jīng)元接受輸入x1、x2,進(jìn)行一些數(shù)學(xué)運算以后,然后產(chǎn)生一個輸出y。

在神經(jīng)元里,通常會發(fā)生三件事:

1、每個輸入乘以相應(yīng)的權(quán)重;

神經(jīng)網(wǎng)絡(luò)原來這么簡單,機器學(xué)習(xí)入門貼送給你 | 干貨

2、將所有加權(quán)輸入加在一起,在加上一個偏差b;

神經(jīng)網(wǎng)絡(luò)原來這么簡單,機器學(xué)習(xí)入門貼送給你 | 干貨

3、導(dǎo)入一個激活函數(shù),得到輸出y。

神經(jīng)網(wǎng)絡(luò)原來這么簡單,機器學(xué)習(xí)入門貼送給你 | 干貨

通常來說,激活函數(shù)使用Sigmoid函數(shù),也就是常說的S型函數(shù),輸入任意值(-∞,+∞),最后輸出都能停留在0-1之間。

神經(jīng)網(wǎng)絡(luò)原來這么簡單,機器學(xué)習(xí)入門貼送給你 | 干貨

對此,他還舉了一個簡單的例子。

以激活函數(shù)是S型函數(shù)、2輸入神經(jīng)元為例,設(shè)置參數(shù) w=[0,1] (w1=0,w2=1),b=4。

input:x=[2,3]

output:y=0.999

神經(jīng)網(wǎng)絡(luò)原來這么簡單,機器學(xué)習(xí)入門貼送給你 | 干貨

這也就是最為樸素的神經(jīng)網(wǎng)絡(luò)——前饋神經(jīng)網(wǎng)絡(luò)。

對此,作者還用Python實現(xiàn)了整個過程。

  1. import numpy as np 
  2.  
  3. def sigmoid(x): 
  4.   # Our activation function: f(x) = 1 / (1 + e^(-x)) 
  5.   return 1 / (1 + np.exp(-x)) 
  6.  
  7. class Neuron: 
  8.   def __init__(self, weights, bias): 
  9.     self.weights = weights 
  10.     self.bias = bias 
  11.  
  12.   def feedforward(self, inputs): 
  13.     # Weight inputs, add bias, then use the activation function 
  14.     total = np.dot(self.weights, inputs) + self.bias 
  15.     return sigmoid(total) 
  16.  
  17. weights = np.array([01]) # w1 = 0, w2 = 1 
  18. bias = 4                   # b = 4 
  19. n = Neuron(weights, bias) 
  20.  
  21. x = np.array([23])       # x1 = 2, x2 = 3 
  22. print(n.feedforward(x))    # 0.9990889488055994 

 構(gòu)建神經(jīng)網(wǎng)絡(luò)

神經(jīng)元連接在一起就是神經(jīng)網(wǎng)絡(luò)。

神經(jīng)網(wǎng)絡(luò)原來這么簡單,機器學(xué)習(xí)入門貼送給你 | 干貨

兩個輸入,一個含有兩個神經(jīng)元的隱藏層,一個含有1個神經(jīng)元的輸出層就構(gòu)建了一個神經(jīng)網(wǎng)絡(luò)。

需要注意的是,可以用多層隱藏層。就比如,像這樣:

神經(jīng)網(wǎng)絡(luò)原來這么簡單,機器學(xué)習(xí)入門貼送給你 | 干貨

我們?nèi)砸陨蟼€示例的條件為例。

神經(jīng)網(wǎng)絡(luò)原來這么簡單,機器學(xué)習(xí)入門貼送給你 | 干貨

一個神經(jīng)網(wǎng)絡(luò)可以包含任意數(shù)量的層和任意數(shù)量的神經(jīng)元。

以Python代碼示例如下:

  1. import numpy as np 
  2.  
  3. # ... code from previous section here 
  4.  
  5. class OurNeuralNetwork: 
  6.   ''
  7.   A neural network with: 
  8.     - 2 inputs 
  9.     - a hidden layer with 2 neurons (h1, h2) 
  10.     - an output layer with 1 neuron (o1) 
  11.   Each neuron has the same weights and bias: 
  12.     - w = [01
  13.     - b = 0 
  14.   ''
  15.   def __init__(self): 
  16.     weights = np.array([01]) 
  17.     bias = 0 
  18.  
  19.     # The Neuron class here is from the previous section 
  20.     self.h1 = Neuron(weights, bias) 
  21.     self.h2 = Neuron(weights, bias) 
  22.     self.o1 = Neuron(weights, bias) 
  23.  
  24.   def feedforward(self, x): 
  25.     out_h1 = self.h1.feedforward(x) 
  26.     out_h2 = self.h2.feedforward(x) 
  27.  
  28.     # The inputs for o1 are the outputs from h1 and h2 
  29.     out_o1 = self.o1.feedforward(np.array([out_h1, out_h2])) 
  30.  
  31.     return out_o1 
  32.  
  33. network = OurNeuralNetwork() 
  34. x = np.array([23]) 
  35. print(network.feedforward(x)) # 0.7216325609518421 

訓(xùn)練神經(jīng)網(wǎng)路——計算損失函數(shù)

假設(shè),我們正在處理以下這個項目。通過人員的體重和身高來判斷性別。

神經(jīng)網(wǎng)絡(luò)原來這么簡單,機器學(xué)習(xí)入門貼送給你 | 干貨

以weight、height作為輸入,以gender作為輸出。

神經(jīng)網(wǎng)絡(luò)原來這么簡單,機器學(xué)習(xí)入門貼送給你 | 干貨

Male設(shè)置為0,Female設(shè)置為1,還對其余數(shù)據(jù)進(jìn)行了簡化。

神經(jīng)網(wǎng)絡(luò)原來這么簡單,機器學(xué)習(xí)入門貼送給你 | 干貨

在訓(xùn)練神經(jīng)網(wǎng)絡(luò)之前,首先需要一個方法來量化它做得有多“好”,是否能夠做得“更好”,那就是損失函數(shù)(loss)。

這里,我們將使用損失函數(shù)的一種——均方誤差來計算。

神經(jīng)網(wǎng)絡(luò)原來這么簡單,機器學(xué)習(xí)入門貼送給你 | 干貨

預(yù)測結(jié)果越好,說明損失也就會越低。而訓(xùn)練神經(jīng)網(wǎng)絡(luò)的目的,就在于盡可能的減少損失。

如果我們確信所有的人都是Male,也就是說預(yù)測值為0,會出現(xiàn)什么樣的結(jié)果?

神經(jīng)網(wǎng)絡(luò)原來這么簡單,機器學(xué)習(xí)入門貼送給你 | 干貨

Python示例:

  1. import numpy as np 
  2.  
  3. def mse_loss(y_true, y_pred): 
  4.   # y_true and y_pred are numpy arrays of the same length. 
  5.   return ((y_true - y_pred) ** 2).mean() 
  6.  
  7. y_true = np.array([1001]) 
  8. y_pred = np.array([0000]) 
  9.  
  10. print(mse_loss(y_true, y_pred)) # 0.5 

訓(xùn)練神經(jīng)網(wǎng)絡(luò)——最小化損失

計算了損失函數(shù)之后,就需要將損失最小化,這也是訓(xùn)練神經(jīng)網(wǎng)絡(luò)的最終目的所在。

接下來帖子有一段多變量演算,涉及微積分。

作者表示,

如果對微積分不滿意,可隨時跳過。

簡單起見,我們就假設(shè)這個數(shù)據(jù)集中只有Alice。

那么,它的損失函數(shù)就是這樣。

神經(jīng)網(wǎng)絡(luò)原來這么簡單,機器學(xué)習(xí)入門貼送給你 | 干貨

那么它的權(quán)重w跟偏差b,在圖上標(biāo)示,那么就有6個權(quán)重變量,3個偏差變量。

神經(jīng)網(wǎng)絡(luò)原來這么簡單,機器學(xué)習(xí)入門貼送給你 | 干貨

于是,便將損失函數(shù)寫為多變量函數(shù)。

神經(jīng)網(wǎng)絡(luò)原來這么簡單,機器學(xué)習(xí)入門貼送給你 | 干貨

想象一下,我們只要調(diào)整w1,就可能導(dǎo)致L的變化。那具體是如何變化的呢?這就需要計算偏導(dǎo)數(shù)了。

神經(jīng)網(wǎng)絡(luò)原來這么簡單,機器學(xué)習(xí)入門貼送給你 | 干貨

利用鏈?zhǔn)角髮?dǎo)法則進(jìn)行反向求導(dǎo),而這一過程就叫做反向傳播。

詳細(xì)計算過程就不放在這里了,大家去他個人網(wǎng)站去看哦~(鏈接已附文末)

作者溫馨提示,看這個過程的時候不要著急,拿出手中的筆和紙,能夠幫助你理解。

接下來,使用隨機梯度下降的優(yōu)化算法,公式表示如下(以w1為例):

神經(jīng)網(wǎng)絡(luò)原來這么簡單,機器學(xué)習(xí)入門貼送給你 | 干貨

其中的“學(xué)習(xí)速率”控制著訓(xùn)練速度,過大或者過小都不合適。

如果我們將所有的變量都進(jìn)行這樣的優(yōu)化,那么損失函數(shù)將逐漸減少,神經(jīng)網(wǎng)絡(luò)就能夠得到改善。

神經(jīng)網(wǎng)絡(luò)原來這么簡單,機器學(xué)習(xí)入門貼送給你 | 干貨

簡單來說,整個訓(xùn)練過程是這樣的:

1、數(shù)據(jù)集中選擇一個樣本,就如Alice。

2、利用反向傳播計算所有變量的偏導(dǎo)數(shù)。

3、使用隨機梯度下降來訓(xùn)練神經(jīng)網(wǎng)絡(luò),更新變量。

4、返回步驟1。

神經(jīng)網(wǎng)絡(luò)的部分就介紹到這里,怎么樣?看完之后,有什么感想?

是不是覺得神經(jīng)網(wǎng)絡(luò)也還好了。還有其他概念等著你來學(xué)習(xí)呢!

 

責(zé)任編輯:張燕妮 來源: 量子位
相關(guān)推薦

2017-03-10 12:16:46

機器學(xué)習(xí)

2017-08-28 21:02:55

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

2016-12-27 14:24:57

課程筆記神經(jīng)網(wǎng)絡(luò)

2023-04-19 10:17:35

機器學(xué)習(xí)深度學(xué)習(xí)

2018-10-18 10:27:15

機器學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)python

2024-12-13 09:11:12

2021-04-19 05:42:51

Mmap文件系統(tǒng)

2022-02-15 23:38:22

Python機器學(xué)習(xí)算法

2025-02-24 08:00:00

機器學(xué)習(xí)ML架構(gòu)

2018-01-17 09:32:45

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

2020-12-25 10:08:53

Python機器學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)算法

2023-11-01 14:49:07

2020-10-20 09:45:23

神經(jīng)網(wǎng)絡(luò)數(shù)據(jù)圖形

2020-08-06 10:11:13

神經(jīng)網(wǎng)絡(luò)機器學(xué)習(xí)算法

2017-08-04 14:23:04

機器學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)TensorFlow

2020-11-02 14:38:56

Java 深度學(xué)習(xí)模型

2017-07-27 10:46:44

神經(jīng)網(wǎng)絡(luò)機器學(xué)習(xí)強化學(xué)習(xí)

2021-01-18 14:38:53

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

2023-11-15 16:12:41

人工智能機器學(xué)習(xí)深度學(xué)習(xí)

2020-09-24 06:44:54

HTTPS網(wǎng)站 HTTP
點贊
收藏

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