《神經(jīng)網(wǎng)絡(luò)與機(jī)器學(xué)習(xí)》筆記(二)

第二部分 基礎(chǔ)模型

第四章 前饋神經(jīng)網(wǎng)絡(luò)

典型的神經(jīng)元結(jié)構(gòu)

激活函數(shù)

  1. 連續(xù)可導(dǎo)(允許少數(shù)點(diǎn)上不可導(dǎo))的非線性函數(shù)择示。

  2. 激活函數(shù)和其導(dǎo)函數(shù)簡單。

  3. 導(dǎo)函數(shù)的值域在一個合適的區(qū)間

Sigmoid 型函數(shù)

Sigmoid 型函數(shù)是指一類S型曲線函數(shù)嗽上,為兩端飽和函數(shù)(即f^{\prime}(\infty)\rightarrow 0)裳仆。常用的Sigmoid 型函數(shù)有Logistic 函數(shù)和Tanh 函數(shù)。

Logistic 函數(shù)和Tanh 函數(shù)

Logistic 函數(shù)(連續(xù)可導(dǎo)悄谐,值域為(0,1)):\\ \sigma(x)=\frac{1}{1+\exp (-x)}\\ 其輸出直接可以看作是概率分布允华,使得神經(jīng)網(wǎng)絡(luò)可以更好地和統(tǒng)計學(xué)習(xí)模型進(jìn)行結(jié)合。\\ 其可以看作是一個軟性門(Soft Gate),用來控制其它神經(jīng)元輸出信息的數(shù)量

Tanh 函數(shù)(連續(xù)可導(dǎo)削罩,值域為(-1,1)):\\ \tanh (x)=2 \sigma(2 x)-1=\frac{\exp (x)-\exp (-x)}{\exp (x)+\exp (-x)}\\ Tanh 函數(shù)的輸出是零中心化的(Zero-Centered)瞄勾,而Logistic函數(shù)的輸出恒大于0。\\ 非零中心化的輸出會使得其后一層的神經(jīng)元的輸入發(fā)生偏置偏移(Bias Shift)弥激,\\ 并進(jìn)一步使得梯度下降的收斂速度變慢进陡。

Hard-Logistic 函數(shù)和Hard-Tanh 函數(shù)


Hard Sigmoid 型激活函數(shù)

Logistic 函數(shù)和Tanh 函數(shù)都是Sigmoid 型函數(shù),具有飽和性秆撮,但是計算開銷較大四濒。因為這兩個函數(shù)都是在中間(0 附近)近似線性,兩端飽和职辨。因此盗蟆,這兩個函數(shù)可以通過分段函數(shù)來近似。

以Logistic 函數(shù)σ(x) 為例舒裤,其導(dǎo)數(shù)為σ′(x) = σ(x)(1 ? σ(x))喳资。Logistic 函數(shù)在0 附近的一階泰勒展開為:g_{l}(x) \approx \sigma(0)+x \times \sigma^{\prime}(0)=0.25x+0.5

這樣Logistic 函數(shù)可以用分段函數(shù)hard-logistic(x) 來近似。
\begin{aligned} \operatorname{hard-logistic}(x) &=\left\{\begin{array}{ll}{1} & {g_{l}(x) \geq 1} \\ {g_{l}} & {0<g_{l}(x)<1} \\ {0} & {g_{l}(x) \leq 0}\end{array}\right.\\ &=\max \left(\min \left(g_{l}(x), 1\right), 0\right) =\max (\min (0.25 x+0.5,1), 0) \end{aligned}
同樣腾供,Tanh 函數(shù)在0 附近的一階泰勒展開為g_{t}(x) \approx \tanh (0)+x \times \tanh ^{\prime}(0)=x

這樣Tanh 函數(shù)也可以用分段函數(shù)hard-tanh(x) 來近似仆邓。
\begin{aligned} \operatorname{hard}-\tanh (x) &=\max \left(\min \left(g_{t}(x), 1\right),-1\right) \\ &=\max (\min (x, 1),-1) \end{aligned}

ReLU函數(shù)
ReLU、Leaky ReLU伴鳖、ELU以及Softplus 函數(shù)

ReLU(Rectified Linear Unit节值,修正線性單元),也叫Rectifier函數(shù)榜聂,是目前深度神經(jīng)網(wǎng)絡(luò)中經(jīng)常使用的激活函數(shù)搞疗。ReLU實際上是一個斜坡(ramp)函數(shù),定義為:
\begin{aligned} \operatorname{ReLU}(x) &=\left\{\begin{array}{ll}{x} & {x \geq 0} \\ {0} & {x<0}\end{array}\right.\\ &=\max (0, x) \end{aligned}

優(yōu)點(diǎn)

  1. 計算上更加高效(只要進(jìn)行加须肆、乘和比較的操作)匿乃。
  2. ReLU 函數(shù)被認(rèn)為有生物上的解釋性,比如單側(cè)抑制豌汇、寬興奮邊界(即興奮程度也可以非常高)幢炸。在生物神經(jīng)網(wǎng)絡(luò)中,同時處于興奮狀態(tài)的神經(jīng)元非常稀疏拒贱。人腦中在同一時刻大概只有1% ~ 4% 的神經(jīng)元處于活躍狀態(tài)宛徊。Sigmoid 型激活函數(shù)會導(dǎo)致一個非稀疏的神經(jīng)網(wǎng)絡(luò),而ReLU卻具有很好的稀疏性逻澳,大約50% 的神經(jīng)元會處于激活狀態(tài)岩调。
  3. 在優(yōu)化方面,相比于Sigmoid 型函數(shù)的兩端飽和赡盘,ReLU函數(shù)為左飽和函數(shù)号枕,且在x > 0 時導(dǎo)數(shù)為1,在一定程度上緩解了神經(jīng)網(wǎng)絡(luò)的梯度消失問題陨享,加速梯 度下降的收斂速度葱淳。

缺點(diǎn)

  1. ReLU函數(shù)的輸出是非零中心化的钝腺,給后一層的神經(jīng)網(wǎng)絡(luò)引入偏置偏移,會影響梯度下降的效率赞厕。
  2. ReLU 神經(jīng)元在訓(xùn)練時比較容易“死亡”艳狐。

為解決上述問題。ReLU有幾個變體:

  • 帶泄露的ReLU

    在輸入x < 0 時皿桑,保持一個很小的梯度λ毫目。這樣當(dāng)神經(jīng)元非激活時也能有一個非零的梯度可以更新參數(shù),避免永遠(yuǎn)不能被激活
    \begin{aligned} \text { LeakyReLU }(x) &=\left\{\begin{array}{ll}{x} & {\text { if } x>0} \\ {\gamma x} & {\text { if } x \leq 0}\end{array}\right.\\ &=\max (0, x)+\gamma \min (0, x) \end{aligned}\\ 其中\(zhòng)gamma 是一個很小的常數(shù)诲侮,比如0.01镀虐。當(dāng)\gamma < 1 時,帶泄露的ReLU也可以寫為\\ \text { LeakyReLU(x) }=\max (x, \gamma x)沟绪,相當(dāng)于是一個比較簡單的maxout 單元

  • 帶參數(shù)的ReLU

    引入一個可學(xué)習(xí)的參數(shù)刮便,不同神經(jīng)元可以有不同的參數(shù)。對于第i 個神經(jīng)元绽慈,其PReLU 的
    定義為:
    \begin{aligned} \operatorname{PReLU}_{i}(x) &=\left\{\begin{array}{ll}{x} & {\text { if } x>0} \\ {\gamma_{i} x} & {\text { if } x \leq 0}\end{array}\right.\\ &=\max (0, x)+\gamma_{i} \min (0, x) \end{aligned}\\ 其中\(zhòng)gamma_{i} 為x ≤ 0 時函數(shù)的斜率恨旱。因此,PReLU 是非飽和函數(shù)坝疼。如果\gamma_{i} = 0搜贤,那么 PReLU就退化為ReLU。\\ 如果\gamma_{i} 為一個很小的常數(shù)钝凶,則PReLU可以看作帶泄露的ReLU入客。\\ PReLU可以允許不同神經(jīng)元具有不同的參數(shù),也可以一組神經(jīng)元共享一個參數(shù)腿椎。

  • ELU 函數(shù)

    ELU(Exponential Linear Unit,指數(shù)線性單元) 是一個近似的零中心化的非線性函數(shù)夭咬,其定義為
    \begin{aligned} \operatorname{ELU}(x) &=\left\{\begin{array}{ll}{x} & {\text { if } x>0} \\ {\gamma(\exp (x)-1)} & {\text { if } x \leq 0}\end{array}\right.\\ &=\max (0, x)+\min (0, \gamma(\exp (x)-1)) \end{aligned}\\ 其中\(zhòng)gamma ≥ 0 是一個超參數(shù)啃炸,決定x ≤ 0 時的飽和曲線,并調(diào)整輸出均值在0 附近卓舵。

  • Softplus 函數(shù)

    Softplus 函數(shù) 可以看作是Rectifier 函數(shù)的平滑版本南用,其定義為
    \text { Softplus }(x)=\log (1+\exp (x))\\ Softplus 函數(shù)其導(dǎo)數(shù)剛好是Logistic 函數(shù)。\\ Softplus 函數(shù)雖然也具有單側(cè)抑制掏湾、寬興奮邊界的特性裹虫,卻沒有稀疏激活性。

Swish 函數(shù)

是一種自門控(Self-Gated)激活函數(shù)融击,定義為:\operatorname{swish}(x)=x \sigma(\beta x)

其中σ(·) 為Logistic 函數(shù)筑公,β 為可學(xué)習(xí)的參數(shù)或一個固定超參數(shù)。σ(·) ∈ (0, 1) 可以看作是一種軟性的門控機(jī)制尊浪。當(dāng)σ(βx) 接近于1 時匣屡,門處于“開”狀態(tài)封救,激活函數(shù)的輸出近似于x本身;當(dāng)σ(βx) 接近于0 時捣作,門的狀態(tài)為“關(guān)”誉结,激活函數(shù)的輸出近似于0。

Swish 函數(shù)

當(dāng)β = 0 時券躁,Swish 函數(shù)變成線性函數(shù)x/2惩坑。當(dāng)β = 1 時,Swish 函數(shù)在x > 0 時近似線性也拜,在x < 0 時近似飽和以舒,同時具有一定的非單調(diào)性。當(dāng)β → +∞時搪泳,σ(βx) 趨向于離散的0-1 函數(shù)稀轨,Swish 函數(shù)近似為ReLU函數(shù)。因此岸军,Swish 函數(shù)可以看作是線性函數(shù)和ReLU函數(shù)之間的非線性插值函數(shù)奋刽,其程度由參數(shù)β 控制。

高斯誤差線性單元(GELU)

和Swish 函數(shù)比較類似艰赞,也是一種通過門控機(jī)制來調(diào)整其輸出值的激活函數(shù):\operatorname{GELU}(x)=x P(X \leq x)

其中P(X ≤ x) 是高斯分布\mathcal{N}\left(\mu, \sigma^{2}\right) 的累積分布函數(shù)佣谐,其中μ, σ 為超參數(shù),一般設(shè)μ = 0, σ = 1 即可方妖。由于高斯分布的累積分布函數(shù)為S 型函數(shù)狭魂,因此GELU可以用Tanh 函數(shù)或Logistic 函數(shù)來近似:
\begin{array}{l}{\operatorname{GELU}(x) \approx 0.5 x\left(1+\tanh \left(\sqrt{\frac{2}{\pi}}\left(x+0.044715 x^{3}\right)\right)\right)} \\ {\operatorname{GELU}(x) \approx x \sigma(1.702 x)}\end{array}\\ 當(dāng)使用Logistic 函數(shù)來近似時,GELU相當(dāng)于一種特殊的Swish 函數(shù)党觅。

Maxout 單元

也是一種分段線性函數(shù)雌澄。Sigmoid 型函數(shù)、ReLU 等激活函數(shù)的輸入是神經(jīng)元的凈輸入z杯瞻,是一個標(biāo)量镐牺。而Maxout 單元的輸入是上一層神經(jīng)元的全部原始輸出,是一個向量x=[x_1;x_2;\cdots;x_d]魁莉。

每個Maxout單元有K個權(quán)重向量w_k\in\mathbb{R}^d和偏置bk (1 ≤ k ≤ K)睬涧。對于輸入x,可以得到K 個凈輸入zk, 1 ≤ k ≤ K:z_k=w^T_kx+b_k,其中wk = [w_{k,1}, · · · ,w_{k,d}]^T 為第k 個權(quán)重向量旗唁。

Maxout 單元的非線性函數(shù)定義為:\operatorname{maxout}(\boldsymbol{x})=\max _{k \in[1, K]}\left(z_{k}\right)

Maxout 單元不單是凈輸入到輸出之間的非線性映射畦浓,而是整體學(xué)習(xí)輸入到輸出之間的非線性映射關(guān)系。Maxout 激活函數(shù)可以看作任意凸函數(shù)的分段線性近似检疫,并且在有限的點(diǎn)上是不可微的讶请。

神經(jīng)網(wǎng)絡(luò)

三種神經(jīng)網(wǎng)絡(luò)

目前常用的神經(jīng)網(wǎng)絡(luò)有三種

  • 前饋網(wǎng)絡(luò)

    可以看作一個函數(shù),通過簡單非線性函數(shù)的多次復(fù)合屎媳,實現(xiàn)輸入空間到輸出空間的復(fù)雜映射秽梅。這種網(wǎng)絡(luò)結(jié)構(gòu)簡單抹蚀,易于實現(xiàn)。

  • 記憶網(wǎng)絡(luò)

    也稱為反饋網(wǎng)絡(luò)企垦,網(wǎng)絡(luò)中的神經(jīng)元不但可以接收其它神經(jīng)元的信息环壤,也可以接收自己的歷史信息。和前饋網(wǎng)絡(luò)相比钞诡,記憶網(wǎng)絡(luò)中的神經(jīng)元具有記憶功能郑现,在不同的時刻具有不同的狀態(tài)。記憶神經(jīng)網(wǎng)絡(luò)中的信息傳播可以是單向
    或雙向傳遞荧降,因此可用一個有向循環(huán)圖或無向圖來表示接箫。記憶網(wǎng)絡(luò)包括循環(huán)神經(jīng)網(wǎng)絡(luò)、Hopfield 網(wǎng)絡(luò)朵诫、玻爾茲曼機(jī)辛友、受限玻爾茲曼機(jī) 等。

    記憶網(wǎng)絡(luò)可以看作一個程序剪返,具有更強(qiáng)的計算和記憶能力废累。

    為了增強(qiáng)記憶網(wǎng)絡(luò)的記憶容量,可以引入外部記憶單元和讀寫機(jī)制脱盲,用來保存一些網(wǎng)絡(luò)的中間狀態(tài)邑滨,稱為記憶增強(qiáng)神經(jīng)網(wǎng)絡(luò)。比如神經(jīng)圖靈機(jī)和記憶網(wǎng)絡(luò)钱反。

  • 圖網(wǎng)絡(luò)

    為處理圖結(jié)構(gòu)的數(shù)據(jù)(用向量表示會損失信息)而出現(xiàn)的網(wǎng)絡(luò)掖看。

    圖網(wǎng)絡(luò)是定義在圖結(jié)構(gòu)數(shù)據(jù)上的神經(jīng)網(wǎng)絡(luò)。圖中每個節(jié)點(diǎn)都由一個或一組神經(jīng)元構(gòu)成面哥。節(jié)點(diǎn)之間的連接可以是有向的哎壳,也可以是無向的。每個節(jié)點(diǎn)可以收到來自相鄰節(jié)點(diǎn)或自身的信息尚卫。

    圖網(wǎng)絡(luò)是前饋網(wǎng)絡(luò)和記憶網(wǎng)絡(luò)的泛化归榕,包含很多不同的實現(xiàn)方式,比如圖卷積網(wǎng)絡(luò)(GCN)焕毫、圖注意力
    網(wǎng)絡(luò)(GAT)、消息傳遞網(wǎng)絡(luò)(MPNN) 等驶乾。

前饋神經(jīng)網(wǎng)絡(luò)(FNN)

也稱為多層感知器(MLP)邑飒。但多層感知器的叫法并不是十分合理,因為前饋神經(jīng)網(wǎng)絡(luò)其實是由多層的Logistic回歸模型(連續(xù)的非線性函數(shù))組成级乐,而不是由多層的感知器(不連續(xù)的非線性函數(shù))組成疙咸。

多層前饋神經(jīng)網(wǎng)絡(luò)

用以下記號描述一個前饋神經(jīng)網(wǎng)絡(luò):
\begin{align*} &? L:表示神經(jīng)網(wǎng)絡(luò)的層數(shù);\\ &? m^{(l)}:表示第l 層神經(jīng)元的個數(shù)风科;\\ &? f_l(\cdot):表示第l層神經(jīng)元的激活函數(shù)撒轮;\\ &? W^{(l)}\in\mathbb{R}^{m^{(l)}\times m^{l-1}}:表示第l ? 1 層到第l 層的權(quán)重矩陣乞旦;\\ &? b^{(l)}\in\mathbb{R}^l:表示第l ? 1 層到第l 層的偏置;\\ &? z^{(l)}\in\mathbb{R}^l:表示第l 層神經(jīng)元的凈輸入(凈活性值)题山;\\ &? a^{(l)}\in\mathbb{R}^l:表示第l 層神經(jīng)元的輸出(活性值)兰粉。\\ &前饋神經(jīng)網(wǎng)絡(luò)通過下面公式進(jìn)行信息傳播:\\ &z^{l}=W^{l}\cdot a^{(l-1)}+b^{l},a^{l}=f_l(z^{l})\\ &上兩個公式可以合并寫為:\\ &z^{l}=W^{l}\cdot f_l(z^{l-1})+b^{l}或者a^{l}=f_l(W^{l}\cdot a^{(l-1)}+b^{l})\\ &整個網(wǎng)絡(luò)可以看作一個復(fù)合函數(shù)?(x;W, b),將向量x作為第1 層的輸入a^{(0)}顶瞳,將第L層的輸出a^{(L)} 作為整個函數(shù)的輸出玖姑。\\ &\left.\boldsymbol{x}=\boldsymbol{a}^{(0)} \rightarrow \boldsymbol{z}^{(1)} \rightarrow \boldsymbol{a}^{(1)} \rightarrow \boldsymbol{z}^{(2)} \rightarrow \cdots \rightarrow \boldsymbol{a}^{(L-1)} \rightarrow \boldsymbol{z}^{(L)} \rightarrow \boldsymbol{a}^{(L)}=\phi(\boldsymbol{x} ; W, \boldsymbol)\right) \end{align*}

通用近似定理

對于具有線性輸出層和至少一個使用“擠壓”性質(zhì)的激活函數(shù)的隱藏層組成的前饋神經(jīng)網(wǎng)絡(luò)慨菱,就是可以通過足夠多隱藏層神經(jīng)元的數(shù)量的前饋神經(jīng)網(wǎng)絡(luò)焰络,可以以任意的精度來近似任何一個定義在實數(shù)空間中的有界閉集函數(shù)。

通用近似定理只是說明了神經(jīng)網(wǎng)絡(luò)的計算能力可以去近似一個給定的連續(xù)函數(shù)符喝,但并沒有給出如何找到這樣一個網(wǎng)絡(luò)闪彼,以及是否是最優(yōu)的。此外协饲,當(dāng)應(yīng)用到機(jī)器學(xué)習(xí)時畏腕,真實的映射函數(shù)并不知道,一般是通過經(jīng)驗風(fēng)險最小化和正則化來
進(jìn)行參數(shù)學(xué)習(xí)囱稽。因為神經(jīng)網(wǎng)絡(luò)的強(qiáng)大能力郊尝,反而容易在訓(xùn)練集上過擬合。

應(yīng)用到機(jī)器學(xué)習(xí)

在機(jī)器學(xué)習(xí)中战惊,輸入樣本的特征對分類器的影響很大流昏。因此,要取得好的分類效果吞获,需要將樣本的原始特征向量x轉(zhuǎn)換到更有效的特征向量?(x)况凉,這個過程叫做特征抽取。

反向傳播算法

設(shè)用隨機(jī)梯度下降進(jìn)行參數(shù)更新各拷。給定一個樣本(x, y)刁绒,將其輸入到神經(jīng)網(wǎng)絡(luò)模型中,得到網(wǎng)絡(luò)輸出為?y烤黍。假設(shè)損失函數(shù)為L(y, ?y)知市,要進(jìn)行參數(shù)學(xué)習(xí)就需要計算損失函數(shù)關(guān)于每個參數(shù)的導(dǎo)數(shù)。
\begin{align*} &因為\frac{\partial \mathcal{L}(\boldsymbol{y}, \hat{\boldsymbol{y}})}{\partial \boldsymbol{W}^{(l)}}的計算涉及向量對矩陣的微分速蕊,十分繁瑣嫂丙, 因此我們先計算\mathcal{L}(\boldsymbol{y}, \hat{\boldsymbol{y}})關(guān)于參數(shù)矩陣中每個元素的偏導(dǎo)數(shù)\frac{\partial \mathcal{L}(\boldsymbol{y}, \hat{\boldsymbol{y}})}{\partial \boldsymbol{w}^{(l)}_{ij}}\\ &根據(jù)鏈?zhǔn)椒▌t:\frac{\partial \mathcal{L}(\boldsymbol{y}, \hat{\boldsymbol{y}})}{\partial w_{i j}^{(l)}}=\frac{\partial \boldsymbol{z}^{(l)}}{\partial w_{i j}^{(l)}} \frac{\partial \mathcal{L}(\boldsymbol{y}, \hat{\boldsymbol{y}})}{\partial \boldsymbol{z}^{(l)}},\frac{\partial \mathcal{L}(\boldsymbol{y}, \hat{\boldsymbol{y}})}{\partial \boldsymbol规哲^{(l)}}=\frac{\partial \boldsymbol{z}^{(l)}}{\partial \boldsymbol跟啤^{(l)}} \frac{\partial \mathcal{L}(\boldsymbol{y}, \hat{\boldsymbol{y}})}{\partial \boldsymbol{z}^{(l)}}\\ &其中,\frac{\partial \mathcal{L}(\boldsymbol{y}, \hat{\boldsymbol{y}})}{\partial \boldsymbol{z}^{(l)}}是目標(biāo)函數(shù)關(guān)于第l 層的神經(jīng)元z^{(l)}的偏導(dǎo)數(shù),稱為誤差項隅肥,可以一次計算得到竿奏。\\ &所以,我們只需要計算三個偏導(dǎo)數(shù)腥放,分別是: \frac{\partial \boldsymbol{z}^{(l)}}{\partial \boldsymbol{w}^{(l)}_{ij}}泛啸,\frac{\partial \boldsymbol{z}^{(l)}}{\partial \boldsymbol^{(l)}}捉片,\frac{\partial \mathcal{L}(\boldsymbol{y}, \hat{\boldsymbol{y}})}{\partial \boldsymbol{z}^{(l)}}\\ \end{align*}

首先計算偏導(dǎo)數(shù)\frac{\partial \boldsymbol{z}^{(l)}}{\partial \boldsymbol{w}^{(l)}_{ij}}和\frac{\partial \boldsymbol{z}^{(l)}}{\partial \boldsymbol平痰^{(l)}}
\begin{align*} &因z^{l}=W^{l}\cdot a^{(l-1)}+b^{l},所以\\ &\frac{\partial \boldsymbol{z}^{(l)}}{\partial \boldsymbol{w}^{(l)}_{ij}}=[\frac{\partial \boldsymbol{z}^{(l)}_1}{\partial \boldsymbol{w}^{(l)}_{ij}},\cdots,\frac{\partial \boldsymbol{z}^{(l)}_i}{\partial \boldsymbol{w}^{(l)}_{ij}},\cdots,\frac{\partial \boldsymbol{z}^{(l)}_{m^{l}}}{\partial \boldsymbol{w}^{(l)}_{ij}}]=[0,\cdots,\frac{\partial \boldsymbol{w}^{(l)}_{i:}a^{(l-1)}+b^{(l)}_i}{\partial \boldsymbol{w}^{(l)}_{ij}},\cdots,0]\\ &=[0,\cdots,a^{(l-1)}_{j},\cdots,0]\triangleq \mathbb{I}_{i}\left(a_{j}^{(l-1)}\right) \quad \in \mathbb{R}^{m^{(l)}}\\ &其中\(zhòng)boldsymbol{w}^{(l)}_{i:}為權(quán)重矩陣W^{l}的第i行伍纫,\mathbb{I}_{i}\left(a_{j}^{(l-1)}\right)表示第i個元素為a_{j}^{(l-1)}宗雇,其余為0的行向量。\\ &\frac{\partial \boldsymbol{z}^{(l)}}{\partial \boldsymbol莹规^{(l)}}=\boldsymbol{I}_{m^{(l)}} \quad \in \mathbb{R}^{m^{(l)} \times m^{(l)}},為m^{(l)}\times m^{(l)}的單位矩陣 \end{align*}
再計算偏導(dǎo)數(shù)\frac{\partial \mathcal{L}(\boldsymbol{y}, \hat{\boldsymbol{y}})}{\partial \boldsymbol{z}^{(l)}}
\begin{align*} &偏導(dǎo)數(shù)\frac{\partial \mathcal{L}(\boldsymbol{y}, \hat{\boldsymbol{y}})}{\partial \boldsymbol{z}^{(l)}}表示第l 層神經(jīng)元對最終損失的影響赔蒲,也反映了最終損失對第l 層神經(jīng)元的敏感程度,\\ &因此一般稱為第l 層神經(jīng)元的誤差項良漱,用\delta^{(l)} 來表示舞虱。\delta^{(l)} \triangleq \frac{\partial \mathcal{L}(\boldsymbol{y}, \hat{\boldsymbol{y}})}{\partial \boldsymbol{z}^{(l)}} \quad \in \mathbb{R}^{m^{(l)}}\\ &誤差項\delta^{(l)} 也間接反映了不同神經(jīng)元對網(wǎng)絡(luò)能力的貢獻(xiàn)程度,從而比較好地解決了貢獻(xiàn)度分配問題(CAP)母市。\\ &根據(jù)z^{l+1}=W^{l+1}\cdot a^{(l)}+b^{l+1},有\(zhòng)frac{\partial z^{(l+1)}}{\partial a^{(l)}}=\left(W^{(l+1)}\right)^{\mathrm{T}}\\ &根據(jù)a^{l}=f_l(z^{l})矾兜,其中f_l(\cdot)為按位計算的函數(shù),因此有 \frac{\partial \boldsymbol{a}^{(l)}}{\partial \boldsymbol{z}^{(l)}} =\frac{\partial f_{l}\left(\boldsymbol{z}^{(l)}\right)}{\partial \boldsymbol{z}^{(l)}} =\operatorname{diag}\left(f_{l}^{\prime}\left(\boldsymbol{z}^{(l)}\right)\right) \\ &因此患久,根據(jù)鏈?zhǔn)椒▌t椅寺,第l層的誤差項為:\\ &\delta^{(l)} \triangleq \frac{\partial \mathcal{L}(\boldsymbol{y}, \hat{\boldsymbol{y}})}{\partial \boldsymbol{z}^{(l)}} =\frac{\partial \boldsymbol{a}^{(l)}}{\partial z^{(l)}} \cdot \frac{\partial z^{(l+1)}}{\partial \boldsymbol{a}^{(l)}} \cdot \frac{\partial \mathcal{L}(\boldsymbol{y}, \hat{\boldsymbol{y}})}{\partial \boldsymbol{z}^{(l+1)}} =\operatorname{diag}\left(f_{l}^{\prime}\left(z^{(l)}\right)\right) \cdot\left(W^{(l+1)}\right)^{\mathrm{T}} \cdot \delta^{(l+1)}\\&=f_{l}^{\prime}\left(\boldsymbol{z}^{(l)}\right) \odot\left(\left(W^{(l+1)}\right)^{\mathrm{T}} \delta^{(l+1)}\right)\\ &其中\(zhòng)odot是向量的點(diǎn)積運(yùn)算符,表示每個元素相乘蒋失。\\ &反向傳播算法的含義是:第l 層的一個神經(jīng)元的誤差項(或敏感性)是所有與該神經(jīng)元相連的第l + 1 層的神 經(jīng)元的誤差項的權(quán)重和返帕。\\ &然后,再乘上該神經(jīng)元激活函數(shù)的梯度篙挽。\\ &所以: \frac{\partial \mathcal{L}(\boldsymbol{y}, \hat{\boldsymbol{y}})}{\partial w_{i j}^{(l)}} =\mathbb{I}_{i}\left(a_{j}^{(l-1)}\right) \delta^{(l)} =\left[0, \cdots, a_{j}^{(l-1)}, \cdots, 0\right]\left[\delta_{1}^{(l)}, \cdots, \delta_{i}^{(l)}, \cdots, \delta_{m^{(l)}}^{(l)}\right]^{\mathrm{T}}=\delta_{i}^{(l)} a_{j}^{(l-1)} \\ &即:\left[\frac{\partial \mathcal{L}(\boldsymbol{y}, \hat{\boldsymbol{y}})}{\partial W^{(l)}}\right]_{i j}=\left[\delta^{(l)}\left(\boldsymbol{a}^{(l-1)}\right)^{\mathrm{T}}\right]_{i j}\\ &因此荆萤,\mathcal{L}(\boldsymbol{y}, \hat{\boldsymbol{y}})關(guān)于第l層權(quán)重W^{(l)}的梯度為:\frac{\partial \mathcal{L}(\boldsymbol{y}, \hat{\boldsymbol{y}})}{\partial W^{(l)}}=\delta^{(l)}\left(\boldsymbol{a}^{(l-1)}\right)^{\mathrm{T}}\\ &同理,\mathcal{L}(\boldsymbol{y}, \hat{\boldsymbol{y}})關(guān)于第l層偏置b^{(l)}的梯度為:\frac{\partial \mathcal{L}(\boldsymbol{y}, \hat{\boldsymbol{y}})}{\partial b^{(l)}}=\delta^{(l)}\\ \end{align*}

自動梯度計算

數(shù)值微分

是用數(shù)值方法來計算函數(shù)f(x) 的導(dǎo)數(shù)铣卡。實現(xiàn)簡單链韭,但實用性差,且時間復(fù)雜度高煮落。

符號微分

是一種基于符號計算的自動求導(dǎo)方法敞峭。

符號計算也叫代數(shù)計算,是指用計算機(jī)來處理帶有變量的數(shù)學(xué)表達(dá)式州邢。
和符號計算相對應(yīng)的概念是數(shù)值計算儡陨,即將數(shù)值代入 數(shù)學(xué)表示中進(jìn)行計算。

符號計算一般來講是對輸入的表達(dá)式量淌,通過迭代或遞歸使用一些事先定義的規(guī)則進(jìn)行轉(zhuǎn)換骗村。當(dāng)轉(zhuǎn)換結(jié)果不能再繼續(xù)使用變換規(guī)則時,便停止計算呀枢。

也就是符號微分可以在編譯時就計算梯度的數(shù)學(xué)表示胚股,并進(jìn)一步進(jìn)行優(yōu)化。此外裙秋,符號計算的一個優(yōu)點(diǎn)是符號計算和平臺無關(guān)琅拌,可以在CPU或GPU上運(yùn)行。

符號微分的缺點(diǎn):一是編譯時間較長摘刑,特別是對于循環(huán)进宝,需要很長時間進(jìn)行編譯;二是為了進(jìn)行符號微分枷恕,一般需要設(shè)計一種專門的語言來表示數(shù)學(xué)表達(dá)式党晋,并且要對變量(符號)進(jìn)行預(yù)先聲明;三是很難對程序進(jìn)行調(diào)試徐块。

自動微分

如對復(fù)合函數(shù)f(x;w,b)進(jìn)行自動微分未玻,可構(gòu)建計算圖:

復(fù)合函數(shù)f(x;w, b) 的計算圖

是一種可以對一個(程序)函數(shù)進(jìn)行計算導(dǎo)數(shù)的方法。符號微分的處理對象是數(shù)學(xué)表達(dá)式胡控,而自動微分的處理對
象是一個函數(shù)或一段程序扳剿。自動微分可以直接在原始程序代碼進(jìn)行微分,因此自動微分成為目前大多數(shù)深度學(xué)習(xí)框架的首選昼激。

自動微分的基本原理是所有的數(shù)值計算可以分解為一些基本操作庇绽,包含+,?,×, / 和一些初等函數(shù)exp, log, sin, cos 等,然后利用鏈?zhǔn)椒▌t來自動計算一個復(fù)合函數(shù)的梯度癣猾。

按照計算導(dǎo)數(shù)的順序敛劝,自動微分可以分為兩種模式:前向模式和反向模式(類似反向傳播)。

符號微分與自動微分對比

靜態(tài)計算圖和動態(tài)計算圖計算圖按構(gòu)建方式可以分為靜態(tài)計算圖(Theano 和Tensorflow)和動態(tài)計算圖(PyTorch)纷宇。靜態(tài)計算圖是在編譯時構(gòu)建計算圖夸盟,計算圖構(gòu)建好之后在程序運(yùn)行時不能改變,而動態(tài)計算圖是在程序運(yùn)行時動態(tài)構(gòu)建像捶。兩種構(gòu)建方式各有優(yōu)缺點(diǎn)上陕。靜態(tài)計算圖在構(gòu)建時可以進(jìn)行優(yōu)化,并行能力強(qiáng)拓春,但靈活性比較差释簿。動態(tài)計算圖則不容易優(yōu)化,當(dāng)不同輸入的網(wǎng)絡(luò)結(jié)構(gòu)不一致時硼莽,難以并行計算庶溶,但是靈活性比較高。

優(yōu)化問題

神經(jīng)網(wǎng)絡(luò)的參數(shù)學(xué)習(xí)比線性模型要更加困難,主要原因有兩點(diǎn):(1)非凸優(yōu)化問題和(2)梯度消失問題偏螺。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末行疏,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子套像,更是在濱河造成了極大的恐慌酿联,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,383評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件夺巩,死亡現(xiàn)場離奇詭異贞让,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)柳譬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評論 3 385
  • 文/潘曉璐 我一進(jìn)店門喳张,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人美澳,你說我怎么就攤上這事蹲姐。” “怎么了人柿?”我有些...
    開封第一講書人閱讀 157,852評論 0 348
  • 文/不壞的土叔 我叫張陵柴墩,是天一觀的道長。 經(jīng)常有香客問我凫岖,道長江咳,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,621評論 1 284
  • 正文 為了忘掉前任哥放,我火速辦了婚禮歼指,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘甥雕。我一直安慰自己踩身,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,741評論 6 386
  • 文/花漫 我一把揭開白布社露。 她就那樣靜靜地躺著挟阻,像睡著了一般。 火紅的嫁衣襯著肌膚如雪峭弟。 梳的紋絲不亂的頭發(fā)上附鸽,一...
    開封第一講書人閱讀 49,929評論 1 290
  • 那天,我揣著相機(jī)與錄音瞒瘸,去河邊找鬼坷备。 笑死,一個胖子當(dāng)著我的面吹牛情臭,可吹牛的內(nèi)容都是我干的省撑。 我是一名探鬼主播赌蔑,決...
    沈念sama閱讀 39,076評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼竟秫!你這毒婦竟也來了惯雳?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,803評論 0 268
  • 序言:老撾萬榮一對情侶失蹤鸿摇,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后劈猿,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體拙吉,經(jīng)...
    沈念sama閱讀 44,265評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,582評論 2 327
  • 正文 我和宋清朗相戀三年揪荣,在試婚紗的時候發(fā)現(xiàn)自己被綠了筷黔。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,716評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡仗颈,死狀恐怖佛舱,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情挨决,我是刑警寧澤请祖,帶...
    沈念sama閱讀 34,395評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站脖祈,受9級特大地震影響肆捕,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜盖高,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,039評論 3 316
  • 文/蒙蒙 一慎陵、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧喻奥,春花似錦席纽、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至甥厦,卻和暖如春仆救,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背矫渔。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評論 1 266
  • 我被黑心中介騙來泰國打工彤蔽, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人庙洼。 一個月前我還...
    沈念sama閱讀 46,488評論 2 361
  • 正文 我出身青樓顿痪,卻偏偏與公主長得像镊辕,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子蚁袭,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,612評論 2 350