多層感知機(jī)

多層感知機(jī)

  1. 多層感知機(jī)的基本知識(shí)
  2. 使用多層感知機(jī)圖像分類的從零開始的實(shí)現(xiàn)
  3. 使用pytorch的簡(jiǎn)潔實(shí)現(xiàn)

多層感知機(jī)的基本知識(shí)

深度學(xué)習(xí)主要關(guān)注多層模型尽纽。在這里,我們將以多層感知機(jī)(multilayer perceptron岳锁,MLP)為例,介紹多層神經(jīng)網(wǎng)絡(luò)的概念。

隱藏層

下圖展示了一個(gè)多層感知機(jī)的神經(jīng)網(wǎng)絡(luò)圖惩歉,它含有一個(gè)隱藏層,該層中有5個(gè)隱藏單元俏蛮。

Image Name

表達(dá)公式

具體來說撑蚌,給定一個(gè)小批量樣本\boldsymbol{X} \in \mathbb{R}^{n \times d},其批量大小為n搏屑,輸入個(gè)數(shù)為d争涌。假設(shè)多層感知機(jī)只有一個(gè)隱藏層,其中隱藏單元個(gè)數(shù)為h睬棚。記隱藏層的輸出(也稱為隱藏層變量或隱藏變量)為\boldsymbol{H}第煮,有\boldsymbol{H} \in \mathbb{R}^{n \times h}。因?yàn)殡[藏層和輸出層均是全連接層抑党,可以設(shè)隱藏層的權(quán)重參數(shù)和偏差參數(shù)分別為\boldsymbol{W}_h \in \mathbb{R}^{d \times h}\boldsymbol包警_h \in \mathbb{R}^{1 \times h},輸出層的權(quán)重和偏差參數(shù)分別為\boldsymbol{W}_o \in \mathbb{R}^{h \times q}\boldsymbol底靠_o \in \mathbb{R}^{1 \times q}害晦。

我們先來看一種含單隱藏層的多層感知機(jī)的設(shè)計(jì)。其輸出\boldsymbol{O} \in \mathbb{R}^{n \times q}的計(jì)算為

\begin{aligned} \boldsymbol{H} &= \boldsymbol{X} \boldsymbol{W}_h + \boldsymbol暑中_h,\\ \boldsymbol{O} &= \boldsymbol{H} \boldsymbol{W}_o + \boldsymbol壹瘟_o, \end{aligned}

也就是將隱藏層的輸出直接作為輸出層的輸入。如果將以上兩個(gè)式子聯(lián)立起來鳄逾,可以得到

\boldsymbol{O} = (\boldsymbol{X} \boldsymbol{W}_h + \boldsymbol稻轨_h)\boldsymbol{W}_o + \boldsymbol_o = \boldsymbol{X} \boldsymbol{W}_h\boldsymbol{W}_o + \boldsymbol雕凹_h \boldsymbol{W}_o + \boldsymbol殴俱_o.

從聯(lián)立后的式子可以看出,雖然神經(jīng)網(wǎng)絡(luò)引入了隱藏層枚抵,卻依然等價(jià)于一個(gè)單層神經(jīng)網(wǎng)絡(luò):其中輸出層權(quán)重參數(shù)為\boldsymbol{W}_h\boldsymbol{W}_o线欲,偏差參數(shù)為\boldsymbol_h \boldsymbol{W}_o + \boldsymbol汽摹_o李丰。不難發(fā)現(xiàn),即便再添加更多的隱藏層逼泣,以上設(shè)計(jì)依然只能與僅含輸出層的單層神經(jīng)網(wǎng)絡(luò)等價(jià)趴泌。

激活函數(shù)

上述問題的根源在于全連接層只是對(duì)數(shù)據(jù)做仿射變換(affine transformation)舟舒,而多個(gè)仿射變換的疊加仍然是一個(gè)仿射變換。解決問題的一個(gè)方法是引入非線性變換踱讨,例如對(duì)隱藏變量使用按元素運(yùn)算的非線性函數(shù)進(jìn)行變換魏蔗,然后再作為下一個(gè)全連接層的輸入。這個(gè)非線性函數(shù)被稱為激活函數(shù)(activation function)痹筛。

下面我們介紹幾個(gè)常用的激活函數(shù):

ReLU函數(shù)

ReLU(rectified linear unit)函數(shù)提供了一個(gè)很簡(jiǎn)單的非線性變換莺治。給定元素x,該函數(shù)定義為

\text{ReLU}(x) = \max(x, 0).

可以看出帚稠,ReLU函數(shù)只保留正數(shù)元素谣旁,并將負(fù)數(shù)元素清零。為了直觀地觀察這一非線性變換滋早,我們先定義一個(gè)繪圖函數(shù)xyplot榄审。

%matplotlib inline
import torch
import numpy as np
import matplotlib.pyplot as plt
import sys
sys.path.append("/home/kesci/input")
import d2lzh1981 as d2l
print(torch.__version__)

def xyplot(x_vals, y_vals, name):
    # d2l.set_figsize(figsize=(5, 2.5))
    plt.plot(x_vals.detach().numpy(), y_vals.detach().numpy())
    plt.xlabel('x')
    plt.ylabel(name + '(x)')

# relu函數(shù)
x = torch.arange(-8.0, 8.0, 0.1, requires_grad=True)
y = x.relu()
xyplot(x, y, 'relu')

# grad of relu 函數(shù)
y.sum().backward()
xyplot(x, x.grad, 'grad of relu')

Sigmoid函數(shù)

sigmoid函數(shù)可以將元素的值變換到0和1之間:

\text{sigmoid}(x) = \frac{1}{1 + \exp(-x)}.

y = x.sigmoid()
xyplot(x, y, 'sigmoid')

依據(jù)鏈?zhǔn)椒▌t,sigmoid函數(shù)的導(dǎo)數(shù)

\text{sigmoid}'(x) = \text{sigmoid}(x)\left(1-\text{sigmoid}(x)\right).

下面繪制了sigmoid函數(shù)的導(dǎo)數(shù)杆麸。當(dāng)輸入為0時(shí)搁进,sigmoid函數(shù)的導(dǎo)數(shù)達(dá)到最大值0.25;當(dāng)輸入越偏離0時(shí)昔头,sigmoid函數(shù)的導(dǎo)數(shù)越接近0饼问。

x.grad.zero_()
y.sum().backward()
xyplot(x, x.grad, 'grad of sigmoid')

tanh函數(shù)

tanh(雙曲正切)函數(shù)可以將元素的值變換到-1和1之間:

\text{tanh}(x) = \frac{1 - \exp(-2x)}{1 + \exp(-2x)}.

我們接著繪制tanh函數(shù)。當(dāng)輸入接近0時(shí)揭斧,tanh函數(shù)接近線性變換莱革。雖然該函數(shù)的形狀和sigmoid函數(shù)的形狀很像,但tanh函數(shù)在坐標(biāo)系的原點(diǎn)上對(duì)稱讹开。

y = x.tanh()
xyplot(x, y, 'tanh')

依據(jù)鏈?zhǔn)椒▌t盅视,tanh函數(shù)的導(dǎo)數(shù)

\text{tanh}'(x) = 1 - \text{tanh}^2(x).

下面繪制了tanh函數(shù)的導(dǎo)數(shù)。當(dāng)輸入為0時(shí)旦万,tanh函數(shù)的導(dǎo)數(shù)達(dá)到最大值1闹击;當(dāng)輸入越偏離0時(shí),tanh函數(shù)的導(dǎo)數(shù)越接近0成艘。

x.grad.zero_()
y.sum().backward()
xyplot(x, x.grad, 'grad of tanh')

關(guān)于激活函數(shù)的選擇

ReLu函數(shù)是一個(gè)通用的激活函數(shù)拇砰,目前在大多數(shù)情況下使用。但是狰腌,ReLU函數(shù)只能在隱藏層中使用。

用于分類器時(shí)牧氮,sigmoid函數(shù)及其組合通常效果更好琼腔。由于梯度消失問題,有時(shí)要避免使用sigmoid和tanh函數(shù)踱葛。

在神經(jīng)網(wǎng)絡(luò)層數(shù)較多的時(shí)候丹莲,最好使用ReLu函數(shù)光坝,ReLu函數(shù)比較簡(jiǎn)單計(jì)算量少,而sigmoid和tanh函數(shù)計(jì)算量大很多甥材。

在選擇激活函數(shù)的時(shí)候可以先選用ReLu函數(shù)如果效果不理想可以嘗試其他激活函數(shù)盯另。

多層感知機(jī)

多層感知機(jī)就是含有至少一個(gè)隱藏層的由全連接層組成的神經(jīng)網(wǎng)絡(luò),且每個(gè)隱藏層的輸出通過激活函數(shù)進(jìn)行變換洲赵。多層感知機(jī)的層數(shù)和各隱藏層中隱藏單元個(gè)數(shù)都是超參數(shù)鸳惯。以單隱藏層為例并沿用本節(jié)之前定義的符號(hào),多層感知機(jī)按以下方式計(jì)算輸出:

\begin{aligned} \boldsymbol{H} &= \phi(\boldsymbol{X} \boldsymbol{W}_h + \boldsymbol叠萍_h),\\ \boldsymbol{O} &= \boldsymbol{H} \boldsymbol{W}_o + \boldsymbol芝发_o, \end{aligned}

其中\phi表示激活函數(shù)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末苛谷,一起剝皮案震驚了整個(gè)濱河市辅鲸,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌腹殿,老刑警劉巖独悴,帶你破解...
    沈念sama閱讀 212,542評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異锣尉,居然都是意外死亡刻炒,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門悟耘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來落蝙,“玉大人,你說我怎么就攤上這事暂幼》だ眨” “怎么了?”我有些...
    開封第一講書人閱讀 158,021評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵旺嬉,是天一觀的道長(zhǎng)管行。 經(jīng)常有香客問我,道長(zhǎng)邪媳,這世上最難降的妖魔是什么捐顷? 我笑而不...
    開封第一講書人閱讀 56,682評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮雨效,結(jié)果婚禮上迅涮,老公的妹妹穿的比我還像新娘。我一直安慰自己徽龟,他們只是感情好叮姑,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,792評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般传透。 火紅的嫁衣襯著肌膚如雪耘沼。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,985評(píng)論 1 291
  • 那天朱盐,我揣著相機(jī)與錄音群嗤,去河邊找鬼。 笑死兵琳,一個(gè)胖子當(dāng)著我的面吹牛狂秘,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播闰围,決...
    沈念sama閱讀 39,107評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼赃绊,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了羡榴?” 一聲冷哼從身側(cè)響起碧查,我...
    開封第一講書人閱讀 37,845評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎校仑,沒想到半個(gè)月后忠售,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,299評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡迄沫,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,612評(píng)論 2 327
  • 正文 我和宋清朗相戀三年稻扬,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片羊瘩。...
    茶點(diǎn)故事閱讀 38,747評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡泰佳,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出尘吗,到底是詐尸還是另有隱情逝她,我是刑警寧澤,帶...
    沈念sama閱讀 34,441評(píng)論 4 333
  • 正文 年R本政府宣布睬捶,位于F島的核電站黔宛,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏擒贸。R本人自食惡果不足惜臀晃,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,072評(píng)論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望介劫。 院中可真熱鬧徽惋,春花似錦、人聲如沸座韵。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,828評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至隆圆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間翔烁,已是汗流浹背渺氧。 一陣腳步聲響...
    開封第一講書人閱讀 32,069評(píng)論 1 267
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蹬屹,地道東北人侣背。 一個(gè)月前我還...
    沈念sama閱讀 46,545評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像慨默,于是被迫代替她去往敵國(guó)和親贩耐。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,658評(píng)論 2 350