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

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

2

深度網(wǎng)絡(luò)揭秘之深度網(wǎng)絡(luò)背后的數(shù)學(xué)

本文作者: AI研習(xí)社-譯站 2018-12-05 10:25
導(dǎo)語(yǔ):了解更多的神經(jīng)網(wǎng)絡(luò)的工作原理。

深度網(wǎng)絡(luò)揭秘之深度網(wǎng)絡(luò)背后的數(shù)學(xué)

本文為 AI 研習(xí)社編譯的技術(shù)博客,原標(biāo)題 :

Deep Dive into Math Behind Deep Networks

作者 |  Piotr Skalski

翻譯 | 灰灰在學(xué)習(xí)、Disillusion

校對(duì) | 醬番梨        整理 | 菠蘿妹

原文鏈接:l

https://towardsdatascience.com/https-medium-com-piotr-skalski92-deep-dive-into-deep-networks-math-17660bc376ba


  神秘的神經(jīng)網(wǎng)絡(luò)第一部分

如今,我們擁有許多高級(jí)的,特殊的庫(kù)與框架,比如 Keras,TensorFlow或者PyTorch,也不再總需要擔(dān)心權(quán)重矩陣的大小,更不需要記住我們決定使用的激活函數(shù)導(dǎo)數(shù)的公式。通常我們只需要盡力一個(gè)神經(jīng)網(wǎng)絡(luò),即使是一個(gè)結(jié)構(gòu)非常復(fù)雜的神經(jīng)網(wǎng)絡(luò),也只需要導(dǎo)入和幾行代碼就可以完成了。這節(jié)省了我們搜索漏洞的時(shí)間并簡(jiǎn)化了我們的工作。但是,對(duì)于神經(jīng)網(wǎng)絡(luò)的深入了解對(duì)我們完成在構(gòu)架選擇,或者超參數(shù)的調(diào)整或優(yōu)化的任務(wù)上有著很大的幫助。

注意:感謝Jung Yi Lin 的幫助,你也可以閱讀中文版的這篇文章。我在GitHub上提供了用于創(chuàng)建本文中使用的可視化的源代碼。


  介紹

了解更多的神經(jīng)網(wǎng)絡(luò)的工作原理。我決定在今年夏天抽出點(diǎn)時(shí)間深入的學(xué)習(xí)一下數(shù)學(xué)。我也打算寫(xiě)一篇關(guān)于最新的學(xué)習(xí)咨詢(xún)的文章,以便幫助別人理解一些生澀難懂的概念。我編寫(xiě)的這篇文章會(huì)對(duì)那些不太擅長(zhǎng)線性代數(shù)和微積分的人十分友好,但就像標(biāo)題所暗示的,這將是一篇與數(shù)學(xué)密切相關(guān)的文章。

深度網(wǎng)絡(luò)揭秘之深度網(wǎng)絡(luò)背后的數(shù)學(xué)

圖1.訓(xùn)練集的可視化

舉一個(gè)例子:我們將解決確定二進(jìn)制分類(lèi)數(shù)據(jù)集問(wèn)題,如下面圖一所示。如果兩個(gè)類(lèi)不同那就會(huì)形成兩個(gè)圓圈——這種設(shè)置非常不方便在許多傳統(tǒng)的ML算法中,但是再一些小型神經(jīng)網(wǎng)絡(luò)中卻可以有很好的效果。為了解決這個(gè)問(wèn)題,我們將使用具有圖二結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò)——5個(gè)具有不同數(shù)量單位的全連接層。對(duì)于隱藏層,我們將使用relu作為其激活函數(shù),而將Sigmod作為輸出層。這是相當(dāng)簡(jiǎn)單的一種構(gòu)造,而不是復(fù)雜到足以成為一個(gè)需要我們深思熟慮的一個(gè)例子。

深度網(wǎng)絡(luò)揭秘之深度網(wǎng)絡(luò)背后的數(shù)學(xué)

 圖2.神經(jīng)網(wǎng)絡(luò)架構(gòu)


  KERAS的解決方法

首先,我們用最流行的機(jī)器學(xué)習(xí)庫(kù)之一——KERAS提出了第一種解決方法。

from keras.models import Sequential
from keras.layers import Dense

model = Sequential()
model.add(Dense(4, input_dim=2,activation='relu'))
model.add(Dense(6, activation='relu'))
model.add(Dense(6, activation='relu'))
model.add(Dense(4, activation='relu'))
model.add(Dense(1, activation='sigmoid'))

model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
model.fit(X_train, y_train, epochs=50, verbose=0)

就像這樣。正如我在介紹中提到的,一些導(dǎo)入加幾行代碼就足以創(chuàng)建并且訓(xùn)練一個(gè)能夠?qū)ξ覀兊臏y(cè)試集中的樣本進(jìn)行幾乎100%分類(lèi)的模型了。我們的任務(wù)歸根結(jié)底就是根據(jù)設(shè)定超參數(shù)(層數(shù),層中神經(jīng)元數(shù),激活函數(shù)或時(shí)期數(shù))選擇神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)?,F(xiàn)在讓我們看一看訓(xùn)練背后的過(guò)程。哦......我在學(xué)習(xí)過(guò)程中創(chuàng)建了一個(gè)很酷的可視化界面。希望你看了以后不會(huì)難以入睡。

深度網(wǎng)絡(luò)揭秘之深度網(wǎng)絡(luò)背后的數(shù)學(xué)

 圖3.對(duì)訓(xùn)練合適的類(lèi)進(jìn)行可視化展示


  什么是神經(jīng)網(wǎng)絡(luò)?

讓我們先回答一個(gè)問(wèn)題:什么是神經(jīng)網(wǎng)絡(luò)?它是一種生物學(xué)啟發(fā)的構(gòu)建計(jì)算機(jī)程序的方法,能夠?qū)W習(xí)和獨(dú)立地找到數(shù)據(jù)中的連接。正如圖二所展示的。網(wǎng)絡(luò)是層疊排列的軟件“神經(jīng)元”的集合,他們以允許通信的方式連在一起。


單個(gè)神經(jīng)元

每個(gè)神經(jīng)元接收一組x值(編號(hào)從1到n)作為輸入并計(jì)算預(yù)測(cè)的y^值。向量X是訓(xùn)練集中m個(gè)樣本之一的特征值的量化。更重要的是每個(gè)單元都有自己的一組參數(shù),通常要用到在學(xué)習(xí)過(guò)程中不斷變化的w(權(quán)重列向量)和b(偏差值),在每次迭代中神經(jīng)元計(jì)算向量x的值的加權(quán)平均值,基于其當(dāng)前的權(quán)重向量w并加上偏差,最后,該計(jì)算的結(jié)果通過(guò)非線性激活函數(shù)g()。我將在以后的部分中提及一些關(guān)于最流行的激活函數(shù)。

深度網(wǎng)絡(luò)揭秘之深度網(wǎng)絡(luò)背后的數(shù)學(xué)

單個(gè)層

現(xiàn)在讓我們往小的地方看,考慮如何對(duì)整個(gè)神經(jīng)網(wǎng)絡(luò)層進(jìn)行計(jì)算。我們將運(yùn)用我們所知的在單個(gè)神經(jīng)元內(nèi)部的原理,矢量化整個(gè)層,將這些計(jì)算結(jié)合到矩陣方程中。方程式將會(huì)被編寫(xiě)在選擇層中,為了統(tǒng)一符號(hào)[l]。順便說(shuō)一下,下標(biāo)i標(biāo)記該層中神經(jīng)元的索引。

深度網(wǎng)絡(luò)揭秘之深度網(wǎng)絡(luò)背后的數(shù)學(xué)

 圖5,單個(gè)層

一個(gè)更重要的評(píng)價(jià):當(dāng)我們?yōu)橐粋€(gè)單個(gè)單元編寫(xiě)方程時(shí),我們使用x和y^,它們分別是特征值的列向量和預(yù)測(cè)值,當(dāng)我們切換到圖層的一般表示法時(shí),我們使用向量a - 該向量可以激活相應(yīng)的層。因此,x向量就可以激活層0——輸入層,每個(gè)神經(jīng)元都執(zhí)行者如下所類(lèi)似的計(jì)算:

深度網(wǎng)絡(luò)揭秘之深度網(wǎng)絡(luò)背后的數(shù)學(xué)

為清楚起見(jiàn),讓我們寫(xiě)下如第二層的方程式:

深度網(wǎng)絡(luò)揭秘之深度網(wǎng)絡(luò)背后的數(shù)學(xué)

正如你所看到的,對(duì)于每個(gè)層,我們必須執(zhí)行許多非常類(lèi)似的操作,因此其實(shí)for循環(huán)在此使用效率并不高,所以我們將其矢量化以加快運(yùn)算,首先,我們將向量水平堆疊成一個(gè)N*1的向量。

我們將每個(gè)權(quán)重w進(jìn)行轉(zhuǎn)置以形成舉證W,類(lèi)似地,我們將層中的每個(gè)神經(jīng)元的偏差堆疊在一起,從而創(chuàng)建垂直向量b,現(xiàn)在沒(méi)有什么可以阻止我們構(gòu)建一個(gè)矩陣方程,它可以使我們一次對(duì)層的所有神經(jīng)元進(jìn)行計(jì)算。讓我們寫(xiě)下我們使用的矩陣和向量的維數(shù)。

深度網(wǎng)絡(luò)揭秘之深度網(wǎng)絡(luò)背后的數(shù)學(xué)

深度網(wǎng)絡(luò)揭秘之深度網(wǎng)絡(luò)背后的數(shù)學(xué)

多個(gè)矢量化例子

這個(gè)我們?cè)O(shè)置的方程式目前為止只包含一個(gè)例子。在神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)過(guò)程中,你通常使用大量數(shù)據(jù),最多可達(dá)數(shù)百萬(wàn)條。因此,下一步將是矢量化多個(gè)例子。假設(shè)我們的數(shù)據(jù)集中有m個(gè)條目,每個(gè)條目都有nx個(gè)特征,首先,我們將每層的垂直向量x,a和z組合在一起,分別創(chuàng)建X,A和Z矩陣。然后我們重寫(xiě)先前布局的方程式,同時(shí)考慮新創(chuàng)建的矩陣。

深度網(wǎng)絡(luò)揭秘之深度網(wǎng)絡(luò)背后的數(shù)學(xué)


  什么是激活函數(shù),我們又為什么需要它呢?

激活函數(shù)是神經(jīng)網(wǎng)絡(luò)的關(guān)鍵元素之一,如果缺失了他們,那么我們的神經(jīng)網(wǎng)絡(luò)就只剩下線性函數(shù)的組成了。所以神經(jīng)網(wǎng)絡(luò)將直接成為一個(gè)線性函數(shù)。我們的模型也將缺失多樣的擴(kuò)展性,導(dǎo)致其甚至連邏輯回歸都不如。

非線性的元素使得復(fù)雜的函數(shù)在學(xué)習(xí)過(guò)程中具有更好的靈活性和可塑性。我們選擇激活函數(shù)的主要原因是,它能對(duì)學(xué)習(xí)速度有著重大影響,圖6顯示了一些常用的激活函數(shù)。目前,最受歡迎的隱藏層應(yīng)該是ReLU函數(shù),但是我們有時(shí)仍然會(huì)使用sigmoid,尤其是在輸出層。當(dāng)我們處理二進(jìn)制分類(lèi)時(shí),我們希望模型返回的值在0到1的范圍內(nèi)。

深度網(wǎng)絡(luò)揭秘之深度網(wǎng)絡(luò)背后的數(shù)學(xué)

圖6.最流行的激活函數(shù)及其衍生物的圖


  損失功能

促進(jìn)深度學(xué)習(xí)的發(fā)展進(jìn)程的基石可以說(shuō)就是損失的值。一般來(lái)說(shuō),損失函數(shù)就是表示的我們理想值與現(xiàn)實(shí)值之間的差距。在我們的例子中,我們使用二進(jìn)制交叉熵,但根據(jù)問(wèn)題,我們還可以用不同的函數(shù)。我們使用的函數(shù)由以下公式表示,在圖7中可以看到學(xué)習(xí)過(guò)程中其價(jià)值的變化。它顯示了每次迭代時(shí)損失函數(shù)的值是如何減小同時(shí)使精確值增加。

深度網(wǎng)絡(luò)揭秘之深度網(wǎng)絡(luò)背后的數(shù)學(xué)

深度網(wǎng)絡(luò)揭秘之深度網(wǎng)絡(luò)背后的數(shù)學(xué)

圖7.學(xué)習(xí)過(guò)程中精確值和損失值的變化


  神經(jīng)網(wǎng)絡(luò)是如何學(xué)習(xí)?

學(xué)習(xí)過(guò)程其實(shí)就是最小化損失值,通過(guò)改變W和參數(shù)的值。為了達(dá)到這個(gè)目標(biāo),我們從使用積分和梯度下降法去找到一個(gè)可以使loss值最小的函數(shù)。在每次迭代中我們將計(jì)算神經(jīng)網(wǎng)絡(luò)的每一部分的損失函數(shù)的偏導(dǎo)數(shù)的值。對(duì)于那些不太擅長(zhǎng)這種計(jì)算的人,我就簡(jiǎn)單的說(shuō),導(dǎo)數(shù)具有很好的描述函數(shù)斜率的能力。由于我們知道如何改變變量使其在圖表中向下移動(dòng)。

為了形成關(guān)于梯度下降如何工作的直觀理解(再次引起你的注意)我準(zhǔn)備了一個(gè)小的可視化示意圖。你可以看到我們從隨機(jī)點(diǎn)走向最低點(diǎn)的每一步。在我們的神經(jīng)網(wǎng)絡(luò)中它以同樣的方式工作——每次迭代的梯度都向我們展示了我們應(yīng)該移動(dòng)的方向。最主要的不同點(diǎn)是在我們的示范神經(jīng)網(wǎng)絡(luò),我們有更多的參數(shù)需要考慮。但是...我們又如何計(jì)算這些全導(dǎo)數(shù)呢?

深度網(wǎng)絡(luò)揭秘之深度網(wǎng)絡(luò)背后的數(shù)學(xué)

圖8.實(shí)際中的梯度下降


  反向傳播

正如我們所需要的,反向傳播是一種可以讓我們計(jì)算非常復(fù)雜的梯度的算法,我們可以根據(jù)以下公式調(diào)整神經(jīng)網(wǎng)絡(luò)的參數(shù)。

深度網(wǎng)絡(luò)揭秘之深度網(wǎng)絡(luò)背后的數(shù)學(xué)

在上面的等式中,α表示學(xué)習(xí)率 —— 一個(gè)超參數(shù),可以使你控制調(diào)整表現(xiàn)的參數(shù)。選擇學(xué)習(xí)率至關(guān)重要 —— 如果我們通常將其設(shè)置得太低。我們的神經(jīng)網(wǎng)絡(luò)將非常緩慢地學(xué)習(xí);如果我們?cè)O(shè)置得太高,我們無(wú)法達(dá)到最低限度。關(guān)于W和b的損失函數(shù)的偏導(dǎo)數(shù)dW和db,我們使用鏈?zhǔn)椒椒ㄟM(jìn)行計(jì)算。dW和db矩陣的大小與W的大小相同。圖9顯示了神經(jīng)網(wǎng)絡(luò)中的操作順序。我們清楚地看到前向和后向傳播如何一起工作以?xún)?yōu)化損失函數(shù)。

深度網(wǎng)絡(luò)揭秘之深度網(wǎng)絡(luò)背后的數(shù)學(xué)

深度網(wǎng)絡(luò)揭秘之深度網(wǎng)絡(luò)背后的數(shù)學(xué)

 圖9.前向和后向傳播


  結(jié)論

希望我已經(jīng)解釋了在神經(jīng)網(wǎng)絡(luò)中發(fā)生的數(shù)學(xué)。在使用神經(jīng)網(wǎng)絡(luò)時(shí),至少基本了解這個(gè)過(guò)程是非常有用的。我認(rèn)為我提到的這些事情是最重要的,但它們僅僅是冰山一角。我強(qiáng)烈建議你嘗試自己編寫(xiě)這樣一個(gè)小的神經(jīng)網(wǎng)絡(luò),不使用高級(jí)框架,只使用Numpy。

如果你成功讀到這里,恭喜你。這肯定不是一篇很簡(jiǎn)單的文章。如果你喜歡本文,請(qǐng)?jiān)赥witter和Medium上關(guān)注我,并查看我正在進(jìn)行的其他項(xiàng)目,如GitHub和Kaggle。本文是“神經(jīng)網(wǎng)絡(luò)的奧秘”系列文章的第二篇,如果你還沒(méi)有機(jī)會(huì)閱讀其他文章。保持好奇!雷鋒網(wǎng)


想要繼續(xù)查看該篇文章相關(guān)鏈接和參考文獻(xiàn)?雷鋒網(wǎng)

長(zhǎng)按鏈接點(diǎn)擊打開(kāi)或點(diǎn)擊【深度網(wǎng)絡(luò)揭秘之深度網(wǎng)絡(luò)背后的數(shù)學(xué)】:

https://ai.yanxishe.com/page/TextTranslation/1161


AI研習(xí)社每日更新精彩內(nèi)容,觀看更多精彩內(nèi)容:雷鋒網(wǎng)

用Python實(shí)現(xiàn)遺傳算法

如何將深度學(xué)習(xí)應(yīng)用于無(wú)人機(jī)圖像的目標(biāo)檢測(cè)

機(jī)器學(xué)習(xí)和深度學(xué)習(xí)大PK!昆蟲(chóng)分類(lèi)誰(shuí)更強(qiáng)?

Python高級(jí)技巧:用一行代碼減少一半內(nèi)存占用

等你來(lái)譯:

五個(gè)很厲害的 CNN 架構(gòu) 

狀態(tài)估計(jì):卡爾曼濾波器 

如何在神經(jīng)NLP處理中引用語(yǔ)義結(jié)構(gòu) 

讓神經(jīng)網(wǎng)絡(luò)說(shuō)“我不知道”——用Pyro/PyTorch實(shí)現(xiàn)貝葉斯神經(jīng)網(wǎng)絡(luò)


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

深度網(wǎng)絡(luò)揭秘之深度網(wǎng)絡(luò)背后的數(shù)學(xué)

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

知情人士

AI研習(xí)社(yanxishe.com)譯站頻道,傳播前沿人工智能知識(shí),讓語(yǔ)言不再成為學(xué)習(xí)知識(shí)的門(mén)檻。(原雷鋒字幕組)
當(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ō)