本文主要學(xué)習(xí)深度學(xué)習(xí)的一些基礎(chǔ)知識移宅,了解入門
背景
深度學(xué)習(xí)的發(fā)展趨勢
下圖是Google使用深度學(xué)習(xí)的項(xiàng)目變化趨勢:
深度學(xué)習(xí)的發(fā)展史
回顧一下deep learning的歷史:
- 1958: Perceptron (linear model)
- 1969: Perceptron has limitation
- 1980s: Multi-layer perceptron
- Do not have significant difference from DNN today
- 1986: Backpropagation
- Usually more than 3 hidden layers is not helpful
- 1989: 1 hidden layer is “good enough”, why deep?
- 2006: RBM initialization (breakthrough)
- 2009: GPU
- 2011: Start to be popular in speech recognition
- 2012: win ILSVRC image competition
感知機(jī)(Perceptron)非常像我們的邏輯回歸(Logistics Regression)只不過是沒有sigmoid
激活函數(shù)杏头。09年的GPU的發(fā)展是很關(guān)鍵的,使用GPU矩陣運(yùn)算節(jié)省了很多的時間。
深度學(xué)習(xí)的三個步驟
我們都知道機(jī)器學(xué)習(xí)有三個step矩父,那么對于deep learning呢?其實(shí)也是3個步驟~~如下圖所示:
- Step1:神經(jīng)網(wǎng)絡(luò)(Neural network)
- Step2:模型評估(Goodness of function)
- Step3:選擇最優(yōu)函數(shù)(Pick best function)
那對于深度學(xué)習(xí)的Step1
就是神經(jīng)網(wǎng)絡(luò)(Neural Network)
Step1:神經(jīng)網(wǎng)絡(luò)(Neural Network)
神經(jīng)網(wǎng)絡(luò)(Neural network)里面的節(jié)點(diǎn),類似我們的神經(jīng)元腻异。
神經(jīng)網(wǎng)絡(luò)也可以有很多不同的連接方式,這樣就會產(chǎn)生不同的結(jié)構(gòu)(structure)这揣。
那都有什么連接方式呢捂掰?其實(shí)連接方式都是你手動去設(shè)計的:
完全連接前饋神經(jīng)網(wǎng)絡(luò)
概念:前饋(feedforward)也可以稱為前向,從信號流向來理解就是輸入信號進(jìn)入網(wǎng)絡(luò)后曾沈,信號流動是單向的这嚣,即信號從前一層流向后一層,一直到輸出層塞俱,其中任意兩層之間的連接并沒有反饋(feedback)姐帚,亦即信號沒有從后一層又返回到前一層。
- 當(dāng)已知權(quán)重和閾值時輸入
的結(jié)果
- 當(dāng)已知權(quán)重和閾值時輸入
的結(jié)果
所以可以把整個神經(jīng)網(wǎng)絡(luò)(neural network)看成是一個函數(shù)(function)障涯,如果神經(jīng)網(wǎng)絡(luò)中的權(quán)重和閾值都知道的話罐旗,就是一個已知的函數(shù)(也就是說膳汪,如果我們把參數(shù)都設(shè)置上去,這個神經(jīng)網(wǎng)絡(luò)其實(shí)就是一個函數(shù))九秀。他的輸入是一個向量遗嗽,對應(yīng)的輸出也是一個向量。
如果只是定義了一個神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)鼓蜒,但是不知道權(quán)重還有閾值怎么辦呢痹换?
給了結(jié)構(gòu)就相當(dāng)于定義了一個函數(shù)集(function set)
不論是做回歸模型(linear model)還是邏輯回歸(logistics regression)都是定義了一個函數(shù)集(function set)。我們可以給上面的結(jié)構(gòu)的參數(shù)設(shè)置為不同的數(shù)都弹,就是不同的函數(shù)(function)娇豫。這些可能的函數(shù)(function)結(jié)合起來就是一個函數(shù)集(function set)。這個時候你的函數(shù)集(function set)是比較大的畅厢,是以前的回歸模型(linear model)等沒有辦法包含的函數(shù)(function)冯痢,所以說深度學(xué)習(xí)(Deep Learning)能表達(dá)出以前所不能表達(dá)的情況。
我們通過另一種方式顯示這個函數(shù)集:
全鏈接和前饋的理解
- 輸入層(Input Layer):1層
- 隱藏層(Hidden Layer):N層
-
輸出層(Output Layer):1層
在這里插入圖片描述 - 為什么叫全鏈接呢框杜?
- 因?yàn)閘ayer1與layer2之間兩兩都有連接浦楣,所以叫做Fully Connect;
- 為什么叫前饋呢咪辱?
- 因?yàn)楝F(xiàn)在傳遞的方向是由后往前傳振劳,所以叫做Feedforward。
深度的理解
那什么叫做Deep呢梧乘?Deep = Many hidden layer澎迎。那到底可以有幾層呢?
- 2012 AlexNet:8層
- 2014 VGG:19層
- 2014 GoogleNet:22層
- 2015 Residual Net:152層
- 101 Taipei:101層
隨著層數(shù)變多选调,錯誤率降低夹供,隨之運(yùn)算量增大,通常都是超過億萬級的計算仁堪。對于這樣復(fù)雜的結(jié)構(gòu)哮洽,我們一定不會一個一個的計算,對于億萬級的計算弦聂,使用loop循環(huán)效率很低鸟辅。
引入矩陣計算(Matrix Operation)能使得我們的運(yùn)算的速度以及效率高很多:
矩陣計算
如下圖所示,輸入是 (1莺葫,-1)匪凉,輸出是(0.98,0.12)捺檬。
計算方法就是:sigmod(權(quán)重w【黃色】 * 輸入【藍(lán)色】+ 偏移量b【綠色】)= 輸出
如果有很多層呢再层?
計算方法就像是嵌套,這里就不列公式了,結(jié)合上一個圖更好理解聂受。
從結(jié)構(gòu)上看每一層的計算都是一樣的蒿秦,在計算機(jī)里面使用并行計算技術(shù)加速矩陣運(yùn)算。
這樣寫成矩陣運(yùn)算的好處是蛋济,你可以使用GPU加速棍鳖。那我們看看本質(zhì)是怎么回事呢?
本質(zhì):通過隱藏層進(jìn)行特征轉(zhuǎn)換
疑問:PPT里面特征提取替代特征工程(Feature extractor replacing feature engineering)碗旅,這句話沒有看明白
示例:手寫數(shù)字識別
舉一個手寫數(shù)字體識別的例子
輸入:一個16*16=256個特征的向量渡处,有顏色用(ink)用1表示,沒有顏色(no ink)用0表示
輸出:10個維度扛芽,每個維度代表一個數(shù)字的置信度骂蓖。
從輸出結(jié)果看积瞒,是數(shù)字2的置信度為0.7川尖,比較高。
將識別手寫數(shù)字的問題轉(zhuǎn)換茫孔,輸入是256維的向量叮喳,輸出是10維的向量,我們所需要求的就是隱藏層神經(jīng)網(wǎng)絡(luò)的函數(shù)
神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)缰贝,決定了函數(shù)集(function set)馍悟,所以說網(wǎng)絡(luò)結(jié)構(gòu)(network structured)很關(guān)鍵。
了解Step1剩晴,也會引入相關(guān)的問題:
- 多少層锣咒? 每層有多少神經(jīng)元?
- 嘗試發(fā)現(xiàn)錯誤 + 直覺
- 結(jié)構(gòu)可以自動確定嗎赞弥?
- 進(jìn)化人工神經(jīng)網(wǎng)絡(luò)(Evolutionary Artificial Neural Networks)
- 我們可以設(shè)計網(wǎng)絡(luò)結(jié)構(gòu)嗎毅整?
-
CNN卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network )
image
講完了step1之后就要將step2(怎么定義參數(shù)的好壞):
-
Step2: 模型評估(Goodness of function)
損失計算
我們需要把所有的data算起來:
總體損失
- 把所有的損失求和
- 在函數(shù)集(function set)中查找最小化總損失
的函數(shù)
- 找到最小化總損失L的網(wǎng)絡(luò)參數(shù)
Step3:選擇最優(yōu)函數(shù)(Pick best function)
梯度下降(Gradient Descent)
如何找呢?Gradient Descent方法:
現(xiàn)在有很多架構(gòu)工具了:
反向傳播
思考
為什么要用深度學(xué)習(xí)绽左,深層架構(gòu)帶來哪些好處悼嫉?那是不是隱藏層越多越好?
隱藏層越多越好拼窥?
從圖中展示的結(jié)果看戏蔑,毫無疑問,層次越深效果越好~~
普遍性定理
參數(shù)多的model擬合數(shù)據(jù)很好是很正常的鲁纠。下面有一個通用的理論:
為什么“深層”神經(jīng)網(wǎng)絡(luò)不是“胖”神經(jīng)網(wǎng)絡(luò)总棵?可以通過具有一個隱藏層的網(wǎng)絡(luò)實(shí)現(xiàn)(給定足夠的隱藏神經(jīng)元)
參考文檔
神經(jīng)網(wǎng)絡(luò)和深度學(xué)習(xí)之——前饋神經(jīng)網(wǎng)絡(luò)