日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

台湾大学林轩田机器学习技法课程学习笔记13 -- Deep Learning

發(fā)布時間:2025/3/15 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 台湾大学林轩田机器学习技法课程学习笔记13 -- Deep Learning 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

紅色石頭的個人網(wǎng)站:redstonewill.com

上節(jié)課我們主要介紹了神經(jīng)網(wǎng)絡(luò)Neural Network。神經(jīng)網(wǎng)絡(luò)是由一層一層的神經(jīng)元構(gòu)成,其作用就是幫助提取原始數(shù)據(jù)中的模式即特征,簡稱為pattern feature extraction。神經(jīng)網(wǎng)絡(luò)模型的關(guān)鍵是計算出每個神經(jīng)元的權(quán)重,方法就是使用Backpropagation算法,利用GD/SGD,得到每個權(quán)重的最優(yōu)解。本節(jié)課我們將繼續(xù)對神經(jīng)網(wǎng)絡(luò)進(jìn)行深入研究,并介紹層數(shù)更多、神經(jīng)元個數(shù)更多、模型更復(fù)雜的神經(jīng)網(wǎng)絡(luò)模型,即深度學(xué)習(xí)模型。

Deep Neural Network

總的來說,根據(jù)神經(jīng)網(wǎng)絡(luò)模型的層數(shù)、神經(jīng)元個數(shù)、模型復(fù)雜度不同,大致可分為兩類:Shallow Neural Networks和Deep Neural Networks。上節(jié)課介紹的神經(jīng)網(wǎng)絡(luò)模型層數(shù)較少,屬于Shallow Neural Networks,而本節(jié)課將著重介紹Deep Neural Networks。首先,比較一下二者之間的優(yōu)缺點有哪些:

值得一提的是,近些年來,deep learning越來越火,尤其在電腦視覺和語音識別等領(lǐng)域都有非常廣泛的應(yīng)用。原因在于一層一層的神經(jīng)網(wǎng)絡(luò)有助于提取圖像或者語音的一些物理特征,即pattern feature extraction,從而幫助人們掌握這些問題的本質(zhì),建立準(zhǔn)確的模型。

下面舉個例子,來看一下深度學(xué)習(xí)是如何提取出問題潛在的特征從而建立準(zhǔn)確的模型的。如下圖所示,這是一個手寫識別的問題,簡單地識別數(shù)字1和數(shù)字5。

如何進(jìn)行準(zhǔn)確的手寫識別呢?我們可以將寫上數(shù)字的圖片分解提取出一塊一塊不同部位的特征。例如左邊三幅圖每張圖代表了數(shù)字1的某個部位的特征,三幅圖片組合起來就是完整的數(shù)字1。右邊四幅圖也是一樣,每張圖代表了數(shù)字5的某個部位的特征,五幅圖組合起來就是完整的數(shù)字5。對計算機來說,圖片由許多像素點組成。要達(dá)到識別的目的,每層神經(jīng)網(wǎng)絡(luò)從原始像素中提取出更復(fù)雜的特征,再由這些特征對圖片內(nèi)容進(jìn)行匹配和識別。層數(shù)越多,提取特征的個數(shù)和深度就越大,同時解決復(fù)雜問題的能量就越強,其中每一層都具有相應(yīng)的物理意義。以上就是深度學(xué)習(xí)的作用和意義。

深度學(xué)習(xí)很強大,同時它也面臨很多挑戰(zhàn)和困難:

  • difficult structural decisions

  • high model complexity

  • hard optimization problem

  • huge computational complexity

面對以上深度學(xué)習(xí)的4個困難,有相應(yīng)的技術(shù)和解決的辦法:

其中,最關(guān)鍵的技術(shù)就是regularization和initialization。

深度學(xué)習(xí)中,權(quán)重的初始化選擇很重要,好的初始值能夠幫助避免出現(xiàn)局部最優(yōu)解的出現(xiàn)。常用的方法就是pre-train,即先權(quán)重進(jìn)行初始值的選擇,選擇之后再使用backprop算法訓(xùn)練模型,得到最佳的權(quán)重值。在接下來的部分,我們將重點研究pre-training的方法。

Autoencoder

我們已經(jīng)介紹了深度學(xué)習(xí)的架構(gòu),那么從算法模型上來說,如何進(jìn)行pre-training,得到較好的權(quán)重初始值呢?首先,我們來看看,權(quán)重是什么?神經(jīng)網(wǎng)絡(luò)模型中,權(quán)重代表了特征轉(zhuǎn)換(feature transform)。從另一個方面也可以說,權(quán)重表示一種編碼(encoding),就是把數(shù)據(jù)編碼成另外一些數(shù)據(jù)來表示。因為神經(jīng)網(wǎng)絡(luò)是一層一層進(jìn)行的,有先后順序,所以就單一層來看,好的權(quán)重初始值應(yīng)該是盡可能地包含了該層輸入數(shù)據(jù)的所有特征,即類似于information-preserving encoding。也就是說,能夠把第i層的輸入數(shù)據(jù)的特征傳輸?shù)降趇+1層,再把第i+1層的輸入數(shù)據(jù)的特征傳輸?shù)降趇+2層,一層一層進(jìn)行下去。這樣,每層的權(quán)重初始值起到了對該層輸入數(shù)據(jù)的編碼作用,能夠最大限度地保持其特征。

舉個例子,上一小節(jié)我們講了簡單的手寫識別的例子。從原始的一張像素圖片轉(zhuǎn)換到分解的不同筆畫特征,那么反過來,這幾個筆畫特征也可以組合成原來的數(shù)字。這種可逆的轉(zhuǎn)換被稱為information-preserving,即轉(zhuǎn)換后的特征保留了原輸入的特征,而且轉(zhuǎn)換是可逆的。這正是pre-train希望做到的,通過encoding將輸入轉(zhuǎn)換為一些特征,而這些特征又可以復(fù)原原輸入x,實現(xiàn)information-preserving。所以,pre-training得到的權(quán)重初始值就應(yīng)該滿足這樣的information-preserving特性。

如何在pre-training中得到這樣的權(quán)重初始值(即轉(zhuǎn)換特征)呢?方法是建立一個簡單的三層神經(jīng)網(wǎng)絡(luò)(一個輸入層、一個隱藏層、一個輸出層),如下圖所示。

該神經(jīng)網(wǎng)絡(luò)中,輸入層是原始數(shù)據(jù)(即待pre-training的數(shù)據(jù)),經(jīng)過權(quán)重W(1)ijWij(1)得到隱藏層的輸出為原始數(shù)據(jù)新的表達(dá)方式(即轉(zhuǎn)換特征)。這些轉(zhuǎn)換特征再經(jīng)過權(quán)重W(2)jiWji(2)得到輸出層,輸出層的結(jié)果要求跟原始數(shù)據(jù)類似,即輸入層和輸出層是近似相等的。整個網(wǎng)絡(luò)是d?d??dd?d??d NNet結(jié)構(gòu)。其核心在于“重構(gòu)性”,從輸入層到隱藏層實現(xiàn)特征轉(zhuǎn)換,從隱藏層到輸出層實現(xiàn)重構(gòu),滿足上文所說的information-preserving的特性。這種結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò)我們稱之為autoencoder,輸入層到隱藏層對應(yīng)編碼,而隱藏層到輸出層對應(yīng)解碼。其中,W(1)ijWij(1)表示編碼權(quán)重,而W(2)jiWji(2)表示解碼權(quán)重。整個過程類似于在學(xué)習(xí)如何近似逼近identity function。

那么為什么要使用這樣的結(jié)構(gòu)來逼近identity function,有什么好處呢?首先對于監(jiān)督式學(xué)習(xí)(supervised learning),這種d?d??dd?d??d的NNet結(jié)構(gòu)中含有隱藏層。隱藏層的輸出實際上就是對原始數(shù)據(jù)合理的特征轉(zhuǎn)換?(x)?(x),例如手寫識別中隱藏層分解的各個筆畫,包含了有用的信息。這樣就可以從數(shù)據(jù)中學(xué)習(xí)得到一些有用的具有代表性的信息。然后,對于非監(jiān)督式學(xué)習(xí)(unsupervised learning),autoencoder也可以用來做density estimation。如果網(wǎng)絡(luò)最終的輸出g(x)xg(x)≈x,則表示密度較大;如果g(x)與x相差甚遠(yuǎn),則表示密度較小。也就是說可以根據(jù)g(x)與x的接近程度來估計測試數(shù)據(jù)是落在密度較大的地方還是密度較小的地方。這種方法同樣適用于outlier detection,異常檢測。這樣就可以從數(shù)據(jù)中學(xué)習(xí)得到一些典型的具有代表性的信息,找出哪些是典型資料,哪些不是典型資料。所以說,通過autoencoder不斷逼近identity function,對監(jiān)督式學(xué)習(xí)和非監(jiān)督式學(xué)習(xí)都具有深刻的物理意義和非常廣泛的應(yīng)用。

其實,對于autoencoder來說,我們更關(guān)心的是網(wǎng)絡(luò)中間隱藏層,即原始數(shù)據(jù)的特征轉(zhuǎn)換以及特征轉(zhuǎn)換的編碼權(quán)重W(1)ijWij(1)

Basic Autoencoder一般采用d?d??dd?d??d的NNet結(jié)構(gòu),對應(yīng)的error function是squared error,即di=1(gi(x)?xi)2∑i=1d(gi(x)?xi)2。

basic autoencoder在結(jié)構(gòu)上比較簡單,只有三層網(wǎng)絡(luò),容易訓(xùn)練和優(yōu)化。各層之間的神經(jīng)元數(shù)量上,通常限定d?<dd?<d,便于數(shù)據(jù)編碼。數(shù)據(jù)集可表示為:{(x1,y1=x1),(x2,y2=x2),?,(xN,yN=xN)}{(x1,y1=x1),(x2,y2=x2),?,(xN,yN=xN)},即輸入輸出都是x,可以看成是非監(jiān)督式學(xué)習(xí)。一個重要的限制條件是W(1)ij=W(2)jiWij(1)=Wji(2),即編碼權(quán)重與解碼權(quán)重相同。這起到了regularization的作用,但是會讓計算復(fù)雜一些。

以上就是basic autoencoder的結(jié)構(gòu)和一些限定條件。深度學(xué)習(xí)中,basic autoencoder的過程也就對應(yīng)著pre-training的過程,使用這種方法,對無label的原始數(shù)據(jù)進(jìn)行編碼和解碼,得到的編碼權(quán)重W(1)ijWij(1)就可以作為pre-trained的比較不錯的初始化權(quán)重,也就是作為深度學(xué)習(xí)中層與層之間的初始化權(quán)重。

我們在本節(jié)課第一部分就說了深度學(xué)習(xí)中非常重要的一步就是pre-training,即權(quán)重初始化,而autoencoder可以作為pre-training的一個合理方法。Pre-training的整個過程是:首先,autoencoder會對深度學(xué)習(xí)網(wǎng)絡(luò)第一層(即原始輸入)進(jìn)行編碼和解碼,得到編碼權(quán)重W(1)ijWij(1),作為網(wǎng)絡(luò)第一層到第二層的的初始化權(quán)重;然后再對網(wǎng)絡(luò)第二層進(jìn)行編碼和解碼,得到編碼權(quán)重W(1)ijWij(1),作為網(wǎng)絡(luò)第二層到第三層的初始化權(quán)重,以此類推,直到深度學(xué)習(xí)網(wǎng)絡(luò)中所有層與層之間都得到初始化權(quán)重。值得注意的是,對于l-1層的網(wǎng)絡(luò){x(l?1)n}{xn(l?1)},autoencoder中的d?d?應(yīng)與下一層(即l層)的神經(jīng)元個數(shù)相同。

當(dāng)然,除了basic autoencoder之外還有許多其它表現(xiàn)不錯的pre-training方法。這些方法大都采用不同的結(jié)構(gòu)和正則化技巧來得到不同的’fancier’ autoencoders,這里不再贅述。

Denoising Autoencoder

上一部分,我們使用autoencoder解決了deep learning中pre-training的問題。接下來,我們將討論deep learning中有什么樣的regularization方式來控制模型的復(fù)雜度。

由于深度學(xué)習(xí)網(wǎng)絡(luò)中神經(jīng)元和權(quán)重的個數(shù)非常多,相應(yīng)的模型復(fù)雜度就會很大,因此,regularization非常必要。之前我門也介紹過一些regularization的方法,包括:

  • structural decisions/constraints

  • weight decay or weight elimination regularizers

  • early stopping

下面我們將介紹另外一種regularization的方式,它在deep learning和autoencoder中都有很好的效果。

首先我們來復(fù)習(xí)一下之前介紹的overfitting產(chǎn)生的原因有哪些。如下圖所示,我們知道overfitting與樣本數(shù)量、噪聲大小都有關(guān)系,數(shù)據(jù)量減少或者noise增大都會造成overfitting。如果數(shù)據(jù)量是固定的,那么noise的影響就非常大,此時,實現(xiàn)regularization的一個方法就是消除noise的影響。

去除noise的一個簡單方法就是對數(shù)據(jù)進(jìn)行cleaning/pruning的操作。但是,這種方法通常比較麻煩,費時費力。此處,有一種比較“瘋狂”的方法,就是往數(shù)據(jù)中添加一些noise。注意是添加noise!下面我們來解釋這樣做到底有什么作用。

這種做法的idea來自于如何建立一個健壯(robust)的autoencoder。在autoencoder中,編碼解碼后的輸出g(x)會非常接近真實樣本值x。此時,如果對原始輸入加入一些noise,對于健壯的autoencoder,編碼解碼后的輸出g(x)同樣會與真實樣本值x很接近。舉個例子,手寫識別中,通常情況下,寫的很規(guī)范的數(shù)字1經(jīng)過autoencoder后能夠復(fù)原為數(shù)字1。如果原始圖片數(shù)字1歪斜或加入噪聲,經(jīng)過autoencoder后應(yīng)該仍然能夠解碼為數(shù)字1。這表明該autoencoder是robust的,一定程度上起到了抗噪聲和regularization的作用,這正是我們希望看到的。

所以,這就引出了denoising autoencoder的概念。denoising autoencoder不僅能實現(xiàn)編碼和解碼的功能,還能起到去噪聲、抗干擾的效果,即輸入一些混入noise的數(shù)據(jù),經(jīng)過autoencoder之后能夠得到較純凈的數(shù)據(jù)。這樣,autoencoder的樣本集為:

{(x?1,y1=x1),(x?2,y2=x2),?,(x?N,yN=xN){(x?1,y1=x1),(x?2,y2=x2),?,(x?N,yN=xN)

其中x?n=xn+noisex?n=xn+noise,為混入噪聲的樣本,而xnxn為純凈樣本。

autoencoder訓(xùn)練的目的就是讓x?nx?n經(jīng)過編碼解碼后能夠復(fù)原為純凈的樣本xnxn。那么,在deep learning的pre-training中,如果使用這種denoising autoencoder,不僅能從純凈的樣本中編解碼得到純凈的樣本,還能從混入noise的樣本中編解碼得到純凈的樣本。這樣得到的權(quán)重初始值更好,因為它具有更好的抗噪聲能力,即健壯性好。實際應(yīng)用中,denoising autoencoder非常有用,在訓(xùn)練過程中,輸入混入人工noise,輸出純凈信號,讓模型本身具有抗噪聲的效果,讓模型健壯性更強,最關(guān)鍵的是起到了regularization的作用。

Principal Component Analysis

剛剛我們介紹的autoencoder是非線性的,因為其神經(jīng)網(wǎng)絡(luò)模型中包含了tanh()函數(shù)。這部分我們將介紹linear autoencoder。nonlinear autoencoder通常比較復(fù)雜,多應(yīng)用于深度學(xué)習(xí)中;而linear autoencoder通常比較簡單,我們熟知的主成分分析(Principal Component Analysis,PCA),其實跟linear autoencoder有很大的關(guān)系。

對于一個linear autoencoder,它的第k層輸出不包含tanh()函數(shù),可表示為:

hk(x)=j=0d?w(2)jk(i=0dw(1)ijxi)hk(x)=∑j=0d?wjk(2)(∑i=0dwij(1)xi)

其中,w(1)ijwij(1)w(2)jkwjk(2)分別是編碼權(quán)重和解碼權(quán)重。而且,有三個限制條件,分別是:

  • 移除常數(shù)項x0x0,讓輸入輸出維度一致

  • 編碼權(quán)重與解碼權(quán)重一致:w(1)ij=w(2)jk=wijwij(1)=wjk(2)=wij

  • d?<dd?<d

這樣,編碼權(quán)重用W表示,維度是d x d?d?,解碼權(quán)重用WTWT表示。x的維度為d x 1。則linear autoencoder hypothesis可經(jīng)過下式計算得到:

h(x)=WWTxh(x)=WWTx

其實,linear autoencoder hypothesis就應(yīng)該近似于原始輸入x的值,即h(x)=x。根據(jù)這個,我們可以寫出它的error function:

我們的目的是計算出Ein(h)Ein(h)最小化時對應(yīng)的W。根據(jù)線性代數(shù)知識,首先進(jìn)行特征值分解:

WWT=VΓVTWWT=VΓVT

其中WWTWWT是半正定矩陣。V矩陣滿足VVT=VTV=IdVVT=VTV=Id。ΓΓ是對角矩陣,對角線上有不超過d?d?個非零值(即為1),即對角線零值個數(shù)大于等于d?(?d)d?(?d)。根據(jù)特征值分解的思想,我們可以把xnxn進(jìn)行類似分解:

xn=VIVTxnxn=VIVTxn

其中,I是單位矩陣,維度為dxd。這樣,通過特征值分解我們就把對W的優(yōu)化問題轉(zhuǎn)換成對ΓΓ和V的優(yōu)化問題。

首先,我們來優(yōu)化ΓΓ值,表達(dá)式如下:

要求上式的最小化,可以轉(zhuǎn)化為(I?Γ)(I?Γ)越小越好,其結(jié)果對角線上零值越多越好,即I與ΓΓ越接近越好。因為ΓΓ的秩是小于等于d?d?的,ΓΓ最多有d?d?個1。所以,ΓΓ的最優(yōu)解是其對角線上有d?d?個1。

那么,ΓΓ的最優(yōu)解已經(jīng)得出,表達(dá)式變成:

這里的最小化問題似乎有點復(fù)雜,我們可以做一些轉(zhuǎn)換,把它變成最大化問題求解,轉(zhuǎn)換后的表達(dá)式為:

當(dāng)d?=1d?=1時,VTVT中只有第一行vTvT有用,最大化問題轉(zhuǎn)化為:

maxvn=1NvTxnxTnv?????subject?to?vTv=1maxv∑n=1NvTxnxnTvsubjecttovTv=1

引入拉格朗日因子λλ,表達(dá)式的微分與條件微分應(yīng)該是平行的,且由λλ聯(lián)系起來,即:

n=1NxnxTnv=λv∑n=1NxnxnTv=λv

根據(jù)線性代數(shù)的知識,很明顯能夠看出,v就是矩陣XTXXTX的特征向量,而λλ就是相對應(yīng)的特征值。我們要求的是最大值,所以最優(yōu)解v就是矩陣XTXXTX最大特征值對應(yīng)的特征向量。

當(dāng)d?>1d?>1時,求解方法是類似的,最優(yōu)解{vj}d?j=1{vj}j=1d?就是矩陣XTXXTXd?d?大的特征值對應(yīng)的d?d?個特征向量。

經(jīng)過以上分析,我們得到了ΓΓ和V的最優(yōu)解。這就是linear autoencoder的編解碼推導(dǎo)過程。

值得一提的是,linear autoencoder與PCA推導(dǎo)過程十分相似。但有一點不同的是,一般情況下,PCA會對原始數(shù)據(jù)x進(jìn)行處理,即減去其平均值。這是為了在推導(dǎo)過程中的便利。這兩種算法的計算流程大致如下:

linear autoencoder與PCA也有差別,PCA是基于統(tǒng)計學(xué)分析得到的。一般我們認(rèn)為,將高維數(shù)據(jù)投影(降維)到低維空間中,應(yīng)該保證數(shù)據(jù)本身的方差越大越好,而噪聲方差越小越好,而PCA正是基于此原理推導(dǎo)的。linear autoencoder與PCA都可以用來進(jìn)行數(shù)據(jù)壓縮,但是PCA應(yīng)用更加廣泛一些。

以上關(guān)于PCA的推導(dǎo)基本上是從幾何的角度,而沒有從代數(shù)角度進(jìn)行詳細(xì)的數(shù)學(xué)推導(dǎo)。網(wǎng)上關(guān)于PCA的資料很多,這里附上一篇個人覺得講解得通俗易懂的PCA原理介紹:PCA的數(shù)學(xué)原理。有興趣的朋友可以看一看。

總結(jié)

本節(jié)課主要介紹了深度學(xué)習(xí)(deep learning)的數(shù)學(xué)模型,也是上節(jié)課講的神經(jīng)網(wǎng)絡(luò)的延伸。由于深度學(xué)習(xí)網(wǎng)絡(luò)的復(fù)雜性,其建模優(yōu)化是比較困難的。通常,我們可以從pre-training和regularization的角度來解決這些困難。首先,autoencoder可以得到比較不錯的初始化權(quán)重,起到pre-training的效果。然后,denoising autoencoder通過引入人工噪聲,訓(xùn)練得到初始化權(quán)重,從而使模型本身抗噪聲能力更強,更具有健壯性,起到了regularization的效果。最后,我們介紹了linear autoencoder并從幾何角度詳述了其推導(dǎo)過程。linear autoencoder與PCA十分類似,都可以用來進(jìn)行數(shù)據(jù)壓縮和數(shù)據(jù)降維處理。

注明:

文章中所有的圖片均來自臺灣大學(xué)林軒田《機器學(xué)習(xí)技法》課程

更多AI資源請關(guān)注公眾號:紅色石頭的機器學(xué)習(xí)之路(ID:redstonewill)

總結(jié)

以上是生活随笔為你收集整理的台湾大学林轩田机器学习技法课程学习笔记13 -- Deep Learning的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。