> Created by Author using Diagrams.Net 讓我們深入了解神經(jīng)網(wǎng)絡(luò)和深度學(xué)習(xí)背后的數(shù)學(xué)如今,借助TensorFlow,Keras或PyTorch之類的開源機(jī)器學(xué)習(xí)軟件庫(kù),即使結(jié)構(gòu)復(fù)雜度很高,也只需幾行代碼就可以創(chuàng)建神經(jīng)網(wǎng)絡(luò)。 話雖如此,神經(jīng)網(wǎng)絡(luò)背后的數(shù)學(xué)仍然是我們中某些人的謎團(tuán),擁有神經(jīng)網(wǎng)絡(luò)和深度學(xué)習(xí)背后的數(shù)學(xué)知識(shí)可以幫助我們了解神經(jīng)網(wǎng)絡(luò)內(nèi)部正在發(fā)生的事情。 它還在架構(gòu)選擇,深度學(xué)習(xí)模型的微調(diào),超參數(shù)調(diào)整和優(yōu)化方面有幫助。 介紹由于我不太了解代數(shù)或微積分,所以很長(zhǎng)一段時(shí)間以來(lái),我一直忽略了對(duì)神經(jīng)網(wǎng)絡(luò)和深度學(xué)習(xí)背后的數(shù)學(xué)的理解。 幾天前,我決定從頭開始,并推導(dǎo)神經(jīng)網(wǎng)絡(luò)和深度學(xué)習(xí)背后的方法論和數(shù)學(xué),以了解它們?nèi)绾喂ぷ饕约盀槭裁雌鹱饔谩?我還決定寫這篇文章,這對(duì)像我這樣的人非常有用,他們覺得很難理解這些概念。 感知器感知器-由弗蘭克·羅森布拉特(Frank Rosenblatt)于1958年發(fā)明的,是最簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò),由n個(gè)輸入,一個(gè)神經(jīng)元和一個(gè)輸出組成,其中n是數(shù)據(jù)集的特征數(shù)量。 將數(shù)據(jù)通過(guò)神經(jīng)網(wǎng)絡(luò)傳遞的過(guò)程稱為前向傳播,并在以下三個(gè)步驟中說(shuō)明了在感知器中執(zhí)行的前向傳播。 步驟1:對(duì)于每個(gè)輸入,將輸入值x?與權(quán)重w?相乘,然后將所有相乘后的值相加。 權(quán)重-代表神經(jīng)元之間連接的強(qiáng)度,并決定給定輸入將對(duì)神經(jīng)元輸出產(chǎn)生多大影響。 如果權(quán)重w 1的值大于權(quán)重w 2,則輸入x 1對(duì)輸出的影響將大于w 2。 輸入和權(quán)重的行向量分別為x = [x?,x 2,…,x?]和w = [w?,w 2,…,w?],其點(diǎn)積由下式給出: 因此,總和等于向量x和w的點(diǎn)積 第2步:將偏差b加到相乘值的總和上,我們稱之為z。 偏移-在大多數(shù)情況下,也需要偏移,以將整個(gè)激活功能向左或向右移動(dòng)以生成所需的輸出值。 步驟3:將z的值傳遞給非線性激活函數(shù)。 激活函數(shù)-用于將非線性引入神經(jīng)元的輸出中,否則,神經(jīng)網(wǎng)絡(luò)將只是線性函數(shù)。 而且,它們對(duì)神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)速度有重大影響。 感知器具有二進(jìn)制步進(jìn)功能作為其激活功能。 但是,我們將使用sigmoid(也稱為邏輯函數(shù))作為激活函數(shù)。 其中σ表示S型激活函數(shù),而在正向授權(quán)后獲得的輸出稱為預(yù)測(cè)值。 學(xué)習(xí)算法學(xué)習(xí)算法由兩部分組成-反向傳播和優(yōu)化。 反向傳播:反向傳播,是錯(cuò)誤的向后傳播的縮寫,是指用于計(jì)算損失函數(shù)相對(duì)于權(quán)重的梯度的算法。 但是,該術(shù)語(yǔ)通常用于指整個(gè)學(xué)習(xí)算法。 以下兩個(gè)步驟說(shuō)明了在感知器中進(jìn)行的反向傳播。 第1步:要知道我們與所需解有多遠(yuǎn)的估計(jì),使用了損失函數(shù)。 通常,對(duì)于回歸問(wèn)題,選擇均方誤差作為損失函數(shù);對(duì)于分類問(wèn)題,選擇均方誤差作為交叉熵。 讓我們來(lái)看一個(gè)回歸問(wèn)題,其損失函數(shù)為均方誤差,即均方根(y?)與預(yù)測(cè)值(??)之間的差。 針對(duì)整個(gè)訓(xùn)練數(shù)據(jù)集計(jì)算損失函數(shù),其平均值稱為成本函數(shù)C。 步驟2:為了為我們的感知器找到最佳的權(quán)重和偏差,我們需要知道成本函數(shù)相對(duì)于權(quán)重和偏差如何變化。 這是借助梯度(變化率)完成的-一個(gè)量相對(duì)于另一個(gè)量如何變化。 在我們的案例中,我們需要找到成本函數(shù)相對(duì)于權(quán)重和偏差的梯度。 讓我們使用偏導(dǎo)數(shù)計(jì)算成本函數(shù)C相對(duì)于權(quán)重w?的梯度。 由于成本函數(shù)與權(quán)重w?沒有直接關(guān)系,因此我們使用鏈?zhǔn)揭?guī)則。 現(xiàn)在我們需要找到以下三個(gè)漸變 讓我們從成本函數(shù)(C)相對(duì)于預(yù)測(cè)值()的梯度開始 令y = [y,y 2,…y?]和?= [,?2,…??]是實(shí)際值和預(yù)測(cè)值的行向量。 因此,上述方程簡(jiǎn)化為 現(xiàn)在,讓我們找到預(yù)測(cè)值相對(duì)于z的梯度。 這會(huì)有點(diǎn)冗長(zhǎng)。 z相對(duì)于權(quán)重w?的梯度為 因此我們得到 偏見呢? —理論上,偏置被認(rèn)為具有恒定值1的輸入。因此, 優(yōu)化:優(yōu)化是從某些可用替代方案中選擇最佳元素,在我們的案例中,優(yōu)化是選擇感知器的最佳權(quán)重和偏差。 讓我們選擇梯度下降作為我們的優(yōu)化算法,該算法會(huì)更改權(quán)重和偏差,與權(quán)重函數(shù)相對(duì)于相應(yīng)權(quán)重或偏差的梯度負(fù)值成比例。 學(xué)習(xí)率(α)是一個(gè)超參數(shù),用于控制權(quán)重和偏差的變化量。 權(quán)重和偏差更新如下,重復(fù)進(jìn)行反向傳播和梯度下降直到收斂。 最后的想法希望您對(duì)本文有所了解,并理解神經(jīng)網(wǎng)絡(luò)和深度學(xué)習(xí)背后的數(shù)學(xué)原理。 我已經(jīng)在本文中解釋了單個(gè)神經(jīng)元的工作。 但是,這些基本概念經(jīng)過(guò)一些修改后適用于所有類型的神經(jīng)網(wǎng)絡(luò)。 (本文翻譯自Martin Heinz的文章《An Introduction To Mathematics Behind Neural Networks》,參考:https:///introduction-to-math-behind-neural-networks-e8b60dbbdeba) |
|
來(lái)自: 邸彥強(qiáng) > 《技術(shù)》