MachineLearning

一宣吱、卷積&池化

卷積

  • 卷積能抽取特征
  • 多層卷積能抽取復(fù)雜特征
  1. 卷積神經(jīng)網(wǎng)絡(luò)每層的卷積核權(quán)重是由數(shù)據(jù)驅(qū)動(dòng)學(xué)習(xí)得來,不是人工設(shè)計(jì)的,人工只能勝任簡單卷積核的設(shè)計(jì)吮旅,像邊緣,但在邊緣響應(yīng)圖之上設(shè)計(jì)出能描述復(fù)雜模式的卷積核則十分困難味咳。
  2. 數(shù)據(jù)驅(qū)動(dòng)卷積神經(jīng)網(wǎng)絡(luò)逐層學(xué)到由簡單到復(fù)雜的特征(模式)庇勃,復(fù)雜模式是由簡單模式組合而成,比如Layer4的狗臉是由Layer3的幾何圖形組合而成槽驶,Layer3的幾何圖形是由Layer2的紋理組合而成责嚷,Layer2的紋理是由Layer1的邊緣組合而成,從特征圖上看的話掂铐,Layer4特征圖上一個(gè)點(diǎn)代表Layer3某種幾何圖形或表面的組合罕拂,Layer3特征圖上一個(gè)點(diǎn)代表Layer2某種紋理的組合,Layer2特征圖上一個(gè)點(diǎn)代表Layer1某種邊緣的組合全陨。
  3. 這種組合是一種相對靈活的方式在進(jìn)行爆班,不同的邊緣→不同紋理→不同幾何圖形和表面→不同的狗臉、不同的物體……辱姨,前面層模式的組合可以多種多樣蛋济,使后面層可以描述的模式也可以多種多樣,所以具有很強(qiáng)的表達(dá)能力炮叶,不是“死板”的模板碗旅,而是“靈活”的模板,泛化能力更強(qiáng)镜悉。
  4. 卷積神經(jīng)網(wǎng)絡(luò)真正使用時(shí)祟辟,還需要配合池化、激活函數(shù)等侣肄,以獲得更強(qiáng)的表達(dá)能力旧困,但模式蘊(yùn)含在卷積核中,如果沒有非線性激活函數(shù),網(wǎng)絡(luò)仍能學(xué)到模式吼具,但表達(dá)能力會(huì)下降僚纷,由論文《Systematic evaluation of CNN advances on the ImageNet》,在ImageNet上拗盒,使用調(diào)整后的caffenet怖竭,不使用非線性激活函數(shù)相比使用ReLU的性能會(huì)下降約8個(gè)百分點(diǎn),如下圖所示陡蝇。通過池化和激活函數(shù)的配合痊臭,可以看到復(fù)現(xiàn)出的每層學(xué)到的特征是非常單純的,狗登夫、人广匙、物體是清晰的,少有其他其他元素的干擾恼策,可見網(wǎng)絡(luò)學(xué)到了待檢測對象區(qū)別于其他對象的模式鸦致。
    Convolution

    Convolution

    卷積后大小 m_后 = m_原 - k_核 + 1

池化(下采樣)

?在每一次卷積的時(shí)候, 神經(jīng)層可能會(huì)無意地丟失一些信息. 這時(shí), 池化 (pooling) 就可以很好地解決這一問題. 也就是說在卷集的時(shí)候, 我們不壓縮長寬, 盡量地保留更多信息, 壓縮的工作就交給池化了,這樣的一項(xiàng)附加工作能夠很有效的提高準(zhǔn)確性.
? 池化(Pooling)是卷積神經(jīng)網(wǎng)絡(luò)中另一個(gè)重要的概念,它實(shí)際上是一種形式的降采樣涣楷。有多種不同形式的非線性池化函數(shù)蹋凝,而其中“最大池化(Max pooling)”是最為常見的。它是將輸入的圖像劃分為若干個(gè)矩形區(qū)域总棵,對每個(gè)子區(qū)域輸出最大值鳍寂。直覺上,這種機(jī)制能夠有效地原因在于情龄,在發(fā)現(xiàn)一個(gè)特征之后迄汛,它的精確位置遠(yuǎn)不及它和其他特征的相對位置的關(guān)系重要。池化層會(huì)不斷地減小數(shù)據(jù)的空間大小骤视,因此參數(shù)的數(shù)量和計(jì)算量也會(huì)下降鞍爱,這在一定程度上也控制了過擬合。通常來說专酗,CNN的卷積層之間都會(huì)周期性地插入池化層睹逃。
?池化層通常會(huì)分別作用于每個(gè)輸入的特征并減小其大小。當(dāng)前最常用形式的池化層是每隔2個(gè)元素從圖像劃分出2*2的區(qū)塊祷肯,然后對每個(gè)區(qū)塊中的4個(gè)數(shù)取最大值沉填。這將會(huì)減少75%的數(shù)據(jù)量。


MaxPooling


二佑笋、卷積神經(jīng)網(wǎng)絡(luò) Convolutional Neural Networks(CNN)

?卷積也就是說神經(jīng)網(wǎng)絡(luò)不再是對每個(gè)像素的輸入信息做處理了,而是圖片上每一小塊像素區(qū)域進(jìn)行處理, 這種做法加強(qiáng)了圖片信息的連續(xù)性. 使得神經(jīng)網(wǎng)絡(luò)能看到圖形, 而非一個(gè)點(diǎn). 這種做法同時(shí)也加深了神經(jīng)網(wǎng)絡(luò)對圖片的理解. 具體來說, 卷積神經(jīng)網(wǎng)絡(luò)有一個(gè)批量過濾器, 持續(xù)不斷的在圖片上滾動(dòng)收集圖片里的信息,每一次收集的時(shí)候都只是收集一小塊像素區(qū)域, 然后把收集來的信息進(jìn)行整理, 這時(shí)候整理出來的信息有了一些實(shí)際上的呈現(xiàn), 比如這時(shí)的神經(jīng)網(wǎng)絡(luò)能看到一些邊緣的圖片信息, 然后在以同樣的步驟, 用類似的批量過濾器掃過產(chǎn)生的這些邊緣信息, 神經(jīng)網(wǎng)絡(luò)從這些邊緣信息里面總結(jié)出更高層的信息結(jié)構(gòu),比如說總結(jié)的邊緣能夠畫出眼睛,鼻子等等. 再經(jīng)過一次過濾, 臉部的信息也從這些眼睛鼻子的信息中被總結(jié)出來. 最后我們再把這些信息套入幾層普通的全連接神經(jīng)層進(jìn)行分類, 這樣就能得到輸入的圖片能被分為哪一類的結(jié)果了.
?一張圖片,有長, 寬, 高 三個(gè)參數(shù). 這里的高指的是計(jì)算機(jī)用于產(chǎn)生顏色使用的信息. 如果是黑白照片的話, 高的單位就只有1, 如果是彩色照片, 就可能有紅綠藍(lán)三種顏色的信息, 這時(shí)的高度為3. 我們以彩色照片為例子. 過濾器就是影像中不斷移動(dòng)的東西, 他不斷在圖片收集小批小批的像素塊, 收集完所有信息后, 輸出的值, 我們可以理解成是一個(gè)高度更高,長和寬更小的”圖片”. 這個(gè)圖片里就能包含一些邊緣信息. 然后以同樣的步驟再進(jìn)行多次卷積, 將圖片的長寬再壓縮, 高度再增加, 就有了對輸入圖片更深的理解. 將壓縮,增高的信息嵌套在普通的分類神經(jīng)層上,我們就能對這種圖片進(jìn)行分類了.

包含卷積層的神經(jīng)網(wǎng)絡(luò)翼闹、擅長處理圖像
常見網(wǎng)絡(luò):LeNet、AlexNet蒋纬、VGG16猎荠、GoogleNet坚弱、ResNet

三、循環(huán)神經(jīng)網(wǎng)絡(luò) Recurrent Neural Networks(RNN)

序列數(shù)據(jù)

我們想象現(xiàn)在有一組序列數(shù)據(jù) data 0,1,2,3. 在當(dāng)預(yù)測 result0 的時(shí)候,我們基于的是 data0, 同樣在預(yù)測其他數(shù)據(jù)的時(shí)候, 我們也都只單單基于單個(gè)的數(shù)據(jù). 每次使用的神經(jīng)網(wǎng)絡(luò)都是同一個(gè) NN. 不過這些數(shù)據(jù)是有關(guān)聯(lián) 順序的 , 就像在廚房做菜, 醬料 A要比醬料 B 早放, 不然就串味了. 所以普通的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)并不能讓 NN 了解這些數(shù)據(jù)之間的關(guān)聯(lián).

處理序列數(shù)據(jù)的神經(jīng)網(wǎng)絡(luò)

那我們?nèi)绾巫寯?shù)據(jù)間的關(guān)聯(lián)也被 NN 加以分析呢? 想想我們?nèi)祟愂窃趺捶治龈鞣N事物的關(guān)聯(lián)吧, 最基本的方式,就是記住之前發(fā)生的事情. 那我們讓神經(jīng)網(wǎng)絡(luò)也具備這種記住之前發(fā)生的事的能力. 再分析 Data0 的時(shí)候, 我們把分析結(jié)果存入記憶. 然后當(dāng)分析 data1的時(shí)候, NN會(huì)產(chǎn)生新的記憶, 但是新記憶和老記憶是沒有聯(lián)系的. 我們就簡單的把老記憶調(diào)用過來, 一起分析. 如果繼續(xù)分析更多的有序數(shù)據(jù) , RNN就會(huì)把之前的記憶都累積起來, 一起分析.

再重復(fù)一遍剛才的流程, 不過這次是以加入一些數(shù)學(xué)方面的東西. 每次 RNN 運(yùn)算完之后都會(huì)產(chǎn)生一個(gè)對于當(dāng)前狀態(tài)的描述 , state. 我們用簡寫 S( t) 代替, 然后這個(gè) RNN開始分析 x(t+1) , 他會(huì)根據(jù) x(t+1)產(chǎn)生s(t+1), 不過此時(shí) y(t+1) 是由 s(t) 和 s(t+1) 共同創(chuàng)造的. 所以我們通彻匾。看到的 RNN 也可以表達(dá)成這種樣子.

為處理時(shí)序數(shù)據(jù)而設(shè)計(jì)的荒叶,例如一段文字或者語音
常見網(wǎng)絡(luò):長短期記憶(long short-term memory,LSTM)



典型的循環(huán)神經(jīng)網(wǎng)絡(luò)LeNet

LeNet網(wǎng)絡(luò)最早由紐約大學(xué)的Yann LeCun等人于1998年提出输虱,也稱LeNet5些楣,它是卷積神經(jīng)網(wǎng)絡(luò)的鼻祖,被譽(yù)為卷積神經(jīng)網(wǎng)絡(luò)的"Hello World"悼瓮。


LeNet

LeNet Structure
第一個(gè)卷積層
First Convolution Layer
第一個(gè)池化層
First Pooling Layer
第二個(gè)卷積層
Secong Convolution Layer
第二個(gè)池化層
Secong Pooling Layer
全連接卷積層
Fully Connected Convolution Layer
全連接層
Fully Connected Layer
全連接層(輸出層)
Fully Connected Layer(OutPut Layer)


Numpy

  • 關(guān)鍵字
方法 功能
array 創(chuàng)建數(shù)組
dtype 指定數(shù)據(jù)類型
zeros 創(chuàng)建數(shù)據(jù)全為0
ones 創(chuàng)建數(shù)據(jù)全為1
empty 創(chuàng)建數(shù)據(jù)接近0
arrange 按指定范圍創(chuàng)建數(shù)據(jù)
reshape 重構(gòu)
linspace 創(chuàng)建線段

mat與array區(qū)別

  • mat()函數(shù)與array()函數(shù)生成矩陣所需的數(shù)據(jù)格式有區(qū)別,mat()函數(shù)中數(shù)據(jù)可以為字符串以分號(;)分割艰猬,或者為列表形式以逗號(横堡,)分割。而array()函數(shù)中數(shù)據(jù)只能以(冠桃,)分割
  • mat()函數(shù)與array()函數(shù)生成的矩陣計(jì)算方式不同
    1.mat()函數(shù)中矩陣的乘積可以使用(星號) * 或 .dot()函數(shù)命贴,其結(jié)果相同。而矩陣對應(yīng)位置元素相乘需調(diào)用numpy.multiply()函數(shù)食听。
    2.array()函數(shù)中矩陣的乘積只能使用 .dot()函數(shù)胸蛛。而星號乘 (*)則表示矩陣對應(yīng)位置元素相乘,與numpy.multiply()函數(shù)結(jié)果相同樱报。
a = np.array([2,23,4])                           #  a = [2 23 4]
a = np.array([2,23,4],dtype=np.int)              #  a.dtype = int32
a = np.zeros((3,4))                              # 三行四列全零數(shù)組
a = np.ones((3,4))                               # 三行四列全一數(shù)組
a = np.arange(10,20,2)                           # a = [10, 12, 14, 16, 18]
a = np.arange(12).reshape((3,4))                 # a = [[0,1,2,3],[4,5,6,7],[8,9,10,11,]]
  • 運(yùn)算

+ - * / 運(yùn)算:為對應(yīng)位的運(yùn)算 算符兩側(cè)矩陣類型需相同
比較運(yùn)算: 輸出的是矩陣中每一位進(jìn)行比較運(yùn)算結(jié)果的矩陣
矩陣乘法運(yùn)算:a×b = a.dot(b)

  • 方法
a.shape()                    #獲取矩陣a的屬性
np.argmin(a)                 #矩陣a中最小元素的索引
np.argmax(a)                 #矩陣a中最大元素的索引
np.mean(a) or np.average(a)  #矩陣均值(a.mean() a.average())
np.average(a,weights = w)    #矩陣a按w加權(quán)均值
np.median()                  #中位數(shù)
np.cumsum()                  #累加
np.diff()                    #每項(xiàng)中后一項(xiàng)與前一項(xiàng)之差
np.nonzero()                 #矩陣中不為0的元素的坐標(biāo)
np.sort()                    #對每行從小到大排序
np.transpose(A)  = A.T       #轉(zhuǎn)置
np.clip(A,min,max)           #限幅  
np.flatten()                 #展開成一行
np.vstack(a,b)               #a,b按行合并
np.hstack(a,b)               #a,b按列合并
np.split(A,x,axis=0/1)       #a,b分割  0橫1縱(只能等量分割)
np.array_split()             #不等量分割
vsplit()/hsplit()            #橫/縱分割
  • 索引

A[a] : 第a行的所有元素
A[a][b:c] : a行b到c列的元素

  • 賦值

矩陣間使用等號賦值具有關(guān)聯(lián)性
使用b=a.copy()賦值沒有關(guān)聯(lián)性



Pandas

  • Series

索引在左邊葬项,值在右邊。自動(dòng)創(chuàng)建一個(gè)0到N-1(N為長度)的整數(shù)型索引迹蛤。

s = pd.Series([1,3,6,np.nan,44,1])
print(s)
"""
0     1.0
1     3.0
2     6.0
3     NaN
4    44.0
5     1.0
dtype: float64
"""
  • DataFrame

DataFrame是一個(gè)表格型的數(shù)據(jù)結(jié)構(gòu)民珍,它包含有一組有序的列,每列可以是不同的值類型(數(shù)值盗飒,字符串嚷量,布爾值等)。DataFrame既有行索引也有列索引逆趣, 它可以被看做由Series組成的大字典蝶溶。

df = pd.DataFrame(np.random.randn(6,4),index=dates,columns=['a','b','c','d'])
print(df)
"""
                  a         b         c         d
2016-01-01 -0.253065 -2.071051 -0.640515  0.613663
2016-01-02 -1.147178  1.532470  0.989255 -0.499761
2016-01-03  1.221656 -2.390171  1.862914  0.778070
2016-01-04  1.473877 -0.046419  0.610046  0.204672
2016-01-05 -1.584752 -0.700592  1.487264 -1.778293
2016-01-06  0.633675 -1.414157 -0.277066 -0.442545
"""



MNIST數(shù)據(jù)集格式轉(zhuǎn)換

將圖片從28×28擴(kuò)充為32×32

np.pad(xtrain, ((0,0), (2,2), (2,2), 'constant', constant_values=0)

數(shù)據(jù)類型轉(zhuǎn)換

x_train = xtrain.astype('float32')

數(shù)據(jù)正則化

xtrain /= 255

數(shù)據(jù)維度轉(zhuǎn)換([n, h, w, c])

x_train.reshape(x_train.shape[0], 32, 32, 1)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市宣渗,隨后出現(xiàn)的幾起案子抖所,更是在濱河造成了極大的恐慌,老刑警劉巖痕囱,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件部蛇,死亡現(xiàn)場離奇詭異,居然都是意外死亡咐蝇,警方通過查閱死者的電腦和手機(jī)涯鲁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進(jìn)店門巷查,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人抹腿,你說我怎么就攤上這事岛请。” “怎么了警绩?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵崇败,是天一觀的道長。 經(jīng)常有香客問我肩祥,道長后室,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任混狠,我火速辦了婚禮岸霹,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘将饺。我一直安慰自己贡避,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布予弧。 她就那樣靜靜地躺著刮吧,像睡著了一般。 火紅的嫁衣襯著肌膚如雪掖蛤。 梳的紋絲不亂的頭發(fā)上杀捻,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天,我揣著相機(jī)與錄音蚓庭,去河邊找鬼水醋。 笑死,一個(gè)胖子當(dāng)著我的面吹牛彪置,可吹牛的內(nèi)容都是我干的拄踪。 我是一名探鬼主播,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼拳魁,長吁一口氣:“原來是場噩夢啊……” “哼惶桐!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起潘懊,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤姚糊,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后授舟,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體救恨,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年释树,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了肠槽。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片擎淤。...
    茶點(diǎn)故事閱讀 39,965評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖秸仙,靈堂內(nèi)的尸體忽然破棺而出嘴拢,到底是詐尸還是另有隱情,我是刑警寧澤寂纪,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布席吴,位于F島的核電站,受9級特大地震影響捞蛋,放射性物質(zhì)發(fā)生泄漏孝冒。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一拟杉、第九天 我趴在偏房一處隱蔽的房頂上張望庄涡。 院中可真熱鬧,春花似錦捣域、人聲如沸啼染。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至卦洽,卻和暖如春贞言,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背阀蒂。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工该窗, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蚤霞。 一個(gè)月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓酗失,卻偏偏與公主長得像,于是被迫代替她去往敵國和親昧绣。 傳聞我的和親對象是個(gè)殘疾皇子规肴,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評論 2 355

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