神經網路 ANN(一)

2021-07-26 11:30:06 字數 1452 閱讀 1144

神經網路 ann

新年啦!先給自己乙個小小的改變,比如寫一篇部落格。

再給自己乙個小目標,比如3天內徒手寫個ann~~

所以,以下內容是在3天的時間內學到的,未免有不足之處,望指教。

ann不是一下子就可以被發明出來的,期間經過了幾代人的努力才慢慢成型(參考)

從單個神經元講起。

乙個神經元其實很笨,它可以有多個輸入,但只有一種輸出,模型如下:

上圖中,a1,a2,a3是輸入,z是輸出,中間w1,w2,w3是可調引數(權值)

它們之間的關係是寫定的:z=g(a1*w1+a2*w2+a3*w3)

這裡,z=g(x),g(x)一般為sigmoid函式

啟用函式activation function,sigmoid函式 y=

11+e

−x是較廣泛使用的一種,也有其他高效的啟用函式,比如relu函式y=

{x,0

,x>0x

≤0

這些引數中,a1,a2,a3不可變,w1,w2,w3可變,通過調整w1,w2,w3使得到的z符合預期

ann由輸入層,隱含層,輸出層組成,每層都可有多個節點(神經元)

輸入層: 最簡單的ann的輸入是一維的,可以用一維陣列儲存,也可以把高維輸入(比如影象)轉化為一維

隱含層: 內含大量可調引數,是ann的核心,訓練就是不斷地調這些引數

輸出層:輸出結果,是一些數。需要我們定義輸出的數的含義,比如做選擇題,輸入題目,輸出1 0 0 0表示選擇a,輸出0 1 0 0表示選擇b,0 0 1 0選擇c,0 0 0 1選擇d。

工作原理:根據ann的目的,我們需要訓練ann,使對任意的輸入x,都可以得到正確的y(=f(x)),訓練的過程,就是ann內部引數的自適應過程,即這些引數根據訓練集所給的正確答案,按一定的規則調整自己,最終成為乙個確定的值,此時訓練完畢,雖然ann內部的引數大小是不變的,但對ann整體來說,任意給定乙個輸入,它都能得到乙個相對正確的輸出(y=ann(x))。

整個網路有2個主要動作,前向傳播反向傳播

前向傳播:從隱含層第一層的第乙個節點開始,依次計算每個節點的輸出,計算涉及前一層的輸入和輸入對應的權值,有時候還要加上乙個偏置節點輸入以保證輸出!=0,直到輸出層

反向傳播:根據梯度下降法反向再次調整權值,隱含層最後一層各節點到輸出層各節點的權重調整 依靠本次輸出和目標輸出的誤差(error),按一定的梯度減少誤差,進而慢慢使結果逼近目標輸出

參考資料:

神經網路淺講:從神經元到深度學習

知乎:深度學習如何入門?deeper的回答

神經網路 ANN(二)

最簡單的ann只是由神經元構成的 那麼我們先來定義乙個神經元類networknode 屬性 public static final int type input 0 輸入層 public static final int type hidden 1 隱藏層 public static final i...

人工神經網路(ANN)

參考資料 從函式上來看,神經網路是回歸方程的級聯疊加,用來逼近目標函式的,本質是一種模擬特徵與目標之間的真實關係函式的模型 乙個有向拓撲,每層有若干節點,節點間有邊,邊上有權值。輸入層隱藏層 多層 後層是前層各節點值的線性組合的函式,即y f x0 w1x1 w2x2 wnxn 線性組合的係數就是邊...

人工神經網路ANN

一 基本概念 ann artificial neural network前饋神經網路的縮寫 二 模型構建 2.1 神經元 2.2 啟用函式 意義 啟用函式是用來讓給神經網路加入非線性因素的,因為線性模型的表達能力不夠。如果沒有啟用函式,那麼該網路僅能表達線性對映,此時即便有再多的隱藏層,其整個網路跟...