HOME 首頁
SERVICE 服務(wù)產(chǎn)品
XINMEITI 新媒體代運(yùn)營
CASE 服務(wù)案例
NEWS 熱點(diǎn)資訊
ABOUT 關(guān)于我們
CONTACT 聯(lián)系我們
創(chuàng)意嶺
讓品牌有溫度、有情感
專注品牌策劃15年

    神經(jīng)網(wǎng)絡(luò)的概念(神經(jīng)網(wǎng)絡(luò)的概念,給人工智能帶來的有利條件有哪些)

    發(fā)布時(shí)間:2023-04-21 23:10:39     稿源: 創(chuàng)意嶺    閱讀: 77        

    大家好!今天讓創(chuàng)意嶺的小編來大家介紹下關(guān)于神經(jīng)網(wǎng)絡(luò)的概念的問題,以下是小編對(duì)此問題的歸納整理,讓我們一起來看看吧。

    開始之前先推薦一個(gè)非常厲害的Ai人工智能工具,一鍵生成原創(chuàng)文章、方案、文案、工作計(jì)劃、工作報(bào)告、論文、代碼、作文、做題和對(duì)話答疑等等

    只需要輸入關(guān)鍵詞,就能返回你想要的內(nèi)容,越精準(zhǔn),寫出的就越詳細(xì),有微信小程序端、在線網(wǎng)頁版、PC客戶端

    官網(wǎng):https://ai.de1919.com。

    創(chuàng)意嶺作為行業(yè)內(nèi)優(yōu)秀的企業(yè),服務(wù)客戶遍布全球各地,如需了解SEO相關(guān)業(yè)務(wù)請(qǐng)撥打電話175-8598-2043,或添加微信:1454722008

    本文目錄:

    神經(jīng)網(wǎng)絡(luò)的概念(神經(jīng)網(wǎng)絡(luò)的概念,給人工智能帶來的有利條件有哪些)

    一、halcon第十七講,神經(jīng)網(wǎng)絡(luò)

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

    [圖片上傳中...(image-432d8f-1641287520063-0)]

    <colgroup><col style="width: 310px;"><col style="width: 310px;"></colgroup>

    |

    生物神經(jīng)元

    |

    人工神經(jīng)元

    |

    |

    細(xì)胞核

    |

    神經(jīng)元

    |

    |

    樹突

    |

    輸入

    |

    |

    軸突

    |

    輸出

    |

    |

    突觸

    |

    權(quán)重

    |

    二、神經(jīng)網(wǎng)絡(luò)的相關(guān)概念

    [圖片上傳中...(image-269e67-1641287555263-8)]

    [圖片上傳中...(image-ba78ce-1641287555263-7)]

    [圖片上傳中...(image-5dedce-1641287555263-6)]

    [圖片上傳中...(image-d4aadb-1641287555263-5)]

    [圖片上傳中...(image-eef949-1641287555263-4)]

    [圖片上傳中...(image-fcd341-1641287555263-3)]

    [圖片上傳中...(image-d0711b-1641287555263-2)]

    [圖片上傳中...(image-a37d38-1641287555263-1)]

    [圖片上傳中...(image-eb49a1-1641287555263-0)]

    二、BP神經(jīng)網(wǎng)絡(luò)的梳理

    BP神經(jīng)網(wǎng)絡(luò)被稱為“深度學(xué)習(xí)之旅的開端”,是神經(jīng)網(wǎng)絡(luò)的入門算法。

    各種高大上的神經(jīng)網(wǎng)絡(luò)都是基于BP網(wǎng)絡(luò)出發(fā)的,最基礎(chǔ)的原理都是由BP網(wǎng)絡(luò)而來 [1] ,另外由于BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)簡單,算法經(jīng)典, 是神經(jīng)網(wǎng)絡(luò)中應(yīng)用最廣泛的一種。

    BP神經(jīng)網(wǎng)絡(luò)(back propagation neural network)全稱是反向傳播神經(jīng)網(wǎng)絡(luò)。

    神經(jīng)網(wǎng)絡(luò)發(fā)展部分背景如下 [2] :

    為解決非線性問題,BP神經(jīng)網(wǎng)絡(luò)應(yīng)運(yùn)而生。

    那么什么是BP神經(jīng)網(wǎng)絡(luò)?稍微專業(yè)點(diǎn)的解釋要怎么說呢?

    很喜歡 最簡單的神經(jīng)網(wǎng)絡(luò)--Bp神經(jīng)網(wǎng)絡(luò) 一文對(duì)算法原理的解釋,語言活潑,案例簡單,由淺入深。

    文中提到所謂的 AI 技術(shù),本質(zhì)上是一種數(shù)據(jù)處理處理技術(shù),它的強(qiáng)大來自于兩方面:1.互聯(lián)網(wǎng)的發(fā)展帶來的海量數(shù)據(jù)信息;2.計(jì)算機(jī)深度學(xué)習(xí)算法的快速發(fā)展。AI 其實(shí)并沒有什么神秘,只是在算法上更為復(fù)雜 [3] 。

    我們從上面的定義出發(fā)來解釋BP神經(jīng)網(wǎng)絡(luò)的原理。

    BP神經(jīng)網(wǎng)絡(luò)整個(gè)網(wǎng)絡(luò)結(jié)構(gòu)包含了:一層輸入層,一到多層隱藏層,一層輸出層。

    一般說L層神經(jīng)網(wǎng)絡(luò),指的是有L個(gè)隱層,輸入層和輸出層都不計(jì)算在內(nèi)的 [6] 。

    BP神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練的學(xué)習(xí)過程由信號(hào)的 正向傳播 和誤差的 反向傳播 兩個(gè)過程組成。

    什么是信號(hào)的正向傳播?顧名思義,就是結(jié)構(gòu)圖從左到右的運(yùn)算過程。

    我們來看看結(jié)構(gòu)圖中每個(gè)小圓圈是怎么運(yùn)作的。我們把小圈圈叫做神經(jīng)元,是組成神經(jīng)網(wǎng)絡(luò)的基本單元。

    正向傳播就是輸入數(shù)據(jù)經(jīng)過一層一層的神經(jīng)元運(yùn)算、輸出的過程,最后一層輸出值作為算法預(yù)測值y'。

    前面正向傳播的時(shí)候我們提到權(quán)重w、偏置b,但我們并不知道權(quán)重w、偏置b的值應(yīng)該是什么。關(guān)于最優(yōu)參數(shù)的求解,我們?cè)?線性回歸 、 邏輯回歸 兩章中有了詳細(xì)說明。大致來講就是:

    BP神經(jīng)網(wǎng)絡(luò)全稱 back propagation neural network,back propagation反向傳播是什么?

    反向傳播的建設(shè)本質(zhì)上就是尋找最優(yōu)的參數(shù)組合,和上面的流程差不多,根據(jù)算法預(yù)測值和實(shí)際值之間的損失函數(shù)L(y',y),來反方向地計(jì)算每一層的z、a、w、b的偏導(dǎo)數(shù),從而更新參數(shù)。

    對(duì)反向傳播而言,輸入的內(nèi)容是預(yù)測值和實(shí)際值的誤差,輸出的內(nèi)容是對(duì)參數(shù)的更新,方向是從右往左,一層一層的更新每一層的參數(shù)。

    BP神經(jīng)網(wǎng)絡(luò)通過先正向傳播,構(gòu)建參數(shù)和輸入值的關(guān)系,通過預(yù)測值和實(shí)際值的誤差,反向傳播修復(fù)權(quán)重;讀入新數(shù)據(jù)再正向傳播預(yù)測,再反向傳播修正,...,通過多次循環(huán)達(dá)到最小損失值,此時(shí)構(gòu)造的模型擁有最優(yōu)的參數(shù)組合。

    以一個(gè)簡單的BP神經(jīng)網(wǎng)絡(luò)為例,由3個(gè)輸入層,2層隱藏層,每層2個(gè)神經(jīng)元,1個(gè)輸出層組成。

    【輸入層】傳入

    【第一層隱藏層】

    對(duì)于 神經(jīng)元而言,傳入 ,加權(quán)求和加偏置激活函數(shù)處理后,輸出 ;

    對(duì)于 神經(jīng)元而言,傳入 ,加權(quán)求和加偏置函數(shù)處理后,輸出 ;

    輸出:

    【第二層隱藏層】

    對(duì)于 神經(jīng)元而言,傳入 ,加權(quán)求和加偏置激活函數(shù)處理后,輸出 ;

    對(duì)于 神經(jīng)元而言,傳入 ,加權(quán)求和加偏置激活函數(shù)處理后,輸出 ;

    輸出:

    【輸出層】

    對(duì)于輸出層神經(jīng)元而言,輸入 ,加權(quán)求和加偏置激活函數(shù)處理后,輸出 ,輸出的是一個(gè)值

    第一次運(yùn)行正向傳播這個(gè)流程時(shí)隨用隨機(jī)參數(shù)就好,通過反向傳播不斷優(yōu)化。因此需要在一開始對(duì) 設(shè)置一個(gè)隨機(jī)的初始值。

    首先計(jì)算正向傳播輸出值 與實(shí)際值的損失 ,是一個(gè)數(shù)值。所謂反向是從右到左一步步來的,先回到 ,修正參數(shù) 。

    以此類推,通過對(duì)損失函數(shù)求偏導(dǎo)跟新參數(shù) ,再跟新參數(shù) 。這時(shí)又回到了起點(diǎn),新的數(shù)據(jù)傳入又可以開始正向傳播了。

    keras可以快速搭建神經(jīng)網(wǎng)絡(luò),例如以下為輸入層包含7129個(gè)結(jié)點(diǎn),一層隱藏層,包含128個(gè)結(jié)點(diǎn),一個(gè)輸出層,是二分類模型。

    神經(jīng)網(wǎng)絡(luò)反向傳播的優(yōu)化目標(biāo)為loss,可以觀察到loss的值在不斷的優(yōu)化。

    可以通過model.get_layer().get_weights()獲得每一層訓(xùn)練后的參數(shù)結(jié)果。通過model.predict()預(yù)測新數(shù)據(jù)。

    至此,BP神經(jīng)網(wǎng)絡(luò)的整個(gè)運(yùn)算流程已經(jīng)過了一遍。之前提到BP神經(jīng)網(wǎng)絡(luò)是為解決非線性問題應(yīng)運(yùn)而生的,那么為什么BP神經(jīng)網(wǎng)絡(luò)可以解決非線性問題呢?

    還記得神經(jīng)元里有一個(gè)激活函數(shù)的操作嗎?神經(jīng)網(wǎng)絡(luò)通過激活函數(shù)的使用加入非線性因素。

    通過使用非線性的激活函數(shù)可以使神經(jīng)網(wǎng)絡(luò)隨意逼近復(fù)雜函數(shù),從而使BP神經(jīng)網(wǎng)絡(luò)既可以處理線性問題,也可以處理非線性問題。

    為什么激活函數(shù)的使用可以加入非線性因素 [7] ?

    其實(shí)邏輯回歸算法可以看作只有一個(gè)神經(jīng)元的單層神經(jīng)網(wǎng)絡(luò),只對(duì)線性可分的數(shù)據(jù)進(jìn)行分類。

    輸入?yún)?shù),加權(quán)求和,sigmoid作為激活函數(shù)計(jì)算后輸出結(jié)果,模型預(yù)測值和實(shí)際值計(jì)算損失Loss,反向傳播梯度下降求編導(dǎo),獲得最優(yōu)參數(shù)。

    BP神經(jīng)網(wǎng)絡(luò)是比 Logistic Regression 復(fù)雜得多的模型,它的擬合能力很強(qiáng),可以處理很多 Logistic Regression處理不了的數(shù)據(jù),但是也更容易過擬合。

    具體用什么算法還是要看訓(xùn)練數(shù)據(jù)的情況,沒有一種算法是使用所有情況的。

    常見的前饋神經(jīng)網(wǎng)絡(luò)有BP網(wǎng)絡(luò),RBF網(wǎng)絡(luò)等。

    BP神經(jīng)網(wǎng)絡(luò)的一個(gè)主要問題是:結(jié)構(gòu)不好設(shè)計(jì)。

    網(wǎng)絡(luò)隱含層的層數(shù)和單元數(shù)的選擇尚無理論上的指導(dǎo),一般是根據(jù)經(jīng)驗(yàn)或者通過反復(fù)實(shí)驗(yàn)確定。

    但是BP神經(jīng)網(wǎng)絡(luò)簡單、易行、計(jì)算量小、并行性強(qiáng),目前仍是多層前向網(wǎng)絡(luò)的首選算法。

    [1] 深度學(xué)習(xí)開端---BP神經(jīng)網(wǎng)絡(luò): https://blog.csdn.net/Chile_Wang/article/details/100557010

    [2] BP神經(jīng)網(wǎng)絡(luò)發(fā)展歷史: https://zhuanlan.zhihu.com/p/47998728

    [3] 最簡單的神經(jīng)網(wǎng)絡(luò)--Bp神經(jīng)網(wǎng)絡(luò): https://blog.csdn.net/weixin_40432828/article/details/82192709

    [4] 神經(jīng)網(wǎng)絡(luò)的基本概念: https://blog.csdn.net/jinyuan7708/article/details/82466653

    [5] 神經(jīng)網(wǎng)絡(luò)中的 “隱藏層” 理解: https://blog.csdn.net/nanhuaibeian/article/details/100183000

    [6] AI學(xué)習(xí)筆記:神經(jīng)元與神經(jīng)網(wǎng)絡(luò): https://www.jianshu.com/p/65eb2fce0e9e

    [7] 線性模型和非線性模型的區(qū)別: https://www.cnblogs.com/toone/p/8574294.html

    [8] BP神經(jīng)網(wǎng)絡(luò)是否優(yōu)于logistic回歸: https://www.zhihu.com/question/27823925/answer/38460833

    三、人工神經(jīng)網(wǎng)絡(luò)概念梳理與實(shí)例演示

    人工神經(jīng)網(wǎng)絡(luò)概念梳理與實(shí)例演示

    神經(jīng)網(wǎng)絡(luò)是一種模仿生物神經(jīng)元的機(jī)器學(xué)習(xí)模型,數(shù)據(jù)從輸入層進(jìn)入并流經(jīng)激活閾值的多個(gè)節(jié)點(diǎn)。

    遞歸性神經(jīng)網(wǎng)絡(luò)一種能夠?qū)χ拜斎霐?shù)據(jù)進(jìn)行內(nèi)部存儲(chǔ)記憶的神經(jīng)網(wǎng)絡(luò),所以他們能夠?qū)W習(xí)到數(shù)據(jù)流中的時(shí)間依賴結(jié)構(gòu)。

    如今機(jī)器學(xué)習(xí)已經(jīng)被應(yīng)用到很多的產(chǎn)品中去了,例如,siri、Google Now等智能助手,推薦引擎——亞馬遜網(wǎng)站用于推薦商品的推薦引擎,Google和Facebook使用的廣告排名系統(tǒng)。最近,深度學(xué)習(xí)的一些進(jìn)步將機(jī)器學(xué)習(xí)帶入公眾視野:AlphaGo 打敗圍棋大師李世石事件以及一些圖片識(shí)別和機(jī)器翻譯等新產(chǎn)品的出現(xiàn)。

    在這部分中,我們將介紹一些強(qiáng)大并被普遍使用的機(jī)器學(xué)習(xí)技術(shù)。這當(dāng)然包括一些深度學(xué)習(xí)以及一些滿足現(xiàn)代業(yè)務(wù)需求傳統(tǒng)方法。讀完這一系列的文章之后,你就掌握了必要的知識(shí),便可以將具體的機(jī)器學(xué)習(xí)實(shí)驗(yàn)應(yīng)用到你所在的領(lǐng)域當(dāng)中。

    隨著深層神經(jīng)網(wǎng)絡(luò)的精度的提高,語音和圖像識(shí)別技術(shù)的應(yīng)用吸引了大眾的注意力,關(guān)于AI和深度學(xué)習(xí)的研究也變得更加普遍了。但是怎么能夠讓它進(jìn)一步擴(kuò)大影響力,更受歡迎仍然是一個(gè)問題。這篇文章的主要內(nèi)容是:簡述前饋神經(jīng)網(wǎng)絡(luò)和遞歸神經(jīng)網(wǎng)絡(luò)、怎樣搭建一個(gè)遞歸神經(jīng)網(wǎng)絡(luò)對(duì)時(shí)間系列數(shù)據(jù)進(jìn)行異常檢測。為了讓我們的討論更加具體化,我們將演示一下怎么用Deeplearning4j搭建神經(jīng)網(wǎng)絡(luò)。

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

    人工神經(jīng)網(wǎng)絡(luò)算法的最初構(gòu)思是模仿生物神經(jīng)元。但是這個(gè)類比很不可靠。人工神經(jīng)網(wǎng)絡(luò)的每一個(gè)特征都是對(duì)生物神經(jīng)元的一種折射:每一個(gè)節(jié)點(diǎn)與激活閾值、觸發(fā)的連接。

    連接人工神經(jīng)元系統(tǒng)建立起來之后,我們就能夠?qū)@些系統(tǒng)進(jìn)行訓(xùn)練,從而讓他們學(xué)習(xí)到數(shù)據(jù)中的一些模式,學(xué)到之后就能執(zhí)行回歸、分類、聚類、預(yù)測等功能。

    人工神經(jīng)網(wǎng)絡(luò)可以看作是計(jì)算節(jié)點(diǎn)的集合。數(shù)據(jù)通過這些節(jié)點(diǎn)進(jìn)入神經(jīng)網(wǎng)絡(luò)的輸入層,再通過神經(jīng)網(wǎng)絡(luò)的隱藏層直到關(guān)于數(shù)據(jù)的一個(gè)結(jié)論或者結(jié)果出現(xiàn),這個(gè)過程才會(huì)停止。神經(jīng)網(wǎng)絡(luò)產(chǎn)出的結(jié)果會(huì)跟預(yù)期的結(jié)果進(jìn)行比較,神經(jīng)網(wǎng)絡(luò)得出的結(jié)果與正確結(jié)果的不同點(diǎn)會(huì)被用來更正神經(jīng)網(wǎng)絡(luò)節(jié)點(diǎn)的激活閾值。隨著這個(gè)過程的不斷重復(fù),神經(jīng)網(wǎng)絡(luò)的輸出結(jié)果就會(huì)無限靠近預(yù)期結(jié)果。

    二、訓(xùn)練過程

    在搭建一個(gè)神經(jīng)網(wǎng)絡(luò)系統(tǒng)之前,你必須先了解訓(xùn)練的過程以及網(wǎng)絡(luò)輸出結(jié)果是怎么產(chǎn)生的。然而我們并不想過度深入的了解這些方程式,下面是一個(gè)簡短的介紹。

    網(wǎng)絡(luò)的輸入節(jié)點(diǎn)收到一個(gè)數(shù)值數(shù)組(或許是叫做張量多維度數(shù)組)就代表輸入數(shù)據(jù)。例如, 圖像中的每個(gè)像素可以表示為一個(gè)標(biāo)量,然后將像素傳遞給一個(gè)節(jié)點(diǎn)。輸入數(shù)據(jù)將會(huì)與神經(jīng)網(wǎng)絡(luò)的參數(shù)相乘,這個(gè)輸入數(shù)據(jù)被擴(kuò)大還是減小取決于它的重要性,換句話說,取決于這個(gè)像素就不會(huì)影響神經(jīng)網(wǎng)絡(luò)關(guān)于整個(gè)輸入數(shù)據(jù)的結(jié)論。

    起初這些參數(shù)都是隨機(jī)的,也就是說神經(jīng)網(wǎng)絡(luò)在建立初期根本就不了解數(shù)據(jù)的結(jié)構(gòu)。每個(gè)節(jié)點(diǎn)的激活函數(shù)決定了每個(gè)輸入節(jié)點(diǎn)的輸出結(jié)果。所以每個(gè)節(jié)點(diǎn)是否能夠被激活取決于它是否接受到足夠的刺激強(qiáng)度,即是否輸入數(shù)據(jù)和參數(shù)的結(jié)果超出了激活閾值的界限。

    在所謂的密集或完全連接層中,每個(gè)節(jié)點(diǎn)的輸出值都會(huì)傳遞給后續(xù)層的節(jié)點(diǎn),在通過所有隱藏層后最終到達(dá)輸出層,也就是產(chǎn)生輸入結(jié)果的地方。在輸出層, 神經(jīng)網(wǎng)絡(luò)得到的最終結(jié)論將會(huì)跟預(yù)期結(jié)論進(jìn)行比較(例如,圖片中的這些像素代表一只貓還是狗?)。神經(jīng)網(wǎng)絡(luò)猜測的結(jié)果與正確結(jié)果的計(jì)算誤差都會(huì)被納入到一個(gè)測試集中,神經(jīng)網(wǎng)絡(luò)又會(huì)利用這些計(jì)算誤差來不斷更新參數(shù),以此來改變圖片中不同像素的重要程度。整個(gè)過程的目的就是降低輸出結(jié)果與預(yù)期結(jié)果的誤差,正確地標(biāo)注出這個(gè)圖像到底是不是一條狗。

    深度學(xué)習(xí)是一個(gè)復(fù)雜的過程,由于大量的矩陣系數(shù)需要被修改所以它就涉及到矩陣代數(shù)、衍生品、概率和密集的硬件使用問題,但是用戶不需要全部了解這些復(fù)雜性。

    但是,你也應(yīng)該知道一些基本參數(shù),這將幫助你理解神經(jīng)網(wǎng)絡(luò)函數(shù)。這其中包括激活函數(shù)、優(yōu)化算法和目標(biāo)函數(shù)(也稱為損失、成本或誤差函數(shù))。

    激活函數(shù)決定了信號(hào)是否以及在多大程度上應(yīng)該被發(fā)送到連接節(jié)點(diǎn)。階梯函數(shù)是最常用的激活函數(shù), 如果其輸入小于某個(gè)閾值就是0,如果其輸入大于閾值就是1。節(jié)點(diǎn)都會(huì)通過階梯激活函數(shù)向連接節(jié)點(diǎn)發(fā)送一個(gè)0或1。優(yōu)化算法決定了神經(jīng)網(wǎng)絡(luò)怎么樣學(xué)習(xí),以及測試完誤差后,權(quán)重怎么樣被更準(zhǔn)確地調(diào)整。最常見的優(yōu)化算法是隨機(jī)梯度下降法。最后, 成本函數(shù)常用來衡量誤差,通過對(duì)比一個(gè)給定訓(xùn)練樣本中得出的結(jié)果與預(yù)期結(jié)果的不同來評(píng)定神經(jīng)網(wǎng)絡(luò)的執(zhí)行效果。

    Keras、Deeplearning4j 等開源框架讓創(chuàng)建神經(jīng)網(wǎng)絡(luò)變得簡單。創(chuàng)建神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)時(shí),需要考慮的是怎樣將你的數(shù)據(jù)類型匹配到一個(gè)已知的被解決的問題,并且根據(jù)你的實(shí)際需求來修改現(xiàn)有結(jié)構(gòu)。

    三、神經(jīng)網(wǎng)絡(luò)的類型以及應(yīng)用

    神經(jīng)網(wǎng)絡(luò)已經(jīng)被了解和應(yīng)用了數(shù)十年了,但是最近的一些技術(shù)趨勢才使得深度神經(jīng)網(wǎng)絡(luò)變得更加高效。

    GPUs使得矩陣操作速度更快;分布式計(jì)算結(jié)構(gòu)讓計(jì)算能力大大增強(qiáng);多個(gè)超參數(shù)的組合也讓迭代的速度提升。所有這些都讓訓(xùn)練的速度大大加快,迅速找到適合的結(jié)構(gòu)。

    隨著更大數(shù)據(jù)集的產(chǎn)生,類似于ImageNet 的大型高質(zhì)量的標(biāo)簽數(shù)據(jù)集應(yīng)運(yùn)而生。機(jī)器學(xué)習(xí)算法訓(xùn)練的數(shù)據(jù)越大,那么它的準(zhǔn)確性就會(huì)越高。

    最后,隨著我們理解能力以及神經(jīng)網(wǎng)絡(luò)算法的不斷提升,神經(jīng)網(wǎng)絡(luò)的準(zhǔn)確性在語音識(shí)別、機(jī)器翻譯以及一些機(jī)器感知和面向目標(biāo)的一些任務(wù)等方面不斷刷新記錄。

    盡管神經(jīng)網(wǎng)絡(luò)架構(gòu)非常的大,但是主要用到的神經(jīng)網(wǎng)絡(luò)種類也就是下面的幾種。

    3.1前饋神經(jīng)網(wǎng)絡(luò)

    前饋神經(jīng)網(wǎng)絡(luò)包括一個(gè)輸入層、一個(gè)輸出層以及一個(gè)或多個(gè)的隱藏層。前饋神經(jīng)網(wǎng)絡(luò)可以做出很好的通用逼近器,并且能夠被用來創(chuàng)建通用模型。

    這種類型的神經(jīng)網(wǎng)絡(luò)可用于分類和回歸。例如,當(dāng)使用前饋網(wǎng)絡(luò)進(jìn)行分類時(shí),輸出層神經(jīng)元的個(gè)數(shù)等于類的數(shù)量。從概念上講, 激活了的輸出神經(jīng)元決定了神經(jīng)網(wǎng)絡(luò)所預(yù)測的類。更準(zhǔn)確地說, 每個(gè)輸出神經(jīng)元返回一個(gè)記錄與分類相匹配的概率數(shù),其中概率最高的分類將被選為模型的輸出分類。

    前饋神經(jīng)網(wǎng)絡(luò)的優(yōu)勢是簡單易用,與其他類型的神經(jīng)網(wǎng)絡(luò)相比更簡單,并且有一大堆的應(yīng)用實(shí)例。

    3.2卷積神經(jīng)網(wǎng)絡(luò)

    卷積神經(jīng)網(wǎng)絡(luò)和前饋神經(jīng)網(wǎng)絡(luò)是非常相似的,至少是數(shù)據(jù)的傳輸方式類似。他們結(jié)構(gòu)大致上是模仿了視覺皮層。卷積神經(jīng)網(wǎng)絡(luò)通過許多的過濾器。這些過濾器主要集中在一個(gè)圖像子集、補(bǔ)丁、圖塊的特征識(shí)別上。每一個(gè)過濾器都在尋找不同模式的視覺數(shù)據(jù),例如,有的可能是找水平線,有的是找對(duì)角線,有的是找垂直的。這些線條都被看作是特征,當(dāng)過濾器經(jīng)過圖像時(shí),他們就會(huì)構(gòu)造出特征圖譜來定位各類線是出現(xiàn)在圖像的哪些地方。圖像中的不同物體,像貓、747s、榨汁機(jī)等都會(huì)有不同的圖像特征,這些圖像特征就能使圖像完成分類。卷積神經(jīng)網(wǎng)絡(luò)在圖像識(shí)別和語音識(shí)別方面是非常的有效的。

    卷積神經(jīng)網(wǎng)絡(luò)與前饋神經(jīng)網(wǎng)絡(luò)在圖像識(shí)別方面的異同比較。雖然這兩種網(wǎng)絡(luò)類型都能夠進(jìn)行圖像識(shí)別,但是方式卻不同。卷積神經(jīng)網(wǎng)絡(luò)是通過識(shí)別圖像的重疊部分,然后學(xué)習(xí)識(shí)別不同部分的特征進(jìn)行訓(xùn)練;然而,前饋神經(jīng)網(wǎng)絡(luò)是在整張圖片上進(jìn)行訓(xùn)練。前饋神經(jīng)網(wǎng)絡(luò)總是在圖片的某一特殊部分或者方向進(jìn)行訓(xùn)練,所以當(dāng)圖片的特征出現(xiàn)在其他地方時(shí)就不會(huì)被識(shí)別到,然而卷積神經(jīng)網(wǎng)絡(luò)卻能夠很好的避免這一點(diǎn)。

    卷積神經(jīng)網(wǎng)絡(luò)主要是用于圖像、視頻、語音、聲音識(shí)別以及無人駕駛的任務(wù)。盡管這篇文章主要是討論遞歸神經(jīng)網(wǎng)絡(luò)的,但是卷積神經(jīng)網(wǎng)絡(luò)在圖像識(shí)別方面也是非常有效的,所以很有必要了解。

    3.3遞歸神經(jīng)網(wǎng)絡(luò)

    與前饋神經(jīng)網(wǎng)絡(luò)不同的是,遞歸神經(jīng)網(wǎng)絡(luò)的隱藏層的節(jié)點(diǎn)里有內(nèi)部記憶存儲(chǔ)功能,隨著輸入數(shù)據(jù)的改變而內(nèi)部記憶內(nèi)容不斷被更新。遞歸神經(jīng)網(wǎng)絡(luò)的結(jié)論都是基于當(dāng)前的輸入和之前存儲(chǔ)的數(shù)據(jù)而得出的。遞歸神經(jīng)網(wǎng)絡(luò)能夠充分利用這種內(nèi)部記憶存儲(chǔ)狀態(tài)處理任意序列的數(shù)據(jù),例如時(shí)間序列。

    遞歸神經(jīng)網(wǎng)絡(luò)經(jīng)常用于手寫識(shí)別、語音識(shí)別、日志分析、欺詐檢測和網(wǎng)絡(luò)安全。

    遞歸神經(jīng)網(wǎng)絡(luò)是處理時(shí)間維度數(shù)據(jù)集的最好方法,它可以處理以下數(shù)據(jù):網(wǎng)絡(luò)日志和服務(wù)器活動(dòng)、硬件或者是醫(yī)療設(shè)備的傳感器數(shù)據(jù)、金融交易、電話記錄。想要追蹤數(shù)據(jù)在不同階段的依賴和關(guān)聯(lián)關(guān)系需要你了解當(dāng)前和之前的一些數(shù)據(jù)狀態(tài)。盡管我們通過前饋神經(jīng)網(wǎng)絡(luò)也可以獲取事件,隨著時(shí)間的推移移動(dòng)到另外一個(gè)事件,這將使我們限制在對(duì)事件的依賴中,所以這種方式很不靈活。

    追蹤在時(shí)間維度上有長期依賴的數(shù)據(jù)的更好方法是用內(nèi)存來儲(chǔ)存重要事件,以使近期事件能夠被理解和分類。遞歸神經(jīng)網(wǎng)絡(luò)最好的一點(diǎn)就是在它的隱藏層里面有“內(nèi)存”可以學(xué)習(xí)到時(shí)間依賴特征的重要性。

    接下來我們將討論遞歸神經(jīng)網(wǎng)絡(luò)在字符生成器和網(wǎng)絡(luò)異常檢測中的應(yīng)用。遞歸神經(jīng)網(wǎng)絡(luò)可以檢測出不同時(shí)間段的依賴特征的能力使得它可以進(jìn)行時(shí)間序列數(shù)據(jù)的異常檢測。

    遞歸神經(jīng)網(wǎng)絡(luò)的應(yīng)用

    網(wǎng)絡(luò)上有很多使用RNNs生成文本的例子,遞歸神經(jīng)網(wǎng)絡(luò)經(jīng)過語料庫的訓(xùn)練之后,只要輸入一個(gè)字符,就可以預(yù)測下一個(gè)字符。下面讓我們通過一些實(shí)用例子發(fā)現(xiàn)更多RNNs的特征。

    應(yīng)用一、RNNs用于字符生成

    遞歸神經(jīng)網(wǎng)絡(luò)經(jīng)過訓(xùn)練之后可以把英文字符當(dāng)做成一系列的時(shí)間依賴事件。經(jīng)過訓(xùn)練后它會(huì)學(xué)習(xí)到一個(gè)字符經(jīng)常跟著另外一個(gè)字符(“e”經(jīng)常跟在“h”后面,像在“the、he、she”中)。由于它能預(yù)測下一個(gè)字符是什么,所以它能有效地減少文本的輸入錯(cuò)誤。

    Java是個(gè)很有趣的例子,因?yàn)樗慕Y(jié)構(gòu)包括很多嵌套結(jié)構(gòu),有一個(gè)開的圓括號(hào)必然后面就會(huì)有一個(gè)閉的,花括號(hào)也是同理。他們之間的依賴關(guān)系并不會(huì)在位置上表現(xiàn)的很明顯,因?yàn)槎鄠€(gè)事件之間的關(guān)系不是靠所在位置的距離確定的。但是就算是不明確告訴遞歸神經(jīng)網(wǎng)絡(luò)Java中各個(gè)事件的依賴關(guān)系,它也能自己學(xué)習(xí)了解到。

    在異常檢測當(dāng)中,我們要求神經(jīng)網(wǎng)絡(luò)能夠檢測出數(shù)據(jù)中相似、隱藏的或許是并不明顯的模式。就像是一個(gè)字符生成器在充分地了解數(shù)據(jù)的結(jié)構(gòu)后就會(huì)生成一個(gè)數(shù)據(jù)的擬像,遞歸神經(jīng)網(wǎng)絡(luò)的異常檢測就是在其充分了解數(shù)據(jù)結(jié)構(gòu)后來判斷輸入的數(shù)據(jù)是不是正常。

    字符生成的例子表明遞歸神經(jīng)網(wǎng)絡(luò)有在不同時(shí)間范圍內(nèi)學(xué)習(xí)到時(shí)間依賴關(guān)系的能力,它的這種能力還可以用來檢測網(wǎng)絡(luò)活動(dòng)日志的異常。

    異常檢測能夠使文本中的語法錯(cuò)誤浮出水面,這是因?yàn)槲覀兯鶎懙臇|西是由語法結(jié)構(gòu)所決定的。同理,網(wǎng)絡(luò)行為也是有結(jié)構(gòu)的,它也有一個(gè)能夠被學(xué)習(xí)的可預(yù)測模式。經(jīng)過在正常網(wǎng)絡(luò)活動(dòng)中訓(xùn)練的遞歸神經(jīng)網(wǎng)絡(luò)可以監(jiān)測到入侵行為,因?yàn)檫@些入侵行為的出現(xiàn)就像是一個(gè)句子沒有標(biāo)點(diǎn)符號(hào)一樣異常。

    應(yīng)用二、一個(gè)網(wǎng)絡(luò)異常檢測項(xiàng)目的示例

    假設(shè)我們想要了解的網(wǎng)絡(luò)異常檢測就是能夠得到硬件故障、應(yīng)用程序失敗、以及入侵的一些信息。

    模型將會(huì)向我們展示什么呢?

    隨著大量的網(wǎng)絡(luò)活動(dòng)日志被輸入到遞歸神經(jīng)網(wǎng)絡(luò)中去,神經(jīng)網(wǎng)絡(luò)就能學(xué)習(xí)到正常的網(wǎng)絡(luò)活動(dòng)應(yīng)該是什么樣子的。當(dāng)這個(gè)被訓(xùn)練的網(wǎng)絡(luò)被輸入新的數(shù)據(jù)時(shí),它就能偶判斷出哪些是正常的活動(dòng),哪些是被期待的,哪些是異常的。

    訓(xùn)練一個(gè)神經(jīng)網(wǎng)絡(luò)來識(shí)別預(yù)期行為是有好處的,因?yàn)楫惓?shù)據(jù)不多,或者是不能夠準(zhǔn)確的將異常行為進(jìn)行分類。我們?cè)谡5臄?shù)據(jù)里進(jìn)行訓(xùn)練,它就能夠在未來的某個(gè)時(shí)間點(diǎn)提醒我們非正?;顒?dòng)的出現(xiàn)。

    說句題外話,訓(xùn)練的神經(jīng)網(wǎng)絡(luò)并不一定非得識(shí)別到特定事情發(fā)生的特定時(shí)間點(diǎn)(例如,它不知道那個(gè)特殊的日子就是周日),但是它一定會(huì)發(fā)現(xiàn)一些值得我們注意的一些更明顯的時(shí)間模式和一些可能并不明顯的事件之間的聯(lián)系。

    我們將概述一下怎么用 Deeplearning4j(一個(gè)在JVM上被廣泛應(yīng)用的深度學(xué)習(xí)開源數(shù)據(jù)庫)來解決這個(gè)問題。Deeplearning4j在模型開發(fā)過程中提供了很多有用的工具:DataVec是一款為ETL(提取-轉(zhuǎn)化-加載)任務(wù)準(zhǔn)備模型訓(xùn)練數(shù)據(jù)的集成工具。正如Sqoop為Hadoop加載數(shù)據(jù),DataVec將數(shù)據(jù)進(jìn)行清洗、預(yù)處理、規(guī)范化與標(biāo)準(zhǔn)化之后將數(shù)據(jù)加載到神經(jīng)網(wǎng)絡(luò)。這跟Trifacta’s Wrangler也相似,只不過它更關(guān)注二進(jìn)制數(shù)據(jù)。

    開始階段

    第一階段包括典型的大數(shù)據(jù)任務(wù)和ETL:我們需要收集、移動(dòng)、儲(chǔ)存、準(zhǔn)備、規(guī)范化、矢量話日志。時(shí)間跨度的長短是必須被規(guī)定好的。數(shù)據(jù)的轉(zhuǎn)化需要花費(fèi)一些功夫,這是由于JSON日志、文本日志、還有一些非連續(xù)標(biāo)注模式都必須被識(shí)別并且轉(zhuǎn)化為數(shù)值數(shù)組。DataVec能夠幫助進(jìn)行轉(zhuǎn)化和規(guī)范化數(shù)據(jù)。在開發(fā)機(jī)器學(xué)習(xí)訓(xùn)練模型時(shí),數(shù)據(jù)需要分為訓(xùn)練集和測試集。

    訓(xùn)練神經(jīng)網(wǎng)絡(luò)

    神經(jīng)網(wǎng)絡(luò)的初始訓(xùn)練需要在訓(xùn)練數(shù)據(jù)集中進(jìn)行。

    在第一次訓(xùn)練的時(shí)候,你需要調(diào)整一些超參數(shù)以使模型能夠?qū)崿F(xiàn)在數(shù)據(jù)中學(xué)習(xí)。這個(gè)過程需要控制在合理的時(shí)間內(nèi)。關(guān)于超參數(shù)我們將在之后進(jìn)行討論。在模型訓(xùn)練的過程中,你應(yīng)該以降低錯(cuò)誤為目標(biāo)。

    但是這可能會(huì)出現(xiàn)神經(jīng)網(wǎng)絡(luò)模型過度擬合的風(fēng)險(xiǎn)。有過度擬合現(xiàn)象出現(xiàn)的模型往往會(huì)在訓(xùn)練集中的很高的分?jǐn)?shù),但是在遇到新的數(shù)據(jù)時(shí)就會(huì)得出錯(cuò)誤結(jié)論。用機(jī)器學(xué)習(xí)的語言來說就是它不夠通用化。Deeplearning4J提供正則化的工具和“過早停止”來避免訓(xùn)練過程中的過度擬合。

    神經(jīng)網(wǎng)絡(luò)的訓(xùn)練是最花費(fèi)時(shí)間和耗費(fèi)硬件的一步。在GPUs上訓(xùn)練能夠有效的減少訓(xùn)練時(shí)間,尤其是做圖像識(shí)別的時(shí)候。但是額外的硬件設(shè)施就帶來多余的花銷,所以你的深度學(xué)習(xí)的框架必須能夠有效的利用硬件設(shè)施。Azure和亞馬遜等云服務(wù)提供了基于GPU的實(shí)例,神經(jīng)網(wǎng)絡(luò)還可以在異構(gòu)集群上進(jìn)行訓(xùn)練。

    創(chuàng)建模型

    Deeplearning4J提供ModelSerializer來保存訓(xùn)練模型。訓(xùn)練模型可以被保存或者是在之后的訓(xùn)練中被使用或更新。

    在執(zhí)行異常檢測的過程中,日志文件的格式需要與訓(xùn)練模型一致,基于神經(jīng)網(wǎng)絡(luò)的輸出結(jié)果,你將會(huì)得到是否當(dāng)前的活動(dòng)符合正常網(wǎng)絡(luò)行為預(yù)期的結(jié)論。

    代碼示例

    遞歸神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)應(yīng)該是這樣子的:

    MultiLayerConfiguration conf = new NeuralNetConfiguration.Builder(

    .seed(123)

    .optimizationAlgo(OptimizationAlgorithm.STOCHASTIC_GRADIENT_DESCENT).iterations(1)

    .weightInit(WeightInit.XAVIER)

    .updater(Updater.NESTEROVS).momentum(0.9)

    .learningRate(0.005)

    .gradientNormalization(GradientNormalization.ClipElementWiseAbsoluteValue)

    .gradientNormalizationThreshold(0.5)

    .list()

    .layer(0, new GravesLSTM.Builder().activation("tanh").nIn(1).nOut(10).build())

    .layer(1, new RnnOutputLayer.Builder(LossFunctions.LossFunction.MCXENT)

    .activation("softmax").nIn(10).nOut(numLabelClasses).build())

    .pretrain(false).backprop(true).build();

    MultiLayerNetwork net = new MultiLayerNetwork(conf);

    net.init();

    下面解釋一下幾行重要的代碼:

    .seed(123)

    隨機(jī)設(shè)置一個(gè)種子值對(duì)神經(jīng)網(wǎng)絡(luò)的權(quán)值進(jìn)行初始化,以此獲得一個(gè)有復(fù)驗(yàn)性的結(jié)果。系數(shù)通常都是被隨機(jī)的初始化的,以使我們?cè)谡{(diào)整其他超參數(shù)時(shí)仍獲得一致的結(jié)果。我們需要設(shè)定一個(gè)種子值,讓我們?cè)谡{(diào)整和測試的時(shí)候能夠用這個(gè)隨機(jī)的權(quán)值。

    .optimizationAlgo(OptimizationAlgorithm.STOCHASTIC_GRADIENT_DESCENT).iterations(1)

    決定使用哪個(gè)最優(yōu)算法(在這個(gè)例子中是隨機(jī)梯度下降法)來調(diào)整權(quán)值以提高誤差分?jǐn)?shù)。你可能不需要對(duì)這個(gè)進(jìn)行修改。

    .learningRate(0.005)

    當(dāng)我們使用隨機(jī)梯度下降法的時(shí)候,誤差梯度就被計(jì)算出來了。在我們?cè)噲D將誤差值減到最小的過程中,權(quán)值也隨之變化。SGD給我們一個(gè)讓誤差更小的方向,這個(gè)學(xué)習(xí)效率就決定了我們?cè)撛谶@個(gè)方向上邁多大的梯度。如果學(xué)習(xí)效率太高,你可能是超過了誤差最小值;如果太低,你的訓(xùn)練可能將會(huì)永遠(yuǎn)進(jìn)行。這是一個(gè)你需要調(diào)整的超參數(shù)。

    四、神經(jīng)網(wǎng)絡(luò)相關(guān)名詞解釋

    很多人認(rèn)為深度學(xué)習(xí)很枯燥,大部分情況是因?yàn)閷?duì)深度學(xué)習(xí)的學(xué)術(shù)詞語,特別是專有名詞很困惑,即便對(duì)相關(guān)從業(yè)者,亦很難深入淺出地解釋這些詞語的含義。 

    相信讀過此文的圈友,會(huì)對(duì)深度學(xué)習(xí)有個(gè)全新的認(rèn)識(shí),機(jī)器人圈希望可以為圈友的深度學(xué)習(xí)之路起到一些輔助作用。

    人工智能,深度學(xué)習(xí),機(jī)器學(xué)習(xí)—無論你在做什么,如果你對(duì)它不是很了解的話—去學(xué)習(xí)它。否則的話不用三年你就跟不上時(shí)代的潮流了。——馬克.庫班

    馬克.庫班的這個(gè)觀點(diǎn)可能聽起來很極端——但是它所傳達(dá)的信息是完全正確的! 我們正處于一場革命的旋渦之中——一場由大數(shù)據(jù)和計(jì)算能力引起的革命。

    只需要一分鐘,我們來想象一下,在20世紀(jì)初,如果一個(gè)人不了解電力,他/她會(huì)覺得如何?你會(huì)習(xí)慣于以某種特定的方式來做事情,日復(fù)一日,年復(fù)一年,而你周圍的一切事情都在發(fā)生變化,一件需要很多人才能完成的事情僅依靠一個(gè)人和電力就可以輕松搞定,而我們今天正以機(jī)器學(xué)習(xí)和深度學(xué)習(xí)的方式在經(jīng)歷一場相似的旅程。

    所以,如果你還沒有探索或理解深度學(xué)習(xí)的神奇力量——那你應(yīng)該從今天就開始進(jìn)入這一領(lǐng)域。

    與主題相關(guān)的術(shù)語

    為了幫助你了解各種術(shù)語,我已經(jīng)將它們分成3組。如果你正在尋找特定術(shù)語,你可以跳到該部分。如果你是這個(gè)領(lǐng)域的新手,那我建議你按照我寫的順序來通讀它們。

    1.神經(jīng)網(wǎng)絡(luò)基礎(chǔ)(Basics of Neural Networks) ——常用激活函數(shù)(Common Activation Functions) 

    2.卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks) 

    3.循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Networks)

    神經(jīng)網(wǎng)絡(luò)基礎(chǔ)

    1)神經(jīng)元(Neuron) ——就像形成我們大腦基本元素的神經(jīng)元一樣,神經(jīng)元形成神經(jīng)網(wǎng)絡(luò)的基本結(jié)構(gòu)。想象一下,當(dāng)我們得到新信息時(shí)我們?cè)撛趺醋?。?dāng)我們獲取信息時(shí),我們一般會(huì)處理它,然后生成一個(gè)輸出。類似地,在神經(jīng)網(wǎng)絡(luò)的情況下,神經(jīng)元接收輸入,處理它并產(chǎn)生輸出,而這個(gè)輸出被發(fā)送到其他神經(jīng)元用于進(jìn)一步處理,或者作為最終輸出進(jìn)行輸出。 

    2)權(quán)重(Weights) ——當(dāng)輸入進(jìn)入神經(jīng)元時(shí),它會(huì)乘以一個(gè)權(quán)重。例如,如果一個(gè)神經(jīng)元有兩個(gè)輸入,則每個(gè)輸入將具有分配給它的一個(gè)關(guān)聯(lián)權(quán)重。我們隨機(jī)初始化權(quán)重,并在模型訓(xùn)練過程中更新這些權(quán)重。訓(xùn)練后的神經(jīng)網(wǎng)絡(luò)對(duì)其輸入賦予較高的權(quán)重,這是它認(rèn)為與不那么重要的輸入相比更為重要的輸入。為零的權(quán)重則表示特定的特征是微不足道的。

    讓我們假設(shè)輸入為a,并且與其相關(guān)聯(lián)的權(quán)重為W1,那么在通過節(jié)點(diǎn)之后,輸入變?yōu)閍 * W1 

    3)偏差(Bias) ——除了權(quán)重之外,另一個(gè)被應(yīng)用于輸入的線性分量被稱為偏差。它被加到權(quán)重與輸入相乘的結(jié)果中?;旧咸砑悠畹哪康氖莵砀淖儥?quán)重與輸入相乘所得結(jié)果的范圍的。添加偏差后,結(jié)果將看起來像a* W1 +偏差。這是輸入變換的最終線性分量。

    4)激活函數(shù)(Activation Function) ——一旦將線性分量應(yīng)用于輸入,將會(huì)需要應(yīng)用一個(gè)非線性函數(shù)。這通過將激活函數(shù)應(yīng)用于線性組合來完成。激活函數(shù)將輸入信號(hào)轉(zhuǎn)換為輸出信號(hào)。應(yīng)用激活函數(shù)后的輸出看起來像f(a * W1 + b),其中f()就是激活函數(shù)。

    在下圖中,我們將“n”個(gè)輸入給定為X1到Xn而與其相應(yīng)的權(quán)重為Wk1到Wkn。我們有一個(gè)給定值為bk的偏差。權(quán)重首先乘以與其對(duì)應(yīng)的輸入,然后與偏差加在一起。而這個(gè)值叫做u。

    U =ΣW* X+ b

    激活函數(shù)被應(yīng)用于u,即 f(u),并且我們會(huì)從神經(jīng)元接收最終輸出,如yk = f(u)。

    常用的激活函數(shù)  

    最常用的激活函數(shù)就是Sigmoid,ReLU和softmax

    a)Sigmoid ——最常用的激活函數(shù)之一是Sigmoid,它被定義為: 

    Sigmoid變換產(chǎn)生一個(gè)值為0到1之間更平滑的范圍。我們可能需要觀察在輸入值略有變化時(shí)輸出值中發(fā)生的變化。光滑的曲線使我們能夠做到這一點(diǎn),因此優(yōu)于階躍函數(shù)。

    b)ReLU(整流線性單位) ——與Sigmoid函數(shù)不同的是,最近的網(wǎng)絡(luò)更喜歡使用ReLu激活函數(shù)來處理隱藏層。該函數(shù)定義為: 

    當(dāng)X>0時(shí),函數(shù)的輸出值為X;當(dāng)X<=0時(shí),輸出值為0。函數(shù)圖如下圖所示: 

    使用ReLU函數(shù)的最主要的好處是對(duì)于大于0的所有輸入來說,它都有一個(gè)不變的導(dǎo)數(shù)值。常數(shù)導(dǎo)數(shù)值有助于網(wǎng)絡(luò)訓(xùn)練進(jìn)行得更快。

    c) Softmax ——Softmax激活函數(shù)通常用于輸出層,用于分類問題。它與sigmoid函數(shù)是很類似的,唯一的區(qū)別就是輸出被歸一化為總和為1。Sigmoid函數(shù)將發(fā)揮作用以防我們有一個(gè)二進(jìn)制輸出,但是如果我們有一個(gè)多類分類問題,softmax函數(shù)使為每個(gè)類分配值這種操作變得相當(dāng)簡單,而這可以將其解釋為概率。

    以這種方式來操作的話,我們很容易看到——假設(shè)你正在嘗試識(shí)別一個(gè)可能看起來像8的6。該函數(shù)將為每個(gè)數(shù)字分配值如下。我們可以很容易地看出,最高概率被分配給6,而下一個(gè)最高概率分配給8,依此類推……

    5)神經(jīng)網(wǎng)絡(luò)(Neural Network) ——神經(jīng)網(wǎng)絡(luò)構(gòu)成了深度學(xué)習(xí)的支柱。神經(jīng)網(wǎng)絡(luò)的目標(biāo)是找到一個(gè)未知函數(shù)的近似值。它由相互聯(lián)系的神經(jīng)元形成。這些神經(jīng)元具有權(quán)重和在網(wǎng)絡(luò)訓(xùn)練期間根據(jù)錯(cuò)誤來進(jìn)行更新的偏差。激活函數(shù)將非線性變換置于線性組合,而這個(gè)線性組合稍后會(huì)生成輸出。激活的神經(jīng)元的組合會(huì)給出輸出值。

    一個(gè)很好的神經(jīng)網(wǎng)絡(luò)定義——

    “神經(jīng)網(wǎng)絡(luò)由許多相互關(guān)聯(lián)的概念化的人造神經(jīng)元組成,它們之間傳遞相互數(shù)據(jù),并且具有根據(jù)網(wǎng)絡(luò)”經(jīng)驗(yàn)“調(diào)整的相關(guān)權(quán)重。神經(jīng)元具有激活閾值,如果通過其相關(guān)權(quán)重的組合和傳遞給他們的數(shù)據(jù)滿足這個(gè)閾值的話,其將被解雇;發(fā)射神經(jīng)元的組合導(dǎo)致“學(xué)習(xí)”。

    6)輸入/輸出/隱藏層(Input / Output / Hidden Layer) ——正如它們名字所代表的那樣,輸入層是接收輸入那一層,本質(zhì)上是網(wǎng)絡(luò)的第一層。而輸出層是生成輸出的那一層,也可以說是網(wǎng)絡(luò)的最終層。處理層是網(wǎng)絡(luò)中的隱藏層。這些隱藏層是對(duì)傳入數(shù)據(jù)執(zhí)行特定任務(wù)并將其生成的輸出傳遞到下一層的那些層。輸入和輸出層是我們可見的,而中間層則是隱藏的。

    7)MLP(多層感知器) ——單個(gè)神經(jīng)元將無法執(zhí)行高度復(fù)雜的任務(wù)。因此,我們使用堆棧的神經(jīng)元來生成我們所需要的輸出。在最簡單的網(wǎng)絡(luò)中,我們將有一個(gè)輸入層、一個(gè)隱藏層和一個(gè)輸出層。每個(gè)層都有多個(gè)神經(jīng)元,并且每個(gè)層中的所有神經(jīng)元都連接到下一層的所有神經(jīng)元。這些網(wǎng)絡(luò)也可以被稱為完全連接的網(wǎng)絡(luò)。 

    8)正向傳播(Forward Propagation) ——正向傳播是指輸入通過隱藏層到輸出層的運(yùn)動(dòng)。在正向傳播中,信息沿著一個(gè)單一方向前進(jìn)。輸入層將輸入提供給隱藏層,然后生成輸出。這過程中是沒有反向運(yùn)動(dòng)的。

    9)成本函數(shù)(Cost Function) ——當(dāng)我們建立一個(gè)網(wǎng)絡(luò)時(shí),網(wǎng)絡(luò)試圖將輸出預(yù)測得盡可能靠近實(shí)際值。我們使用成本/損失函數(shù)來衡量網(wǎng)絡(luò)的準(zhǔn)確性。而成本或損失函數(shù)會(huì)在發(fā)生錯(cuò)誤時(shí)嘗試懲罰網(wǎng)絡(luò)。

    我們?cè)谶\(yùn)行網(wǎng)絡(luò)時(shí)的目標(biāo)是提高我們的預(yù)測精度并減少誤差,從而最大限度地降低成本。最優(yōu)化的輸出是那些成本或損失函數(shù)值最小的輸出。

    如果我將成本函數(shù)定義為均方誤差,則可以寫為:

    C= 1/m ∑(y–a)^2,

    其中m是訓(xùn)練輸入的數(shù)量,a是預(yù)測值,y是該特定示例的實(shí)際值。

    學(xué)習(xí)過程圍繞最小化成本來進(jìn)行。

    10)梯度下降(Gradient Descent) ——梯度下降是一種最小化成本的優(yōu)化算法。要直觀地想一想,在爬山的時(shí)候,你應(yīng)該會(huì)采取小步驟,一步一步走下來,而不是一下子跳下來。因此,我們所做的就是,如果我們從一個(gè)點(diǎn)x開始,我們向下移動(dòng)一點(diǎn),即Δh,并將我們的位置更新為x-Δh,并且我們繼續(xù)保持一致,直到達(dá)到底部。考慮最低成本點(diǎn)。

    在數(shù)學(xué)上,為了找到函數(shù)的局部最小值,我們通常采取與函數(shù)梯度的負(fù)數(shù)成比例的步長。

    11)學(xué)習(xí)率(Learning Rate) ——學(xué)習(xí)率被定義為每次迭代中成本函數(shù)中最小化的量。簡單來說,我們下降到成本函數(shù)的最小值的速率是學(xué)習(xí)率。我們應(yīng)該非常仔細(xì)地選擇學(xué)習(xí)率,因?yàn)樗粦?yīng)該是非常大的,以至于最佳解決方案被錯(cuò)過,也不應(yīng)該非常低,以至于網(wǎng)絡(luò)需要融合。

    12)反向傳播(Backpropagation) ——當(dāng)我們定義神經(jīng)網(wǎng)絡(luò)時(shí),我們?yōu)槲覀兊墓?jié)點(diǎn)分配隨機(jī)權(quán)重和偏差值。一旦我們收到單次迭代的輸出,我們就可以計(jì)算出網(wǎng)絡(luò)的錯(cuò)誤。然后將該錯(cuò)誤與成本函數(shù)的梯度一起反饋給網(wǎng)絡(luò)以更新網(wǎng)絡(luò)的權(quán)重。 最后更新這些權(quán)重,以便減少后續(xù)迭代中的錯(cuò)誤。使用成本函數(shù)的梯度的權(quán)重的更新被稱為反向傳播。

    在反向傳播中,網(wǎng)絡(luò)的運(yùn)動(dòng)是向后的,錯(cuò)誤隨著梯度從外層通過隱藏層流回,權(quán)重被更新。

    13)批次(Batches) ——在訓(xùn)練神經(jīng)網(wǎng)絡(luò)的同時(shí),不用一次發(fā)送整個(gè)輸入,我們將輸入分成幾個(gè)隨機(jī)大小相等的塊。與整個(gè)數(shù)據(jù)集一次性饋送到網(wǎng)絡(luò)時(shí)建立的模型相比,批量訓(xùn)練數(shù)據(jù)使得模型更加廣義化。

    14)周期(Epochs) ——周期被定義為向前和向后傳播中所有批次的單次訓(xùn)練迭代。這意味著1個(gè)周期是整個(gè)輸入數(shù)據(jù)的單次向前和向后傳遞。

    你可以選擇你用來訓(xùn)練網(wǎng)絡(luò)的周期數(shù)量,更多的周期將顯示出更高的網(wǎng)絡(luò)準(zhǔn)確性,然而,網(wǎng)絡(luò)融合也需要更長的時(shí)間。另外,你必須注意,如果周期數(shù)太高,網(wǎng)絡(luò)可能會(huì)過度擬合。

    15)丟棄(Dropout) ——Dropout是一種正則化技術(shù),可防止網(wǎng)絡(luò)過度擬合套。顧名思義,在訓(xùn)練期間,隱藏層中的一定數(shù)量的神經(jīng)元被隨機(jī)地丟棄。這意味著訓(xùn)練發(fā)生在神經(jīng)網(wǎng)絡(luò)的不同組合的神經(jīng)網(wǎng)絡(luò)的幾個(gè)架構(gòu)上。你可以將Dropout視為一種綜合技術(shù),然后將多個(gè)網(wǎng)絡(luò)的輸出用于產(chǎn)生最終輸出。

    16)批量歸一化(Batch Normalization) ——作為一個(gè)概念,批量歸一化可以被認(rèn)為是我們?cè)诤恿髦性O(shè)定為特定檢查點(diǎn)的水壩。這樣做是為了確保數(shù)據(jù)的分發(fā)與希望獲得的下一層相同。當(dāng)我們訓(xùn)練神經(jīng)網(wǎng)絡(luò)時(shí),權(quán)重在梯度下降的每個(gè)步驟之后都會(huì)改變,這會(huì)改變數(shù)據(jù)的形狀如何發(fā)送到下一層。

    但是下一層預(yù)期分布類似于之前所看到的分布。 所以我們?cè)趯?shù)據(jù)發(fā)送到下一層之前明確規(guī)范化數(shù)據(jù)。

    17)濾波器(Filters) ——CNN中的濾波器與加權(quán)矩陣一樣,它與輸入圖像的一部分相乘以產(chǎn)生一個(gè)回旋輸出。我們假設(shè)有一個(gè)大小為28 * 28的圖像,我們隨機(jī)分配一個(gè)大小為3 * 3的濾波器,然后與圖像不同的3 * 3部分相乘,形成所謂的卷積輸出。濾波器尺寸通常小于原始圖像尺寸。在成本最小化的反向傳播期間,濾波器值被更新為重量值。

    參考一下下圖,這里filter是一個(gè)3 * 3矩陣:

    與圖像的每個(gè)3 * 3部分相乘以形成卷積特征。

    18)卷積神經(jīng)網(wǎng)絡(luò)(CNN) ——卷積神經(jīng)網(wǎng)絡(luò)基本上應(yīng)用于圖像數(shù)據(jù)。假設(shè)我們有一個(gè)輸入的大?。?8 * 28 * 3),如果我們使用正常的神經(jīng)網(wǎng)絡(luò),將有2352(28 * 28 * 3)參數(shù)。并且隨著圖像的大小增加參數(shù)的數(shù)量變得非常大。我們“卷積”圖像以減少參數(shù)數(shù)量(如上面濾波器定義所示)。當(dāng)我們將濾波器滑動(dòng)到輸入體積的寬度和高度時(shí),將產(chǎn)生一個(gè)二維激活圖,給出該濾波器在每個(gè)位置的輸出。我們將沿深度尺寸堆疊這些激活圖,并產(chǎn)生輸出量。

    你可以看到下面的圖,以獲得更清晰的印象。

    19)池化(Pooling) ——通常在卷積層之間定期引入池層。這基本上是為了減少一些參數(shù),并防止過度擬合。最常見的池化類型是使用MAX操作的濾波器尺寸(2,2)的池層。它會(huì)做的是,它將占用原始圖像的每個(gè)4 * 4矩陣的最大值。

    你還可以使用其他操作(如平均池)進(jìn)行池化,但是最大池?cái)?shù)量在實(shí)踐中表現(xiàn)更好。

    20)填充(Padding) ——填充是指在圖像之間添加額外的零層,以使輸出圖像的大小與輸入相同。這被稱為相同的填充。

    在應(yīng)用濾波器之后,在相同填充的情況下,卷積層具有等于實(shí)際圖像的大小。

    有效填充是指將圖像保持為具有實(shí)際或“有效”的圖像的所有像素。在這種情況下,在應(yīng)用濾波器之后,輸出的長度和寬度的大小在每個(gè)卷積層處不斷減小。

    21)數(shù)據(jù)增強(qiáng)(Data Augmentation) ——數(shù)據(jù)增強(qiáng)是指從給定數(shù)據(jù)導(dǎo)出的新數(shù)據(jù)的添加,這可能被證明對(duì)預(yù)測有益。例如,如果你使光線變亮,可能更容易在較暗的圖像中看到貓,或者例如,數(shù)字識(shí)別中的9可能會(huì)稍微傾斜或旋轉(zhuǎn)。在這種情況下,旋轉(zhuǎn)將解決問題并提高我們的模型的準(zhǔn)確性。通過旋轉(zhuǎn)或增亮,我們正在提高數(shù)據(jù)的質(zhì)量。這被稱為數(shù)據(jù)增強(qiáng)。

    循環(huán)神經(jīng)網(wǎng)絡(luò)

    22)循環(huán)神經(jīng)元(Recurrent Neuron) ——循環(huán)神經(jīng)元是在T時(shí)間內(nèi)將神經(jīng)元的輸出發(fā)送回給它。如果你看圖,輸出將返回輸入t次。展開的神經(jīng)元看起來像連接在一起的t個(gè)不同的神經(jīng)元。這個(gè)神經(jīng)元的基本優(yōu)點(diǎn)是它給出了更廣義的輸出。

    23)循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN) ——循環(huán)神經(jīng)網(wǎng)絡(luò)特別用于順序數(shù)據(jù),其中先前的輸出用于預(yù)測下一個(gè)輸出。在這種情況下,網(wǎng)絡(luò)中有循環(huán)。隱藏神經(jīng)元內(nèi)的循環(huán)使他們能夠存儲(chǔ)有關(guān)前一個(gè)單詞的信息一段時(shí)間,以便能夠預(yù)測輸出。隱藏層的輸出在t時(shí)間戳內(nèi)再次發(fā)送到隱藏層。展開的神經(jīng)元看起來像上圖。只有在完成所有的時(shí)間戳后,循環(huán)神經(jīng)元的輸出才能進(jìn)入下一層。發(fā)送的輸出更廣泛,以前的信息保留的時(shí)間也較長。

    然后根據(jù)展開的網(wǎng)絡(luò)將錯(cuò)誤反向傳播以更新權(quán)重。這被稱為通過時(shí)間的反向傳播(BPTT)。

    24)消失梯度問題(Vanishing Gradient Problem) ——激活函數(shù)的梯度非常小的情況下會(huì)出現(xiàn)消失梯度問題。在權(quán)重乘以這些低梯度時(shí)的反向傳播過程中,它們往往變得非常小,并且隨著網(wǎng)絡(luò)進(jìn)一步深入而“消失”。這使得神經(jīng)網(wǎng)絡(luò)忘記了長距離依賴。這對(duì)循環(huán)神經(jīng)網(wǎng)絡(luò)來說是一個(gè)問題,長期依賴對(duì)于網(wǎng)絡(luò)來說是非常重要的。

    這可以通過使用不具有小梯度的激活函數(shù)ReLu來解決。

    25)激增梯度問題(Exploding Gradient Problem) ——這與消失的梯度問題完全相反,激活函數(shù)的梯度過大。在反向傳播期間,它使特定節(jié)點(diǎn)的權(quán)重相對(duì)于其他節(jié)點(diǎn)的權(quán)重非常高,這使得它們不重要。這可以通過剪切梯度來輕松解決,使其不超過一定值。

    以上就是關(guān)于神經(jīng)網(wǎng)絡(luò)的概念相關(guān)問題的回答。希望能幫到你,如有更多相關(guān)問題,您也可以聯(lián)系我們的客服進(jìn)行咨詢,客服也會(huì)為您講解更多精彩的知識(shí)和內(nèi)容。


    推薦閱讀:

    腰椎間盤突出壓迫神經(jīng)腿疼怎么治(腰椎間盤突出壓迫神經(jīng)腿疼怎么治中藥)

    神經(jīng)網(wǎng)絡(luò)基礎(chǔ)(神經(jīng)網(wǎng)絡(luò)基礎(chǔ)知識(shí))

    如何設(shè)計(jì)卷積神經(jīng)網(wǎng)絡(luò)(如何設(shè)計(jì)卷積神經(jīng)網(wǎng)絡(luò)方案)

    openai自動(dòng)代碼生成器(openapi3.0 自動(dòng)生成api文檔)

    杭州初新文化傳媒(杭州初新文化傳媒有限公司怎么樣)