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

神經(jīng)網(wǎng)絡(luò)求解新思路:OpenAI用線性網(wǎng)絡(luò)計(jì)算非線性問(wèn)題

人工智能 深度學(xué)習(xí)
我們展示了深度線性網(wǎng)絡(luò)(使用浮點(diǎn)運(yùn)算實(shí)現(xiàn))實(shí)際上并不是線性的,它可以執(zhí)行非線性計(jì)算。我們利用這一點(diǎn)使用進(jìn)化策略在線性網(wǎng)絡(luò)中尋找參數(shù),使我們能夠解決重要問(wèn)題。

[[205570]]

我們展示了深度線性網(wǎng)絡(luò)(使用浮點(diǎn)運(yùn)算實(shí)現(xiàn))實(shí)際上并不是線性的,它可以執(zhí)行非線性計(jì)算。我們利用這一點(diǎn)使用進(jìn)化策略在線性網(wǎng)絡(luò)中尋找參數(shù),使我們能夠解決重要問(wèn)題。

神經(jīng)網(wǎng)絡(luò)通常由一個(gè)線性層和非線性函數(shù)(比如 tanh 和修正線性單元 ReLU)堆棧而成。如果沒(méi)有非線性,理論上一連串的線性層和單一的線性層在數(shù)學(xué)上是等價(jià)的。因此浮點(diǎn)運(yùn)算是非線性的,并足以訓(xùn)練深度網(wǎng)絡(luò)。這很令人驚訝。

背景

計(jì)算機(jī)使用的數(shù)字并不是***的數(shù)學(xué)對(duì)象,而是使用有限個(gè)比特的近似表示。浮點(diǎn)數(shù)通常被計(jì)算機(jī)用于表示數(shù)學(xué)對(duì)象。每一個(gè)浮點(diǎn)數(shù)由小數(shù)和指數(shù)的組合構(gòu)成。在 IEEE 的 float32 標(biāo)準(zhǔn)中,小數(shù)分配了 23 個(gè)比特,指數(shù)分配了 8 個(gè)比特,還有一個(gè)比特是表示正負(fù)的符號(hào)位 sign。

按照這種慣例和二進(jìn)制格式,以二進(jìn)制表示的最小非零正常數(shù)是 1.0..0 x 2^-126,以下用 min 來(lái)指代。而下一個(gè)可表示的數(shù)是 1.0..01 x 2^-126,可以寫(xiě)作 min+0.0..01 x 2^-126。很顯然,***和第二個(gè)數(shù)之間的 gap 比 0 和 min 之間的 gap 小了 2^20 倍。在 float32 標(biāo)準(zhǔn)中,當(dāng)一個(gè)數(shù)比最小的可表示數(shù)還小的時(shí)候,則該數(shù)字將被映射為零。因此,近鄰零的所有包含浮點(diǎn)數(shù)的計(jì)算都將是非線性的。(而反常數(shù)是例外,它們?cè)谝恍┯?jì)算硬件上可能不可用。在我們的案例中通過(guò)設(shè)置歸零(flush to zero,F(xiàn)TZ)解決這個(gè)問(wèn)題,即將所有的反常數(shù)當(dāng)成零。)

因此,雖然通常情況下,所有的數(shù)字和其浮點(diǎn)數(shù)表示之間的區(qū)別很小,但是在零附近會(huì)出現(xiàn)很大的 gap,而這個(gè)近似誤差可能帶來(lái)很大影響。

這會(huì)導(dǎo)致一些奇怪的影響,一些常用的數(shù)學(xué)規(guī)則無(wú)法發(fā)揮作用。比如,(a + b) x c 不等于 a x c + b x c。

比如,如果你設(shè)置 a = 0.4 x min,b = 0.5 x min,c = 1 / min。

則:(a+b) x c = (0.4 x min + 0.5 x min) x 1 / min = (0 + 0) x 1 / min = 0。

然而:(a x c) + (b x c) = 0.4 x min / min + 0.5 x min x 1 / min = 0.9。

再比如,我們可以設(shè)置 a = 2.5 x min,b = -1.6 x min,c = 1 x min。

則:(a+b) + c = (0) + 1 x min = min

然而:(b+c) + a = (0 x min) + 2.5 x min = 2.5 x min。

在這種小尺度的情況下,基礎(chǔ)的加法運(yùn)算變成非線性的了!

使用進(jìn)化策略利用非線性

我們想知道這種內(nèi)在非線性是否可以作為計(jì)算非線性的方法,如果可以,則深度線性網(wǎng)絡(luò)能夠執(zhí)行非線性運(yùn)算。挑戰(zhàn)在于現(xiàn)代微分庫(kù)在非線性尺度較小時(shí)會(huì)忽略它們。因此,使用反向傳播利用非線性訓(xùn)練神經(jīng)網(wǎng)絡(luò)很困難或不可能。

我們可以使用進(jìn)化策略(ES),無(wú)需依賴符號(hào)微分(symbolic differentiation)法就可以評(píng)估梯度。使用進(jìn)化策略,我們可以將 float32 的零點(diǎn)鄰域(near-zero)行為作為計(jì)算非線性的方法。深度線性網(wǎng)絡(luò)通過(guò)反向傳播在 MNIST 數(shù)據(jù)集上訓(xùn)練時(shí),可獲取 94% 的訓(xùn)練準(zhǔn)確率和 92% 的測(cè)試準(zhǔn)確率(機(jī)器之心使用三層全連接網(wǎng)絡(luò)可獲得 98.51% 的測(cè)試準(zhǔn)確率)。相對(duì)而言,相同的線性網(wǎng)絡(luò)使用進(jìn)化策略訓(xùn)練可獲取大于 99% 的訓(xùn)練準(zhǔn)確率、96.7% 的測(cè)試準(zhǔn)確率,確保激活值足夠小而分布在 float32 的非線性區(qū)間內(nèi)。訓(xùn)練性能的提升原因在于在 float32 表征中使用非線性的進(jìn)化策略。這些強(qiáng)大的非線性允許任意層生成新的特征,這些特征是低級(jí)別特征的非線性組合。以下是網(wǎng)絡(luò)結(jié)構(gòu):

  1. x = tf . placeholder ( dtype = tf . float32 , shape =[ batch_size , 784 ]) 
  2.  
  3. y = tf . placeholder ( dtype = tf . float32 , shape =[ batch_size , 10 ]) 
  4.  
  5. w1 = tf . Variable ( np . random . normal ( scale = np . sqrt ( 2. / 784 ), size =[ 784 , 512 ]). astype ( np . float32 )) 
  6.  
  7. b1 = tf . Variable ( np . zeros ( 512 , dtype = np . float32 )) 
  8.  
  9. w2 = tf . Variable ( np . random . normal ( scale = np . sqrt ( 2. / 512 ), size =[ 512 , 512 ]). astype ( np . float32 )) 
  10.  
  11. b2 = tf . Variable ( np . zeros ( 512 , dtype = np . float32 )) 
  12.  
  13. w3 = tf . Variable ( np . random . normal ( scale = np . sqrt ( 2. / 512 ), size =[ 512 , 10 ]). astype ( np . float32 )) 
  14.  
  15. b3 = tf . Variable ( np . zeros ( 10 , dtype = np . float32 )) 
  16.  
  17. params = [ w1 , b1 , w2 , b2 , w3 , b3 ] 
  18.  
  19. nr_params = sum ([ np . prod ( p . get_shape (). as_list ()) for p in params ]) 
  20.  
  21. scaling = 2 ** 125 
  22.  
  23. def get_logits ( par ): 
  24.  
  25. h1 = tf . nn . bias_add ( tf . matmul ( x , par [ 0 ]), par [ 1 ]) / scaling 
  26.  
  27. h2 = tf . nn . bias_add ( tf . matmul ( h1 , par [ 2 ]) , par [ 3 ] / scaling ) 
  28.  
  29. o = tf . nn . bias_add ( tf . matmul ( h2 , par [ 4 ]), par [ 5 ]/ scaling )* scaling 
  30.  
  31. return o 

在上面的代碼中,我們可以看出該網(wǎng)絡(luò)一共 4 層,***層為 784(28*28)個(gè)輸入神經(jīng)元,這個(gè)數(shù)量必須和 MNIST 數(shù)據(jù)集中單張圖片所包含像素點(diǎn)數(shù)相同。第二層與第三層都為隱藏層且每層有 512 個(gè)神經(jīng)元,***一層為輸出的 10 個(gè)分類類別。其中每?jī)蓪又g的全連接權(quán)重為服從正態(tài)分布的隨機(jī)初始化值。nr_params 為加和所有參數(shù)的累乘。下面定義一個(gè) get_logist() 函數(shù),該函數(shù)的輸入變量 par 應(yīng)該可以是上面定義的 nr_params,因?yàn)槎x添加偏置項(xiàng)的索引為 1、3、5,這個(gè)正好和前面定義的 nr_params 相符,但 OpenAI并沒(méi)有給出該函數(shù)的調(diào)用過(guò)程。該函數(shù)***個(gè)表達(dá)式計(jì)算***層和第二層之間的前向傳播結(jié)果,即計(jì)算輸入 x 與 w1 之間的乘積再加上縮放后的偏置項(xiàng)(前面 b1、b2、b3 都定義為零向量)。后面兩步的計(jì)算也基本相似,***返回的 o 應(yīng)該是圖片識(shí)別的類別。不過(guò) OpenAI 只給出了網(wǎng)絡(luò)架構(gòu),而并沒(méi)有給出優(yōu)化方法和損失函數(shù)等內(nèi)容。

責(zé)任編輯:武曉燕 來(lái)源: 36大數(shù)據(jù)
相關(guān)推薦

2024-07-10 11:09:35

2024-07-02 12:16:30

2017-03-10 12:16:46

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

2018-04-23 16:27:27

線性網(wǎng)絡(luò)語(yǔ)音合成自適應(yīng)

2022-02-15 23:38:22

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

2024-11-07 08:26:31

神經(jīng)網(wǎng)絡(luò)激活函數(shù)信號(hào)

2021-07-13 09:36:26

神經(jīng)網(wǎng)絡(luò)PyTorch框架

2022-07-06 13:13:36

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

2018-07-03 16:10:04

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

2020-10-21 14:52:00

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

2009-01-11 10:27:00

小型辦公室網(wǎng)絡(luò)組建

2020-03-26 09:00:00

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

2023-12-27 14:17:11

深度學(xué)習(xí)人工智能激活函數(shù)

2017-05-31 12:59:44

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

2019-10-29 08:50:31

深度學(xué)習(xí)編程人工智能

2022-06-14 13:55:30

模型訓(xùn)練網(wǎng)絡(luò)

2020-05-27 11:10:54

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

2021-02-07 09:40:19

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

2017-05-04 18:30:34

大數(shù)據(jù)卷積神經(jīng)網(wǎng)絡(luò)

2022-04-07 09:01:52

神經(jīng)網(wǎng)絡(luò)人工智能
點(diǎn)贊
收藏

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