一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀(guān)看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

解析深度網(wǎng)絡(luò)背后的數(shù)學(xué)以及解析這背后的原理

電子工程師 ? 來(lái)源:未知 ? 作者:李倩 ? 2018-08-24 09:31 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

【導(dǎo)讀】為了更好地理解神經(jīng)網(wǎng)絡(luò)的運(yùn)作,今天只為大家解讀神經(jīng)網(wǎng)絡(luò)背后的數(shù)學(xué)原理。而作者寫(xiě)這篇文章的目的一個(gè)是為了整理自己學(xué)到的知識(shí);第二個(gè)目的也是為了分享給大家,如果學(xué)習(xí)時(shí)有困惑難解的知識(shí),希望這篇文章可以有助于大家的學(xué)習(xí)與理解。對(duì)于代數(shù)和微積分相關(guān)內(nèi)容基礎(chǔ)薄弱的小伙伴們,雖然文中涉及不少數(shù)學(xué)知識(shí),但我會(huì)盡量讓內(nèi)容易于大家理解。

▌解析深度網(wǎng)絡(luò)背后的數(shù)學(xué)

如今,已有許多像 Keras, TensorFlow, PyTorch 這樣高水平的專(zhuān)門(mén)的庫(kù)和框架,我們就不用總擔(dān)心矩陣的權(quán)重太多,或是對(duì)使用的激活函數(shù)求導(dǎo)時(shí)存儲(chǔ)計(jì)算的規(guī)模太大這些問(wèn)題了。基于這些框架,我們?cè)跇?gòu)建一個(gè)神經(jīng)網(wǎng)絡(luò)時(shí),甚至是一個(gè)有著非常復(fù)雜的結(jié)構(gòu)的網(wǎng)絡(luò)時(shí),也僅需少量的輸入和代碼就足夠了,極大地提高了效率。無(wú)論如何,神經(jīng)網(wǎng)絡(luò)背后的原理方法對(duì)于像架構(gòu)選擇、超參數(shù)調(diào)整或者優(yōu)化這樣的任務(wù)有著很大的幫助。

圖一 訓(xùn)練集可視化

舉個(gè)例子,我們將利用上圖展示的訓(xùn)練集數(shù)據(jù)去解決一個(gè)二分類(lèi)問(wèn)題。從上面的圖可以看出,數(shù)據(jù)點(diǎn)形成了兩個(gè)圓,這對(duì)于許多傳統(tǒng)的機(jī)器學(xué)習(xí)算法是不容易的,但是現(xiàn)在用一個(gè)小的神經(jīng)網(wǎng)絡(luò)就可能很好地解決這個(gè)問(wèn)題了。為了解決這個(gè)問(wèn)題,我們將構(gòu)建一個(gè)神經(jīng)網(wǎng)絡(luò):包括五個(gè)全連接層,每層都含有不同數(shù)目的單元,結(jié)構(gòu)如下:

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

其中,隱藏層使用 ReLU 作為激活函數(shù),輸出層使用 Sigmoid。這是一個(gè)非常簡(jiǎn)單的架構(gòu),但是對(duì)于解決并解釋這個(gè)問(wèn)題已經(jīng)足夠了。

用 KERAS 求解

首先,先給大家介紹一個(gè)解決方法,使用了一個(gè)最受歡迎的機(jī)器學(xué)習(xí)庫(kù)—— KERAS 。

fromkeras.modelsimportSequentialfromkeras.layersimportDensemodel=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)

正如我在簡(jiǎn)介中提到的,少量的輸入數(shù)據(jù)和代碼就足以構(gòu)建和訓(xùn)練出一個(gè)模型,并且在測(cè)試集上的分類(lèi)精度幾乎達(dá)到100%。概括來(lái)講,我們的任務(wù)其實(shí)就是提供與所選架構(gòu)一致的超參數(shù)(層數(shù)、每層的神經(jīng)元數(shù)、激活函數(shù)或者迭代次數(shù))。先給大家展示一個(gè)超酷的可視化結(jié)果,是我在訓(xùn)練過(guò)程中得到的:

圖三 訓(xùn)練中正確分類(lèi)區(qū)域的可視化

現(xiàn)在我們來(lái)解析這背后的原理。

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

讓我們從關(guān)鍵問(wèn)題開(kāi)始:什么是神經(jīng)網(wǎng)絡(luò)?它是一種由生物啟發(fā)的,用來(lái)構(gòu)建可以學(xué)習(xí)并且獨(dú)立解釋數(shù)據(jù)中聯(lián)系的計(jì)算機(jī)程序的方法。如上圖二所示,網(wǎng)絡(luò)就是各層神經(jīng)元的集合,這些神經(jīng)元排列成列,并且相互之間連接,可以進(jìn)行交流。

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

每個(gè)神經(jīng)元以一組 x 變量(取值從1到 n )的值作為輸入,計(jì)算預(yù)測(cè)的 y-hat 值。假設(shè)訓(xùn)練集中含有 m 個(gè)樣本,則向量 x 表示其中一個(gè)樣本的各個(gè)特征的取值。此外,每個(gè)單元有自己的參數(shù)集需要學(xué)習(xí),包括權(quán)重向量和偏差,分別用 w 和 b 表示。在每次迭代中,神經(jīng)元基于本輪的權(quán)重向量計(jì)算向量 x 的加權(quán)平均值,再加上偏差。最后,將計(jì)算結(jié)果代入一個(gè)非線(xiàn)性激活函數(shù) g。我會(huì)在下文中介紹一些最流行的激活函數(shù)。

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

▌單層

現(xiàn)在我們看一下神經(jīng)網(wǎng)絡(luò)中整體的一層是怎么計(jì)算的。我們將整合每個(gè)單元中的計(jì)算,進(jìn)行向量化,然后寫(xiě)成矩陣的形式。為了統(tǒng)一符號(hào),我們選取第 l 層寫(xiě)出矩陣等式,下標(biāo) i 表示第 i 個(gè)神經(jīng)元。

圖五 單層神經(jīng)網(wǎng)絡(luò)

注意一點(diǎn):當(dāng)我們對(duì)單個(gè)單元寫(xiě)方程的時(shí)候,用到了 x 和 y-hat,它們分別表示特征列向量和預(yù)測(cè)值。但當(dāng)我們對(duì)整個(gè)層寫(xiě)的時(shí)候,要用向量 a 表示相應(yīng)層的激活值。因此, 向量 x 可以看做第0層輸入層的激活值。每層的各個(gè)神經(jīng)元相似地滿(mǎn)足如下等式:

為了清楚起見(jiàn),以下是第二層的所有表達(dá)式:

可見(jiàn),每層的表達(dá)式都是相似的。用 for 循環(huán)來(lái)表示很低效,因此為了加速計(jì)算速度我們使用了向量化。首先,將權(quán)重向量 w 的轉(zhuǎn)置堆疊成矩陣 W。相似地,將各個(gè)神經(jīng)元的偏差也堆在一起組成列向量 b。由此,我們就可以很輕松地寫(xiě)出一個(gè)矩陣等式來(lái)表示關(guān)于某一層的所有神經(jīng)元的計(jì)算。使用的矩陣和向量維數(shù)表示如下:

▌多樣本向量化

到目前為止,我們寫(xiě)出的等式僅包含一個(gè)樣本。但在神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)過(guò)程中,通常會(huì)處理一個(gè)龐大的數(shù)據(jù)集,可達(dá)百萬(wàn)級(jí)的輸入。因此,下一步需要進(jìn)行多樣本向量化。我們假設(shè)數(shù)據(jù)集中含有 m 個(gè)輸入,每個(gè)輸入有 nx 個(gè)特征。首先,將每層的列向量 x, a, z 分別堆成矩陣 X, A, Z。然后,根據(jù)新的矩陣重寫(xiě)之前的等式。

▌什么是激活函數(shù)?我們?yōu)槭裁葱枰?/p>

激活函數(shù)是神經(jīng)網(wǎng)絡(luò)的關(guān)鍵元素之一。沒(méi)有它們,神經(jīng)網(wǎng)絡(luò)就只是一些線(xiàn)性函數(shù)的組合,其本身也只能是一個(gè)線(xiàn)性函數(shù)。我們的模型有復(fù)雜度的限制,不能超過(guò)邏輯回歸。其中,非線(xiàn)性元保證了更好的適應(yīng)性,并且能在學(xué)習(xí)過(guò)程中提供一些復(fù)雜的函數(shù)。激活函數(shù)對(duì)學(xué)習(xí)的速度也有顯著影響,這也是在選擇時(shí)的評(píng)判標(biāo)準(zhǔn)之一。圖六展示了一些常用的激活函數(shù)。近年來(lái),隱藏層中使用最廣的激活函數(shù)大概就是 ReLU 了。不過(guò),當(dāng)我們?cè)谧龆M(jìn)制分類(lèi)問(wèn)題時(shí),我們有時(shí)仍然用 sigmoid,尤其是在輸出層中,我們希望模型返回的值在0到1之間。

圖六 常用激活函數(shù)及其導(dǎo)數(shù)函數(shù)圖像

▌?chuàng)p失函數(shù)

關(guān)于學(xué)習(xí)過(guò)程進(jìn)展的基本的信息來(lái)源就是損失函數(shù)值了。通常來(lái)說(shuō),損失函數(shù)可以表示我們離“理想”值還差多遠(yuǎn)。在本例中,我們用binary crossentropy(兩元交叉熵)來(lái)作為損失函數(shù),不過(guò)還有其他的損失函數(shù),需要具體問(wèn)題具體分析。兩元交叉熵函數(shù)表示如下:

下圖展示了在訓(xùn)練過(guò)程中其值的變化,可見(jiàn)其值隨著迭代次數(shù)如何增加與減少,精度如何提高

圖七 訓(xùn)練過(guò)程中精確度及損失的變化

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

學(xué)習(xí)過(guò)程其實(shí)就是在不斷地更新參數(shù) W 和 b 的值從而使損失函數(shù)最小化。為此,我們運(yùn)用微積分以及梯度下降的方法來(lái)求函數(shù)的極小。在每次迭代中,我們將分別計(jì)算損失函數(shù)對(duì)神經(jīng)網(wǎng)絡(luò)中的每個(gè)參數(shù)的偏導(dǎo)數(shù)值。對(duì)這方面計(jì)算不太熟悉的小伙伴,我簡(jiǎn)單解釋一下,導(dǎo)數(shù)可以刻畫(huà)函數(shù)的(斜率)。我們已經(jīng)知道了怎樣迭代變量會(huì)有怎么樣的變化,為了對(duì)梯度下降有更直觀(guān)的認(rèn)識(shí),我展示了一個(gè)可視化動(dòng)圖,從中可以看到我們是怎么通過(guò)一步步連續(xù)的迭代逼近極小值的。在神經(jīng)網(wǎng)絡(luò)中也是一樣的——每一輪迭代所計(jì)算的梯度顯示我們應(yīng)該移動(dòng)的方向。而他們間最主要的差別在于,神經(jīng)網(wǎng)絡(luò)需要計(jì)算更多的參數(shù)。確切地說(shuō),怎么計(jì)算如此復(fù)雜的導(dǎo)數(shù)呢?

圖八 動(dòng)態(tài)梯度下降

▌反向傳播算法

反向傳播算法是一種可以計(jì)算十分復(fù)雜的梯度的算法。在神經(jīng)網(wǎng)絡(luò)中,各參數(shù)的調(diào)整公式如下:

其中,超參數(shù) α 表示學(xué)習(xí)率,用以控制更新步長(zhǎng)。選定學(xué)習(xí)率是非常重要的——太小,NN 學(xué)習(xí)得太慢;太大,無(wú)法達(dá)到極小點(diǎn)。用鏈?zhǔn)椒▌t計(jì)算 dW 和 db —— 損失函數(shù)對(duì) W 和 b 的偏導(dǎo)數(shù), dW 和 db 的維數(shù)與 W 和 b 相等。圖九展示了神經(jīng)網(wǎng)絡(luò)中的一系列求導(dǎo)操作,從中可以清楚地看到前向和后向傳播是怎樣共同優(yōu)化損失函數(shù)的。

圖九 前向與后向傳播

▌結(jié)論

希望這篇文章對(duì)各位小伙伴理解神經(jīng)網(wǎng)絡(luò)內(nèi)部運(yùn)用的數(shù)學(xué)原理有所幫助。當(dāng)我們使用神經(jīng)網(wǎng)絡(luò)時(shí),理解這個(gè)過(guò)程的基本原理是很有幫助的。文中講述的內(nèi)容雖然只是冰山一角,但都是我認(rèn)為最重要的知識(shí)點(diǎn)。因此,我強(qiáng)烈建議大家能試著獨(dú)立地去編一個(gè)小的神經(jīng)網(wǎng)絡(luò),不要依賴(lài)框架,僅僅只用 Numpy 嘗試一下。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀(guān)點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴

原文標(biāo)題:解析深度神經(jīng)網(wǎng)絡(luò)背后的數(shù)學(xué)原理!

文章出處:【微信號(hào):rgznai100,微信公眾號(hào):rgznai100】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    語(yǔ)音視頻社交背后技術(shù)深度解析

    伴隨智能硬件設(shè)備快速發(fā)展和網(wǎng)絡(luò)條件提升,實(shí)時(shí)語(yǔ)音視頻的應(yīng)用越來(lái)越廣泛,如何保障實(shí)時(shí)互動(dòng)過(guò)程流暢不卡頓、如何消除回聲成為關(guān)鍵。即構(gòu)科技聯(lián)合創(chuàng)始人蔣寧波在LiveVideoStack Meet上以語(yǔ)音視頻社交為例,深度解析實(shí)時(shí)語(yǔ)音視
    的頭像 發(fā)表于 12-15 08:05 ?7235次閱讀
    語(yǔ)音視頻社交<b class='flag-5'>背后</b>技術(shù)<b class='flag-5'>深度</b><b class='flag-5'>解析</b>

    Zstack中串口操作的深度解析(一)

    本帖最后由 eehome 于 2013-1-5 10:06 編輯 Zstack中串口操作的深度解析(一)歡迎研究ZigBee的朋友和我交流。。。
    發(fā)表于 08-12 21:11

    I2C通信設(shè)計(jì)深度解析

    I2C通信設(shè)計(jì)深度解析
    發(fā)表于 08-12 21:31

    java經(jīng)典面試題深度解析

    免費(fèi)視頻教程:java經(jīng)典面試題深度解析對(duì)于很多初學(xué)者來(lái)說(shuō),學(xué)好java在后期面試的階段都沒(méi)什么經(jīng)驗(yàn),為了讓大家更好的了解面試相關(guān)知識(shí),今天在這里給大家分享了一個(gè)java經(jīng)典面試題深度解析
    發(fā)表于 06-20 15:16

    5G背后的核心技術(shù)解析

    虛擬現(xiàn)實(shí)、無(wú)人機(jī)、自動(dòng)駕駛,在這些炫酷的熱門(mén)技術(shù)背后,都能看到5G移動(dòng)通信系統(tǒng)的身影。今年春季,3GPP組織將5G部分空口標(biāo)準(zhǔn)化工作由研究階段轉(zhuǎn)入工作階段。意味著,經(jīng)過(guò)多年的熱切期盼,傳說(shuō)中的5G
    發(fā)表于 06-18 07:07

    深度解析5G背后的專(zhuān)利技術(shù)和通信原理

    2018年11月29日,中國(guó)首個(gè)跨省5G視頻通話(huà)在上海、蘇州、杭州、合肥四城實(shí)現(xiàn)互聯(lián)。“G”代表“generation”,5G網(wǎng)絡(luò)即是第五代移動(dòng)通信網(wǎng)絡(luò)。簡(jiǎn)單來(lái)說(shuō),1G時(shí)我們用手機(jī)打電話(huà),2G時(shí)我們
    發(fā)表于 07-15 19:35

    解析深度學(xué)習(xí):卷積神經(jīng)網(wǎng)絡(luò)原理與視覺(jué)實(shí)踐

    解析深度學(xué)習(xí):卷積神經(jīng)網(wǎng)絡(luò)原理與視覺(jué)實(shí)踐
    發(fā)表于 06-14 22:21

    云計(jì)算背后采用的具體技術(shù)有哪些?

    云計(jì)算的平臺(tái)建設(shè)方法以及應(yīng)用構(gòu)建方式是什么?云計(jì)算背后采用的具體技術(shù)有哪些?
    發(fā)表于 05-20 07:00

    功能安全---AUTOSAR架構(gòu)深度解析 精選資料分享

    AUTOSAR架構(gòu)深度解析本文轉(zhuǎn)載于:AUTOSAR架構(gòu)深度解析AUTOSAR的分層式設(shè)計(jì),用于支持完整的軟件和硬件模塊的獨(dú)立性(Independence),中間RTE(Runtime
    發(fā)表于 07-23 08:34

    AUTOSAR架構(gòu)深度解析 精選資料推薦

    AUTOSAR架構(gòu)深度解析本文轉(zhuǎn)載于:AUTOSAR架構(gòu)深度解析目錄AUTOSAR架構(gòu)深度解析A
    發(fā)表于 07-28 07:40

    AUTOSAR架構(gòu)深度解析 精選資料分享

    AUTOSAR架構(gòu)深度解析本文轉(zhuǎn)載于:AUTOSAR架構(gòu)深度解析AUTOSAR的分層式設(shè)計(jì),用于支持完整的軟件和硬件模塊的獨(dú)立性(Independence),中間RTE(Runtime
    發(fā)表于 07-28 07:02

    C語(yǔ)言深度解析

    C語(yǔ)言深度解析,本資料來(lái)源于網(wǎng)絡(luò),對(duì)C語(yǔ)言的學(xué)習(xí)有很大的幫助,有著較為深刻的解析,可能會(huì)對(duì)讀者有一定的幫助。
    發(fā)表于 09-28 07:00

    LED繁榮背后存在的隱憂(yōu)解析

    LED繁榮背后存在的隱憂(yōu)解析 ---------無(wú)核心技術(shù)或致美麗泡沫 機(jī)遇與挑戰(zhàn): 在節(jié)能減排和低碳經(jīng)濟(jì)
    發(fā)表于 04-14 09:10 ?553次閱讀

    深度學(xué)習(xí)算法背后數(shù)學(xué)

    簡(jiǎn)要介紹了用于深度學(xué)習(xí)的線(xiàn)性代數(shù)基本概念,以及在Python中如何表達(dá)這些概念和相應(yīng)的運(yùn)算。
    的頭像 發(fā)表于 06-01 11:38 ?8815次閱讀

    Nginx核心功能深度解析

    Nginx核心功能深度解析
    的頭像 發(fā)表于 05-09 10:50 ?293次閱讀