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

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

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

基于Python 的人工神經(jīng)網(wǎng)絡(luò)的工作原理

電子設(shè)計(jì) ? 來源:阿里云云棲社區(qū) ? 作者:Vihar Kurama ? 2020-12-31 17:07 ? 次閱讀

摘要: 深度學(xué)習(xí)背后的主要原因是人工智能應(yīng)該從人腦中汲取靈感。本文就用一個(gè)小例子無死角的介紹一下深度學(xué)習(xí)!

人腦模擬

深度學(xué)習(xí)背后的主要原因是人工智能應(yīng)該從人腦中汲取靈感。此觀點(diǎn)引出了“神經(jīng)網(wǎng)絡(luò)”這一術(shù)語。人腦中包含數(shù)十億個(gè)神經(jīng)元,它們之間有數(shù)萬個(gè)連接。很多情況下,深度學(xué)習(xí)算法和人腦相似,因?yàn)槿四X和深度學(xué)習(xí)模型都擁有大量的編譯單元(神經(jīng)元),這些編譯單元(神經(jīng)元)在獨(dú)立的情況下都不太智能,但是當(dāng)他們相互作用時(shí)就會(huì)變得智能。

我認(rèn)為人們需要了解到深度學(xué)習(xí)正在使得很多幕后的事物變得更好。深度學(xué)習(xí)已經(jīng)應(yīng)用于谷歌搜索和圖像搜索,你可以通過它搜索像“擁抱”這樣的詞語以獲得相應(yīng)的圖像。-杰弗里·辛頓

神經(jīng)元

神經(jīng)網(wǎng)絡(luò)的基本構(gòu)建模塊是人工神經(jīng)元,它模仿了人類大腦的神經(jīng)元。這些神經(jīng)元是簡(jiǎn)單、強(qiáng)大的計(jì)算單元,擁有加權(quán)輸入信號(hào)并且使用激活函數(shù)產(chǎn)生輸出信號(hào)。這些神經(jīng)元分布在神經(jīng)網(wǎng)絡(luò)的幾個(gè)層中。

inputs 輸入 outputs 輸出 weights 權(quán)值 activation 激活

inputs 輸入 outputs 輸出 weights 權(quán)值 activation 激活

人工神經(jīng)網(wǎng)絡(luò)的工作原理是什么?

深度學(xué)習(xí)由人工神經(jīng)網(wǎng)絡(luò)構(gòu)成,該網(wǎng)絡(luò)模擬了人腦中類似的網(wǎng)絡(luò)。當(dāng)數(shù)據(jù)穿過這個(gè)人工網(wǎng)絡(luò)時(shí),每一層都會(huì)處理這個(gè)數(shù)據(jù)的一方面,過濾掉異常值,辨認(rèn)出熟悉的實(shí)體,并產(chǎn)生最終輸出。

pIYBAF9uKfKAffscAApv94LXQQk821.png

輸入層:該層由神經(jīng)元組成,這些神經(jīng)元只接收輸入信息并將它傳遞到其他層。輸入層的圖層數(shù)應(yīng)等于數(shù)據(jù)集里的屬性或要素的數(shù)量。輸出層:輸出層具有預(yù)測(cè)性,其主要取決于你所構(gòu)建的模型類型。隱含層:隱含層處于輸入層和輸出層之間,以模型類型為基礎(chǔ)。隱含層包含大量的神經(jīng)元。處于隱含層的神經(jīng)元會(huì)先轉(zhuǎn)化輸入信息,再將它們傳遞出去。隨著網(wǎng)絡(luò)受訓(xùn)練,權(quán)重得到更新,從而使其更具前瞻性。

神經(jīng)元的權(quán)重

權(quán)重是指兩個(gè)神經(jīng)元之間的連接的強(qiáng)度或幅度。你如果熟悉線性回歸的話,可以將輸入的權(quán)重類比為我們?cè)诨貧w方程中用的系數(shù)。權(quán)重通常被初始化為小的隨機(jī)數(shù)值,比如數(shù)值0-1。

前饋深度網(wǎng)絡(luò)

前饋監(jiān)督神經(jīng)網(wǎng)絡(luò)曾是第一個(gè)也是最成功的學(xué)習(xí)算法。該網(wǎng)絡(luò)也可被稱為深度網(wǎng)絡(luò)、多層感知機(jī)(MLP)或簡(jiǎn)單神經(jīng)網(wǎng)絡(luò),并且闡明了具有單一隱含層的原始架構(gòu)。每個(gè)神經(jīng)元通過某個(gè)權(quán)重和另一個(gè)神經(jīng)元相關(guān)聯(lián)。

該網(wǎng)絡(luò)處理向前處理輸入信息,激活神經(jīng)元,最終產(chǎn)生輸出值。在此網(wǎng)絡(luò)中,這稱為前向傳遞。

input layer 輸入層   hidden layer 輸出層  output layer 輸出層

input layer 輸入層 hidden layer 輸出層 output layer 輸出層

激活函數(shù)

激活函數(shù)就是求和加權(quán)的輸入到神經(jīng)元的輸出的映射。之所以稱之為激活函數(shù)或傳遞函數(shù)是因?yàn)樗刂浦せ钌窠?jīng)元的初始值和輸出信號(hào)的強(qiáng)度。

用數(shù)學(xué)表示為:

pIYBAF9uKfaARYAtAABl2J8NKNI659.png

我們有許多激活函數(shù),其中使用最多的是整流線性單元函數(shù)、雙曲正切函數(shù)和solfPlus函數(shù)。

激活函數(shù)的速查表如下:

pIYBAF9uKfmADac7AAMcbnb-Ock107.png

反向傳播

在網(wǎng)絡(luò)中,我們將預(yù)測(cè)值與預(yù)期輸出值相比較,并使用函數(shù)計(jì)算其誤差。然后,這個(gè)誤差會(huì)傳回這個(gè)網(wǎng)絡(luò),每次傳回一個(gè)層,權(quán)重也會(huì)根絕其導(dǎo)致的誤差值進(jìn)行更新。這個(gè)聰明的數(shù)學(xué)法是反向傳播算法。這個(gè)步驟會(huì)在訓(xùn)練數(shù)據(jù)的所有樣本中反復(fù)進(jìn)行,整個(gè)訓(xùn)練數(shù)據(jù)集的網(wǎng)絡(luò)更新一輪稱為一個(gè)時(shí)期。一個(gè)網(wǎng)絡(luò)可受訓(xùn)練數(shù)十、數(shù)百或數(shù)千個(gè)時(shí)期。

prediction error 預(yù)測(cè)誤差

prediction error 預(yù)測(cè)誤差

代價(jià)函數(shù)和梯度下降

代價(jià)函數(shù)度量了神經(jīng)網(wǎng)絡(luò)對(duì)給定的訓(xùn)練輸入和預(yù)期輸出“有多好”。該函數(shù)可能取決于權(quán)重、偏差等屬性。

代價(jià)函數(shù)是單值的,并不是一個(gè)向量,因?yàn)樗鼜恼w上評(píng)估神經(jīng)網(wǎng)絡(luò)的性能。在運(yùn)用梯度下降最優(yōu)算法時(shí),權(quán)重在每個(gè)時(shí)期后都會(huì)得到增量式地更新。

兼容代價(jià)函數(shù)

用數(shù)學(xué)表述為差值平方和:

target 目標(biāo)值 output 輸出值

target 目標(biāo)值 output 輸出值

權(quán)重更新的大小和方向是由在代價(jià)梯度的反向上采取步驟計(jì)算出的。

其中η 是學(xué)習(xí)率

其中η 是學(xué)習(xí)率

其中Δw是包含每個(gè)權(quán)重系數(shù)w的權(quán)重更新的向量,其計(jì)算方式如下:

target 目標(biāo)值 output 輸出值

target 目標(biāo)值 output 輸出值

圖表中會(huì)考慮到單系數(shù)的代價(jià)函數(shù)

initial weight 初始權(quán)重 gradient 梯度 global cost minimum 代價(jià)極小值

initial weight 初始權(quán)重 gradient 梯度 global cost minimum 代價(jià)極小值

在導(dǎo)數(shù)達(dá)到最小誤差值之前,我們會(huì)一直計(jì)算梯度下降,并且每個(gè)步驟都會(huì)取決于斜率(梯度)的陡度。

多層感知器(前向傳播)

這類網(wǎng)絡(luò)由多層神經(jīng)元組成,通常這些神經(jīng)元以前饋方式(向前傳播)相互連接。一層中的每個(gè)神經(jīng)元可以直接連接后續(xù)層的神經(jīng)元。在許多應(yīng)用中,這些網(wǎng)絡(luò)的單元會(huì)采用S型函數(shù)或整流線性單元(整流線性激活)函數(shù)作為激活函數(shù)。

現(xiàn)在想想看要找出處理次數(shù)這個(gè)問題,給定的賬戶和家庭成員作為輸入

要解決這個(gè)問題,首先,我們需要先創(chuàng)建一個(gè)前向傳播神經(jīng)網(wǎng)絡(luò)。我們的輸入層將是家庭成員和賬戶的數(shù)量,隱含層數(shù)為1, 輸出層將是處理次數(shù)。

將圖中輸入層到輸出層的給定權(quán)重作為輸入:家庭成員數(shù)為2、賬戶數(shù)為3。

現(xiàn)在將通過以下步驟使用前向傳播來計(jì)算隱含層(i,j)和輸出層(k)的值。

步驟:
1, 乘法-添加方法。
2, 點(diǎn)積(輸入*權(quán)重)。
3,一次一個(gè)數(shù)據(jù)點(diǎn)的前向傳播。
4, 輸出是該數(shù)據(jù)點(diǎn)的預(yù)測(cè)。

pIYBAF9uKgWAXVELAAJSfBDtxCw917.png

i的值將從相連接的神經(jīng)元所對(duì)應(yīng)的輸入值和權(quán)重中計(jì)算出來。

i = (2 * 1) + (3 * 1) → i = 5

同樣地,j = (2 * -1) + (3 * 1) → j = 1

K = (5 * 2) + (1 * -1) → k = 9

o4YBAF9uKgiAei8mAAJ_H2WaEIc993.png

Python中的多層感知器問題的解決

o4YBAF9uKguAE0w2AAQUGfpaa4c337.png


pIYBAF9uKg2AbISSAAC1D0puXe0822.png

激活函數(shù)的使用

為了使神經(jīng)網(wǎng)絡(luò)達(dá)到其最大預(yù)測(cè)能力,我們需要在隱含層應(yīng)用一個(gè)激活函數(shù),以捕捉非線性。我們通過將值代入方程式的方式來在輸入層和輸出層應(yīng)用激活函數(shù)。

這里我們使用整流線性激活(ReLU):

pIYBAF9uKg6ADZzCAACLyPft-Xg567.png


pIYBAF9uKhKAPQ_yAAQOpEPPeO0461.png


o4YBAF9uKhSAVSsYAAB5K-MERNU695.png

用Keras開發(fā)第一個(gè)神經(jīng)網(wǎng)絡(luò)

關(guān)于Keras:

Keras是一個(gè)高級(jí)神經(jīng)網(wǎng)絡(luò)的應(yīng)用程序編程接口,由Python編寫,能夠搭建在TensorFlow,CNTK,或Theano上。

使用PIP在設(shè)備上安裝Keras,并且運(yùn)行下列指令。

在keras執(zhí)行深度學(xué)習(xí)程序的步驟
1,加載數(shù)據(jù);
2,創(chuàng)建模型;
3,編譯模型;
4,擬合模型;
5,評(píng)估模型;

開發(fā)Keras模型

全連接層用Dense表示。我們可以指定層中神經(jīng)元的數(shù)量作為第一參數(shù),指定初始化方法為第二參數(shù),即初始化參數(shù),并且用激活參數(shù)確定激活函數(shù)。既然模型已經(jīng)創(chuàng)建,我們就可以編譯它。我們?cè)诘讓訋欤ㄒ卜Q為后端)用高效數(shù)字庫編譯模型,底層庫可以用Theano或TensorFlow。目前為止,我們已經(jīng)完成了創(chuàng)建模型和編譯模型,為進(jìn)行有效計(jì)算做好了準(zhǔn)備?,F(xiàn)在可以在PIMA數(shù)據(jù)上運(yùn)行模型了。我們可以在模型上調(diào)用擬合函數(shù)f(),以在數(shù)據(jù)上訓(xùn)練或擬合模型。

我們先從KERAS中的程序開始,

o4YBAF9uKhqAB-1WAAV7TEEqJvo172.png


pIYBAF9uKhyABk_MAAHzJQTAuNw919.png

神經(jīng)網(wǎng)絡(luò)一直訓(xùn)練到150個(gè)時(shí)期,并返回精確值。

本文由北郵@愛可可-愛生活老師推薦,阿里云云棲社區(qū)組織翻譯。

作者:Vihar Kurama

譯者:荷葉。

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

    評(píng)論

    相關(guān)推薦

    人工神經(jīng)網(wǎng)絡(luò)原理及下載

    人工神經(jīng)網(wǎng)絡(luò)是根據(jù)人的認(rèn)識(shí)過程而開發(fā)出的一種算法。假如我們現(xiàn)在只有一些輸入和相應(yīng)的輸出,而對(duì)如何由輸入得到輸出的機(jī)理并不清楚,那么我們可以把輸入與輸出之間的未知過程看成是一個(gè)“網(wǎng)絡(luò)”,通過不斷地給
    發(fā)表于 06-19 14:40

    應(yīng)用人工神經(jīng)網(wǎng)絡(luò)模擬污水生物處理

    應(yīng)用人工神經(jīng)網(wǎng)絡(luò)模擬污水生物處理(1.浙江工業(yè)大學(xué)建筑工程學(xué)院, 杭州 310014; 2.鎮(zhèn)江水工業(yè)公司排水管理處,鎮(zhèn)江 212003)摘要:針對(duì)復(fù)雜的非線性污水生物處理過程,開發(fā)了徑向基函數(shù)的人工
    發(fā)表于 08-08 09:56

    人工神經(jīng)網(wǎng)絡(luò)課件

    人工神經(jīng)網(wǎng)絡(luò)課件
    發(fā)表于 06-19 10:15

    【PYNQ-Z2試用體驗(yàn)】神經(jīng)網(wǎng)絡(luò)基礎(chǔ)知識(shí)

    前言前面我們通過notebook,完成了在PYNQ-Z2開發(fā)板上編寫并運(yùn)行python程序。我們的最終目的是基于神經(jīng)網(wǎng)絡(luò),完成手寫的數(shù)字識(shí)別。在這之前,有必要講一下神經(jīng)網(wǎng)絡(luò)的基本概念和工作原理
    發(fā)表于 03-03 22:10

    人工神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)方法有哪些?

    人工神經(jīng)網(wǎng)絡(luò)(Artificial Neural Network,ANN)是一種類似生物神經(jīng)網(wǎng)絡(luò)的信息處理結(jié)構(gòu),它的提出是為了解決一些非線性,非平穩(wěn),復(fù)雜的實(shí)際問題。那有哪些辦法能實(shí)現(xiàn)人工
    發(fā)表于 08-01 08:06

    怎么解決人工神經(jīng)網(wǎng)絡(luò)并行數(shù)據(jù)處理的問題

    本文提出了一個(gè)基于FPGA 的信息處理的實(shí)例:一個(gè)簡(jiǎn)單的人工神經(jīng)網(wǎng)絡(luò)應(yīng)用Verilog 語言描述,該數(shù)據(jù)流采用模塊化的程序設(shè)計(jì),并考慮了模塊間數(shù)據(jù)傳輸信號(hào)同 步的問題,有效地解決了人工神經(jīng)網(wǎng)絡(luò)
    發(fā)表于 05-06 07:22

    嵌入式中的人工神經(jīng)網(wǎng)絡(luò)的相關(guān)資料分享

    人工神經(jīng)網(wǎng)絡(luò)在AI中具有舉足輕重的地位,除了找到最好的神經(jīng)網(wǎng)絡(luò)模型和訓(xùn)練數(shù)據(jù)集之外,人工神經(jīng)網(wǎng)絡(luò)的另一個(gè)挑戰(zhàn)是如何在嵌入式設(shè)備上實(shí)現(xiàn)它,同時(shí)
    發(fā)表于 11-09 08:06

    不可錯(cuò)過!人工神經(jīng)網(wǎng)絡(luò)算法、PID算法、Python人工智能學(xué)習(xí)等資料包分享(附源代碼)

    為了方便大家查找技術(shù)資料,電子發(fā)燒友小編為大家整理一些精華資料,讓大家可以參考學(xué)習(xí),希望對(duì)廣大電子愛好者有所幫助。 1.人工神經(jīng)網(wǎng)絡(luò)算法的學(xué)習(xí)方法與應(yīng)用實(shí)例(pdf彩版) 人工神經(jīng)
    發(fā)表于 09-13 16:41

    基于FPGA的人工神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)方法的研究

    基于FPGA的人工神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)方法的研究 引 言    人工神經(jīng)網(wǎng)絡(luò)(Artificial Neural Network,ANN)是一種類似生物
    發(fā)表于 11-17 17:17 ?1193次閱讀
    基于FPGA<b class='flag-5'>的人工</b><b class='flag-5'>神經(jīng)網(wǎng)絡(luò)</b>實(shí)現(xiàn)方法的研究

    基于FPGA的人工神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)方法的研究

    基于FPGA的人工神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)方法的研究 引言   人工神經(jīng)網(wǎng)絡(luò)(ArtificialNeuralNetwork,ANN)是一種類似生物神經(jīng)網(wǎng)
    發(fā)表于 11-21 16:25 ?4772次閱讀

    卷積神經(jīng)網(wǎng)絡(luò)工作原理 卷積神經(jīng)網(wǎng)絡(luò)通俗解釋

    卷積神經(jīng)網(wǎng)絡(luò)工作原理 卷積神經(jīng)網(wǎng)絡(luò)通俗解釋? 卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network, CNN)是一種眾所周知的深度學(xué)習(xí)算法,是
    的頭像 發(fā)表于 08-21 16:49 ?3559次閱讀

    人工神經(jīng)網(wǎng)絡(luò)工作原理是什么

    和學(xué)習(xí)。本文將詳細(xì)介紹人工神經(jīng)網(wǎng)絡(luò)工作原理,包括其基本概念、結(jié)構(gòu)、學(xué)習(xí)算法和應(yīng)用領(lǐng)域。 基本概念 1.1 神經(jīng)神經(jīng)元是
    的頭像 發(fā)表于 07-02 10:06 ?473次閱讀

    人工神經(jīng)網(wǎng)絡(luò)工作原理及應(yīng)用

    、自然語言處理等。 神經(jīng)網(wǎng)絡(luò)的基本概念 神經(jīng)網(wǎng)絡(luò)是由大量的節(jié)點(diǎn)(或稱為神經(jīng)元)組成的網(wǎng)絡(luò)結(jié)構(gòu)。每個(gè)節(jié)點(diǎn)都與其他節(jié)點(diǎn)相連,形成一個(gè)復(fù)雜的網(wǎng)絡(luò)。
    的頭像 發(fā)表于 07-05 09:25 ?381次閱讀

    前饋神經(jīng)網(wǎng)絡(luò)工作原理和應(yīng)用

    前饋神經(jīng)網(wǎng)絡(luò)(Feedforward Neural Network, FNN),作為最基本且應(yīng)用廣泛的一種人工神經(jīng)網(wǎng)絡(luò)模型,其工作原理和結(jié)構(gòu)對(duì)于理解深度學(xué)習(xí)及
    的頭像 發(fā)表于 07-08 11:28 ?785次閱讀

    Python自動(dòng)訓(xùn)練人工神經(jīng)網(wǎng)絡(luò)

    人工神經(jīng)網(wǎng)絡(luò)(ANN)是機(jī)器學(xué)習(xí)中一種重要的模型,它模仿了人腦神經(jīng)元的工作方式,通過多層節(jié)點(diǎn)(神經(jīng)元)之間的連接和權(quán)重調(diào)整來學(xué)習(xí)和解決問題。
    的頭像 發(fā)表于 07-19 11:54 ?160次閱讀