深度學習基礎:為什麼神經網絡的感知機中的神經元需要偏置項?

2020-12-05 deephub

每個人都知道神經網絡中的偏置(bias)是什麼,而且從人類實現第一個感知器開始,每個人都知道神經元需要添加偏置項。但你是否考慮過我們為什麼要使用偏置項呢?就我而言,直到不久前我才弄清楚這個問題。當時我和一個本科生討論了一些神經網絡模型,但不知何故她把「偏置輸入」(bias input)和「統計基差」( statistical bias)搞混了。對我來說,向她解釋這些概念當然很容易,但我卻很難進一步地告訴她我們為什麼要使用偏置項。過了一段時間,我決定嘗試寫代碼來研究這一問題。

讓我們先從一些簡單的概念開始。

感知器是多層感知器(MLP)和人工神經網絡的前身。眾所周知,感知器是一種用於監督學習的仿生算法。它本質上是一個線性分類器,如圖所示:

下面讓我們考察一下這個模型的數學方程:

你可能會注意到它與線性函數的標準形式是相似的。如果我們不適用激活函數,或將激活函數替換為恆等映射,這些公式將是相同的(在這裡為了方便描述,我們只考慮單一輸入):

比較這兩個公式,很明顯我們的偏置項就對應了線性函數中的b。現在的問題就轉化為,線性函數中的b為什麼那麼重要?如果你過去幾年沒有上過任何線性代數課程(就像我一樣),可能對一些概念不夠了解。但是下面的內容是很容易理解的:

我們很容易就注意到,當b=0時,函數總是通過原點[0,0]。當我們保持a不變的情況下引入b時,新的函數總是相互平行的。那麼,我們能從中得到什麼信息呢?

我們可以說,係數a決定了函數的角度,而分量b決定了函數與x軸的交點。

此時我想你已經注意到了一些問題,對吧?如果沒有b,函數將會失去很多靈活性。只不過對一些分布進行分類時偏置項可能有用,但不是對所有情況都有用。怎樣測試它的實際效果呢?讓我們使用一個簡單的例子:OR函數。讓我們先來看看它的分布:

繪製在笛卡爾坐標系中的OR函數:

我想你已經想明白了這個問題。圖中兩個點([0,0]和[1,0])是兩個不同的類,但任何一條過[0,0]的直線都沒有辦法將這兩個點分開。那麼感知機如何對它分類呢?有偏置項和無偏置項的結果分別是怎樣的呢?讓我們通過編程,看看將會發生什麼!下面是用Python實現的感知器神經元:

class Perceptron():def __init__ (self, n_input, alpha=0.01, has_bias=True):self.has_bias = has_bias self.bias_weight = random.uniform(-1,1) self.alpha = alpha self.weights = [] for i in range(n_input): self.weights.append(random.uniform(-1,1))def classify(self, input): summation = 0 if(self.has_bias): summation += self.bias_weight * 1 for i in range(len(self.weights)): summation += self.weights[i] * input[i] return self.activation(summation)def activation(self, value): if(value < 0): return 0 else: return 1def train(self, input, target): guess = self.classify(input) error = target - guess if(self.has_bias): self.bias_weight += 1 * error * self.alpha for i in range(len(self.weights)): self.weights[i] += input[i] * error * self.alpha

首先,讓我們訓練無偏置項的感知器。我們知道,分類器(在本例中是我們的函數)總是通過[0,0]的。正如我們之前所說的那樣,分類器無法分開這兩類。在這種情況下儘管一直在向分離平面逼近,但它還是不能將[0,0]和[1,0]分開,

現在我們來看一下有偏置項的感知器。首先,注意分類器的靈活性。如前所述,在這種情況下感知器具有更大的靈活性。此外我們可以注意到,它正在尋找與上一個實例相同的判別平面,但是現在它能夠找到分離數據的最佳位置。

所以,偏置項的重要性現在已經很清楚了。我知道你現在可能在思考激活函數,我們在python例子中使用了一個階躍函數作為激活函數,如果我們使用sigmoid作為激活函數,它的效果可能會更好?相信我:不會的。讓我們看看當我們將sigmoid函數作為線性函數的激活函數(σ(f (x)))會發生什麼:

你是否注意到這裡的例子和線性函數的例子很相似?sigmoid函數雖然改變了輸出的形狀,但是我們仍然遇到同樣的問題:如果沒有偏置項,所有的函數都會經過原點。當我們試圖用曲線分離OR函數中時,它仍然得不到滿意的結果。如果您想嘗試一下,看看它是如何工作的,您只需要對python代碼做一些小小的修改。

我真誠地感謝你對這個主題感興趣。如果你有任何建議、意見,或者只是想和我打個招呼,請給我留言!我將很樂意和你討論這個問題。

作者:Caio Davi

deephub翻譯組:zhangzc

相關焦點

  • 初探神經網絡與深度學習 —— 感知器
    【IT168 技術】人工神經網絡的第一個裡程碑是感知機perceptron, 這個名字其實有點誤導, 因為它根本上是做決策的。 一個感知機其實是對神經元最基本概念的模擬 ,都未必有多少網絡概念,他就是一個自動做決策的機器。
  • 人工智慧系列(六) 深度學習中的神經網絡
    原力君在系列的第五篇《人工智慧系列(五) 深度學習簡介》中提到深度學習可以看作是一種更高級的函數擬合方法;人工神經網絡、激活函數、代價函數、梯度下降、反向傳播是深度學習的幾個關鍵點;常見的深度學習神經網絡結構有多層感知機、DNN、CNN、RNN等。
  • 人工智慧-深度學習-神經網絡結構MLP,CNN,RNN,LSTM
    人工神經網絡、激活函數、代價函數、梯度下降、反向傳播是深度學習的幾個關鍵點;常見的深度學習神經網絡結構有多層感知器MLP、CNN、RNN、LSTM等。Neural Networks 卷積神經網絡由具有可學習的權重和偏置常量(biases)的神經元組成。
  • 深度學習背後的基礎-神經網絡揭秘
    最近, 深度學習三傑獲得了計算機界最重要的圖靈獎, 它們的貢獻都集中在對深度學習的根據神經網絡的理論突破。 今天我們看到的所有和人工智慧有關的偉大成就, 從阿法狗到自動駕駛, 從海量人臉識別到對話機器人, 都可以歸功於人工神經網絡的迅速崛起。那麼對於不了解神經網絡的同學如何入門? 神經網絡的技術為什麼偉大, 又是什麼讓它們這麼多年才姍姍走來?
  • 神經網絡和深度學習簡史(全)
    對於感知機,絕大多數輸入值不是一些數據,就是別的感知機的輸出值。但有一個額外的細節:這些感知機有一個特殊的,輸入值為1的,「偏置」輸入,因為我們能補償加權和,它基本上確保了更多的函數在同樣的輸入值下是可計算的。這一關於神經元的模型是建立在沃倫·麥卡洛克(Warren McCulloch)和沃爾特·皮茲(Walter Pitts)工作上的。
  • 理解神經網絡:從神經元到RNN、CNN、深度學習
    隨著時間的推移,證明了神經網絡在精度和速度方面,比其他的算法性能更好。並且形成了很多種類,像CNN(卷積神經網絡),RNN,自編碼,深度學習等等。神經網絡對於數據科學和或者機器學習從業者,就像線性回歸對於統計學家一樣。因此,對神經網絡是什麼有一個基本的理解是有必要的,比如,它是怎麼構成的,它能處理問題的範圍以及它的局限性是什麼。
  • 神經網絡中容易被忽視的基礎知識
    由於歷史原因,激活函數常常選擇使用 sigmoid 函數 σ當然還有很多其他激活函數,下面再仔細聊!需要注意:1. 一個神經元可以看成包含兩個部分,一個是對輸入的加權求和加上偏置,一個是激活函數對求和後的激活或者抑制。2. 注意生物中的神經元要複雜的多,其中一個是生物中的輸出是一個脈衝,而現在大多數的數學模型神經輸出的就是一個值,當然現在也有一些脈衝人工神經網絡,可以自行了解!
  • 深度學習:神經網絡算法的昨天、今天和明天
    針對神經網絡輸出結果與真實結果之間的差異,神經網絡會通過梯度(Gradient)逐層調整相應的權重以縮小差異,從而達到深度學習的目的。二、深度學習的雛形其實,模擬動物的神經活動,並非深度學習的專利。早在1957年,Frank Rosenblatt就提出了感知機(Perceptron)的概念。這是一種只能分出兩類結果的單層神經網絡。
  • 如何得出神經網絡需要多少隱藏層、每層需要多少神經元?
    增加隱藏層/神經元的數目總能給出更好的結果嗎?人工神經網絡(ANN)初學者常常提出這些問題。如果需要解決的問題很複雜,這些問題的答案可能也會比較複雜。希望讀完這篇文章後,你至少可以知道如何回答這些問題。
  • 從數學概念入手,一文帶你理解感知機是什麼
    雷鋒網AI科技評論按:神經網絡已經成為了人工智慧最火的領域,是源於大腦結構的計算模型。 屬於信息處理結構,其最重要的屬性是其從數據中學習的能力。 這些技術在營銷、工程等諸多領域取得了巨大的成功。感知機是一種人工神經網絡,由Frank Rosenblatt於1957年發明,他也提出了相應的感知機學習算法。
  • Facebook:易於解釋的神經元可能阻礙深度神經網絡的學習
    編輯:張倩、杜偉易於解釋的神經元對於提升神經網絡的性能來說是必要的嗎?Facebook 的研究者給出了出人意料的答案。AI 模型能「理解」什麼?為什麼能理解這些東西?回答這些問題對於復現和改進 AI 系統至關重要。但遺憾的是,計算機科學家在解釋深度神經網絡(DNN)方面的能力遠遠落後於我們利用這些網絡獲取有用成果的能力。
  • Facebook:易於解釋的神經元可能阻礙深度神經網絡的學習
    為什麼能理解這些東西?回答這些問題對於復現和改進 AI 系統至關重要。但遺憾的是,計算機科學家在解釋深度神經網絡(DNN)方面的能力遠遠落後於我們利用這些網絡獲取有用成果的能力。理解 DNN 的一類常見方法是聚焦於單個神經元的屬性,如找到一個能夠被貓的圖像而非其他類型的圖像激活的神經元。
  • 代碼詳解:基於Python建立任意層數的深度神經網絡 - 讀芯術
    圖片來源:pexels.com/@divinetechygir在這篇指南中,我們將建立起一個任意層數的深度神經網絡。這個神經網絡可以應用於二元分類的監督學習問題。圖1 神經網絡構造的例子(符號說明:上標[l]表示與第l層;上標(i)表示第i個例子;下標i表示矢量第i項)單層神經網絡圖2 單層神經網絡示例神經元模型是先計算一個線性函數(z=Wx+b),接著再計算一個激活函數。
  • 如今統治機器學習的深度神經網絡,也曾經歷過兩次低谷
    如今媒體大V們隨手甩出的「深度學習」的概念,不明覺厲的深度神經網絡(DNN)、卷積神經網絡(CNN)、深度置信網絡(DBN)、卷積深度置信網絡(CBDN),少有人知曉,它們都曾是無人問津的「屌絲」。Yann Le Cun,一個需要被記住的名字
  • 深度|人工神經網絡深入分析
    本文與吳老師的講解方式不同,筆者希望能從神經網絡的起源揭開神經網絡的面紗,從而幫助更多的對神經網絡感興趣但卻沒有相關理論基礎的朋友們。說起人工神經網絡的起源肯定要追溯到生物的神經網絡。這些可以從輸入層實際觀測或者是一個隱藏層的中間值(隱藏層即介於輸入與輸出之間的所有節點組成的一層。幫助神經網絡學習數據間的複雜關係。大家不理解沒關係,後面講到多層神經網絡是會再跟大家解釋的)。X0:偏置單元。這是常值添加到激活函數的輸入(類似數學裡y=ax+b中使直線不過原點的常數b)。即截距項,通常有+1值。w0,w1,w2,…,wN:對應每個輸入的權重。
  • 吳恩達授課,斯坦福CS230深度學習課程資源開放
    課程簡介:深度學習是 AI 領域中最受歡迎的技能之一。這門課程將幫助你學好深度學習。你將學到深度學習的基礎,理解如何構建神經網絡,並學習如何帶領成功的機器學習項目。你將學到卷積神經網絡(CNN)、循環神經網絡(RNN)、長短期記憶網絡(LSTM)、Adam 優化器、Dropout 方法、BatchNorm 方法、Xavier/He 初始化方法等。
  • 深度神經網絡DNN是否模擬了人類大腦皮層結構
    神經元在深度學習領域,神經元是最底層的單元,如果用感知機的模型, wx + b, 加上一個激活函數構成了全部,輸入和輸出都是數字,研究的比較清楚,別的不說,在參數已知的情況下,有了輸入可以計算輸出,有了輸出可以計算輸入。但在神經科學領域,神經元並不是最底層的單位,舉例來說,有人在做神經元膜離子通道相關的工作。
  • 深度神經網絡(DNN)是否模擬了人類大腦皮層結構?
    本文引用地址:http://www.eepw.com.cn/article/201707/361915.htm  神經元  在深度學習領域,神經元是最底層的單元,如果用感知機的模型, wx + b, 加上一個激活函數構成了全部,輸入和輸出都是數字,研究的比較清楚。別的不說,在參數已知的情況下,有了輸入可以計算輸出,有了輸出可以計算輸入。
  • 乾貨|不同的損失函數會對深度神經網絡帶來什麼樣的影響?
    二次損失函數會在神經元犯了明顯錯誤的情況下使得網絡學習緩慢,而使用交叉熵損失函數則會在明顯犯錯的時候學的更快。 今天,我們主要來談談不同的損失函數會對深度神經網絡帶來什麼樣的影響?
  • 前饋神經網絡入門:為什麼它很重要?
    深度前饋網絡(又稱「多層感知器」)是大多數深度學習模型的基礎。卷積神經網絡(CNN)和循環神經網絡(RNN)這樣的網絡只是前饋網絡的一些特殊情況。這些網絡主要用於監控機器學習任務,在這些任務中,我們已經知道目標功能,即我們希望網絡實現的結果,並且這些網絡對於實踐機器學習非常重要,構成了許多商業應用的基礎。