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

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

2

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

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

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

本文為 AI 研習社編譯的技術博客,原標題 :

Deep Dive into Math Behind Deep Networks

作者 |  Piotr Skalski

翻譯 | 灰灰在學習、Disillusion

校對 | 醬番梨        整理 | 菠蘿妹

原文鏈接:l

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


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

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

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


  介紹

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

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

圖1.訓練集的可視化

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

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

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


  KERAS的解決方法

首先,我們用最流行的機器學習庫之一——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)

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

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

 圖3.對訓練合適的類進行可視化展示


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

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


單個神經(jīng)元

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

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

單個層

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

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

 圖5,單個層

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

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

為清楚起見,讓我們寫下如第二層的方程式:

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

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

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

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

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

多個矢量化例子

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

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


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

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

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

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

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


  損失功能

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

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

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

圖7.學習過程中精確值和損失值的變化


  神經(jīng)網(wǎng)絡是如何學習?

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

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

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

圖8.實際中的梯度下降


  反向傳播

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

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

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

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

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

 圖9.前向和后向傳播


  結論

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

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


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

長按鏈接點擊打開或點擊【深度網(wǎng)絡揭秘之深度網(wǎng)絡背后的數(shù)學】:

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


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

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

如何將深度學習應用于無人機圖像的目標檢測

機器學習和深度學習大PK!昆蟲分類誰更強?

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

等你來譯:

五個很厲害的 CNN 架構 

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

如何在神經(jīng)NLP處理中引用語義結構 

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


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

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

分享:
相關文章

知情人士

AI研習社(yanxishe.com)譯站頻道,傳播前沿人工智能知識,讓語言不再成為學習知識的門檻。(原雷鋒字幕組)
當月熱門文章
最新文章
請?zhí)顚懮暾埲速Y料
姓名
電話
郵箱
微信號
作品鏈接
個人簡介
為了您的賬戶安全,請驗證郵箱
您的郵箱還未驗證,完成可獲20積分喲!
請驗證您的郵箱
立即驗證
完善賬號信息
您的賬號已經(jīng)綁定,現(xiàn)在您可以設置密碼以方便用郵箱登錄
立即設置 以后再說