1.機(jī)器學(xué)習(xí)中數(shù)學(xué)基礎(chǔ)
二次型矩陣:
https://wenku.baidu.com/view/b3a01ed2b9f3f90f76c61ba2.html
利用矩陣的寫法可以很方便的表示

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

梯度相關(guān):https://www.cnblogs.com/pinard/p/5970503.html
概率部分
貝葉斯實(shí)例:

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ù):


兩種損失函數(shù)的理解
感知器
非線性分割中的優(yōu)勢(shì)



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


激活函數(shù):對(duì)信號(hào)做篩選,看要不要讓一些打斷你的信號(hào)過去。
BP算法
需要利用這個(gè)算法去傳遞每一層中的誤差來不斷修正他。
正向傳播舉例:我們需要去做很多題目,根據(jù)她的錯(cuò)誤等來指導(dǎo)自己的學(xué)習(xí)。
反向傳播舉例:根據(jù)得出的結(jié)果,去找為什么犯錯(cuò),去解決這個(gè)問題。

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


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

我們先自己隨便設(shè)定值,去看差距(就像先做一套高考題去看我與標(biāo)準(zhǔn)答案的差距再做修正)
根據(jù)求導(dǎo)的鏈?zhǔn)椒▌t去求導(dǎo)




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)算量非常大。

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

- 數(shù)據(jù)層
有關(guān)輸入數(shù)據(jù)的幾種操作方式:
- 歸一
- 去均值(例如我們?nèi)^(qū)分很多顏色,如果他主要有偏紅的顏色,我們?nèi)チ司稻陀姓胸?fù))
- PCA/白化
https://blog.csdn.net/zkp_987/article/details/78684855

一般對(duì)于圖像而言,我們就只用到第一種。因?yàn)椴恍枰ゾ?。例?772773(像素點(diǎn)先是277*277的矩陣,3是三個(gè)顏色通道RGB)
數(shù)據(jù)層處理完畢之后來到CONV層(卷積計(jì)算層)
- 卷積層
卷積計(jì)算層:
- depth理解為:有多少人去看了這個(gè)圖片。要有大家的意見匯總才能有意義才能看到東西。
- 步長(zhǎng):每個(gè)人看到的是一個(gè)窗口,要來利用窗口的滑動(dòng),步長(zhǎng)指窗口滑動(dòng)多少。
- 填充值:例如我是一個(gè)32323 我現(xiàn)在用4*4的窗口來看,不能剛好從最左到最右,所以我們需要去補(bǔ)0.
不斷去滑動(dòng)。
5個(gè)小朋友,每個(gè)人都有一個(gè)世界觀,第1位小朋友便用她的世界觀(她的w)去看第一個(gè)3*3的窗口,然后利用窗口


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


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




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

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

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




數(shù)據(jù)量大可以減緩過擬合。
正則化與Dropout(?不太明白)
用來約束和緩解過擬合。l1,l2也是一些正則化方式。
Dropout是指隨機(jī)失活,用了之后,比如dropout為0.5

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í)候去。

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


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

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

框架示例


caffe使用方式

-
數(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
-
激勵(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)重。以方便重新加載。


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


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


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

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

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

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


補(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

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



placeholder容器,保存圖片數(shù)據(jù),參數(shù)變量在variable。
padding指填充。以及Tensorflow里面參數(shù)參考見:
https://blog.csdn.net/jacke121/article/details/78867082
一般我們把dropout用在全連接層。



