
本文基于臺大機器學(xué)習(xí)技法系列課程進行的筆記總結(jié)。
一、主要內(nèi)容
topic 1 深度神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
從類神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)中我們已經(jīng)發(fā)現(xiàn)了神經(jīng)網(wǎng)絡(luò)中的每一層實際上都是對前一層進行的特征轉(zhuǎn)換,也就是特征抽取。一般的隱藏層(hidden layer)較少的類神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)我們稱之為shallow,而當(dāng)隱藏層數(shù)比較多的類神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)我們稱之為deep。如下圖所示:
從兩者的對比中可以明顯發(fā)現(xiàn),隨著類神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的層數(shù)逐漸變多,由shallow轉(zhuǎn)向deep,訓(xùn)練的效率會下降,結(jié)構(gòu)變得復(fù)雜,那么對應(yīng)的能力(powerful)呢?實際上shallow的類神經(jīng)網(wǎng)絡(luò)已經(jīng)很強的powerful了,那么多增加layer的目的到底是什么呢?是如何的更加富有意義(meaningful)呢?且往下看:
圖中所示的一個非常常見的問題:識別手寫體數(shù)字的模式識別問題。最原始的特征就是我們的原始數(shù)字化的圖像(raw features:pixels),從pixels出發(fā),通過第一層的轉(zhuǎn)換我們可以得到一些稍微復(fù)雜一點點的features:筆畫特征,然后我們再由這些筆畫特征開始輸入到下一層中,就可以得到更加抽象的認識特征(將像素組合成筆畫,然后再由筆畫的組成去構(gòu)成對數(shù)字的認識,進而識別數(shù)字)。上圖中可以看出,數(shù)字1可以由第一層的左邊三個筆畫構(gòu)成,而數(shù)字5可以由第一層右邊四個筆畫構(gòu)成,從第一層到第二層,鏈接權(quán)重紅色表示抑制,藍色表示激勵,其實就是模仿人類神經(jīng)元的工作機制(最簡單的模仿:激勵和抑制)。那么這個手寫體數(shù)字的模式識別問題就可以通過這一層一層的類神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)得到解決。但是問題是,類神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)如何確定,模型復(fù)雜度如何評估(會不會overfitting呢),以及優(yōu)化的方式和計算復(fù)雜度的評估呢?且看下圖總結(jié):
對于第一個問題,如何確定類神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu),可以通過domain knowledge來解決,比如在圖像處理中應(yīng)用的卷積神經(jīng)網(wǎng)絡(luò),就是利用了像素在空間上的關(guān)系。
對于第二個問題,我們知道一個非常經(jīng)典的關(guān)系,overfitting與模型復(fù)雜度、數(shù)據(jù)量、噪聲的關(guān)系:模型復(fù)雜度越大,數(shù)據(jù)量越小,噪聲越大,就越容易發(fā)生overfitting,反之亦然。所以,如果我們訓(xùn)練時候的數(shù)據(jù)量足夠大,就完全可以消弭由于模型復(fù)雜度帶來的overfitting的風(fēng)險。所以,對于模型復(fù)雜度,要保證足夠大的數(shù)據(jù)量。當(dāng)然,另外一種我們最熟悉的用來抑制模型復(fù)雜度的工具就是regularization,通過對噪聲的容忍(noise-tolerant)對象不同可以有兩種regularization的方式:對網(wǎng)絡(luò)節(jié)點退化可以容忍的dropout以及對輸入數(shù)據(jù)退化可以容忍的denoising,都表現(xiàn)在對噪聲的抑制。所以,第二個問題可以通過在數(shù)據(jù)量上的保證和對噪聲的抑制來解決。
對于第三個問題,deep learning的layer越多,權(quán)重也就越多,在進行優(yōu)化的時候就更加容易出現(xiàn)局部最優(yōu),因為變量多了,想象一下,似乎連綿起伏的山一樣,局部最優(yōu)的情況也就更加容易發(fā)生。那么如果克服發(fā)生局部最優(yōu)的優(yōu)化問題呢?可以通過一個叫做pre-training的方法,慎重的對權(quán)重進行初始化,使得權(quán)重一開始就出現(xiàn)在全局最優(yōu)的那個“山峰”上,然后通過梯度下降或者隨機梯度的方式往下滾,直到全局最優(yōu)。所以,這個pre-training就可以克服局部最優(yōu)的問題,后面也將是我們講解的一個重點。
對于第四個問題,計算的復(fù)雜度是與deep learning的結(jié)構(gòu)復(fù)雜度正相關(guān)的,但是不用擔(dān)心,一個強有力的硬件支持或者架構(gòu)支持已經(jīng)被用來進行深度神經(jīng)網(wǎng)絡(luò)的訓(xùn)練和計算,那就是GPU或FPGA這種可以進行大量的硬件上的并行計算的處理器。所以第四個問題只要通過選擇專用的硬件平臺就可以解決。
那么四個問題都加以了分析和解決,我們下面的重點在于pre-training的機制,如何獲得較好的網(wǎng)絡(luò)初始值呢?
上圖就是典型的深度神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過程,先通過pre-training進行網(wǎng)絡(luò)參數(shù)的初始設(shè)置,然后再通過第二步利用誤差回傳機制對網(wǎng)絡(luò)參數(shù)進行調(diào)優(yōu)(fine-tune)。
那么這個pre-training的具體是如何進行的呢?實際上就是如上圖所示,每次只進行兩層之間的參數(shù)訓(xùn)練,確定之后再往其緊接著的上面兩層參數(shù)進行訓(xùn)練,就這樣逐層的訓(xùn)練。那么訓(xùn)練的機制呢?就是今天的第二個topic,autoencoder,自動編碼器。
topic 2 自動編碼器
那么我們看,自動編碼器是如何實現(xiàn)的。在這之前,先說明一個概念:information preserving,就是信息保持,我們在層與層之間的進行的特征轉(zhuǎn)換實際上就是一個編碼的過程,那么一個好的編碼就是能夠做到information preserving。所以一個好的特征轉(zhuǎn)換就是轉(zhuǎn)換后的特征能夠最大限度地保留原始信息,而不至于使得信息變得面目全非。轉(zhuǎn)換后的特征是raw features的一個好的representation。且看下圖:
我們還以原來的手寫體數(shù)字的識別為例,將原始特征(raw features,pixels)轉(zhuǎn)換為筆畫特征是一個好的特征轉(zhuǎn)換嗎?能夠保持原始信息嗎?那么如何衡量這個信息是不是丟失了呢?自然而然就想到了,我把數(shù)字1的轉(zhuǎn)化成了筆畫,那么這些筆畫能不能重新組合表示為數(shù)字1呢?根據(jù)上面的介紹,我們可以做到從1到筆畫,然后還可以從筆畫再到1的過程。這就是很好的信息保持(information preserving)。那么根據(jù)這種由輸入通過一層hidden layer,然后再轉(zhuǎn)變?yōu)檩斎氲臋C制去評估信息保持的效果,去衡量特征轉(zhuǎn)化的品質(zhì)。那么就得到以下的一個訓(xùn)練機制,且看下圖:
這就是我們要將的pre-training的機制。由輸入經(jīng)編碼權(quán)重得到原始數(shù)據(jù)的特征轉(zhuǎn)換,然后再由特征轉(zhuǎn)換經(jīng)解碼權(quán)重得到原始數(shù)據(jù)的機制。整個映射實際上就是一個identity function,因為輸出=輸入嘛!
那么實際上我們設(shè)計的這個訓(xùn)練過程能夠應(yīng)用到監(jiān)督學(xué)習(xí)和非監(jiān)督學(xué)習(xí)。對于監(jiān)督學(xué)習(xí),我們可以用來學(xué)習(xí)數(shù)據(jù)的informative representation,hidden layer的輸出就是。對于非監(jiān)督學(xué)習(xí),我們可以用來進行密度估計(density estimation):當(dāng)g(x)≈x時的x處的密度更大;還可以用來進行outlier檢測:那些g(x)與x相差遠的x就可以作為outlier。那些g(x)≈x的隱藏層輸出,能夠作為x的典型表示(typical representation)。
因此,一個基本的autoencoder的完整流程就有了,且看下圖:
因為上面解釋的就比較多了,下面就不再對這個流程進行詳細說明。一個需要點出的就是使得編碼權(quán)重Wij與解碼權(quán)重Wji相等可以用來作為一種形式的regularization。而整個訓(xùn)練一層一層的進行實際上就是一個只有兩層的類神經(jīng)網(wǎng)絡(luò),進行誤差回傳和梯度下降計算的復(fù)雜度都不會很大。
有了pre-training,于是乎我們的deep learning的過程就變成了下圖:
上面講完了通過pre-training得到較好的初始權(quán)重,以便于整個deep learning能夠在開始訓(xùn)練的時候就站在一個非常好的位置,即在一定程度上避免由于模型結(jié)構(gòu)復(fù)雜度導(dǎo)致的overfitting發(fā)生的風(fēng)險。由此引出的autoencoder。
那么前面講為了克服overfitting的風(fēng)險,還可以從另一個角度:noise的角度出發(fā)。下面我們就進行denoising autoencoder的相關(guān)內(nèi)容。
topic 3 去噪自動編碼器
在類神經(jīng)網(wǎng)絡(luò)中其實已經(jīng)介紹過一些用于regularization的方法,比如通過限制模型輸出的精度、權(quán)重的消減或者提前終止訓(xùn)練等,那么下面介紹的是一種比較另類的regularization的方法。
上面說了,基于消除噪聲的方式,一般直接的想法或者常用的是data cleaning/pruning,那么我們這里介紹的也不是這種常規(guī)的方法,而是一種反向思維的方式:如果我直接往輸入數(shù)據(jù)中加入人工的噪聲呢?會發(fā)生什么樣的情況。這就是我們下面要探討的去噪自動編碼器。
這種往input中添加噪聲的思維是以robustness健壯性出發(fā)的,試想如果我加完噪聲后的數(shù)據(jù)作為輸入,經(jīng)過編碼和解碼后,如果輸出依然等于加入噪聲前的數(shù)據(jù),這樣的類神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)是不是非常的穩(wěn)健,也就說抗干擾能力很強。基于此想法,我們就得到denoising autoencoder的方法,且看下圖
所以輸入時x+人工噪聲,標簽是x,這樣來對網(wǎng)絡(luò)進行訓(xùn)練,這樣的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)自然就具備了denosing的效果。
topic 4 線性自動編碼器與主成分分析
所以前面講的都是直接基于非線性映射的結(jié)構(gòu),而一般上我們常常是先通過線性的解釋,然后再拓展至非線性。那么我們看看線性自動編碼器是怎樣的,看下圖:
我們依然通過平方誤差進行推導(dǎo),推導(dǎo)過程見下圖,總之就是一堆矩陣的運算,如果學(xué)過矩陣分析課程看起來并不復(fù)雜,實際上就是進行譜分解,看不懂也沒關(guān)系,只要知道處理過程就好,求輸入矩陣的最大特征值和其對應(yīng)的特征向量,實際上這也是PCA處理的過程(PCA基于matlab的代碼鏈接,小弟資源分不夠,求個資源分勿怪)。
那么實際上,linear 的autoencoder實際上與主成分分析是非常相近的,只不過主成分分析具有統(tǒng)計學(xué)的說明。進行特征轉(zhuǎn)換后的方差要大。我們把數(shù)據(jù)進行零均值化作為autoencoder的輸入,結(jié)果就跟PCA一樣了。具體的關(guān)系可以看下圖說明:
*************************************************************************************************************************************
通過以上的介紹,相信對整個deep learning的架構(gòu)有了一定認識,當(dāng)然這里面介紹的大部分都是入門級的知識,不過有了一個guideline之后,再去對更加細節(jié)的設(shè)計方法進行學(xué)習(xí)時就能有更加宏觀方向的把握。
數(shù)據(jù)分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
LSTM 模型輸入長度選擇技巧:提升序列建模效能的關(guān)鍵? 在循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)家族中,長短期記憶網(wǎng)絡(luò)(LSTM)憑借其解決長序列 ...
2025-07-11CDA 數(shù)據(jù)分析師報考條件詳解與準備指南? ? 在數(shù)據(jù)驅(qū)動決策的時代浪潮下,CDA 數(shù)據(jù)分析師認證愈發(fā)受到矚目,成為眾多有志投身數(shù) ...
2025-07-11數(shù)據(jù)透視表中兩列相乘合計的實用指南? 在數(shù)據(jù)分析的日常工作中,數(shù)據(jù)透視表憑借其強大的數(shù)據(jù)匯總和分析功能,成為了 Excel 用戶 ...
2025-07-11尊敬的考生: 您好! 我們誠摯通知您,CDA Level I和 Level II考試大綱將于 2025年7月25日 實施重大更新。 此次更新旨在確保認 ...
2025-07-10BI 大數(shù)據(jù)分析師:連接數(shù)據(jù)與業(yè)務(wù)的價值轉(zhuǎn)化者? ? 在大數(shù)據(jù)與商業(yè)智能(Business Intelligence,簡稱 BI)深度融合的時代,BI ...
2025-07-10SQL 在預(yù)測分析中的應(yīng)用:從數(shù)據(jù)查詢到趨勢預(yù)判? ? 在數(shù)據(jù)驅(qū)動決策的時代,預(yù)測分析作為挖掘數(shù)據(jù)潛在價值的核心手段,正被廣泛 ...
2025-07-10數(shù)據(jù)查詢結(jié)束后:分析師的收尾工作與價值深化? ? 在數(shù)據(jù)分析的全流程中,“query end”(查詢結(jié)束)并非工作的終點,而是將數(shù) ...
2025-07-10CDA 數(shù)據(jù)分析師考試:從報考到取證的全攻略? 在數(shù)字經(jīng)濟蓬勃發(fā)展的今天,數(shù)據(jù)分析師已成為各行業(yè)爭搶的核心人才,而 CDA(Certi ...
2025-07-09【CDA干貨】單樣本趨勢性檢驗:捕捉數(shù)據(jù)背后的時間軌跡? 在數(shù)據(jù)分析的版圖中,單樣本趨勢性檢驗如同一位耐心的偵探,專注于從單 ...
2025-07-09year_month數(shù)據(jù)類型:時間維度的精準切片? ? 在數(shù)據(jù)的世界里,時間是最不可或缺的維度之一,而year_month數(shù)據(jù)類型就像一把精準 ...
2025-07-09CDA 備考干貨:Python 在數(shù)據(jù)分析中的核心應(yīng)用與實戰(zhàn)技巧? ? 在 CDA 數(shù)據(jù)分析師認證考試中,Python 作為數(shù)據(jù)處理與分析的核心 ...
2025-07-08SPSS 中的 Mann-Kendall 檢驗:數(shù)據(jù)趨勢與突變分析的有力工具? ? ? 在數(shù)據(jù)分析的廣袤領(lǐng)域中,準確捕捉數(shù)據(jù)的趨勢變化以及識別 ...
2025-07-08備戰(zhàn) CDA 數(shù)據(jù)分析師考試:需要多久?如何規(guī)劃? CDA(Certified Data Analyst)數(shù)據(jù)分析師認證作為國內(nèi)權(quán)威的數(shù)據(jù)分析能力認證 ...
2025-07-08LSTM 輸出不確定的成因、影響與應(yīng)對策略? 長短期記憶網(wǎng)絡(luò)(LSTM)作為循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)的一種變體,憑借獨特的門控機制,在 ...
2025-07-07統(tǒng)計學(xué)方法在市場調(diào)研數(shù)據(jù)中的深度應(yīng)用? 市場調(diào)研是企業(yè)洞察市場動態(tài)、了解消費者需求的重要途徑,而統(tǒng)計學(xué)方法則是市場調(diào)研數(shù) ...
2025-07-07CDA數(shù)據(jù)分析師證書考試全攻略? 在數(shù)字化浪潮席卷全球的當(dāng)下,數(shù)據(jù)已成為企業(yè)決策、行業(yè)發(fā)展的核心驅(qū)動力,數(shù)據(jù)分析師也因此成為 ...
2025-07-07剖析 CDA 數(shù)據(jù)分析師考試題型:解鎖高效備考與答題策略? CDA(Certified Data Analyst)數(shù)據(jù)分析師考試作為衡量數(shù)據(jù)專業(yè)能力的 ...
2025-07-04SQL Server 字符串截取轉(zhuǎn)日期:解鎖數(shù)據(jù)處理的關(guān)鍵技能? 在數(shù)據(jù)處理與分析工作中,數(shù)據(jù)格式的規(guī)范性是保證后續(xù)分析準確性的基礎(chǔ) ...
2025-07-04CDA 數(shù)據(jù)分析師視角:從數(shù)據(jù)迷霧中探尋商業(yè)真相? 在數(shù)字化浪潮席卷全球的今天,數(shù)據(jù)已成為企業(yè)決策的核心驅(qū)動力,CDA(Certifie ...
2025-07-04CDA 數(shù)據(jù)分析師:開啟數(shù)據(jù)職業(yè)發(fā)展新征程? ? 在數(shù)據(jù)成為核心生產(chǎn)要素的今天,數(shù)據(jù)分析師的職業(yè)價值愈發(fā)凸顯。CDA(Certified D ...
2025-07-03