神經(jīng)網(wǎng)絡(luò)和深度學(xué)習(xí)

一、深度學(xué)習(xí)概論

1.1 什么是神經(jīng)網(wǎng)絡(luò)

神經(jīng)元代表了線性修正單元函數(shù)

1.2用神經(jīng)網(wǎng)絡(luò)進(jìn)行深度學(xué)習(xí)

監(jiān)督學(xué)習(xí):已經(jīng)有數(shù)據(jù)集,知道相應(yīng)的輸入產(chǎn)生怎樣的輸出,找出輸入輸出這種對(duì)應(yīng)的關(guān)系

監(jiān)督學(xué)習(xí)問(wèn)題被分成回歸和分類兩類

CNN通常被用來(lái)處理圖像;RNN通常被用來(lái)處理一維序列數(shù)據(jù)

結(jié)構(gòu)數(shù)據(jù):有確切的意義,而非結(jié)構(gòu)數(shù)據(jù)沒(méi)有,比如,音頻,文章等等

1.3 為什么深度學(xué)習(xí)會(huì)興起

數(shù)據(jù)集增多;計(jì)算能力增強(qiáng);算法優(yōu)化

analogy:比喻;smart grid:智能電網(wǎng);diagram:圖;iterate:重復(fù);demographic:人口統(tǒng)計(jì);

二、神經(jīng)網(wǎng)絡(luò)基礎(chǔ)

2.1 二分分類

神經(jīng)網(wǎng)絡(luò)的計(jì)算過(guò)程通常有正向傳播過(guò)程和反向傳播過(guò)程(為什么)

計(jì)算機(jī)存儲(chǔ)一張圖片,以紅綠藍(lán)三種矩陣

2.2 邏輯回歸

用在監(jiān)督學(xué)習(xí)問(wèn)題;輸出y是0或1;

為什么要對(duì)wx+b進(jìn)行sigmoid函數(shù)化(因?yàn)閣x+b等價(jià)于線性函數(shù),你不能確保輸出是0-1的一個(gè)數(shù))

2.3 邏輯回歸損失函數(shù)

為了訓(xùn)練w和b,提出成本函數(shù);損失函數(shù)針對(duì)單個(gè)訓(xùn)練樣本,成本函數(shù)基于總體訓(xùn)練樣本

discrepancy:差異;

2.4 梯度下降法

為什么使用邏輯回歸的特定成本函數(shù)(因?yàn)槭峭购瘮?shù));梯度下降(從初始點(diǎn)開(kāi)始往最陡的方向走一步)

w = w - \alpha ?* (d J(w, b)/d w);b = b -?\alpha ?* (d J(w, b)/d b);(實(shí)際更新參數(shù)時(shí)進(jìn)行的操作)

2.5 導(dǎo)數(shù)

函數(shù)的導(dǎo)數(shù)就是函數(shù)的斜率,而函數(shù)的斜率在不同的點(diǎn)是不同的

derivatives:導(dǎo)數(shù);intuition:直觀;

2.6 計(jì)算圖

如何利用流程圖來(lái)計(jì)算導(dǎo)數(shù)?

2.7 邏輯回歸的梯度下降法

?如何使用導(dǎo)數(shù)流程圖來(lái)計(jì)算梯度?

運(yùn)用向量化技術(shù)來(lái)解決顯示使用循環(huán)帶來(lái)的低效

2.8 向量化

numpy.dot(w, x);經(jīng)驗(yàn)法則:只要有其他可能,就不要使用顯示for循環(huán);盡量使用內(nèi)置函數(shù)或者其他方法去計(jì)算循環(huán)

2.9 python中的廣播

對(duì)于兩個(gè)不匹配的矩陣,會(huì)拓展其中一個(gè)維數(shù)少的矩陣,從而實(shí)現(xiàn)兩個(gè)矩陣的運(yùn)算

2.10 關(guān)于python/numpy向量的說(shuō)明

在神經(jīng)網(wǎng)絡(luò)編程中,不要使用(n,)這樣秩為1的數(shù)組(和行向量、列向量不一樣);可以隨意使用assert語(yǔ)句;也可采用reshape()方法

第二周測(cè)驗(yàn):

神經(jīng)元的計(jì)算過(guò)程先計(jì)算z = w*x + b,再將z作為激活函數(shù)的輸入,然后產(chǎn)生輸出;

element-wise:按元素

區(qū)分矩陣乘法(np.dot(a, b))和矩陣的元素相乘(a * b)

ndarray的shape屬性可以獲取ndarray的形狀;ndarray.shape[0]輸出ndarray的行數(shù);ndarray.shape[1]輸出ndarray的列數(shù)(針對(duì)array是(m, n)這種類型而言)

plt.imshow()沒(méi)反應(yīng),不顯示圖像?

因?yàn)閜lt.imshow(image)只是對(duì)該圖片做了一些處理,如要展示需plt.show()

np.squeeze()函數(shù)用法:從數(shù)組的形狀中刪除單維條目,即把shape中為1的維度去掉

ndarray.reshape()的用法:

reshape(m,-1) #改變維度為m行、列數(shù)自動(dòng)計(jì)算

reshape(-1,m) #改變維度為行數(shù)自動(dòng)計(jì)算、m列

np.mean()函數(shù)的用法:

np.mean(array):對(duì)矩陣中的所有元素求均值;np.mean(array, 0)對(duì)各列求均值;np.mean(array, 1):對(duì)各行求均值

pycharm中注釋多行代碼的快捷鍵:ctrl + /(取消也是)

train_set_y[:,index](其中shape(1, 209))表示為index的數(shù)組,與train_set_y[0][index]數(shù)值不同

神經(jīng)網(wǎng)絡(luò)的搭建過(guò)程:

1.數(shù)據(jù)的加載:求得訓(xùn)練集和測(cè)試集中圖片數(shù)量,圖片的高度和寬度,而后進(jìn)行數(shù)據(jù)的標(biāo)準(zhǔn)化

2.構(gòu)建sigmoid函數(shù)

3.初始化參數(shù)w, b為0

4.計(jì)算正向傳播過(guò)程(成本函數(shù))和反向傳播過(guò)程(dw和db)

5.通過(guò)優(yōu)化成本函數(shù)來(lái)更新w和b

6.預(yù)測(cè)數(shù)據(jù)集的標(biāo)簽,通過(guò)計(jì)算\hat{y} 的值,并進(jìn)行比較來(lái)確實(shí)是否為1

三、淺層神經(jīng)網(wǎng)絡(luò)

3.1 神經(jīng)網(wǎng)絡(luò)概覽

(i)圓括號(hào)代表i樣本,[i]方括號(hào)代表i層

3.2 神經(jīng)網(wǎng)絡(luò)表示

“隱藏層”:在訓(xùn)練集中,這些中間節(jié)點(diǎn)的真正數(shù)值我們是不知道的

符號(hào)約定中,神經(jīng)網(wǎng)絡(luò)的層數(shù)是不計(jì)入輸入層的

3.3 多個(gè)例子的向量化

如何將不同訓(xùn)練樣本向量化?(如何將訓(xùn)練樣本橫向堆疊起來(lái)構(gòu)成矩陣X)

3.4 激活函數(shù)

a = tanh(z) :有類是數(shù)據(jù)中心化的效果;tanh函數(shù)在大部分情況下都比sigmoid函數(shù)優(yōu)越,一個(gè)例外是輸出層,當(dāng)我們希望輸出在0,1之間,如二元分類時(shí),sigmoid函數(shù)所表現(xiàn)的效果會(huì)更好

不同層的激活函數(shù)可以不一樣;

sigmoid函數(shù)和tanh函數(shù)共有的缺點(diǎn)如果輸入的z非常大或者非常小時(shí),導(dǎo)數(shù)的梯度可能就很?。ń咏?),而這會(huì)拖慢梯度下降算法

Relu函數(shù):盡管不可微,但因?yàn)榇蟛糠智闆r下z != 0,且你可以在z = 0 時(shí)對(duì)導(dǎo)數(shù)進(jìn)行賦值0或1來(lái)處理這種特殊情況

選擇激活函數(shù)的經(jīng)驗(yàn)法則:

如果你的輸出值是0和1,如果你在做二元分類,那么sigmoid函數(shù)非常適合輸出層的激活函數(shù),然后其他單元的激活函數(shù)采用Relu函數(shù)

Relu函數(shù)比tanh和sigmoid好的一個(gè)主要原因:它沒(méi)有斜率接近于0 的點(diǎn),從而不會(huì)產(chǎn)生減慢學(xué)習(xí)速度的效應(yīng)

3.5 為什么神經(jīng)網(wǎng)絡(luò)需要非線性激活函數(shù)

如果不用激活函數(shù),g[z] = z,有時(shí)稱為線性激活函數(shù),此時(shí)的輸出不過(guò)是輸入特征x的線性組合,此時(shí)無(wú)論你的神經(jīng)網(wǎng)絡(luò)有多少層,一直做的就是計(jì)算線性激活函數(shù),而這和去掉所有隱藏層的效果是差不多的

大部分情況下隱藏層不能使用線性激活函數(shù),除了與壓縮有關(guān)的特殊情況;在回歸問(wèn)題上,如預(yù)測(cè)房?jī)r(jià),可以在輸出層嘗試線性激活函數(shù)

3.6 神經(jīng)網(wǎng)絡(luò)的梯度下降法

梯度下降算法的具體實(shí)現(xiàn)和如何處理單隱層的神經(jīng)網(wǎng)絡(luò)

在訓(xùn)練神經(jīng)網(wǎng)絡(luò)時(shí),隨機(jī)初始化參數(shù)很重要,而不是全部初始化0

3.7 隨機(jī)初始化

對(duì)于邏輯回歸,可以將權(quán)重參數(shù)初始化為0,在神經(jīng)網(wǎng)絡(luò)中如果將權(quán)重參數(shù)初始為0,則使用梯度下降算法將完全無(wú)效(因?yàn)闊o(wú)論輸入是怎樣的,隱藏層的a[1]1和a[1]2是一樣的;在計(jì)算反向傳播時(shí),出于對(duì)稱性,dz[1]1和dz[1]2也是一樣的)

對(duì)權(quán)重參數(shù)的隨機(jī)初始化盡量小而不是大,因?yàn)閷?duì)一些激活函數(shù)而言,會(huì)導(dǎo)致落入平緩區(qū)域,導(dǎo)致梯度下降算法的效果不太好

測(cè)驗(yàn):

denote:表示;symmetry:對(duì)稱;accomplish:完成;divergence:發(fā)散;padding:填充

np.meshgrid():https://blog.csdn.net/littlehaes/article/details/83543459

x[m, n]引用矩陣中某一段數(shù)據(jù)集,m代表第m維,n代表在第m維中取第n個(gè)數(shù)據(jù);

plt.cm.Spectral的作用在于在畫(huà)圖時(shí)為不同類別的樣本分別分配不同的顏色;

sklearn.linear_model.LogisticRegression參數(shù)說(shuō)明https://www.cnblogs.com/wjq-Law/p/9779657.html

np.random.seed():設(shè)置的seed()值僅一次有效;如果使用相同的seed( )值,則每次生成的隨即數(shù)都相同

np.zeros():http://www.itdecent.cn/p/18ff98f7126b

np.arange():http://www.itdecent.cn/p/bf1ccfb8c518

np.sum():https://blog.csdn.net/leekingsen/article/details/76242244

np.round():四舍五入化數(shù)字

編程:

1.初始化神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)(如要幾層,隱層單元要幾個(gè)等等)

2.初始化參數(shù)w, b

3.前向傳播的計(jì)算

4.計(jì)算成本函數(shù)

5.反向傳播的計(jì)算

6.更新參數(shù)

7.整合功能

8.預(yù)測(cè)的實(shí)現(xiàn),在主函數(shù)實(shí)現(xiàn)預(yù)測(cè)的準(zhǔn)確性

四、深層神經(jīng)網(wǎng)絡(luò)

4.1 深層神經(jīng)網(wǎng)絡(luò)

什么是深層神經(jīng)網(wǎng)絡(luò)和神經(jīng)網(wǎng)絡(luò)中的術(shù)語(yǔ)表示;

事實(shí)上,我們?cè)趯?shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)的過(guò)程中,想增加程序無(wú)錯(cuò)的概率的其中一個(gè)方法是需要非常仔細(xì)和系統(tǒng)化的思考矩陣的維數(shù)

W[l] = (n[l], n[l-1]);b[l] = (n[l], 1),dW和W[l]、db和b[l]、z和a維度相同(向量化之前)向量化之后,b[l]不變但是因?yàn)閜ython中的廣播原則,會(huì)被復(fù)制成(n[l], m)

為什么深度神經(jīng)網(wǎng)絡(luò)效果良好?

因?yàn)閷?duì)于一些復(fù)雜任務(wù),可以通過(guò)層數(shù)逐漸提高難度(如人臉識(shí)別中,前面的層數(shù)可以用來(lái)處理邊緣探測(cè)器的任務(wù),而后逐漸擴(kuò)大區(qū)域,找到鼻子,而后合成臉單獨(dú))(從簡(jiǎn)單到復(fù)雜)(如語(yǔ)音識(shí)別中,前面的層數(shù)可以用來(lái)處理音位,而后逐漸處理單詞、短語(yǔ)、句子等等)

電路理論:如果要計(jì)算m個(gè)樣本的異或,采取深度神經(jīng)網(wǎng)絡(luò)的話,由于有不同的隱層,所有隱層單元數(shù)不會(huì)很多,采取淺層神經(jīng)網(wǎng)絡(luò)的話,單隱層下為了實(shí)現(xiàn)目標(biāo)會(huì)導(dǎo)致隱層單元數(shù)呈指數(shù)級(jí)增長(zhǎng)

circuit:電路;empirical:經(jīng)驗(yàn)的

邊緣探測(cè)器相對(duì)來(lái)說(shuō)都是針對(duì)照片中非常小塊的面積,面部探測(cè)器呢則會(huì)針對(duì)相對(duì)較大的區(qū)域

測(cè)驗(yàn):

intermediate:中間的;circuit:電路;

python中的/ //的區(qū)別:https://www.cnblogs.com/hezhiyao/p/8066619.html

numpy數(shù)組的屬性:https://www.cnblogs.com/gl1573/p/10531421.html

np.asarray():http://www.itdecent.cn/p/2303467ea896

plt.rcParams(rc配置文件來(lái)自定義圖形的各種默認(rèn)屬性):https://blog.csdn.net/weixin_39010770/article/details/88200298

np.linspace:https://blog.csdn.net/Asher117/article/details/87855493

ndimage.imread:https://blog.csdn.net/zhuzuwei/article/details/78018053

關(guān)于scipy1.3.0中被棄用的imread,imresize的替代方案:https://blog.csdn.net/weekdawn/article/details/97777747

https://www.cnblogs.com/douzujun/p/10280213.html

?著作權(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)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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