當前位置:
首頁 > 最新 > 多層感知器神經網路速成課

多層感知器神經網路速成課

更多騰訊海量技術文章,請關注云加社區:https://cloud.tencent.com/developer/column

作者:人工智慧資訊小編

摘要:在這篇文章中,我們將快速討論很多方面的問題。接下來主要講述的幾大主題如下:

1.多層感知器。

2.神經元,權重與激活。

3.神經元構成的網路。

4.訓練網路。

人工神經網路是一個令人神往的研究領域,儘管當新手入門的時候它們可能會令人生畏。

我們在描述本領域使用的數據結構和演算法時,會使用到大量的專業術語。

這篇文章則是針對多層感知器(Multi-layer Perceptron)神經網路領域中所使用的術語和流程的速成課程。閱讀這篇文章後,你會學到:

神經網路的構建模塊,包括神經元(Neurons)、權重(Weights)和激活函數(Activation functions)。

如何在層中使用各個構建模塊來創建網路。

如何使用樣例數據訓練網路。

讓我們開始速成之路吧!

神經網路速成課

圖片來自 Joe Stump,作者保有相應權利。

1.多層感知器

人工神經網路領域經常被簡稱為神經網路或多層感知器,而後者也許是最有用的神經網路類型。一個感知器是單個神經元模型,它是更大型的神經網路的前身。

這是一個研究如何使用簡單的生物大腦模型來解決複雜計算任務的領域,如我們在機器學習中看到的預測建模任務。其目標不是創建真實的大腦模型,而是開發出可用於對複雜問題建模的高魯棒性演算法和數據結構。

神經網路的力量源於他們從訓練數據中學習表示的能力,以及將其與想要預測的輸出變數以最好的方式關聯起來的能力。在這個意義上,神經網路是在學習一個映射。從數學的角度來看,他們能夠學習任意的映射函數,並且被證明了是一個通用的近似演算法。

神經網路的預測能力則源於網路的層次或多層結構。數據結構可以在不同尺度或解析度的特徵中進行選擇(學習表示),並將它們組合成更高階的特徵。例如從線條到線條集合,再到圖形。

2.神經元

神經網路的構建模塊是人工神經元。

它們都是一些簡單的具有加權輸入信號的計算單元,並且使用激活函數產生輸出信號。

一個簡單的神經元模型

神經元權重

您可能熟悉線性回歸,在這種情景下,輸入的權重與回歸方程中所使用的係數非常相似。

就像線性回歸一樣,每個神經元也有一個偏差,這個偏差可認為是一個值永遠為 1.0 的輸入,它也必須加權。

比如說,一個神經元可能有兩個輸入,而在這種情況下,它總共就需要三個權重。每個輸入對應一個,偏差也對應一個。

雖然可以使用更複雜的初始化方案,但是我們通常將權重初始化為一些小的隨機值,例如 0 到 0.3 之間的某些值。

與線性回歸相同,較大的權重表示複雜性和脆弱性也隨之增加。我們希望保持網路中的權重是可取的,此時我們可以使用正則化技術。

激活

對加權輸入求和,並通過一個激活函數(有時稱為傳遞函數)。

激活函數是求和後的加權輸入與神經元輸出的簡單映射。它控制著激活神經元的閾值以及輸出信號的強度,因此被稱為激活函數。

在以往我們使用簡單的步驟激活函數:對輸入求和後,若所得結果高於閾值(例如 0.5),則神經元將輸出值 1.0,否則輸出 0.0。

習慣上我們常使用非線性激活函數。它允許網路以更複雜的方式將輸入組合起來,進而在其可模擬的函數中提供更豐富的能力。諸如 logistic 的非線性函數也稱為 sigmoid 函數,用於輸出一個介於 0 和 1 之間的 s 形分布的值。雙曲正切函數也稱為tanh,它也輸出 s 型分布的值,其範圍是 -1 到 +1 。

最近,整流器激活函數已被證明可以提供更好的結果。

3.神經網路

神經元通過排列則可成為神經網路。

一排神經元被稱為一層,一個網路中可以有多層。網路中神經元的架構通常稱為網路拓撲。

一個簡單的網路模型

輸入(或可見)層

最底下的那一層從數據集中獲取輸入,它被稱為可見層,因為它是網路的暴露的部分。通常神經網路是用一個可見層繪製的,其中每個輸入值或數據集中的一列對應一個神經元。這些則不是如上所述的神經元,它們只是將輸入值傳遞給下一層。

隱含層

輸入層之後的層被稱為隱藏層,因為它們不直接暴露在輸入中。最簡單的網路結構,就是隱藏層中只有一個直接將輸入的值輸出的單個神經元。

考慮到運算能力和高效的庫的增加,我們現在可以構建出非常深的神經網路。深度學習可以指在你的神經網路中有著諸多隱藏層。它們很深,因為在過去它們訓練的速度巨慢無比,但現在我們使用現代技術與硬體進行訓練,則可能只需要幾秒或幾分鐘就能訓練完畢。

輸出層

最後的隱藏層被稱為輸出層,它負責輸出一個符合問題所需格式的值或向量值。

對輸出層中激活函數的選擇受到所建模的問題類型的強烈約束。比如說:

一個回歸問題可能只有一個輸出神經元,且這個神經元可能沒有激活函數。

二元分類問題可能只有一個輸出神經元,並使用一個 S 形激活函數來輸出一個介於 0 和 1 之間的值,以表示預測一個值屬於類 1 的概率。通過使用閾值 0.5,可以將其轉化為明確的類別值,將小於閾值的值設定為 0,否則為 1。

多元分類問題可能在輸出層有多個神經元,每個類對應一個神經元(例如著名的虹膜花 [Iris flowers] 分類問題中的三個神經元)。在這種情況下,我們可以使用 softmax 激活函數來輸出網路對每個類別值的概率預測。我們可以選擇具有最高概率的輸出來明確類別分類值。

4.訓練網路

一旦完成了配置,神經網路就需要在數據集上進行訓練。

準備數據

您必須先準備好您的數據,以便在神經網路上進行訓練。

數據必須是數值,例如實際值。如果您有分類數據,例如具有 「男性」 和 「女性」 二值的性別屬性,則可以將其轉換成被稱為一位有效編碼(One hot encoding)的實值表示。這是為每個類別值添加一個新列(在男性和女性的情況下共添加兩列),並且每行根據具體的類別值來添加 0 或 1。

對於不止一個類別的分類問題,可以在輸出變數上使用相同的一位有效編碼。這將從單個列創建一個二進位向量,它可以很容易地與網路輸出層中神經元的輸出進行直接比較,並且如上所述為每個類輸出一個值。

神經網路要求以一致的方式對輸入進行縮放(Scale)。您可以將其重新調整到 0 和 1 的範圍,這樣的操作也被稱為標準化。另一個主流的標準化技術是,使每個列的分布的均值為 0,標準差為 1。

縮放同樣適用於圖像像素數據。諸如單詞之類的數據可以被轉換為整數,諸如數據集中的單詞的流行程度以及其他編碼技術。

隨機梯度下降法

一個經典的,並仍然在神經網路的訓練中被優先考慮的演算法,就是隨機梯度下降法(Stochastic Gradient Descent)。

當一行數據作為輸入暴露給網路時,網路對輸入進行處理以自下向上地激活神經元,最終產生一個輸出值。這在網路中稱為正向傳遞。這是在網路訓練完成之後,對新數據進行預測時也會使用的傳遞類型。

網路的輸出與預期的輸出進行比較,並計算誤差。這個誤差則通過網路反向傳播回來,一次一層,相應的權重則根據它們所導致的誤差總數進行更新。這個巧妙的數學運算稱為反向傳播演算法。

對訓練數據中的所有樣本都重複該過程。通過整個訓練數據集的對網路進行的一次更新稱為一次迭代(Epoch)。一個網路可以進行幾十,幾百或幾千次這樣的迭代訓練。

更新權重

網路中的權重可以根據針對每個訓練樣本而計算出來的誤差進行更新,我們將此稱為在線學習。它可能導致網路快速且混亂地進行變化。

另一種方法是,對於所有訓練樣本,將誤差值保存起來,最後再用於更新網路。這稱為批量學習,它通常更穩定。

通常情況下,由於數據集十分巨大,並且受計算效率,批大小(Batch size)的影響,更新之前的網路訓練樣本的數量往往會減少到一個比較小的規模,例如幾十或幾百個樣本。

權重更新的數量是由一個稱為學習率(Learning rate)的配置參數所控制的。它也被稱為步長(Step size),並且它控制著對於給定誤差的網路權重的步驟或更改。通常我們使用較小的權值,例如 0.1,0.01 或者更小的值。

權重更新公式可以補充一些您可以設置的附加配置項。

動量(Momentum)是一個術語,它包含了來自之前的權重更新的特性,即使我們計算出的誤差很小,權重也可以繼續在同一方向上繼續變化。

學習速率衰減(Decay)用於降低迭代(Epoch)的學習速率,以使得網路能夠在開始時對權重進行較大修改,而在訓練進度後期進行較小的微調。

預測

一旦神經網路訓練完成,它就可以用來做出預測。

您可以對測試數據或驗證數據進行預測,從而估計出模型對於未知數據的預測能力。您也可以部署它,並使用它來持續進行預測。

網路拓撲結構和最終權重集就是所有您需要從模型中保存的內容。預測,則是通過向網路提供輸入並執行前向傳遞,從而生成一個可用於預測的輸出。

更多資源

幾十年來有許多關於人工神經網路的論文和書籍出版。

如果你是該領域的新手,我建議你可以進一步閱讀下列資源:

Neural Smithing: Supervised Learning in Feedforward Artificial Neural Networks(神經鍛造:前饋人工神經網路中的監督學習)

Neural Networks for Pattern Recognition(用於模式識別的神經網路)

An Introduction to Neural Networks(神經網路導論)

總結

在這篇文章中,您了解到了關於機器學習的人工神經網路相關的知識。

閱讀這篇文章後,您學到了:

神經網路並非大腦的模型,而是用於解決複雜機器學習問題的計算模型。

神經網路是由帶權重和激活功能的神經元組成的。

網路被組織成神經元層的形式,並且我們使用隨機梯度下降法對其進行訓練。

在訓練神經網路模型之前準備好您的數據,這是個好主意。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 雲加社區 的精彩文章:

基於深度學習和經典方法的文本分類
啟用Windows 7/2008 R2 XPS Viewer

TAG:雲加社區 |