神經網路

menu icon

神經網路

神經網路反映人腦的行為,容許電腦程式辨識模式並解決 AI、機器學習、深度學習領域常見的問題。

什麼是神經網路?

神經網路也被稱為人工神經網路 (ANN) 或模擬神經網路 (SNN),是機器學習的子集,也是深度學習演算法的核心。其名稱和結構靈感來自人腦,模仿生物神經元彼此之間發送訊號的方式。

人工神經網路 (ANN) 由一個節點層組成,包含一個輸入層、一個或多個隱藏層,以及一個輸出層。 每一個節點或人工神經元會連接到另一個,而且具有相關加權和臨界值。 如果任何個別節點的輸出高於指定臨界值,隨即啟動該節點,並將資料傳送至網路的下一層。 否則,不會將任何資料傳遞至網路的下一層。

前饋神經網路的輸入層、隱藏層和輸出層的視覺圖

神經網路依賴訓練資料來學習並隨著時間的推移提高其精確度。 然而,一旦這些學習演算法進行微調以達到正確性,它們是電腦科學與人工智慧的強大工具,讓我們可以高速分類和叢集資料。與人類專家的人工識別需耗費數小時相比,語音識別或圖像識別作業只花幾分鐘的時間。其中一個最著名的神經網路是 Google 的搜尋演算法。

神經網路如何運作?

將個別節點視為自己的線性迴歸模型,由輸入資料、加權、偏差(或臨界值) 及輸出組成。這個公式看起來就像這樣:

用來決定總和的數學公式

∑wixi + bias = w1x1 + w2x2 + w3x3 + bias

用來決定輸出的數學公式

output = f(x) = 1 if ∑w1x1 + b> = 0; 0 if ∑w1x1 + b < 0

確定輸入層之後,會指派加權。這些加權有助於確定任何給定變數的重要性,而相較於其他輸入,較大者對輸出的貢獻更顯著。然後,所有輸入都會乘以其各自的加權,然後加總。之後,輸出會透過啟動功能來傳遞,這會決定輸出。如果該輸出超出給定的臨界值,則它會「激發」(或啟動)節點,將資料傳遞至網路中的下一層。此結果會導致一個節點的輸出變成下一個節點的輸入。將資料從一層傳遞到下一層的程序,定義了這個神經網路作為前饋網路。

讓我們分解單一節點使用二進位值可能的樣子。我們可以將這個概念應用到一個更具體的例子,比如你是否應該去衝浪(是:1,否:0)。決定去或不去的決定是我們預測的結果,或者 y-hat。讓我們假設有三個因素影響您的決策制定:

  1. 海浪狀態良好嗎?(是:1,否:0)
  2. 沖浪陣容是空的嗎?(是:1,否:0)
  3. 最近有鯊魚襲擊嗎?(是:1,否:0)

那麼我們就來假設一下,給我們以下的輸入:

  • X1 = 1,因為海浪在湧動
  • X2 = 0,因為人群在外面
  • X3 = 1,因為最近沒有鯊魚攻擊

現在,我們需要分配一些加權來確定重要性。較大的加權表示特定變數對決策或結果具有較大的重要性。

  • W1 = 5,因為巨大的浪湧通常不會經常出現
  • W2 = 2,因為你習慣了人群
  • W3 = 4,因為你對鯊魚有恐懼

最後,我們也會假設臨界值為 3,這會轉換為偏差值 -3。使用所有各種輸入,我們可以開始將值插入到公式中,以取得所需輸出。

Y-hat = (1*5) + (0*2) + (1*4) – 3 = 6

如果我們從這個區段開頭使用啟動功能,就可以判斷這個節點的輸出會是 1,因為 6 大於 0。在此實例中,您會去沖浪;但如果我們調整加權或臨界值,則可以從模型中取得不同的結果。當我們觀察一個決策時,就像上述例子一樣,我們可以看到神經網路如何根據先前的決策或層級的輸出,做出越來越複雜的決策。

在上述範例中,我們使用感知器來說明在這裡發揮作用的一些數學,但神經網路會利用 sigmoid 神經元,它們的區別在於具有 0 到 1 之間的值。因為神經網路的行為類似於決策樹,顯示從一個節點到另一個節點的階層式資料,在 0 和 1 之間的 x 值,會降低單一變數的任何給定變更,對任何給定節點的輸出的影響,以及隨後對神經網路的輸出的影響。

當我們開始思考更多關於神經網路的實際使用案例,如圖像識別或分類,我們將利用監督學習,或標註資料集,來訓練演算法。當我們訓練模型時,我們會想要使用成本(或損失)功能來評估其正確性。這也常稱為均方誤差 (MSE)。在下面的方程式中,

  • i 代表樣本的索引,
  • y-hat 是預測的結果,
  • y 是實際值,以及
  • m 是樣本數目。
用於決定成本函數的數學公式

𝐶𝑜𝑠𝑡 𝐹𝑢𝑛𝑐𝑡𝑖𝑜𝑛 = 𝑀𝑆𝐸 =1/2𝑚 ∑129_(𝑖 =1)^𝑚▒(𝑦 ̂^((𝑖) )−𝑦^((𝑖) ) )^2

最終,目標是將我們的成本函數降至最低,以確保符合任何給定觀察值的正確性。隨著模型調整其加權和偏差,它使用成本函數和強化學習達到收斂點,或局部最小值。演算法調整其加權的過程是透過梯度下降,讓模型決定採取的方向以減少誤差(或將成本函數降至最低) 。在每一個訓練範例中,模型的參數會調整以逐步收斂至最小值。

線條圖說明收斂點

請參閱此 IBM Developer 文章,取得有關神經網路所涉及的量化概念更深入的說明

大多數深度神經網路都是前饋,意味著它們只從一個方向流動,從輸入到輸出。不過,您也可以透過反向傳播來訓練您的模型;亦即,從輸出到輸入的相反方向移動。反向傳播可讓我們計算和歸因每個神經元相關的誤差,讓我們可以適當地調整並擬合模型的參數。

類神經網路類型

神經網路可以分類為不同類型,用於不同目的。雖然這不是完整的類型清單,但以下將代表您將在其一般使用案例遇到的最常見神經網路類型:

感知器是 Frank Rosenblatt 在 1958 年創立的最古老的神經網路。它只有一個神經元,是最簡單的一個神經網路形式:

使用線條和藍色圓圈的感知器簡圖

前饋神經網路,或多層感知器 (MLP) ,是我們在這篇文章中主要關注的內容。它們由一個輸入層、一或多個隱藏層,以及一個輸出層組成。雖然這些神經網路也常被稱為 MLP,但重要的是,要注意它們其實是由 Sigmoid 神經元而不是感知器組成,因為大多數現實世界的問題是非線性的。資料通常被饋送到這些模型中,以便訓練它們,而且它們是電腦視覺、自然語言處理和其他神經網路的基礎。

卷積神經網絡 (CNN) 與前饋網路相似,但通常用於圖像識別、模式識別和/或電腦視覺。這些網路利用線性代數的原理,特別是矩陣乘法,來識別圖像中的模式。

循環神經網路 (RNN) 是由其回饋迴圈識別。這些學習演算法主要用於使用時間序列資料來預測未來結果(例如股票市場預測或銷售預測)時。

神經網路與深度學習

深度學習和神經網路通常在對話中互換使用,這可能令人困惑。 因此,值得注意的是,深度學習的「深度」,只是指神經網路中的層級深度。由三層以上組成的神經網路,包含輸入和輸出,可以被視為深度學習演算法。只有兩層或三層的神經網路才是基本神經網路。

如欲了解更多神經網路與其他形式的人工智慧(如機器學習)的差異,請閱讀部落格文章「AI 與機器學習與深度學習與神經網路:有何不同?

神經網路的歷史

神經網路的歷史比大多數人認為的還要長。雖然「會思考的機器」 的想法可以追溯到古希臘人,但我們關注的是關鍵事件,這些事件導致了神經網路的思維進化,在過去幾年裡神經網路的流行時高時低:

1943: Warren S. McCulloch 和 Walter Pitts 出版的「在緊張的活動中的思想固有的邏輯演算」(PDF, 1 MB)(IBM 外部鏈結)」這項研究旨在瞭解人類的大腦如何透過相連的腦細胞或神經元產生複雜的模式。這個出版作品的主要想法之一是將具有二進位制臨界值的神經元與布林邏輯進行比較(即,0/1 或 true/false 陳述式)。

1958: Frank Rosenblatt 因開發了感知器而受到讚譽,這記載在他的研究中,「感知器:腦內資訊儲存與組織的可能性模型」 (PDF, 1.6 MB)(IBM 外部鏈結)。 他把 McCulloch 和 Pitt 的作品向前推進一步,在方程式引進了加權。 使用 IBM 704,Rosenblatt 能夠讓電腦學習如何區分標記在左側的卡片和標記在右側的卡片。

1974:雖然許多研究人員對反向傳播的想法有所貢獻,但 Paul Werbos 是美國第一個在其博士論文 (PDF, 8.1 MB) (IBM 外部鏈結)中說明在神經網路內應用反向傳播的人。

1989:Yann LeCun 發表一篇論文 (PDF, 5.7 MB) (IBM 外部鏈結),說明如何使用反向傳播中的限制,以及如何將其整合到神經網路架構中,用來訓練演算法。這項研究成功利用神經網路來辨識由美國提供的手寫郵遞區號數字。 郵政服務。

神經網路與 IBM Cloud

數十年來, IBM 一直是 AI 技術與神經網路發展的先鋒,透過 IBM Watson 的發展與演進來彰顯其優勢。對於希望使用實證 AI 採用及實作的分層方法,將進階自然語言處理及深度學習技術應用到其系統的企業來說,Watson 是值得信賴的解決方案。

Watson 採用 Apache Unstructure Information Management Architecture (UIMA) 架構及 IBM DeepQA 軟體,為應用程式提供強大的深度學習功能。利用 IBM Watson Studio 等工具,您的企業可以在任何雲端上部署和執行模型時,完美無縫地將開放原始碼 AI 專案帶入正式作業中。

如需如何開始使用深度學習技術的相關資訊,請瀏覽 IBM Watson Studio深度學習服務

註冊 IBM ID,並建立您的 IBM Cloud 帳戶。