《Python深度學(xué)習(xí)》第一部分 深度學(xué)習(xí)基礎(chǔ)

第一章 什么是深度學(xué)習(xí)

人工智能
1 符號主義人工智能
2 專家系統(tǒng)
3 機(jī)器學(xué)習(xí)

  • 輸入數(shù)據(jù)點
  • 預(yù)期輸出的示例
  • 衡量算法好壞的方法
    衡量結(jié)果是一種反饋信號蒂教,用于調(diào)節(jié)算法的工作方式术吝。這個調(diào)節(jié)步驟就是我們所說的學(xué)習(xí)(learning)。學(xué)習(xí)指的是尋找更好數(shù)據(jù)表示(representation)的自動搜索過程挑豌。

機(jī)器學(xué)習(xí)和深度學(xué)習(xí)的核心問題在于有意義地變換數(shù)據(jù)奈搜。在于學(xué)習(xí)輸入數(shù)據(jù)的有用表示,這種表示可以讓數(shù)據(jù)更接近預(yù)期輸出鄙麦。
機(jī)器學(xué)習(xí):在預(yù)先定義好的可能性空間(假設(shè)空間)中典唇,利用反饋信號的指引來尋找輸入數(shù)據(jù)的有用表示。
深度學(xué)習(xí)是機(jī)器學(xué)習(xí)的一個分支領(lǐng)域黔衡。深度學(xué)習(xí)中的深度(depth)指的一系列連續(xù)的表示層(layer)◎酒福現(xiàn)代深度學(xué)習(xí)通常包含數(shù)十個或者數(shù)百個連續(xù)的層,其他機(jī)器學(xué)習(xí)方法的重點往往是僅僅學(xué)習(xí)一兩層的數(shù)據(jù)表示盟劫。
深度學(xué)習(xí):數(shù)據(jù)表示的多級方法夜牡。
深度學(xué)習(xí)將特征工程完全自動化。

機(jī)器學(xué)習(xí)簡史

  • 概率建模(probabilistic modeling)
    樸素貝葉斯算法
    logistic 回歸(logistic regression侣签,簡稱 logreg)
  • 早期神經(jīng)網(wǎng)絡(luò)(neural network)
    反向傳播(backpropagation)算法
    卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks, CNN)
  • 核方法(kernel method)
    支持向量機(jī)(Support Vector Machine塘装,SVM)
  • 決策樹、隨機(jī)森林與梯度提升機(jī)
  • 深度神經(jīng)網(wǎng)絡(luò)
    長短期算法(Long Short-Term Memory影所,LSTM)
    深度卷積神經(jīng)網(wǎng)絡(luò)

處理結(jié)構(gòu)化數(shù)據(jù)問題-梯度提升機(jī)[XGBoost庫]
圖像分類等感知問題-深度學(xué)習(xí)[Keras庫]

第二章 神經(jīng)網(wǎng)絡(luò)的數(shù)學(xué)基礎(chǔ)

張量(tensor)【Numpy數(shù)組(arrays)】

矩陣是二維張量蹦肴,張量是矩陣向任意維度的推廣。張量的維度(dimension)通常叫作軸(axis)猴娩。張量軸的個數(shù)叫作階(rank)阴幌。

  1. 標(biāo)量(0D 張量)
  2. 向量(1D 張量)
  3. 矩陣(2D 張量)
  4. 3D 張量與更高維張量

關(guān)鍵屬性:

  • 階ndim
  • 形狀shape(一個整數(shù)元組)
  • 數(shù)據(jù)類型dtype

張量切片(tensor slicing)

現(xiàn)實世界中的數(shù)據(jù)張量
第一個軸(0軸):
樣本軸(sample axis )或樣本維度
批量軸(batch axis)或批量維度

  • 向量數(shù)據(jù):2D張量,形狀為 (samples, features) 卷中。
  • 時間序列數(shù)據(jù)或序列數(shù)據(jù):3D張量矛双,形狀為 (samples, timesteps, features) 。
  • 圖像:4D張量蟆豫,形狀為 (samples, height,wdith, channels) 或 (samples, channels议忽,height,wdith) 。
    顏色通道channels/color_depth:灰度圖像1十减,彩色圖像3[R,G,B]
  • 視頻:5D張量栈幸,形狀為 (samples, frames, height,wdith, channels) 或 (samples, frames, channels,height,wdith) 帮辟。

張量運(yùn)算(tensor operation)

  • 逐元素(element-wise)運(yùn)算
    relu運(yùn)算:max(x, 0)
    加法運(yùn)算

  • 廣播(broadcast)
    兩個形狀不一樣的張量相加速址,較小的張量會被廣播:
    (1) 向較小的張量添加軸(廣播軸),使其ndim與較大的張量相同
    (2) 將較小的張量沿著新軸重復(fù)织阅,使其形狀與較大的張量相同

  • 張量點積tensor product
    向量和向量 標(biāo)量
    矩陣和向量 向量
    矩陣和矩陣 矩陣

  • 張量變形tensor reshaping
    改變張量的行和列壳繁,以得到想要的形狀。
    轉(zhuǎn)置transposition

向量運(yùn)算的幾何解釋
幾何操作:仿射變換、旋轉(zhuǎn)闹炉、縮放
深度學(xué)習(xí)的幾何解釋
高維空間中非常復(fù)雜的幾何變換


目的:優(yōu)化權(quán)重或可訓(xùn)練參數(shù)蒿赢。
編譯compile
損失函數(shù)loss function 或 目標(biāo)函數(shù)objective function
優(yōu)化器optimizer 或 優(yōu)化方法optimization method
指標(biāo)metric
訓(xùn)練(訓(xùn)練循環(huán))
隨機(jī)初始化
1數(shù)據(jù)批量
2計算預(yù)期值[前向傳播forward pass]
3計算損失
4更新權(quán)重


導(dǎo)數(shù)derivative-->梯度gradient
隨機(jī)梯度下降
真SGD


小批量SGD[小批量隨機(jī)梯度下降]
1數(shù)據(jù)批量
2計算預(yù)期值
3計算損失
4計算損失函數(shù)相對于權(quán)重的梯度[反向傳播backward pass];
4將權(quán)重沿著梯度的反方向移動一點渣触。


批量SGD
變體:帶動量的SGD羡棵、Adagard、RMSProp
動量momentum解決了SGD的兩個問題:收斂速度和局部極小點嗅钻。
學(xué)習(xí)率learinnig rate

鏈?zhǔn)角髮?dǎo):反向傳播算法
將鏈?zhǔn)椒▌tchain rule應(yīng)用到神經(jīng)網(wǎng)絡(luò)梯度值的計算皂冰,得到的算法叫作反向傳播backpropagation(有時也叫反式微分reverse-mode differentiation)

權(quán)重張量是層的屬性,里面保存了網(wǎng)絡(luò)所學(xué)到的知識knowledge养篓。
在所有訓(xùn)練數(shù)據(jù)上迭代一次叫作一個輪次epoch秃流。

第三章 神經(jīng)網(wǎng)絡(luò)入門

三個問題:

  1. 二分類問題[將電影評論劃分為正面或負(fù)面]
  2. 多分類問題[將新聞按主題分類(單標(biāo)簽、多分類)|(多標(biāo)簽柳弄、多分類)]
  3. 標(biāo)量回歸問題[根據(jù)房地產(chǎn)數(shù)據(jù)估算房屋的價格]

:深度學(xué)習(xí)的基礎(chǔ)組件
有些層是無狀態(tài)的舶胀,但大多數(shù)層是有狀態(tài)的,即層的權(quán)重碧注。

不同的張量格式與不同的數(shù)據(jù)處理類型需要用到不同的層:

  • 簡單的向量數(shù)據(jù)保存在2D張量中嚣伐,通常用密集連接層densely connected layer[ 也叫全連接層fully connected layer 或密集層dense layer,對應(yīng)Keras 中的Dense類 ]來處理萍丐。
  • 序列數(shù)據(jù)保存在3D張量中轩端,通常用循環(huán)層recurrent layer[ 比如Keras中的LSTM層 ]來處理。
  • 圖像數(shù)據(jù)保存在4D張量中逝变,通常用二維卷積層[ Keras 中的Conv2D ]來處理基茵。

層兼容性layer compatibility:每一層只能接受特定形狀的輸入張量,并返回特定形狀的輸出張量壳影。

模型:層構(gòu)成的網(wǎng)絡(luò)
深度學(xué)習(xí)模型是由層構(gòu)成的有向無環(huán)圖耿导。
網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu):

  • 雙分支(two-branch)網(wǎng)絡(luò)
  • 多頭(multihead)網(wǎng)絡(luò)
  • Inception 模塊

損失函數(shù)優(yōu)化器:配置學(xué)習(xí)過程的關(guān)鍵
損失函數(shù)(目標(biāo)函數(shù))——在訓(xùn)練過程中需要將其最小化。它能衡量當(dāng)前任務(wù)是否已經(jīng)成功完成态贤。
[二分類問題:二元交叉熵(binary crossentropy)損失函數(shù)
多分類問題:分類交叉熵(categorical crossentropy)損失函數(shù)
回歸問題:均方誤差(mean-aquared error)損失函數(shù)
序列學(xué)習(xí)問題:聯(lián)結(jié)主義時序分類(CTC,connectionist temporal classification)損失函數(shù)
... ...
]
優(yōu)化器(優(yōu)化方法)——決定如何基于損失函數(shù)對網(wǎng)絡(luò)進(jìn)行更新醋火,它執(zhí)行的是隨機(jī)梯度下降SGD的某個變體悠汽。


Keras:高層次的構(gòu)建模塊,模型級(model-level)的庫芥驳。
低層次的運(yùn)算由張量庫柿冲,keras的后端引擎(backend engine)完成。Keras沒有選擇單一的張量庫并將Keras實現(xiàn)與這個庫的綁定兆旬,而是以模塊化的方式處理這個問題假抄,目前Keras有三個后端實現(xiàn):TensorFlow 后端、Theano 后端和微軟認(rèn)知工具包CNTK。
TensorFlow
CPU:低層次的張量運(yùn)算庫Eigen
GPU:高度優(yōu)化的深度學(xué)習(xí)運(yùn)算庫宿饱,叫作 NVIDA CUDA神經(jīng)網(wǎng)絡(luò)網(wǎng)絡(luò)庫(cuDNN)


加載數(shù)據(jù)集

準(zhǔn)備數(shù)據(jù)
數(shù)據(jù)向量化
1列表轉(zhuǎn)換成張量[1.填充列表2.one-hot編碼]
2輸入數(shù)據(jù)的每個特征都有不同的取值范圍[對每個特征做標(biāo)準(zhǔn)化]
標(biāo)簽向量化
1整數(shù)張量
2one-hot編碼

構(gòu)建網(wǎng)絡(luò)

  • 模型
    激活函數(shù)[relu整流線性單元,hanh,sigmoid,softmax]
    隱藏單元hidden unit, 信息瓶頸
  • 損失函數(shù)和優(yōu)化器
    優(yōu)化器optinizer
    損失函數(shù)loss
    [binary_crossentropy,
    categorical_crossentropy(sparse_categorical_crossentropy),
    mse]
    指標(biāo)metrics
    [accuracy,
    mae]

訓(xùn)練——驗證你的方法

  1. 留出驗證集[監(jiān)控]
    訓(xùn)練模型
    繪制訓(xùn)練損失和驗證損失
    繪制訓(xùn)練精度和驗證精度
    從頭開始重新訓(xùn)練一個模型
  2. [K折交叉驗證:數(shù)據(jù)點很少]
    K折驗證
    保存每折的驗證結(jié)果
    計算所有輪次中的K折驗證分?jǐn)?shù)平均值
    繪制驗證分?jǐn)?shù)
    繪制驗證分?jǐn)?shù)(刪除前幾個數(shù)據(jù)點)
    訓(xùn)練最終模型

測試——使用訓(xùn)練好的網(wǎng)絡(luò)在新數(shù)據(jù)上生成預(yù)測結(jié)果

第四章 機(jī)器學(xué)習(xí)基礎(chǔ)

機(jī)器學(xué)習(xí)的四個分支

  1. 監(jiān)督學(xué)習(xí)
    標(biāo)注annotation
  2. 無監(jiān)督學(xué)習(xí)
    降維dimensionallity reduction
    聚類clustering
  3. 自監(jiān)督學(xué)習(xí)
  4. 強(qiáng)化學(xué)習(xí)
    智能體agent

評估機(jī)器學(xué)習(xí)模型

過擬合overfit
泛化generalize
訓(xùn)練集熏瞄、驗證集和測試集
在訓(xùn)練數(shù)據(jù)上訓(xùn)練模型,在驗證數(shù)據(jù)上評估模型谬以,在測試數(shù)據(jù)上測試模型强饮。

權(quán)重:參數(shù)。[深度學(xué)習(xí)中为黎,模型可學(xué)習(xí)的參數(shù)的個數(shù)通常稱為模型的容量capacity]
模型的層數(shù)或每層大杏史帷:超參數(shù)。

信息泄露information leak:如果基于模型在驗證集上的性能來調(diào)節(jié)模型配置铭乾,會很快導(dǎo)致模型在驗證集上過擬合剪廉,即使你并沒有在驗證集上直接訓(xùn)練模型也會如此。

三種經(jīng)典的評估方法:

  • 簡單的留出驗證hold-out validation
  • K折驗證K-fold validation
  • 帶有打亂數(shù)據(jù)的重復(fù)K折驗證iterated K-fold vaildation with shuffling

評估模型的注意事項

  1. 數(shù)據(jù)代表性data represrntativeness[隨機(jī)打亂]
  2. 時間箭頭the arrow of time [時間泄露time leak]
  3. 數(shù)據(jù)冗余redundancy in your data

數(shù)據(jù)預(yù)處理炕檩、特征工程和特征學(xué)習(xí)

神經(jīng)網(wǎng)絡(luò)的數(shù)據(jù)預(yù)處理
數(shù)據(jù)預(yù)處理的目的是使原始數(shù)據(jù)更適于用神經(jīng)網(wǎng)絡(luò)處理斗蒋,包括向量化、標(biāo)準(zhǔn)化捧书、處理缺失值和特征提取吹泡。

  • 向量化
  • 值標(biāo)準(zhǔn)化[取值較小经瓷;同質(zhì)性
    將每個特征分別標(biāo)準(zhǔn)化爆哑,使其平均值為 0;
    將每個特征分別標(biāo)準(zhǔn)化舆吮,使其標(biāo)準(zhǔn)差為 1]
  • 處理缺失值

特征工程feature engineering

過擬合與欠擬合

最優(yōu)解決方法:獲取更多的訓(xùn)練數(shù)據(jù)揭朝。
次優(yōu)解決方法:正則化regularization

  • 減小網(wǎng)絡(luò)大小
  • 添加權(quán)重正則化
    奧卡姆剃刀(Occam's razor)原理:如果一件事有兩種解釋,那么最可能正確的就是最簡單的那個色冀,即假設(shè)更少的那個潭袱。
    這里的簡單模型simple model 是指參數(shù)值分布的熵更少的模型(或參數(shù)較少的模型)
    一種常見的降低過擬合的方法就是強(qiáng)制讓模型權(quán)重只能取較小的值,實現(xiàn)方法是向網(wǎng)絡(luò)損失函數(shù)中添加與較大權(quán)重值相關(guān)的成本cost[常見的成本:L1正則化锋恬;L2正則化]
  • 添加 dropout 正則化
    對某一層使用 dropout, 就是在訓(xùn)練過程中隨機(jī)將該層的一些輸出特征舍棄(設(shè)置為0)
    dropout 比率(dropout rate) 是設(shè)為0的特征所占的比例屯换,通常在 0.2~0.5 范圍內(nèi)。

機(jī)器學(xué)習(xí)的通用工作流程

  1. 定義問題与学,收集數(shù)據(jù)集
    非平穩(wěn)過程
  2. 選擇衡量成功的指標(biāo)
  3. 確定評估方法
  4. 準(zhǔn)備數(shù)據(jù)
  5. 開發(fā)比基準(zhǔn)更好的模型
    統(tǒng)計功效statistical power
    純隨機(jī)的基準(zhǔn)dumb baseline
    三個關(guān)鍵參數(shù):
  • 最后一層的激活
  • 損失函數(shù)
  • 優(yōu)化配置
  1. 擴(kuò)大模型規(guī)模:開發(fā)過擬合的模型
    (1)添加更多的層
    (2)讓每一層變得更大
    (3)訓(xùn)練更多的輪次

  2. 模型正則化與調(diào)節(jié)超參數(shù)

  • 添加 dropout
  • 嘗試不同的構(gòu)架:增加或減少層數(shù)
  • 添加L1 和/或 L2 正則化
  • 嘗試不同的超參數(shù)(比如每層的單元個數(shù)或優(yōu)化器的學(xué)習(xí)率), 以找到最佳配置
  • (可選)反復(fù)做特征工程:添加新特征或刪除沒有信息量的特征
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末彤悔,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子索守,更是在濱河造成了極大的恐慌晕窑,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,729評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件卵佛,死亡現(xiàn)場離奇詭異杨赤,居然都是意外死亡敞斋,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,226評論 3 399
  • 文/潘曉璐 我一進(jìn)店門疾牲,熙熙樓的掌柜王于貴愁眉苦臉地迎上來植捎,“玉大人,你說我怎么就攤上這事说敏∨父” “怎么了?”我有些...
    開封第一講書人閱讀 169,461評論 0 362
  • 文/不壞的土叔 我叫張陵盔沫,是天一觀的道長医咨。 經(jīng)常有香客問我,道長架诞,這世上最難降的妖魔是什么拟淮? 我笑而不...
    開封第一講書人閱讀 60,135評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮谴忧,結(jié)果婚禮上很泊,老公的妹妹穿的比我還像新娘。我一直安慰自己沾谓,他們只是感情好委造,可當(dāng)我...
    茶點故事閱讀 69,130評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著均驶,像睡著了一般昏兆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上妇穴,一...
    開封第一講書人閱讀 52,736評論 1 312
  • 那天爬虱,我揣著相機(jī)與錄音,去河邊找鬼腾它。 笑死跑筝,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的瞒滴。 我是一名探鬼主播曲梗,決...
    沈念sama閱讀 41,179評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼妓忍!你這毒婦竟也來了稀并?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,124評論 0 277
  • 序言:老撾萬榮一對情侶失蹤单默,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后忘瓦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體搁廓,經(jīng)...
    沈念sama閱讀 46,657評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡引颈,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,723評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了境蜕。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蝙场。...
    茶點故事閱讀 40,872評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖粱年,靈堂內(nèi)的尸體忽然破棺而出售滤,到底是詐尸還是另有隱情,我是刑警寧澤台诗,帶...
    沈念sama閱讀 36,533評論 5 351
  • 正文 年R本政府宣布完箩,位于F島的核電站,受9級特大地震影響拉队,放射性物質(zhì)發(fā)生泄漏弊知。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,213評論 3 336
  • 文/蒙蒙 一粱快、第九天 我趴在偏房一處隱蔽的房頂上張望秩彤。 院中可真熱鬧,春花似錦事哭、人聲如沸漫雷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,700評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽降盹。三九已至,卻和暖如春流炕,著一層夾襖步出監(jiān)牢的瞬間澎现,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,819評論 1 274
  • 我被黑心中介騙來泰國打工每辟, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留剑辫,地道東北人。 一個月前我還...
    沈念sama閱讀 49,304評論 3 379
  • 正文 我出身青樓渠欺,卻偏偏與公主長得像妹蔽,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子挠将,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,876評論 2 361

推薦閱讀更多精彩內(nèi)容