Machine Learning:神經網絡基礎 頂 原 薦

Introduction

神經網絡試圖複製人腦的工作以使事情更加智能化。

神經網絡通常是一種有監督的學習方法。這意味着需要有一套訓練集。理想情況下,訓練集合包含了絕對真值(tags | 標籤,classes | 類 )的例子。例如在文本情感分析的情況下,訓練集是句子列表和它們各自對應的情緒。(注意:未標記的數據集也可以用來訓練神經網絡,但這裏僅考慮最基本的情況。)

例如:將文本稱爲 X ,將它們的標籤稱爲 Y 。 有一些函數可以定義 X 和 Y 之間的關係,比如是什麼特徵(詞/短語/句子結構等)導致一個句子是否定的或肯定的的含義。早期的人們習慣於手動查找這些特徵,這被稱爲特徵工程(feature engineering)。神經網絡使得這一過程實現自動化處理。

So there are many ways you can understand a concept, choose whichever suits you, being persistent about the learning part. At the end knowing maths is a useful tool when it comes to optimisations or experimentations.

工作流程

人工神經網絡由3個組成部分組成:

  • 輸入層 Input Layer
  • 隱藏(計算)層 Hidden (computation) Layers
  • 輸出層 Output Layer

學習過程分兩步進行:

  • 前向傳播 Forward-Propagation:猜測答案
  • 反向傳播 Back-Propagation:最小化實際答案和猜測答案之間的誤差

前向傳播 Forward-Propagation

隨機初始化權重(Randomly initialize weights)

  • w1
  • w2
  • w3 輸入層的數據乘以權重形成隱藏層
  • h1 = (x1 * w1) + (x2 * w1)
  • h2 = (x1 * w2) + (x2 * w2)
  • h3 = (x1 * w3) + (x2 * w3) 隱藏層的輸出通過非線性函數(激活函數)以形成猜測輸出(guessed output)
  • y_ = fn( h1 , h2, h3 )

反向傳播 Backward Propagation

  • 總誤差 total_error 通過一個代價函數 (cost function) 來計算,參數爲計算期望值( expected value ) y(訓練集中的值)和觀測值(observed value) y_(前向傳播值)
  • 按每一個權重計算誤差的偏導數(這些偏微分是每一個權重在總誤差中的量度)
  • 微分後乘以一個小數 ( η ) ,η 稱爲學習率(learning rate)
  • 然後從各自的權重中減去結果

反向傳播的結果是以下更新的權重:

  • w1 = w1 - (η * ∂(err) / ∂(w1))
  • w2 = w2 - (η * ∂(err) / ∂(w2))
  • w3 = w3 - (η * ∂(err) / ∂(w3))

基本上我們對權重初始化時是隨機的,並假設他們會產生準確的答案。

Those familiar with Taylor Series, backpropogation shares the same end result with it. But instead of an indefinite series we try to optimise the first element only.

偏差(Bias)是添加到隱藏層的權重。它們也被隨機初始化並以隱藏層相似的方式更新。雖然隱藏層的作用是映射數據中底層函數(underlying function)的模型,但偏差的作用是橫向移動學習函數(the learned function),使其與原始函數(the original function)重疊。

偏導數 Partial Derivatives

計算偏導數使我們能夠知道每個權重對誤差的貢獻。

導數的需求是顯而易見的。例如:假設一個試圖找到自動駕駛汽車最佳速度的神經網絡。現在,如果汽車發現速度比預期的更快或者更慢,那麼神經網絡會通過加速或減速來改變速度。什麼是加速/減速?速度的導數。

解釋偏導數:射飛鏢

假設有幾個孩子被要求向飛鏢靶擲飛鏢,瞄準中心。最初的結果是:

現在如果我們確認了總誤差並簡單地從所有權重中減去,那麼我們可以概括每個學生的誤差。假設一個孩子瞄準的目標太低,但是我們要求所有的孩子都瞄準得更高一些,結果是:

一些學生的錯誤可能會減少,但總體錯誤仍然會增加。通過查找偏導數,我們可以找出每個權重單獨產生的誤差。單獨修正每個權重會得到以下結果:

超參數 Hyper Parameters

雖然神經網絡被用於自動化特徵選擇,但是仍然有一些參數我們必須手動輸入。

學習速率 Learning Rate

學習速率是一個非常關鍵的超參數。如果學習速率太小,那麼即使在長時間訓練神經網絡之後,它仍將遠離最優結果。結果看起來像:

相反,如果學習率太高,那麼學習者就會過早地得出結論。產生以下結果:

激活函數 Activation Function

簡單來說,激活函數(激勵函數)負責決定哪些神經元將被激活,即什麼信息將傳遞給其他層。沒有激活函數,深度神經網絡將失去大量的描述學習能力。

這些函數的非線性負責增加學習者的自由度,使他們能夠在較低維度上推廣高維的問題。 下面是一些流行的激活函數的例子:

成本函數 Cost Function

成本函數是神經網絡的核心。它用於計算真實和觀察結果的損失(loss)。我們的目標是儘量減少這種損失。因此,成本函數有效地推動了神經網絡對其目標的學習。

成本函數是神經網絡做的“有多好”的量度,在給定訓練樣本和預期輸出方面。它也可能取決於變量,如權重(weights)和偏差(biases)。

成本函數是一個單一的值,而不是一個矢量,因爲它評價了神經網絡作爲一個整體的效果。 一些最着名的成本函數是:

  • 平方平均數 Quadratic Cost ,簡稱均方根 Root Mean Square
  • 交叉熵 Cross Entropy
  • 指數 Exponential (AdaBoost)
  • 相對熵 Kullback–Leibler divergence 或者 信息收益 Information Gain

均方根是其中最簡單和最常用的。它被簡單地定義爲:

Loss = √(expected_output ** 2) - (real_output ** 2)

神經網絡中的成本函數應滿足兩個條件:

  • 成本函數必須能夠寫成平均值
  • 成本函數不能取決於除一個神經網絡中的輸出值以外的的任何激活值

深度網絡

深度學習是一類機器學習算法,可以從數據中學習更深入(更抽象)的洞察力。

  • 使用級聯,類似流水線的依次傳遞管道,擁有多層處理單元(非線性)進行特徵提取和轉換。
  • 基於以無監督方式學習數據的特徵(表示數據知識)。更高級別的特徵(在後面的處理圖層中找到)是從更低級別的特徵(可在初始處理圖層中找到)導出的。
  • 多級表示相對應的不同抽象級別;這些級別構成了概念的層次結構。

單層神經網絡 A single layer Neural Network

單層神經網絡,無論第一層(綠色神經元)如何學習,他們只需將其傳遞給輸出即可。

雙層神經網絡 Two layer Neural Network

對於兩層神經網絡,無論綠色隱藏層學習什麼,都要傳遞到藍色隱藏層,進一步學習(關於綠色層學習)。因此,隱藏層的數量越多,對先前已經學習過的概念的學習就越多。

Wide Neural Network vs Deep Neural Network

在一層中存在更多神經元的情況下,它不會獲得更深層次的洞察力。相反,它的結果是學習到更多的概念。

例:學習英語語法,它需要理解大量的概念。在這種情況下,單層寬神經網絡比深度神經網絡的效果要好得多,而深度神經網絡的寬度要小得多。

但在學習傅立葉變換(Fourier Transform)的情況下,學習者(神經網絡)需要深入學習,因爲沒有太多的概念需要學習,但每個概念都足夠複雜,需要深度學習。

Balance is Key

每個任務都使用深度和寬度神經網絡是非常誘人的。這可能是一個非常糟糕的主意,因爲:

  • 兩者都顯然需要更多的數據才能達到最低的理想精度(desirable accuracy)
  • 兩者都具有成倍增加的時間複雜度(time complexity)
  • 太深的神經網絡將嘗試更深入地分解一個基本概念,但在這一點上它將對這個概念做出錯誤的假設,並試圖找到不存在的僞模式(pseudo patterns)
  • 太寬的神經網絡會試圖找到更多數量的特徵(可測量特性)。因此,與上面類似,它將開始對數據做出錯誤的假設。

維度詛咒

維度詛咒(The curse of dimensionality)是指在高維空間(通常具有數百或數千維度)中分析和組織數據時出現的各種現象,這些現象在低維設置中不會發生。

像英語語法或股票獎品等有很多影響他們的特徵。使用機器學習必須用具有有限和相對小得多的長度(比實際存在的特徵的數量)的陣列(array)/ 矩陣(matrix)來表示這些特徵。要做到這一點可能產生兩個問題:

  • made by a learner:由於學習者的錯誤假設而出現偏差。高偏差會導致算法錯過功能與目標輸出之間的相關關係。這種現象被稱爲欠擬合(underfitting)。
  • insufficient learning : 由於對特徵的瞭解不全面,訓練集中的小波動導致較大偏差。高方差導致過度擬合(overfitting),將錯誤作爲相關信息進行學習。

權衡

It is typically impossible to have low bias and low variance.

在訓練早期因爲網絡輸出遠未達到要求,偏差很大。由於數據影響較小,方差很小。在訓練後期因爲網絡已經學會了潛在的功能,偏差很小。

然而,如果訓練太長,網絡也將學習該數據集特殊的噪聲。這導致在不同數據集上測試的結果表現爲高方差,因爲不同數據集的噪聲存在變化。實際上,具有高偏差的算法通常產生更簡單的模型,這些模型不傾向於過度擬合,但可能會削弱其訓練數據,而不能捕獲重要的模式或特徵的屬性。具有低偏差和高方差的模型在結構上通常更復雜,使得它們能夠更準確地表示訓練集。然而,在這一過程中,它們也可能代表訓練集中的佔比較大的噪聲,使得它們的預測儘管複雜性增加,但精度卻不太精確。

因此,低偏差和低方差同時存在通常是不可能的。

目前,依靠豐富的數據和工具,我們可以輕鬆地創建複雜的機器學習模型。如果學習者沒有提供足夠的信息時,實際上偏差就發生了,處理過度擬合將變成中心工作。如果提供更多的例子,則意味着更多的變化,包括模式的數量都增加了。

擴展閱讀:《The Machine Learning Master》

更多精彩內容掃碼關注公衆號:RiboseYim's Blog

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章