當前位置:首頁 » 網路連接 » 簡單神經網路

簡單神經網路

發布時間: 2021-02-18 08:24:56

1. 如何用9行Python代碼編寫一個簡易神經網路

學習人工智慧時,我給自己定了一個目標--用Python寫一個簡單的神經網路。為了確保真得理解它,我要求自己不使用任何神經網路庫,從頭寫起。多虧了Andrew Trask寫得一篇精彩的博客,我做到了!下面貼出那九行代碼:在這篇文章中,我將解釋我是如何做得,以便你可以寫出你自己的。我將會提供一個長點的但是更完美的源代碼。

首先,神經網路是什麼?人腦由幾千億由突觸相互連接的細胞(神經元)組成。突觸傳入足夠的興奮就會引起神經元的興奮。這個過程被稱為「思考」。我們可以在計算機上寫一個神經網路來模擬這個過程。不需要在生物分子水平模擬人腦,只需模擬更高層級的規則。我們使用矩陣(二維數據表格)這一數學工具,並且為了簡單明了,只模擬一個有3個輸入和一個輸出的神經元。

我們將訓練神經元解決下面的問題。前四個例子被稱作訓練集。你發現規律了嗎?『?』是0還是1?你可能發現了,輸出總是等於輸入中最左列的值。所以『?』應該是1。

訓練過程

但是如何使我們的神經元回答正確呢?賦予每個輸入一個權重,可以是一個正的或負的數字。擁有較大正(或負)權重的輸入將決定神經元的輸出。首先設置每個權重的初始值為一個隨機數字,然後開始訓練過程:

取一個訓練樣本的輸入,使用權重調整它們,通過一個特殊的公式計算神經元的輸出。

計算誤差,即神經元的輸出與訓練樣本中的期待輸出之間的差值。

根據誤差略微地調整權重。

重復這個過程1萬次。最終權重將會變為符合訓練集的一個最優解。如果使用神經元考慮這種規律的一個新情形,它將會給出一個很棒的預測。

這個過程就是back propagation。

計算神經元輸出的公式

你可能會想,計算神經元輸出的公式是什麼?首先,計算神經元輸入的加權和,即接著使之規范化,結果在0,1之間。為此使用一個數學函數--Sigmoid函數:Sigmoid函數的圖形是一條「S」狀的曲線。把第一個方程代入第二個,計算神經元輸出的最終公式為:你可能注意到了,為了簡單,我們沒有引入最低興奮閾值。

調整權重的公式

我們在訓練時不斷調整權重。但是怎麼調整呢?可以使用「Error Weighted Derivative」公式:為什麼使用這個公式?首先,我們想使調整和誤差的大小成比例。其次,乘以輸入(0或1),如果輸入是0,權重就不會調整。最後,乘以Sigmoid曲線的斜率(圖4)。為了理解最後一條,考慮這些:

我們使用Sigmoid曲線計算神經元的輸出

如果輸出是一個大的正(或負)數,這意味著神經元採用這種(或另一種)方式

從圖四可以看出,在較大數值處,Sigmoid曲線斜率小

如果神經元認為當前權重是正確的,就不會對它進行很大調整。乘以Sigmoid曲線斜率便可以實現這一點

Sigmoid曲線的斜率可以通過求導得到:把第二個等式代入第一個等式里,得到調整權重的最終公式:當然有其他公式,它們可以使神經元學習得更快,但是這個公式的優點是非常簡單。

構造Python代碼

雖然我們沒有使用神經網路庫,但是將導入Python數學庫numpy里的4個方法。分別是:

exp--自然指數

array--創建矩陣

dot--進行矩陣乘法

random--產生隨機數

比如, 我們可以使用array()方法表示前面展示的訓練集:「.T」方法用於矩陣轉置(行變列)。所以,計算機這樣存儲數字:我覺得我們可以開始構建更優美的源代碼了。給出這個源代碼後,我會做一個總結。

我對每一行源代碼都添加了注釋來解釋所有內容。注意在每次迭代時,我們同時處理所有訓練集數據。所以變數都是矩陣(二維數據表格)。下面是一個用Python寫地完整的示例代碼。

我們做到了!我們用Python構建了一個簡單的神經網路!

首先神經網路對自己賦予隨機權重,然後使用訓練集訓練自己。接著,它考慮一種新的情形[1, 0, 0]並且預測了0.99993704。正確答案是1。非常接近!

傳統計算機程序通常不會學習。而神經網路卻能自己學習,適應並對新情形做出反應,這是多麼神奇,就像人類一樣。

2. 神經網路是什麼

神經網路可以指向兩種,一個是生物神經網路,一個是人工神經網路。
生物神經內網路:一般容指生物的大腦神經元,細胞,觸點等組成的網路,用於產生生物的意識,幫助生物進行思考和行動。
人工神經網路它是一種模仿動物神經網路行為特徵,進行分布式並行信息處理的演算法數學模型。這種網路依靠系統的復雜程度,通過調整內部大量節點之間相互連接的關系,從而達到處理信息的目的

3. 求C#編寫的傳統的BP神經網路演算法,不要太復雜的,就要簡單完整的,最好給出輸入得出輸出謝謝謝謝。

http://wenku..com/link?url=cBIpLDY_0PHQ2B2TB7S8vrMMevUyab1_fj3_7

4. 神經網路優缺點,

首先來看一下神經網路的缺點:

1. 黑盒子
神經網路最可能被人知曉的缺點是它們的「黑盒子」性質(也就是說你不知道神經網路是如何以及為什麼會產生一定的輸出)。例如,當你將一張貓的圖像放入神經網路,預測結果顯示它是一輛汽車時,這讓人很難理解。而在某些領域,可解釋性非常重要。
很多銀行之所以不使用神經網路來預測一個人是否有信譽,是因為他們需要向客戶解釋為什麼他們沒有獲得貸款。像Quora這樣的網站也是如此。如果他們因為機器學習演算法而決定刪除用戶賬戶,他們需要向用戶解釋為什麼這樣做。

如果將機器學習運用與重要的商業決策時,你能想像一個大公司的首席執行官會在不明白為什麼應該完成的情況下做出數百萬美元的決定嗎?僅僅因為「計算機」說他需要這樣做?

2. 發展的可持續時間
雖然有像Keras這樣的庫,讓神經網路的開發變得相當簡單,但有時您需要更多地控制演算法的細節。您可能還會使用到Tensorflow,但是由於它相對復雜,開發需要的時間也更長。對於公司管理層來說,如果用簡單的演算法就可以更快地解決問題,則讓他們花高昂的費用和較長的時間去開發一些東西,顯然是不合適的。
3. 數據量

與傳統的機器學習演算法相比,神經網路通常需要更多的數據,至少需要數千數百萬個標記樣本。而如果使用其它演算法,許多機器學習問題可以用較少的數據很好地解決。

雖然在某些情況下,神經網路需要處理少量數據(大多數情況下它們不需要)。而像樸素貝葉斯這樣的簡單演算法也可以很好地處理少數數據。

4. 計算代價高昂
通常,神經網路比傳統演算法的計算代價更高。對於最先進的深度學習演算法,完成深度神經網路從頭到尾的完整訓練,可能需要幾周的時間。而大多數傳統的機器學習演算法則只需要少於幾分鍾到幾個小時或幾天的時間即可。

神經網路所需的計算能力很大程度上取決於數據的大小,同時也取決於網路的深度和復雜程度。

然後就是神經網路的優點:
ANN 有能力學習和構建非線性的復雜關系的模型,這非常重要,因為在現實生活中,許多輸入和輸出之間的關系是非線性的、復雜的。
ANN 可以推廣,在從初始化輸入及其關系學習之後,它也可以推斷出從未知數據之間的未知關系,從而使得模型能夠推廣並且預測未知數據。

與許多其他預測技術不同,ANN 不會對輸入變數施加任何限制(例如:如何分布)。此外,許多研究表明,ANN 可以更好地模擬異方差性,即具有高波動性和不穩定方差的數據,因為它具有學習數據中隱藏關系的能力,而不在數據中強加任何固定關系。這在數據波動非常大的金融時間序列預測中非常有用。
神經網路的發展主要為:啟蒙時期(1890-1969),低潮時期(1969-1982),復興時期(1982-1986),新時期(1986至今)

5. 人工神經網路有什麼簡單的代碼實現的案例

用matlab神經網路工具箱
傻瓜式操作,都不需要編程
望採納

6. 求教!!用MATLAB建立一個簡單的bp神經網路

可以運行
你看看是不是你的版本有問題?

net =

Neural Network object:

architecture:

numInputs: 1
numLayers: 2
biasConnect: [1; 1]
inputConnect: [1; 0]
layerConnect: [0 0; 1 0]
outputConnect: [0 1]

numOutputs: 1 (read-only)
numInputDelays: 0 (read-only)
numLayerDelays: 0 (read-only)

subobject structures:

inputs: {1x1 cell} of inputs
layers: {2x1 cell} of layers
outputs: {1x2 cell} containing 1 output
biases: {2x1 cell} containing 2 biases
inputWeights: {2x1 cell} containing 1 input weight
layerWeights: {2x2 cell} containing 1 layer weight

7. 求做一個簡單的BP神經網路的預測,感激不盡!!!

真是因為外推能力有限,所以希望採用外推模型
即:P=(數據版1~數據n) T=(數據n~數據n+m)的方式權
使得數據輸入/輸出在范圍內
比如P=[一月降水,二月降水````五月降水,二月降水,三月降水````六月降水……]
T=[六月降水,七月降水……]
訓練完畢後
由於降水情況在某個范圍內,不具有一直延伸的特性
用[六月降水,七月降水````十一月降水]能推出[十二月降水]
故可以控制在樣本范圍附近

如果一直外延如P=[1,2,3,4,5],T=[一月降水,二月降水````五月降水];
則6無法推得六月降水

不懂請繼續追問

8. 那個最簡單的BP神經網路是什麼意思啊,求解答

最簡單的BP神經網路?可能指單輸入單輸出的單隱層感知器模型。

BP(Back Propagation)神經網回絡是1986年由Rumelhart和McCelland為首的科學家小組答提出,是一種按誤差逆傳播演算法訓練的多層前饋網路,是目前應用最廣泛的神經網路模型之一。BP網路能學習和存貯大量的輸入-輸出模式映射關系,而無需事前揭示描述這種映射關系的數學方程。它的學習規則是使用最速下降法,通過反向傳播來不斷調整網路的權值和閾值,使網路的誤差平方和最小。BP神經網路模型拓撲結構包括輸入層(input)、隱層(hidden layer)和輸出層(output layer)。

9. 簡單介紹人工神經網路和模糊神經網路

其實網路介紹的很詳細,如「人工神經網路是模擬人腦結構的思維功能,具有較強的自學習和聯想功能,人工干預少,精度較高,對專家知識的利用也較少。但缺點是它不能處理和描述模糊信息,不能很好利用已有的經驗知識,特別是學習及問題的求解具有黑箱特性,其工作不具有可解釋性,同時它對樣本的要求較高;模糊系統相對於神經網路而言,具有推理過程容易理解、專家知識利用較好、對樣本的要求較低等優點,但它同時又存在人工干預多、推理速度慢、精度較低等缺點,很難實現自適應學習的功能,而且如何自動生成和調整隸屬度函數和模糊規則,也是一個棘手的問題。」

即保證人工神經網路自身的學習能力下,採用模糊理論解決模糊信號,使神經網路權系數為模糊權,或者輸入為模糊量。

比如原本神經網路處理的是連續數據(double)不適合求解模糊數據,此時就需要引入模糊理論,來構造適合於求解這類模糊數據的神經網路。

10. 想要學習人工神經網路,需要什麼樣的基礎知識

最基礎的部分的話需要:線性代數,機器學習,微積分,優化等等。內

  • 幾乎所有操作都容有矩陣運算,所以至少最基礎的線性代數需要掌握

  • 建議從單一的感知機Perceptron出發,繼而認識到DecisionBoundary(判別邊界),以及最簡單的一些「監督訓練」的概念等,有機器學習的基礎最好。就結果而言,諸如「過擬合」之類的概念,以及對應的解決方法比如L1L2歸一,學習率等也都可以從單個感知機的概念開始入門。

  • 從單層感知器推廣到普通的多層感知器MLP。然後推廣到簡單的神經網路(激活函數從階躍「軟化」為諸如tanh等類型的函數),然後引入特定類型的網路結構,比如最基本的全連接、前向傳播等等概念。進而學習訓練演算法,比如反向傳播,這需要微積分的知識(Chainrule),以及非線性優化的最基礎部分,比如梯度下降法。

  • 其次至少需要具備一些適用於研究的編程語言的技能,例如python,matlab,(C++也可行)等,哪怕不自己實現最簡單的神經網路而是用API,也是需要一定計算機能力才能應用之。

  • 超過網路工程師的決心,不要弄出個網路知道答案審批這么搓的東西。

熱點內容
網卡了的原因 發布:2021-03-16 21:18:20 瀏覽:602
聯通客服工作怎麼樣 發布:2021-03-16 21:17:49 瀏覽:218
路由器畫圖 發布:2021-03-16 21:17:21 瀏覽:403
大網卡收費 發布:2021-03-16 21:16:50 瀏覽:113
路由器免費送 發布:2021-03-16 21:16:19 瀏覽:985
孝昌營業廳 發布:2021-03-16 21:15:54 瀏覽:861
網速增速代碼 發布:2021-03-16 21:15:29 瀏覽:194
怎麼黑光纖 發布:2021-03-16 21:14:54 瀏覽:901
埠增大 發布:2021-03-16 21:14:20 瀏覽:709
開機沒信號是什麼原因 發布:2021-03-16 21:13:45 瀏覽:645