Andrew Ng 深度学习笔记-01-week2-课程
一、專業(yè)詞匯:
neural ?network programming ? ? 神經(jīng)網(wǎng)絡(luò)編程
implement a neural network ? ? ? 構(gòu)建神經(jīng)網(wǎng)絡(luò)
forward pass/forward propagation step ??正向傳播
backward pass/backword propagation step 反向傳播
logistics regression ? ? logistic回歸
binary classification ? ? 二分分類
dimension ?維度
input ?feature ?vector ?輸入的特征向量
classifier ? ?分類器
training sets ?訓(xùn)練集
training examples ?訓(xùn)練樣本
transpose ? 轉(zhuǎn)置
matrix ? 矩陣 ? ?vector 向量?
supervised learning 監(jiān)督學(xué)習(xí)
gradient descent algorithm 梯度下降法
the global optimum ?全局最優(yōu)解
?calculus ?微積分
derivatives 導(dǎo)數(shù)
slope 斜率
vectorization 向量化
scaleable deep learning 可擴展深度學(xué)習(xí)
graphics processing unit ?GPU ?圖像處理單元 ?CPU和GPU均有并行化的指令 統(tǒng)稱SIMD,即 single ?instruction multiple data ?單指令流多數(shù)據(jù)流
?parallelization ? instructions ? ?并行化指令
二、編程技巧:
盡量不要直接使用for循環(huán),可能存在數(shù)量巨大的數(shù)據(jù)集,建議使用向量化技術(shù),即使用向量化技術(shù)擺脫for循環(huán)
X.shape ?輸出矩陣X的維度
由于都是計算的J對其他變量的導(dǎo)數(shù),所以用dw表示dJ對w的導(dǎo)數(shù)
?Z=np.dot(W,x) ?通過向量化計算W*x
?類似的np. 即Python中的numpy能夠充分利用并行化:np.exp(v) ?np.log(v) ?np.maximum(v,0) .......
?u=np.zeros((n,1)) ?生成n個包含一個元素0的矩陣
?cal=A.sum(axis=0) ? 代表將A矩陣中的元素進行豎直相加 ? 如果是水平軸,則axis=1
?在編寫時,當(dāng)不完全確定是什么矩陣、不確定矩陣的尺寸時,使用reshape,確保其是正確的列向量或行向量
廣播的應(yīng)用:
一個列向量+一個數(shù),python會自動把實數(shù)擴展為相應(yīng)的列向量(進行相應(yīng)的水平復(fù)制或者垂直復(fù)制):
例如:
?
?編程時容易出現(xiàn)的錯誤:
盡量不使用秩為1的數(shù)組a(既不是行向量,也不是列向量,a=a的轉(zhuǎn)置,a和a的轉(zhuǎn)置的內(nèi)積是一個數(shù))
應(yīng)使用如下類似的矩陣:(將(n,1)看做列向量,(1,n)看做行向量)
編寫時可以加類似如下的聲明:
?
當(dāng)發(fā)現(xiàn)了秩為1的數(shù)組時,可以使用reshape將其轉(zhuǎn)化為向量:
a=a.reshape((5,1))
三、思維:
logistic回歸:用于二分分類的算法
例子:用y表示一個預(yù)測的圖片中是不是包含貓,y表示結(jié)果,1表示是,0表示不是
? ? ? ? ? 例如用一個X表示一個圖片亮度的像素值,假如是64*64,則X的維度為:64*64*3 ?
二分分類問題中,目標(biāo)是訓(xùn)練一個分類器,這個分類器 以圖片的特征向量x作為輸入,輸出結(jié)果y(0或1)
訓(xùn)練樣本(i)對應(yīng)的預(yù)測值是y^(i)
?其中的w、x都是n維列向量:
?
loss函數(shù)作用于單個樣本
cost函數(shù)J(w,b)作用于整個訓(xùn)練集
需要找到更合適的w,b 使得cost函數(shù)盡可能小
需要使用初始值初始化w和b ,對于logistic 回歸而言,幾乎任意的初始化方法都有效,雖然一般會進行初始化為0的操作,但在此不進行這樣的初始化
梯度下降法的做法:從初始點開始,朝著最陡的下坡方向走,經(jīng)過多次迭代,最終收斂到全局的最優(yōu)解
?先忽略b,做w的圖像:
?
學(xué)習(xí)率控制每一次的迭代
在w函數(shù)的右側(cè),導(dǎo)數(shù)是正的,w不斷減少,在左邊,導(dǎo)數(shù)是負(fù)的,w不斷增加
?函數(shù)的導(dǎo)數(shù)即為函數(shù)的斜率,一次函數(shù)中為高/寬,其他函數(shù)在每個不同的點,斜率不一樣,參考微積分對應(yīng)的公式進行求導(dǎo)/求斜率
使用流程圖,求更加復(fù)雜的函數(shù)的導(dǎo)數(shù):
?正向傳播計算正常的J:(從左到右計算成本函數(shù))
假設(shè)樣本有兩個特征,x1和x2
在logistic回歸中,我們要做的是:通過變換參數(shù)w和b的值,使loss函數(shù)最小化
?
反向傳播計算導(dǎo)數(shù):
?
?
m個樣本的logistic回歸(對logistic回歸應(yīng)用梯度下降法,實現(xiàn)梯度下降法的迭代):
一次梯度下降:
?
在此包含兩個for循環(huán),一個用來遍歷m個訓(xùn)練樣本,一個用來遍歷所有的特征
向量化:
for循環(huán)和向量化的對比:
?
?向量化的例子:
矩陣和向量相乘,for循環(huán)與np.dot()比較
?
做指數(shù)運算,應(yīng)該用numpy里面的內(nèi)置函數(shù)代替for循環(huán):
只剩一次for循環(huán)的多次梯度下降迭代:
向量化logistic回歸:(正向傳播一步迭代的向量化實現(xiàn),同時處理所有m個訓(xùn)練樣本)
X矩陣由x進行豎排堆疊得到
Z矩陣由z進行橫排堆疊得到
A矩陣由a進行橫排堆疊得到
實現(xiàn)不需要for循環(huán)就可以從m個訓(xùn)練樣本一次性計算出z和a
?
其中的Z=np.dot(w.T,X)+b ,在此b為一個實數(shù),向量+實數(shù),通過python的廣播,可以將其擴展為1*m的行向量
?去掉反向傳播中的所有for循環(huán):
過程:
?
目前實現(xiàn)了對所有訓(xùn)練樣本進行預(yù)測和求導(dǎo):(沒有使用for循環(huán))
?
最外層循環(huán)有時候是無法去掉的(比如要求上千次導(dǎo)數(shù)進行梯度下降的情況)
? ? ? ? ? ? ? ? ? ? ?
?
轉(zhuǎn)載于:https://www.cnblogs.com/bask/p/9278752.html
總結(jié)
以上是生活随笔為你收集整理的Andrew Ng 深度学习笔记-01-week2-课程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: React 16 + Jest单元测试
- 下一篇: console 非常实用的方法