日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人工智能 > pytorch >内容正文

pytorch

吴恩达DeepLearningCourse1-神经网络和深度学习

發(fā)布時(shí)間:2023/12/4 pytorch 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 吴恩达DeepLearningCourse1-神经网络和深度学习 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

計(jì)劃在9月4日(截止日期)之前完成DeepLearning的所有課程學(xué)習(xí)。每個(gè)課程對應(yīng)一篇博客,根據(jù)學(xué)習(xí)進(jìn)度隨時(shí)更新。
參考課程

文章目錄

    • (一)深度學(xué)習(xí)概論
            • 結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù)
            • 提高效果的方法
    • (二)神經(jīng)網(wǎng)絡(luò)基礎(chǔ)
            • 二分分類
            • Logistic回歸
            • 梯度下降法
            • 計(jì)算圖、計(jì)算圖的導(dǎo)數(shù)計(jì)算
            • Logistic回歸中的梯度下降法
            • 向量化
            • Python廣播
    • (三)淺層神經(jīng)網(wǎng)絡(luò)
          • 計(jì)算神經(jīng)網(wǎng)絡(luò)的輸出
          • 多樣本向量化
          • 激活函數(shù)
          • 隨機(jī)初始化
    • (四)深層神經(jīng)網(wǎng)絡(luò)
          • 深層網(wǎng)絡(luò)中的前向傳播
          • 深層網(wǎng)絡(luò)中的反向傳播
          • 核對矩陣的維數(shù)、深層神經(jīng)網(wǎng)絡(luò)的基本單元
          • 超參數(shù)

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

結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù)

結(jié)構(gòu)化數(shù)據(jù)是已經(jīng)清楚定義并組織的數(shù)據(jù),如數(shù)據(jù)庫。
非結(jié)構(gòu)化數(shù)據(jù)不具有結(jié)構(gòu)化特征,如圖片、音頻等。

提高效果的方法

-訓(xùn)練更大的神經(jīng)網(wǎng)絡(luò)
-投入更大規(guī)模的標(biāo)記數(shù)據(jù)

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

二分分類

舉例:識別輸入圖像x中有/沒有貓,返回y(有為1,無為0)
圖片在計(jì)算機(jī)中的存儲形式

使用向量x存儲矩陣中的三組數(shù)據(jù),組織成nx1的向量,并將每個(gè)向量作為一列組織成整體輸入X(一種約定),輸出Y則為1xm的向量。

Logistic回歸

在二分分類問題中,得到的結(jié)果是輸入符合要求的期望,因此需要介于0和1之間。采用σ函數(shù)滿足該限制。

Loss Function:考察單個(gè)樣本數(shù)據(jù)和實(shí)際結(jié)果的接近程度。選擇該形式是因?yàn)槠渲庇^上是凸函數(shù),有唯一極小值,避免非凸函數(shù)的多個(gè)極值情況,便于求解。

Cost Function:考察樣本總體對實(shí)際結(jié)果的擬合效果。

梯度下降法

初始化w和b,每次選擇梯度最大的方向前進(jìn),或者停在最終結(jié)果處,由于成本函數(shù)是凸函數(shù),所以存在唯一極小值。

其中,α代表學(xué)習(xí)率,即前進(jìn)步長。

計(jì)算圖、計(jì)算圖的導(dǎo)數(shù)計(jì)算

導(dǎo)數(shù)計(jì)算采用鏈?zhǔn)椒▌t從右向左進(jìn)行,即dJ/da = (dJ/du)*(du/da)

單個(gè)訓(xùn)練樣本時(shí)同理操作。

Logistic回歸中的梯度下降法

對代價(jià)函數(shù)的每個(gè)累加項(xiàng)對應(yīng)求導(dǎo)即可得到偏導(dǎo)值。
圖中的J,dw1,dw2,db是累加項(xiàng),所以最終要除以m。而zi,ai,dzi對應(yīng)每個(gè)訓(xùn)練樣本的值。求累加值增量時(shí),采用4中的鏈?zhǔn)椒▌t的思想。

向量化

向量化避免了在程序中顯式使用for循環(huán),有效減少運(yùn)行時(shí)間。
例子中的操作方法:
import numpy
a = numpy.random.rand(1000000)
b = numpy.random.rand(1000000)
c= numpy.dot(a, b)
該操作比for循環(huán)計(jì)算并累加效率高得多。所以每次需要for循環(huán)時(shí),查看numpy中是否有可調(diào)用的內(nèi)置函數(shù),避免使用for循環(huán)。
根據(jù)以上例子,我理解的向量化是用向量的形式,組織每輪循環(huán)中得到的結(jié)果,利用numpy內(nèi)置函數(shù)高效地計(jì)算出矩陣相乘的結(jié)果。

逆向傳播時(shí)通過向量化消除了兩層的for循環(huán),即在一次步進(jìn)中沒有循環(huán)。但如果想要多次迭代,還需在外層添加計(jì)數(shù)循環(huán)。

Python廣播

在矩陣元素的運(yùn)算(區(qū)別于矩陣乘法)中,將規(guī)模較小的矩陣(其實(shí)是向量)進(jìn)行若干次復(fù)制后,再對對應(yīng)位置的元素進(jìn)行運(yùn)算。

使用assert保證矩陣是預(yù)期的形狀,如assert(a.shape==(3, 4))。調(diào)用reshape方法可以將矩陣保持期望形狀,如a = a.reshape(3, 3)。

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

計(jì)算神經(jīng)網(wǎng)絡(luò)的輸出

以只有一個(gè)隱層的神經(jīng)網(wǎng)絡(luò)為例。直觀上,多層的神經(jīng)網(wǎng)絡(luò)是多個(gè)單層神經(jīng)網(wǎng)絡(luò)的堆疊。
其中的每個(gè)節(jié)點(diǎn)都經(jīng)過z = wTx + b, σ(z)的計(jì)算,如圖所示。

對0層到1層的計(jì)算進(jìn)行向量化,根據(jù)如下公式:

多樣本向量化

將輸入樣本按列排列,進(jìn)行向量化操作。此時(shí)對應(yīng)A[i],在垂直方向,這個(gè)垂直索引對應(yīng)于神經(jīng)網(wǎng)絡(luò)中的不同節(jié)點(diǎn)。例如節(jié)點(diǎn)位于矩陣的最左上角對應(yīng)于激活單元,它是位于第一個(gè)訓(xùn)練樣本上的第一個(gè)隱藏單元。它的下一個(gè)值對應(yīng)于第二個(gè)隱藏單元的激活值。當(dāng)水平掃描,將從第一個(gè)訓(xùn)練示例中從第一個(gè)隱藏的單元到第二個(gè)訓(xùn)練樣本,第三個(gè)訓(xùn)練樣本……

激活函數(shù)

通常tanh的表現(xiàn)優(yōu)于sigmoid函數(shù)。但有例外情況:在二分類的問題中,對于輸出層,因?yàn)閥的值是 0 或 1,所以想讓輸出的數(shù)值介于 0 和 1 之間,而不是在-1 和+1 之間。所以需要使用 sigmoid 激活函數(shù)。
對于上面的例子,可以在隱層使用tanh,輸出層使用sigmoid。
ReLU函數(shù)是最常用的。
如果不使用激活函數(shù),那么多層的神經(jīng)網(wǎng)絡(luò)本質(zhì)上仍然是一層,此時(shí)的隱藏層是多余的。為了構(gòu)建多層神經(jīng)網(wǎng)絡(luò),必須引入非線性的激活函數(shù)。

隨機(jī)初始化

將各層的w初始化為0,會導(dǎo)致正向傳播時(shí)的結(jié)果相同,從而導(dǎo)致反向傳播時(shí)的結(jié)果也相同,無法起到訓(xùn)練的作用。
為此,應(yīng)該把w的各個(gè)元素初始化為非0的較小的數(shù)。因?yàn)槭褂胹igmoid或tanh激活函數(shù)時(shí),若z過大或過小,會導(dǎo)致斜率趨近于0,降低運(yùn)行效率。
b初始為0不會產(chǎn)生負(fù)面影響。

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

深層網(wǎng)絡(luò)中的前向傳播

有一個(gè)隱藏層的神經(jīng)網(wǎng)絡(luò),就是一個(gè)兩層神經(jīng)網(wǎng)絡(luò)。
當(dāng)計(jì)算神經(jīng)網(wǎng)絡(luò)的層數(shù)時(shí),不算輸入層,只算隱藏層和輸出層。
前向傳播可以歸納為多次迭代:
𝑧[𝑙] = 𝑤[𝑙]𝑎[𝑙?1] + 𝑏[𝑙],
𝑎[𝑙] = 𝑔[𝑙](𝑧[𝑙])。

向量化實(shí)現(xiàn)過程可以寫成:
𝑍[𝑙] = 𝑊[𝑙]𝑎[𝑙?1] + 𝑏[𝑙],
𝐴[𝑙] = 𝑔[𝑙](𝑍[𝑙]) (𝐴[0] = 𝑋)

深層網(wǎng)絡(luò)中的反向傳播

反向傳播的步驟可以寫成:
(1)𝑑𝑧[𝑙] = 𝑑𝑎[𝑙]? 𝑔[𝑙]′(𝑧[𝑙])
(2)𝑑𝑤[𝑙] = 𝑑𝑧[𝑙]? 𝑎[𝑙?1]
(3)𝑑𝑏[𝑙] = 𝑑𝑧[𝑙]
(4)𝑑𝑎[𝑙?1] = 𝑤[𝑙]𝑇? 𝑑𝑧[𝑙]
(5)𝑑𝑧[𝑙] = 𝑤[𝑙+1]𝑇𝑑𝑧[𝑙+1]? 𝑔[𝑙]′(𝑧[𝑙])
式子(5)由式子(4)帶入式子(1)得到,前四個(gè)式子就可實(shí)現(xiàn)反向函數(shù)。
向量化實(shí)現(xiàn)過程可以寫成:
(6)𝑑𝑍[𝑙] = 𝑑𝐴[𝑙]? 𝑔[𝑙]′(𝑍[𝑙])
(7)𝑑𝑊[𝑙] =1/𝑚(𝑑𝑍[𝑙]? 𝐴[𝑙?1]𝑇)
(8)𝑑𝑏[𝑙] =1/𝑚(𝑛𝑝. 𝑠𝑢𝑚(𝑑𝑧[𝑙], 𝑎𝑥𝑖𝑠 = 1, 𝑘𝑒𝑒𝑝𝑑𝑖𝑚𝑠 = 𝑇𝑟𝑢𝑒))
(9)𝑑𝐴[𝑙?1] = 𝑊[𝑙]𝑇. 𝑑𝑍[𝑙]

核對矩陣的維數(shù)、深層神經(jīng)網(wǎng)絡(luò)的基本單元

建議:使用assert確保矩陣維數(shù)符合預(yù)期。debug時(shí)復(fù)現(xiàn)各個(gè)矩陣維數(shù)。

超參數(shù)

指能控制參數(shù)的參數(shù)。如學(xué)習(xí)率、迭代次數(shù)、層數(shù)、每層神經(jīng)元數(shù)等。
可以通過嘗試的方法確定超參數(shù)的選擇。

總結(jié)

以上是生活随笔為你收集整理的吴恩达DeepLearningCourse1-神经网络和深度学习的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。