-
當(dāng)前位置:首頁 > 創(chuàng)意學(xué)院 > 技術(shù) > 專題列表 > 正文
神經(jīng)網(wǎng)絡(luò)算法作用(神經(jīng)網(wǎng)絡(luò)算法作用有哪些)
大家好!今天讓創(chuàng)意嶺的小編來大家介紹下關(guān)于神經(jīng)網(wǎng)絡(luò)算法作用的問題,以下是小編對此問題的歸納整理,讓我們一起來看看吧。
開始之前先推薦一個非常厲害的Ai人工智能工具,一鍵生成原創(chuàng)文章、方案、文案、工作計劃、工作報告、論文、代碼、作文、做題和對話答疑等等
只需要輸入關(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ù)請撥打電話175-8598-2043,或添加微信:1454722008
本文目錄:
一、神經(jīng)網(wǎng)絡(luò)算法
20 世紀(jì)五、六⼗年代,科學(xué)家 Frank Rosenblatt其受到 Warren McCulloch 和 Walter Pitts早期的⼯作的影響,發(fā)明了感知機(Perceptrons)。
⼀個感知器接受⼏個⼆進(jìn)制輸⼊, ,并產(chǎn)⽣⼀個⼆進(jìn)制輸出:
如上圖所示的感知機有三個輸⼊: 。通??梢杂懈嗷蚋佥?#12042;。 我們再引⼊權(quán)重: ,衡量輸入對輸出的重要性。感知機的輸出為0 或者 1,則由分配權(quán)重后的總和 ⼩于等于或者⼤于閾值決定。和權(quán)重⼀樣,閾值(threshold)是⼀個實數(shù),⼀個神經(jīng)元的參數(shù)。⽤更精確的代數(shù)形式如下:
給三個因素設(shè)置權(quán)重來作出決定:
可以把這三個因素對應(yīng)地⽤⼆進(jìn)制變量 來表⽰。例如,如果天⽓好,我們把
,如果不好, 。類似地,如果你的朋友陪你去, ,否則 。 也類似。
這三個對于可能對你來說,“電影好不好看”對你來說最重要,而天氣顯得不是那么的重要。所以你會這樣分配權(quán)值: ,然后定義閾值threshold=5。
現(xiàn)在,你可以使⽤感知器來給這種決策建⽴數(shù)學(xué)模型。
例如:
隨著權(quán)重和閾值的變化,你可以得到不同的決策模型。很明顯,感知機不是⼈做出決策使⽤的全部模型。但是這個例⼦說明了⼀個感知機如何能權(quán)衡不同的依據(jù)來決策。這看上去也可以⼤致解釋⼀個感知機⽹絡(luò)有時確實能夠做出一些不錯的決定。
現(xiàn)在我們隊上面的結(jié)構(gòu)做一點變化,令b=-threshold,即把閾值移到不等號左邊,變成偏置, 那么感知器的規(guī)則可以重寫為:
引⼊偏置只是我們描述感知器的⼀個很⼩的變動,但是我們后⾯會看到它引導(dǎo)更進(jìn)⼀步的符號簡化。因此,我們不再⽤閾值,⽽總是使⽤偏置。
感知機是首個可以學(xué)習(xí)的人工神經(jīng)網(wǎng)絡(luò),它的出現(xiàn)引起的神經(jīng)網(wǎng)絡(luò)的第一層高潮。需要指出的是,感知機只能做簡單的線性分類任務(wù),而且Minsky在1969年出版的《Perceptron》書中,證明了感知機對XOR(異或)這樣的問題都無法解決。但是感知機的提出,對神經(jīng)網(wǎng)絡(luò)的發(fā)展是具有重要意義的。
通過上面的感知機的觀察我們發(fā)現(xiàn)一個問題,每個感知機的輸出只有0和1,這就意味著有時我們只是在單個感知機上稍微修改了一點點權(quán)值w或者偏置b,就可能造成最終輸出完全的反轉(zhuǎn)。也就是說,感知機的輸出是一個階躍函數(shù)。如下圖所示,在0附近的時候,輸出的變化是非常明顯的,而在遠(yuǎn)離0的地方,我們可能調(diào)整好久參數(shù)也不會發(fā)生輸出的變化。
這樣階躍的跳變并不是我們想要的,我們需要的是當(dāng)我們隊權(quán)值w或者偏置b做出微小的調(diào)整后,輸出也相應(yīng)的發(fā)生微小的改變。這同時也意味值我們的輸出不再只是0和1,還可以輸出小數(shù)。由此我們引入了S型神經(jīng)元。
S型神經(jīng)元使用 S 型函數(shù),也叫Sigmoid function函數(shù),我們用它作為激活函數(shù)。其表達(dá)式如下:
圖像如下圖所示:
利⽤實際的 σ 函數(shù),我們得到⼀個,就像上⾯說明的,平滑的感知器。 σ 函數(shù)的平滑特性,正是關(guān)鍵因素,⽽不是其細(xì)部形式。 σ 的平滑意味著權(quán)重和偏置的微⼩變化,即 ∆w 和 ∆b,會從神經(jīng)元產(chǎn)⽣⼀個微⼩的輸出變化 ∆output。實際上,微積分告訴我們
∆output 可以很好地近似表⽰為:
上面的式子是⼀個反映權(quán)重、偏置變化和輸出變化的線性函數(shù)。這⼀線性使得我們可以通過選擇權(quán)重和偏置的微⼩變化來達(dá)到輸出的微⼩變化。所以當(dāng) S 型神經(jīng)元和感知器本質(zhì)上是相同的,但S型神經(jīng)元在計算處理如何變化權(quán)重和偏置來使輸出變化的時候會更加容易。
有了對S型神經(jīng)元的了解,我們就可以介紹神經(jīng)網(wǎng)絡(luò)的基本結(jié)構(gòu)了。具體如下:
在⽹絡(luò)中最左邊的稱為輸⼊層,其中的神經(jīng)元稱為輸⼊神經(jīng)元。最右邊的,即輸出層包含有輸出神經(jīng)元,在圖中,輸出層只有⼀個神經(jīng)元。中間層,既然這層中的神經(jīng)元既不是輸⼊也不是輸出,則被稱為隱藏層。
這就是神經(jīng)網(wǎng)絡(luò)的基本結(jié)構(gòu),隨著后面的發(fā)展神經(jīng)網(wǎng)絡(luò)的層數(shù)也隨之不斷增加和復(fù)雜。
我們回顧一下神經(jīng)網(wǎng)絡(luò)發(fā)展的歷程。神經(jīng)網(wǎng)絡(luò)的發(fā)展歷史曲折蕩漾,既有被人捧上天的時刻,也有摔落在街頭無人問津的時段,中間經(jīng)歷了數(shù)次大起大落。
從單層神經(jīng)網(wǎng)絡(luò)(感知機)開始,到包含一個隱藏層的兩層神經(jīng)網(wǎng)絡(luò),再到多層的深度神經(jīng)網(wǎng)絡(luò),一共有三次興起過程。詳見下圖。
我們希望有⼀個算法,能讓我們找到權(quán)重和偏置,以⾄于⽹絡(luò)的輸出 y(x) 能夠擬合所有的 訓(xùn)練輸⼊ x。為了量化我們?nèi)绾螌崿F(xiàn)這個⽬標(biāo),我們定義⼀個代價函數(shù):
這⾥ w 表⽰所有的⽹絡(luò)中權(quán)重的集合, b 是所有的偏置, n 是訓(xùn)練輸⼊數(shù)據(jù)的個數(shù),
a 是表⽰當(dāng)輸⼊為 x 時輸出的向量,求和則是在總的訓(xùn)練輸⼊ x 上進(jìn)⾏的。當(dāng)然,輸出 a 取決于 x, w和 b,但是為了保持符號的簡潔性,我沒有明確地指出這種依賴關(guān)系。符號 ∥v∥ 是指向量 v 的模。我們把 C 稱為⼆次代價函數(shù);有時也稱被稱為均⽅誤差或者 MSE。觀察⼆次代價函數(shù)的形式我們可以看到 C(w, b) 是⾮負(fù)的,因為求和公式中的每⼀項都是⾮負(fù)的。此外,代價函數(shù) C(w,b)的值相當(dāng)⼩,即 C(w; b) ≈ 0,精確地說,是當(dāng)對于所有的訓(xùn)練輸⼊ x, y(x) 接近于輸出 a 時。因
此如果我們的學(xué)習(xí)算法能找到合適的權(quán)重和偏置,使得 C(w; b) ≈ 0,它就能很好地⼯作。相反,當(dāng) C(w; b) 很⼤時就不怎么好了,那意味著對于⼤量地輸⼊, y(x) 與輸出 a 相差很⼤。因此我們的訓(xùn)練算法的⽬的,是最⼩化權(quán)重和偏置的代價函數(shù) C(w; b)。換句話說,我們想要找到⼀系列能讓代價盡可能⼩的權(quán)重和偏置。我們將采⽤稱為梯度下降的算法來達(dá)到這個⽬的。
下面我們將代價函數(shù)簡化為C(v)。它可以是任意的多元實值函數(shù), 。
注意我們⽤ v 代替了 w 和 b 以強調(diào)它可能是任意的函數(shù),我們現(xiàn)在先不局限于神經(jīng)⽹絡(luò)的環(huán)境。
為了使問題更加簡單我們先考慮兩個變量的情況,想象 C 是⼀個只有兩個變量 和 的函數(shù),我們的目的是找到 和 使得C最小。
如上圖所示,我們的目的就是找到局部最小值。對于這樣的一個問題,一種方法就是通過微積分的方法來解決,我們可以通過計算導(dǎo)數(shù)來求解C的極值點。但是對于神經(jīng)網(wǎng)絡(luò)來說,我們往往面對的是非常道的權(quán)值和偏置,也就是說v的維數(shù)不只是兩維,有可能是億萬維的。對于一個高維的函數(shù)C(v)求導(dǎo)數(shù)幾乎是不可能的。
在這種情況下,有人提出了一個有趣的算法。想象一下一個小球從山頂滾下山谷的過程, 我們的⽇常經(jīng)驗告訴我們這個球最終會滾到⾕底。我們先暫時忽略相關(guān)的物理定理, 對球體的⾁眼觀察是為了激發(fā)我們的想象⽽不是束縛我們的思維。因此與其陷進(jìn)物理學(xué)⾥凌亂的細(xì)節(jié),不如我們就這樣問⾃⼰:如果我們扮演⼀天的上帝,能夠構(gòu)造⾃⼰的物理定律,能夠⽀配球體可以如何滾動,那么我們將會采取什么樣的運動學(xué)定律來讓球體能夠總是滾落到⾕底呢?
為了更精確地描述這個問題,讓我們思考⼀下,當(dāng)我們在 和 ⽅向分別將球體移動⼀個很⼩的量,即 ∆ 和 ∆ 時,球體將會發(fā)⽣什么情況。微積分告訴我們 C 將會有如下變化:
也可以用向量表示為
現(xiàn)在我們的問題就轉(zhuǎn)換為不斷尋找一個小于0的∆C,使得C+∆C不斷變小。
假設(shè)我們選?。?/p>
這⾥的 η 是個很⼩的正數(shù)(稱為學(xué)習(xí)速率),于是
由于 ∥∇C∥2 ≥ 0,這保證了 ∆C ≤ 0,即,如果我們按照上述⽅程的規(guī)則去改變 v,那么 C
會⼀直減⼩,不會增加。
所以我們可以通過不斷改變v來C的值不斷下降,是小球滾到最低點。
總結(jié)⼀下,梯度下降算法⼯作的⽅式就是重復(fù)計算梯度 ∇C,然后沿著相反的⽅向移動,沿著⼭⾕“滾落”。我們可以想象它像這樣:
為了使梯度下降能夠正確地運⾏,我們需要選擇合適的學(xué)習(xí)速率η,確保C不斷減少,直到找到最小值。
知道了兩個變量的函數(shù) C 的梯度下降方法,我們可以很容易的把它推廣到多維。我們假設(shè) C 是⼀個有 m 個變量 的多元函數(shù)。 ∆C 將會變?yōu)椋?/p>
其中, ∇C為
∆v為:
更新規(guī)則為:
在回到神經(jīng)網(wǎng)絡(luò)中,w和b的更新規(guī)則為:
前面提到神經(jīng)⽹絡(luò)如何使⽤梯度下降算法來學(xué)習(xí)他們⾃⾝的權(quán)重和偏置。但是,這⾥還留下了⼀個問題:我們并沒有討論如何計算代價函數(shù)的梯度。這里就需要用到一個非常重要的算法:反向傳播算法(backpropagation)。
反向傳播算法的啟示是數(shù)學(xué)中的鏈?zhǔn)椒▌t。
四個方程:
輸出層誤差方程:
當(dāng)前層誤差方程:
誤差方程關(guān)于偏置的關(guān)系:
誤差方程關(guān)于權(quán)值的關(guān)系
算法描述:
檢視這個算法,你可以看到為何它被稱作反向傳播。我們從最后⼀層開始向后計算誤差向量δ。這看起來有點奇怪,為何要從后⾯開始。但是如果你認(rèn)真思考反向傳播的證明,這種反向移動其實是代價函數(shù)是⽹絡(luò)輸出的函數(shù)的結(jié)果。為了理解代價隨前⾯層的權(quán)重和偏置變化的規(guī)律,我們需要重復(fù)作⽤鏈?zhǔn)椒▌t,反向地獲得需要的表達(dá)式。
參考鏈接: http://neuralnetworksanddeeplearning.com/
二、神經(jīng)網(wǎng)絡(luò)算法是什么?
Introduction
--------------------------------------------------------------------------------
神經(jīng)網(wǎng)絡(luò)是新技術(shù)領(lǐng)域中的一個時尚詞匯。很多人聽過這個詞,但很少人真正明白它是什么。本文的目的是介紹所有關(guān)于神經(jīng)網(wǎng)絡(luò)的基本包括它的功能、一般結(jié)構(gòu)、相關(guān)術(shù)語、類型及其應(yīng)用。
“神經(jīng)網(wǎng)絡(luò)”這個詞實際是來自于生物學(xué),而我們所指的神經(jīng)網(wǎng)絡(luò)正確的名稱應(yīng)該是“人工神經(jīng)網(wǎng)絡(luò)(ANNs)”。在本文,我會同時使用這兩個互換的術(shù)語。
一個真正的神經(jīng)網(wǎng)絡(luò)是由數(shù)個至數(shù)十億個被稱為神經(jīng)元的細(xì)胞(組成我們大腦的微小細(xì)胞)所組成,它們以不同方式連接而型成網(wǎng)絡(luò)。人工神經(jīng)網(wǎng)絡(luò)就是嘗試模擬這種生物學(xué)上的體系結(jié)構(gòu)及其操作。在這里有一個難題:我們對生物學(xué)上的神經(jīng)網(wǎng)絡(luò)知道的不多!因此,不同類型之間的神經(jīng)網(wǎng)絡(luò)體系結(jié)構(gòu)有很大的不同,我們所知道的只是神經(jīng)元基本的結(jié)構(gòu)。
The neuron
--------------------------------------------------------------------------------
雖然已經(jīng)確認(rèn)在我們的大腦中有大約50至500種不同的神經(jīng)元,但它們大部份都是基于基本神經(jīng)元的特別細(xì)胞。基本神經(jīng)元包含有synapses、soma、axon及dendrites。Synapses負(fù)責(zé)神經(jīng)元之間的連接,它們不是直接物理上連接的,而是它們之間有一個很小的空隙允許電子訊號從一個神經(jīng)元跳到另一個神經(jīng)元。然后這些電子訊號會交給soma處理及以其內(nèi)部電子訊號將處理結(jié)果傳遞給axon。而axon會將這些訊號分發(fā)給dendrites。最后,dendrites帶著這些訊號再交給其它的synapses,再繼續(xù)下一個循環(huán)。
如同生物學(xué)上的基本神經(jīng)元,人工的神經(jīng)網(wǎng)絡(luò)也有基本的神經(jīng)元。每個神經(jīng)元有特定數(shù)量的輸入,也會為每個神經(jīng)元設(shè)定權(quán)重(weight)。權(quán)重是對所輸入的資料的重要性的一個指標(biāo)。然后,神經(jīng)元會計算出權(quán)重合計值(net value),而權(quán)重合計值就是將所有輸入乘以它們的權(quán)重的合計。每個神經(jīng)元都有它們各自的臨界值(threshold),而當(dāng)權(quán)重合計值大于臨界值時,神經(jīng)元會輸出1。相反,則輸出0。最后,輸出會被傳送給與該神經(jīng)元連接的其它神經(jīng)元繼續(xù)剩余的計算。
Learning
--------------------------------------------------------------------------------
正如上述所寫,問題的核心是權(quán)重及臨界值是該如何設(shè)定的呢?世界上有很多不同的訓(xùn)練方式,就如網(wǎng)絡(luò)類型一樣多。但有些比較出名的包括back-propagation, delta rule及Kohonen訓(xùn)練模式。
由于結(jié)構(gòu)體系的不同,訓(xùn)練的規(guī)則也不相同,但大部份的規(guī)則可以被分為二大類別 - 監(jiān)管的及非監(jiān)管的。監(jiān)管方式的訓(xùn)練規(guī)則需要“教師”告訴他們特定的輸入應(yīng)該作出怎樣的輸出。然后訓(xùn)練規(guī)則會調(diào)整所有需要的權(quán)重值(這是網(wǎng)絡(luò)中是非常復(fù)雜的),而整個過程會重頭開始直至數(shù)據(jù)可以被網(wǎng)絡(luò)正確的分析出來。監(jiān)管方式的訓(xùn)練模式包括有back-propagation及delta rule。非監(jiān)管方式的規(guī)則無需教師,因為他們所產(chǎn)生的輸出會被進(jìn)一步評估。
Architecture
--------------------------------------------------------------------------------
在神經(jīng)網(wǎng)絡(luò)中,遵守明確的規(guī)則一詞是最“模糊不清”的。因為有太多不同種類的網(wǎng)絡(luò),由簡單的布爾網(wǎng)絡(luò)(Perceptrons),至復(fù)雜的自我調(diào)整網(wǎng)絡(luò)(Kohonen),至熱動態(tài)性網(wǎng)絡(luò)模型(Boltzmann machines)!而這些,都遵守一個網(wǎng)絡(luò)體系結(jié)構(gòu)的標(biāo)準(zhǔn)。
一個網(wǎng)絡(luò)包括有多個神經(jīng)元“層”,輸入層、隱蔽層及輸出層。輸入層負(fù)責(zé)接收輸入及分發(fā)到隱蔽層(因為用戶看不見這些層,所以見做隱蔽層)。這些隱蔽層負(fù)責(zé)所需的計算及輸出結(jié)果給輸出層,而用戶則可以看到最終結(jié)果?,F(xiàn)在,為免混淆,不會在這里更深入的探討體系結(jié)構(gòu)這一話題。對于不同神經(jīng)網(wǎng)絡(luò)的更多詳細(xì)資料可以看Generation5 essays
盡管我們討論過神經(jīng)元、訓(xùn)練及體系結(jié)構(gòu),但我們還不清楚神經(jīng)網(wǎng)絡(luò)實際做些什么。
The Function of ANNs
--------------------------------------------------------------------------------
神經(jīng)網(wǎng)絡(luò)被設(shè)計為與圖案一起工作 - 它們可以被分為分類式或聯(lián)想式。分類式網(wǎng)絡(luò)可以接受一組數(shù),然后將其分類。例如ONR程序接受一個數(shù)字的影象而輸出這個數(shù)字?;蛘逷PDA32程序接受一個坐標(biāo)而將它分類成A類或B類(類別是由所提供的訓(xùn)練決定的)。更多實際用途可以看Applications in the Military中的軍事雷達(dá),該雷達(dá)可以分別出車輛或樹。
聯(lián)想模式接受一組數(shù)而輸出另一組。例如HIR程序接受一個‘臟’圖像而輸出一個它所學(xué)過而最接近的一個圖像。聯(lián)想模式更可應(yīng)用于復(fù)雜的應(yīng)用程序,如簽名、面部、指紋識別等。
The Ups and Downs of Neural Networks
--------------------------------------------------------------------------------
神經(jīng)網(wǎng)絡(luò)在這個領(lǐng)域中有很多優(yōu)點,使得它越來越流行。它在類型分類/識別方面非常出色。神經(jīng)網(wǎng)絡(luò)可以處理例外及不正常的輸入數(shù)據(jù),這對于很多系統(tǒng)都很重要(例如雷達(dá)及聲波定位系統(tǒng))。很多神經(jīng)網(wǎng)絡(luò)都是模仿生物神經(jīng)網(wǎng)絡(luò)的,即是他們仿照大腦的運作方式工作。神經(jīng)網(wǎng)絡(luò)也得助于神經(jīng)系統(tǒng)科學(xué)的發(fā)展,使它可以像人類一樣準(zhǔn)確地辨別物件而有電腦的速度!前途是光明的,但現(xiàn)在...
是的,神經(jīng)網(wǎng)絡(luò)也有些不好的地方。這通常都是因為缺乏足夠強大的硬件。神經(jīng)網(wǎng)絡(luò)的力量源自于以并行方式處理資訊,即是同時處理多項數(shù)據(jù)。因此,要一個串行的機器模擬并行處理是非常耗時的。
神經(jīng)網(wǎng)絡(luò)的另一個問題是對某一個問題構(gòu)建網(wǎng)絡(luò)所定義的條件不足 - 有太多因素需要考慮:訓(xùn)練的算法、體系結(jié)構(gòu)、每層的神經(jīng)元個數(shù)、有多少層、數(shù)據(jù)的表現(xiàn)等,還有其它更多因素。因此,隨著時間越來越重要,大部份公司不可能負(fù)擔(dān)重復(fù)的開發(fā)神經(jīng)網(wǎng)絡(luò)去有效地解決問題。
NN 神經(jīng)網(wǎng)絡(luò),Neural Network
ANNs 人工神經(jīng)網(wǎng)絡(luò),Artificial Neural Networks
neurons 神經(jīng)元
synapses 神經(jīng)鍵
self-organizing networks 自我調(diào)整網(wǎng)絡(luò)
networks modelling thermodynamic properties 熱動態(tài)性網(wǎng)絡(luò)模型
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
網(wǎng)格算法我沒聽說過
好像只有網(wǎng)格計算這個詞
網(wǎng)格計算是伴隨著互聯(lián)網(wǎng)技術(shù)而迅速發(fā)展起來的,專門針對復(fù)雜科學(xué)計算的新型計算模式。這種計算模式是利用互聯(lián)網(wǎng)把分散在不同地理位置的電腦組織成一個“虛擬的超級計算機”,其中每一臺參與計算的計算機就是一個“節(jié)點”,而整個計算是由成千上萬個“節(jié)點”組成的“一張網(wǎng)格”, 所以這種計算方式叫網(wǎng)格計算。這樣組織起來的“虛擬的超級計算機”有兩個優(yōu)勢,一個是數(shù)據(jù)處理能力超強;另一個是能充分利用網(wǎng)上的閑置處理能力。簡單地講,網(wǎng)格是把整個網(wǎng)絡(luò)整合成一臺巨大的超級計算機,實現(xiàn)計算資源、存儲資源、數(shù)據(jù)資源、信息資源、知識資源、專家資源的全面共享。
三、神經(jīng)網(wǎng)絡(luò)算法的神經(jīng)網(wǎng)絡(luò)
思維學(xué)普遍認(rèn)為,人類大腦的思維分為抽象(邏輯)思維、形象(直觀)思維和靈感(頓悟)思維三種基本方式。
人工神經(jīng)網(wǎng)絡(luò)就是模擬人思維的第二種方式。這是一個非線性動力學(xué)系統(tǒng),其特色在于信息的分布式存儲和并行協(xié)同處理。雖然單個神經(jīng)元的結(jié)構(gòu)極其簡單,功能有限,但大量神經(jīng)元構(gòu)成的網(wǎng)絡(luò)系統(tǒng)所能實現(xiàn)的行為卻是極其豐富多彩的。
神經(jīng)網(wǎng)絡(luò)的研究內(nèi)容相當(dāng)廣泛,反映了多學(xué)科交叉技術(shù)領(lǐng)域的特點。主要的研究工作集中在以下幾個方面:
(1)生物原型研究。從生理學(xué)、心理學(xué)、解剖學(xué)、腦科學(xué)、病理學(xué)等生物科學(xué)方面研究神經(jīng)細(xì)胞、神經(jīng)網(wǎng)絡(luò)、神經(jīng)系統(tǒng)的生物原型結(jié)構(gòu)及其功能機理。
(2)建立理論模型。根據(jù)生物原型的研究,建立神經(jīng)元、神經(jīng)網(wǎng)絡(luò)的理論模型。其中包括概念模型、知識模型、物理化學(xué)模型、數(shù)學(xué)模型等。
(3)網(wǎng)絡(luò)模型與算法研究。在理論模型研究的基礎(chǔ)上構(gòu)作具體的神經(jīng)網(wǎng)絡(luò)模型,以實現(xiàn)計算機模擬或準(zhǔn)備制作硬件,包括網(wǎng)絡(luò)學(xué)習(xí)算法的研究。這方面的工作也稱為技術(shù)模型研究。
(4)人工神經(jīng)網(wǎng)絡(luò)應(yīng)用系統(tǒng)。在網(wǎng)絡(luò)模型與算法研究的基礎(chǔ)上,利用人工神經(jīng)網(wǎng)絡(luò)組成實際的應(yīng)用系統(tǒng),例如,完成某種信號處理或模式識別的功能、構(gòu)造專家系統(tǒng)、制成機器人等等。
縱觀當(dāng)代新興科學(xué)技術(shù)的發(fā)展歷史,人類在征服宇宙空間、基本粒子,生命起源等科學(xué)技術(shù)領(lǐng)域的進(jìn)程中歷經(jīng)了崎嶇不平的道路。我們也會看到,探索人腦功能和神經(jīng)網(wǎng)絡(luò)的研究將伴隨著重重困難的克服而日新月異。
四、神經(jīng)網(wǎng)絡(luò)算法的必要性
這里的distinct表示去重,也可以用group by實現(xiàn), 兩者的區(qū)別在于distinct會讀取所有的記錄,而group by是在分組之后每組只返回一條記錄,也就是說后者讀取的條數(shù)要少很多,效率會更高一些,因此可以將上述代碼改為:
create table validate_set as
select
user_id,
wm_concat(',',brand_id) as brand
from(
select user_id,brand_id
from t_alibaba_bigdata_user_brand_total_1
where type = '1' and visit_datetime > '07-15'
group by user_id,brand_id
)a
group by user_id;
訓(xùn)練集和測試集建立好之后,我們可以通過以下命令來計算測試集的推薦數(shù)目:
select sum(regexp_count(brand,',')+1) from t_tmall_add_user_brand_predict_dh;
其中REGEXP_COUNT是ODPS的一個自建函數(shù),它的用法如下:
bigint regexp_count(string source, string pattern[, bigint start_position])
表示計算 source 中從 start_position 開始,匹配指定模式pattern 的子串的次數(shù)。比如我們有一條輸出結(jié)果是:100 1,2,3,4,通過計算其中的,數(shù)(3)+1=4就計算出推薦的個數(shù)了。
UDF計算重復(fù)條數(shù)
UDF(User-Defined Function)(用戶定義函數(shù)),是用戶根據(jù)實際應(yīng)用的需要而自行開發(fā)的函數(shù)。在 Eclipse 中的項目下新建 UDF。填入 Package 名稱為:chanvee.udf,和 UDF 類名:CountHits,點擊確認(rèn)。插件會自動幫我們生成chanvee.udf包用于寫 UDF 代碼,和test.chanvee.udf包用于本地測試。
編輯CountHits.java文件,注意下文的Long不能替換為long類型,否則在ODPS上運行會報Method Not Found錯誤:
package chanvee.udf
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
public class CountHits extends UDF {
public Long evaluate (String a,String b){
if(a == null || b == null) {
return 0L; //異常值
}
Set<String> set1 = new HashSet<String>();
Set<String> set2 = new HashSet<String>();
set1.addAll(Arrays.asList(a.split(",")));
set2.addAll(Arrays.asList(b.split(",")));
Long hits = 0L;
for(String s : set2){
if( set1.contains(s) )
hits++;
}
return hits;
}
}
本段函數(shù)的主要工作是在a串和b串去重后,計算它們中重復(fù)元素的個數(shù)。接下來在本地測試下 UDF 。在test.jark.udf包中有兩個文件TestCountHits.java和TestUDFBase.java。由于如果 UDF 的輸入?yún)?shù)是多個的話,本地測試默認(rèn)的分隔符是逗號,與我們brand中的逗號沖突了。所以修改下TestUDFBase.java文件的第15行的分隔符為空格(當(dāng)然也可以其他符號):
private final static String ODPS_SEPARATOR = " ";
同時修改第72行,去掉(String),原因是Long型不能強制轉(zhuǎn)換成String:
return callMeth.invoke(UDFClass, input_parameter.toArray()) + "\n";
在TestCountHits.in文件中輸入測試樣例:
123456,444,555,666 123456,666,777,888
888,999 111,222
111,111,222,222 111,222,222,333
運行TestCountHits.java后,在TestCountHits.out文件中得到測試結(jié)果(樣例):
2
0
2
在確認(rèn) UDF 沒有問題后,準(zhǔn)備上傳。將Package chanvee.udf打成 jar 包,命名為chanvee_udf.jar,置于C:/TOOLS下,執(zhí)行以下命令:
create resource jar C:/TOOLS/chanvee_udf.jar
create function count_hits chanvee.udf.CountHits jark-udf.jar
上述命令作用分別是將用戶 jar 包上傳到 ODPS 和在 ODPS 上注冊函數(shù)并命名為count_hits?,F(xiàn)在使用ls functions命令就能看到我們剛剛注冊的函數(shù)了。
現(xiàn)在,我們就能像調(diào)用一般內(nèi)建函數(shù)一樣調(diào)用我們自己的count_hits函數(shù)了。計算推薦集和驗證集中的重復(fù)條數(shù),有下面代碼:
select sum(count_hits(a.brand,b.brand)) hits from t_tmall_add_user_brand_predict_dh a
join validate_set b on a.user_id = b.user_id;
上面演示了一般 UDF 的創(chuàng)建使用過程,其他類似的 UDF 都可以參考以上過程構(gòu)建。UDF 是 SQL 的一大工具 ,很多規(guī)則算法都可以用過 UDF 方便地實現(xiàn)。
計算評估值
我們知道準(zhǔn)確率的計算公式:precision=hitspnums, 其中 pnum 代表推薦的條數(shù)。
召回率的計算公式:recall=hitsrnums, 其中 rnum 為驗證的條數(shù)。
F1:
F1=2∗hitspnum+rnum
為了計算方便,我們用full outer join連接驗證集和推薦集,并將計算出的 hits、pnums、rnums 放到臨時表里:
select sum(count_hits(p.brand,r.brand) hits,
sum(regexp_count(p.brand,',')+1) pnums,
sum(regexp_count(r.brand,',')+1) rnums
from t_tmall_add_user_brand_predict_dh p
full outer join validate_set r on p.user_id = r.user_id
有了這三個值后,就可以用上面的公式輕松計算出評測值了。
select (hits/pnums) precision, (hits/rnums) recall,(2*hits/(pnums+rnums)) F1
from (
select hits , pnums , rnums
from ...
)a;
綜合一下,有如下代碼:
create table evaluation as
select (hits/pnums) precision , (hits/rnums) recall , (2*hits/(pnums+rnums)) F1 ,
hits , pnums , rnums , getdate() eval_time
from (
select sum(count_hits(p.brand,v.brand) hits,
sum(regexp_count(p.brand,',')+1) pnums,
sum(regexp_count(v.brand,',')+1) rnums
from t_tmall_add_user_brand_predict_dh p
full outer join validate_set r on p.user_id = r.user_id
)a;
我們將評測值寫到了evaluation表中,可供組員查看分析。運行一次上面代碼后,若以后再進(jìn)行評測,可以將第一行改成insert into/overwrite table evaluation后直接運行,這樣可以與上次的結(jié)果進(jìn)行比較。
現(xiàn)在已有的模型算法就可以在本地測試調(diào)優(yōu)后,再上傳到線上進(jìn)行評估了。
以上就是關(guān)于神經(jīng)網(wǎng)絡(luò)算法作用相關(guān)問題的回答。希望能幫到你,如有更多相關(guān)問題,您也可以聯(lián)系我們的客服進(jìn)行咨詢,客服也會為您講解更多精彩的知識和內(nèi)容。
推薦閱讀:
神經(jīng)網(wǎng)絡(luò)多分類(神經(jīng)網(wǎng)絡(luò)多分類問題)
神經(jīng)網(wǎng)絡(luò)反向傳播公式的推導(dǎo)(神經(jīng)網(wǎng)絡(luò)反向傳播公式的推導(dǎo)方法)
神經(jīng)性頭痛和偏頭痛哪個嚴(yán)重(神經(jīng)性頭痛和偏頭痛哪個嚴(yán)重些)
一般直播運營的抽成是多少(一般直播運營的抽成是多少?。?/a>
杭州適合窮人發(fā)展嗎(杭州適合窮人發(fā)展嗎知乎)