Deep Learning

1.機(jī)器學(xué)習(xí)中數(shù)學(xué)基礎(chǔ)

二次型矩陣:

https://wenku.baidu.com/view/b3a01ed2b9f3f90f76c61ba2.html

利用矩陣的寫法可以很方便的表示


image.png

泰勒級(jí)數(shù)

image.png

梯度相關(guān):https://www.cnblogs.com/pinard/p/5970503.html

概率部分

貝葉斯實(shí)例:


image.png

https://blog.csdn.net/SugarAnnie/article/details/78951033

特征值與特征向量:
矩陣部分知識(shí)補(bǔ)充:
http://www.sohu.com/a/154654789_465975
https://blog.csdn.net/liangjun_feng/article/details/78457377
https://www.cnblogs.com/Dumblidor/p/5760606.html

PCA:

降維為了讓剩下的行之間方差盡可能大,讓他們的相關(guān)性盡可能的小。(目的:讓數(shù)據(jù)量變少,同時(shí)也保留住原始的信息)
https://blog.csdn.net/google19890102/article/details/27969459
PCA本質(zhì):協(xié)方差矩陣的對(duì)角化

一般約束優(yōu)化:

凸優(yōu)化問題
凸函數(shù)中的局部最優(yōu)解便是全局最優(yōu)解

2. 從線性分類器到人工神經(jīng)網(wǎng)絡(luò)

線性分類器得分函數(shù):

image.png

image.png

兩種損失函數(shù)的理解

感知器

非線性分割中的優(yōu)勢(shì)


image.png
image.png

image.png

傳遞函數(shù)

如果每一層之間都是一些線性的變化,那其實(shí)不論多少層其實(shí)都可以用一層來表達(dá),所以我們會(huì)引入一些非線性的函數(shù)。


image.png
image.png

激活函數(shù):對(duì)信號(hào)做篩選,看要不要讓一些打斷你的信號(hào)過去。

BP算法

需要利用這個(gè)算法去傳遞每一層中的誤差來不斷修正他。
正向傳播舉例:我們需要去做很多題目,根據(jù)她的錯(cuò)誤等來指導(dǎo)自己的學(xué)習(xí)。
反向傳播舉例:根據(jù)得出的結(jié)果,去找為什么犯錯(cuò),去解決這個(gè)問題。


image.png

把d1-dj看作標(biāo)準(zhǔn)答案。
利用l2 loss(對(duì)應(yīng)的差值)來判斷他們的差值。1/2只是為了計(jì)算方便。去掉偏執(zhí)項(xiàng)b也是為了計(jì)算簡(jiǎn)便。


image.png
image.png

把這個(gè)表示出來之后我們需要去求誤差的最小值。

例子:

image.png

我們先自己隨便設(shè)定值,去看差距(就像先做一套高考題去看我與標(biāo)準(zhǔn)答案的差距再做修正)

根據(jù)求導(dǎo)的鏈?zhǔn)椒▌t去求導(dǎo)


image.png

image.png
image.png
image.png

BP算法用來的來偏導(dǎo),我們利用這個(gè)偏導(dǎo)去修正我們的誤差。

百度Tensorflow playground

損失函數(shù)與傳遞函數(shù)一些分類與理解

https://blog.csdn.net/u012162613/article/details/44239919

sigmod函數(shù)的理解:
https://blog.csdn.net/u014422406/article/details/52805924

3.卷積神經(jīng)網(wǎng)絡(luò)

https://blog.csdn.net/qq_25762497/article/details/51052861
為什么要有卷積神經(jīng)網(wǎng)絡(luò),因?yàn)槿绻挥镁矸e的話如果我們?nèi)ヌ幚韴D像,那么w會(huì)非常多,運(yùn)算量非常大。

image.png

全連接層是指,上一層會(huì)與下一層中的每個(gè)層都有聯(lián)系(w)


image.png

- 數(shù)據(jù)層

有關(guān)輸入數(shù)據(jù)的幾種操作方式:

  1. 歸一
  2. 去均值(例如我們?nèi)^(qū)分很多顏色,如果他主要有偏紅的顏色,我們?nèi)チ司稻陀姓胸?fù))
  3. PCA/白化
    https://blog.csdn.net/zkp_987/article/details/78684855

image.png

一般對(duì)于圖像而言,我們就只用到第一種。因?yàn)椴恍枰ゾ?。例?772773(像素點(diǎn)先是277*277的矩陣,3是三個(gè)顏色通道RGB)

數(shù)據(jù)層處理完畢之后來到CONV層(卷積計(jì)算層)

- 卷積層

卷積計(jì)算層:

  1. depth理解為:有多少人去看了這個(gè)圖片。要有大家的意見匯總才能有意義才能看到東西。
  2. 步長(zhǎng):每個(gè)人看到的是一個(gè)窗口,要來利用窗口的滑動(dòng),步長(zhǎng)指窗口滑動(dòng)多少。
  3. 填充值:例如我是一個(gè)32323 我現(xiàn)在用4*4的窗口來看,不能剛好從最左到最右,所以我們需要去補(bǔ)0.
    不斷去滑動(dòng)。

5個(gè)小朋友,每個(gè)人都有一個(gè)世界觀,第1位小朋友便用她的世界觀(她的w)去看第一個(gè)3*3的窗口,然后利用窗口


image.png
image.png

對(duì)應(yīng)區(qū)域?qū)?yīng)的數(shù)相乘加和。(有一些會(huì)加一個(gè)偏執(zhí)項(xiàng))


image.png

image.png

- 激勵(lì)層

看卷積層讀到的信號(hào)是否值得往下傳,以及按什么比例往下傳。相當(dāng)于之前是5個(gè)下屬,他們給你反饋了意見,你不一定全都聽,需要判斷。


image.png
image.png
image.png

image.png

- 池化層

作下采樣:往下采樣,保存圖片中的大量信息。

相當(dāng)于找一個(gè)小朋友來總結(jié)這幾個(gè)要點(diǎn),依舊去看每個(gè)小塊,取出每個(gè)小塊最重要的東西。依舊是一個(gè)窗口在滑動(dòng),看你需要降到什么程度。
1.max:看最大的信息
2.avg:用平均數(shù)據(jù)

- 全連接層

image.png

左邊是小朋友看的東西,右邊是小朋友給的評(píng)價(jià)。


image.png

之后是小朋友的領(lǐng)導(dǎo)去看,依次類推。


image.png
image.png

image.png
image.png

數(shù)據(jù)量大可以減緩過擬合。

正則化與Dropout(?不太明白)

用來約束和緩解過擬合。l1,l2也是一些正則化方式。

Dropout是指隨機(jī)失活,用了之后,比如dropout為0.5


image.png

u1生成一個(gè)隨機(jī)數(shù)組去取舍,把小于0.5的部分都留下來。下來是他的數(shù)學(xué)期望。將這些保留下來的數(shù)字與H1去做點(diǎn)乘。

我們需要預(yù)測(cè)的時(shí)候結(jié)果快,所以我們預(yù)測(cè)的時(shí)候就不要去算p,把這個(gè)p給放在模型訓(xùn)練的時(shí)候去。

image.png

對(duì)于dropout的理解:
我們需要讓神經(jīng)網(wǎng)絡(luò)有一定的泛化能力,因?yàn)槭怯幸徊糠值娜哂嗟男畔ⅰ?/p>

image.png

image.png

96個(gè)小朋友,按照一個(gè)1111的窗口來滑動(dòng),拿到5555的數(shù)據(jù)。

image.png

1111的窗口滑動(dòng),步長(zhǎng)為0,補(bǔ)償0.下采樣池化按照33的塊每次滑動(dòng)2步。
image.png

框架示例

image.png

image.png

caffe使用方式

image.png
  • 數(shù)據(jù)層
    bottom表示從哪一層讀,top表示輸出給哪一層。name很重要,很多時(shí)候用別人的模型的時(shí)候是需要改這個(gè)name的。type:指當(dāng)前層是什么層次,此時(shí)是數(shù)據(jù)層。source指定數(shù)據(jù)來源,batch-size指每次丟入64張圖片做一輪的處理和迭代。scale:相當(dāng)于歸一化,做一個(gè)縮放。


    mei yi c
  • 卷積層
    bottom用到data,輸出conv1。

caffe當(dāng)中學(xué)習(xí)率有兩個(gè),全局學(xué)習(xí)率和每一層學(xué)習(xí)率。最終的學(xué)習(xí)率是由每一層的學(xué)習(xí)率全局的。因?yàn)檫@層有w和b,有偏執(zhí)項(xiàng),相當(dāng)于是把w和b獨(dú)立給了這兩個(gè)blobslr。分別指w和b的學(xué)習(xí)率。
numoutput指:相當(dāng)于上節(jié)課的depth,多少個(gè)小朋友多少個(gè)神經(jīng)元。有多少的卷積和,相當(dāng)于有多少的小朋友去看。
kernelsize:滑動(dòng)窗口大小5
%
stride:滑動(dòng)步長(zhǎng)
weightfiller與biasfiller是去初始化w和b的權(quán)重。定義的是幾種初始化的方式。

image.png
  • 池化層


    image.png
  • 全連接層


    image.png
  • 激勵(lì)層


    image.png

有些時(shí)候我們用別人的模型的時(shí)候可以把前面層次的學(xué)習(xí)率調(diào)低(因?yàn)樗麄円呀?jīng)做得很完善了)我們只需要調(diào)整后面的

在這里去定義全局的學(xué)習(xí)率。iter和interval分別表示訓(xùn)練集要訓(xùn)練多少輪和驗(yàn)證集需要多少輪。lr-policy表示用什么方式去做優(yōu)化,此時(shí)表示的step,梯度下山法。stepsize:步長(zhǎng),display指多少輪之后做一次信息的展示。snapshot:害怕有服務(wù)器斷電的情況,保留狀態(tài),表示每過1w輪保存一次權(quán)重。以方便重新加載。

image.png
image.png

我們需要修改數(shù)據(jù)源,改名字,換個(gè)數(shù)。


image.png
image.png

finetuning 微調(diào)
一個(gè)示例:
http://www.cnblogs.com/louyihang-loves-baiyan/p/5038758.html

python里面的步驟

image.png
image.png

在寫prototxt。其中l(wèi)mdb指數(shù)據(jù)庫(kù)類型


image.png

一個(gè)py的預(yù)測(cè)示例


image.png

可視化網(wǎng)絡(luò)結(jié)構(gòu)


image.png

solver、deploy、train_val三個(gè)prototxt的一些區(qū)別和解釋參考
http://lib.csdn.net/article/aiframework/62856

Tensorflow使用方式

image.png
image.png

補(bǔ)充np的一些知識(shí)

import numpy as np
b = np.array([[[1,2,3],[4,5,6],[7,8,9]],[[0,1,1],[0,5,6],[7,8,9]],[[1,2,1],[1,5,1],[7,8,9]]])
print(b)
a=b.shape#指維度,從里面往外面看,看逗號(hào)
print(a)
c=b.sum(axis=0)
d=b.sum(axis=1)
e=b.sum(axis=2)
print(c)
print()
print(d)
print()

-------------
[[[1 2 3]
  [4 5 6]
  [7 8 9]]

 [[0 1 1]
  [0 5 6]
  [7 8 9]]

 [[1 2 1]
  [1 5 1]
  [7 8 9]]]

(3, 3, 3)

[[ 2  5  5]
 [ 5 15 13]
 [21 24 27]]

[[12 15 18]
 [ 7 14 16]
 [ 9 15 11]]

[[ 6 15 24]
 [ 2 11 24]
 [ 4  7 24]]
axis主要看shape,shape是[2,4,3]
axis為0是加最外面的2個(gè),得出結(jié)果4,3
axis為1是加最中間的4個(gè),得出結(jié)果2,3
axis為2是加最里面的3個(gè),得出結(jié)果2,3

image.png

21的矩陣,12的矩陣沒問題,主要是看shape。[[3,3]]最外面是1個(gè),里面2個(gè)3

image.png

image.png
image.png

placeholder容器,保存圖片數(shù)據(jù),參數(shù)變量在variable。
padding指填充。以及Tensorflow里面參數(shù)參考見:
https://blog.csdn.net/jacke121/article/details/78867082

一般我們把dropout用在全連接層。

MxNet

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容