Python機器學習多層感知機原理解析

2022-09-24 23:24:13 字數 2462 閱讀 8185

目錄

我們在前面描述了仿射變換,它是乙個帶有偏置項的線性變換。首先,回想下之前下圖中所示的softmax回歸的模型結構。該模型通過單個仿射變換將我們的輸入直接對映到輸出,然後進行softmax操作。如果我們的標籤通過仿射變換後確實與我們的輸入資料相關,那麼這種方法就足夠了。但是,仿射變換中的線性是乙個很強的假設。

我們的資料可能會有一種表示,這種表示會考慮到我們的特徵之間的相關互動作用。在此表示的基礎上建立乙個線性模型可能會是合適的,但我們不知道如何手動計算這麼一種表示。對於深度神經網路,我們使用觀測資料來聯合學習隱藏層表示和應用於該表示的線性**器。

我們可以通過在網路中加入乙個或多個隱藏層來克服線性模型的限制,使其能處理更普遍的函式關係型別。要做到這一點,最簡單的方法是將許多全連線層堆疊在一起。每一層都輸出到上面的層,直到生成最後的輸出。我們可以把前l−1層看作表示,把最後一層看作線性**器。這種架構通常稱為多層感知機(multilayer perceptron),通常縮寫為mlp。下面,我們以圖的方式描述了多層感知機。

這個多層感知機有4個輸入,3個輸出,其隱藏層包含5個隱藏單元。輸入層不涉及任何計算,因此使用此網路產生輸出只需要實現隱藏層和輸出層的計算;因此,這個多層感知機的層數為2。注意,這個層都是全連線的。每個輸入都會影響隱藏層中的每個神經元,而隱藏層中的每個神經元又會影響輸出層的每個神經元。

然而,具有全連線層的多層感知機的引數開銷可能會高得令人望而卻步llmxgr,即使在不改變輸入和輸出大小的情況下,也可能促使在引數節約和模型有效性之間進行權衡。

注意,在新增隱藏層之後,模型現在需要跟蹤和更新額外的引數。

可我們能從中得到什麼好處呢?這裡我們會驚訝地發現:在上面定義的模型裡,我們沒有好處。上面的隱藏單元由輸入的仿射函式給出,而輸出(softmax操作前)只是隱藏單元的仿射函式。仿射函式的仿射函式本身就是仿射函式。但是我們之前的線性模型已經能夠表示任何仿射函式。

由於 x中的每一行對應於小批量中的乙個樣本,處於記號習慣的考量,我們定義非線性函式 也以按行的方式作用於其輸入,即一次計算乙個樣本。我們在之前以相同的方式使用了softmax符號來表示按行操作。但是在本節中,我們應用於隱藏層的啟用函式通常不僅僅是按行的,而且也是按元素。這意味著在計算每一層的線性部分之後,我們可以計算每個啟用值,而不需要檢視其他隱藏單元所取的值。對於大多數啟用函式都是這樣。

啟用函式通過計算加權和並加上偏置來確定神經元是否應該被啟用。它們是輸入訊號轉換為輸出的可微運算。大多數啟用函式都是非線性的。由於啟用函式是深度學習的基礎,下面簡要介紹一些常見的啟用函式。

import torch

from d2l import torch as d2l

最受歡迎的選擇是線性整流單元,因為它實現簡單,同時在各種**任務中表現良好。relu提供了一種非常簡單的非線性變換。給定元素x ,relu函式被定義為該元素與0的最大值:

通俗地說,relu函式通過將相應的啟用值設為0來僅保留正元素並丟棄所有負元素。為了直觀感受下,我們可以畫出函式的曲線圖。下圖所示,啟用函式是分段線性的。

x = torch.arange(-8, 8, 0.1, requires_grad=true)

y = torch.relu(x)

d2l.plot(x.detach(), y.detach(), 'x', 'relu(x)', figsize=(5, 2.5))

注意,當輸入值精確等於0時,relu函式不可導。在此時,我們預設使用左側的導數,即當輸入為0時導數為0。我們可以忽略這種情況,因為輸入可能永遠都llmxgr不會是0。這裡用上一句古老的諺語,「如果微妙的邊界條件很重要,我們很可能是在研究數學而非工程」,這個觀點正好適用於這裡。下面我們繪製relu函式的導數。

y.backward(torch.ones_ilke(x), retain_graph=true)

d2l.plot(x.detach(), x.grad, 'x', 'grad of relu', figsize=(5, 2.5))

使用relu的原因是,它求導表現得特別好,要麼讓引數消失,要麼讓引數通過。這使得優化表現得更好,並且relu減輕了困擾以往神經網路梯度消失問題。

注意,relu函式有許多變體,包括引數化relu函式(parameterllmxgrized relu)。該變體為relu新增了乙個線性項,因此即使引數是負的,某些資訊仍然可以通過:

在最早的神經網路中,科學家們感興趣的是對「激發」或「不激發」的生物神經元進行建模。因此,這一領域的先驅,如人工神經元的發明者麥卡洛克和皮茨,從他們開始就專注於閾值www.cppcns.com單元。閾值單元在其輸入低於某個閾值時取值為0,當輸入超過閾值時取1。

當人們的注意力逐漸轉移到梯度的學習時,sigmoid函式是乙個自然的選擇,因為它是乙個平滑的、可微的閾值單元近似。當我們想要將輸出視作二分類問題的概率時,sigmoid仍然被廣泛用作輸出單元上的啟用函式(可以將sigmoid視為softmax的特例)。然而, sigmoid在隱藏層中已經較少使用,它在大部分時候已經被更簡單、更容易訓練的relu所取代。

與sigmoid函式類似,tanh(雙曲正切)函式也能將其輸入壓縮轉換到區間(-1,1)上。tanh函式的公式如下:

機器學習 多層感知機

單層感知機 但是單層感知機無法解決線性不可分的問題,要想解決線性不可分的問題,需要用多層感知機。多層感知機 通用近似定理 如果乙個多層感知機具有線性輸出層和至少一層隱藏層,只要給予其足量的隱層神經元,它可以以任意精度近似任何乙個從有限維空間到另乙個有限維空間的borel可測函式。通俗地來講,多層感知...

機器學習 Task 03 多層感知機

backward 如果需要計算導數,可以在tensor上調.backward backward gradient none,retain variables false sound 如果tensor是標量 即它包含乙個元素的資料 則不需要為backward 指定任何引數 x.grad.zero 在使...

多層感知機

1 單輸出多層感知機 單輸出多層感知機 圖中各變數滿足公式 假如現在有乙個樣本 x 1,x2 t 用該樣本訓練網路時,網路優化的目標為lossfun最小。lossfun是乙個關於變數w和v多元函式。網路的訓練又變成多元函式求極值的問題。求v1的梯度 同理可得v i的梯度 求w11的梯度 同理,可得w...