自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

再談什么是神經(jīng)網(wǎng)絡(luò),透過現(xiàn)象看本質(zhì) 原創(chuàng)

發(fā)布于 2025-3-5 11:20
瀏覽
0收藏

“ 神經(jīng)網(wǎng)絡(luò)是一種獨(dú)立的技術(shù),只不過它與不同的領(lǐng)域結(jié)合之后就有了不同的神經(jīng)網(wǎng)絡(luò)模型。”

面對著網(wǎng)絡(luò)上各種各樣關(guān)于神經(jīng)網(wǎng)絡(luò)的內(nèi)容,很多想學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)的人都無從下手,包括作者自己;面對各種亂七八糟的概念,名詞,很多人都被這些東西蒙住了眼睛。

所以,今天我們就拋開各種高大上的概念,從本質(zhì)出發(fā)來學(xué)習(xí)什么網(wǎng)絡(luò);我們今天不討論CNN,RNN,Transformer,LSTM等各種神經(jīng)網(wǎng)絡(luò)架構(gòu);只討論什么是神經(jīng)網(wǎng)絡(luò)。

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

對神經(jīng)網(wǎng)絡(luò)有過了解的人應(yīng)該都知道,神經(jīng)網(wǎng)絡(luò)就是仿生學(xué)的一種實(shí)現(xiàn),使用的是數(shù)學(xué)模型模擬人類的大腦神經(jīng)系統(tǒng);具體的可以看一下上一篇文章——??從一個簡單的神經(jīng)網(wǎng)絡(luò)模型開始??。

所以,什么是神經(jīng)網(wǎng)絡(luò)?

由簡單神經(jīng)元構(gòu)成的系統(tǒng)就是神經(jīng)網(wǎng)絡(luò);可以說一個神經(jīng)元就是一個最簡單的神經(jīng)網(wǎng)絡(luò)模型,只不過這個神經(jīng)網(wǎng)絡(luò)僅僅只有一層,且只有一個神經(jīng)元;而由多個神經(jīng)元組成的多層神經(jīng)網(wǎng)絡(luò)系統(tǒng)就是一個復(fù)雜的神經(jīng)網(wǎng)絡(luò)模型。

再談什么是神經(jīng)網(wǎng)絡(luò),透過現(xiàn)象看本質(zhì)-AI.x社區(qū)

雖然從實(shí)際出發(fā),一個神經(jīng)元的神經(jīng)網(wǎng)絡(luò)沒什么實(shí)際意義;但其卻是理解神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)。

神經(jīng)網(wǎng)絡(luò)最基礎(chǔ)的形態(tài)就是單層神經(jīng)網(wǎng)絡(luò),也被叫做感知器;而二層以上的神經(jīng)網(wǎng)絡(luò)叫做多層感知器或深層神經(jīng)網(wǎng)絡(luò)。

多層神經(jīng)網(wǎng)絡(luò)的形態(tài)基本如下所示,根據(jù)不同的任務(wù)類型可以適當(dāng)增加更多的中間層。

再談什么是神經(jīng)網(wǎng)絡(luò),透過現(xiàn)象看本質(zhì)-AI.x社區(qū)

當(dāng)然這些只是神經(jīng)網(wǎng)絡(luò)的理論基礎(chǔ),那么要想實(shí)現(xiàn)一個能運(yùn)行的神經(jīng)網(wǎng)絡(luò),需要哪些必要功能點(diǎn)呢?

事實(shí)上,實(shí)現(xiàn)一個神經(jīng)網(wǎng)絡(luò)大概需要以下幾個功能點(diǎn):

  • 數(shù)據(jù)集準(zhǔn)備
  • 神經(jīng)網(wǎng)絡(luò)設(shè)計
  • 損失計算
  • 優(yōu)化函數(shù)
  • 反向傳播(BP)算法

數(shù)據(jù)集準(zhǔn)備

不論是自然語言處理(NLP)還是計算機(jī)視覺(CV)處理,都離不開訓(xùn)練數(shù)據(jù);而由于神經(jīng)網(wǎng)絡(luò)中的主要數(shù)據(jù)類型是向量(矩陣),因此不論是圖像,視頻,還是文字都需要把數(shù)據(jù)轉(zhuǎn)化為神經(jīng)網(wǎng)絡(luò)能夠處理的格式,也就是向量類型。

由此也誕生了一些數(shù)據(jù)向量化的技術(shù),比如文字處理的詞袋模型,one-hot編碼等;以及圖像向量化的技術(shù)。

神經(jīng)網(wǎng)絡(luò)設(shè)計

以pytorch為例,實(shí)現(xiàn)一個神經(jīng)網(wǎng)絡(luò)只需要繼承nn.Module類即可;而根據(jù)不同的任務(wù)類型,開發(fā)人員可以自己根據(jù)需要實(shí)現(xiàn)能夠完成具體任務(wù)的神經(jīng)網(wǎng)絡(luò)模型;基礎(chǔ)代碼如下所示:

import torch.nn


# 自定義神經(jīng)網(wǎng)絡(luò)
class MyModel(nn.Module):
    def __init__(self):
        super(MyModel, self).__init__()
        # 用來完成一些初始化功能


    def __forward(self, x):
        """
        神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)
        :param x:
        :return:
        """
        # 比如實(shí)現(xiàn)一個全鏈接層
        x = nn.Linear(x)
        # pass

損失計算

簡單來說損失計算是神經(jīng)網(wǎng)絡(luò)自主學(xué)習(xí)的基礎(chǔ),損失計算的目的就是計算神經(jīng)網(wǎng)絡(luò)的輸出(預(yù)測值)和真實(shí)值之間的差值,損失差越大說明神經(jīng)網(wǎng)絡(luò)的效果越差。

因此,在神經(jīng)網(wǎng)絡(luò)訓(xùn)練中,需要根據(jù)損失差來對神經(jīng)網(wǎng)絡(luò)的參數(shù)進(jìn)行優(yōu)化,這也是神經(jīng)網(wǎng)絡(luò)訓(xùn)練的本質(zhì)。

常見的損失計算函數(shù)有交叉熵計算,均方誤差等。

優(yōu)化函數(shù)

優(yōu)化函數(shù)簡單理解就是用來優(yōu)化神經(jīng)網(wǎng)絡(luò)參數(shù)的一種方式,由于未經(jīng)過訓(xùn)練的神經(jīng)網(wǎng)絡(luò)參數(shù)都是隨機(jī)的;因此在對神經(jīng)網(wǎng)絡(luò)訓(xùn)練時,需要根據(jù)損失結(jié)果調(diào)整神經(jīng)網(wǎng)絡(luò)的參數(shù)值,以使神經(jīng)網(wǎng)絡(luò)達(dá)到最好的效果。

模型訓(xùn)練的本質(zhì)就是不斷優(yōu)化模型參數(shù)的過程。

而常見的優(yōu)化算是就是梯度下降,簡單來說就如下圖所示,優(yōu)化算法的最優(yōu)解就是圖中藍(lán)色標(biāo)識的部分;但對神經(jīng)網(wǎng)絡(luò)來說,它并不知道哪里是最優(yōu)解,因此就需要一個點(diǎn)一個點(diǎn)的試,以求把損失降到最小,而這個過程就叫做梯度下降。

舉例來說,假設(shè)x的初始值為2,這時它的損失值也就是y=4;這時誤差就比較大,因此優(yōu)化函數(shù)就優(yōu)化一下讓x=3,這時損失值y=3;這就說明神經(jīng)網(wǎng)絡(luò)的優(yōu)化函數(shù)是有用的。

所以,對梯度下降不了解的可以看之前的文章——??神經(jīng)網(wǎng)絡(luò)之損失函數(shù)與優(yōu)化函數(shù)——梯度下降??;簡單理解梯度下降就是高中數(shù)學(xué)中的求導(dǎo),求變化率最小的點(diǎn)(極值),當(dāng)然實(shí)際應(yīng)用中的梯度下降要復(fù)雜的多。

再談什么是神經(jīng)網(wǎng)絡(luò),透過現(xiàn)象看本質(zhì)-AI.x社區(qū)

反向傳播

反向傳播算法也叫做BP算法,目的是根據(jù)結(jié)果去調(diào)整神經(jīng)網(wǎng)絡(luò)的參數(shù)值;而具體方式就是通過損失計算和優(yōu)化函數(shù)來實(shí)現(xiàn);通過反向傳播來調(diào)整模型參數(shù),通過優(yōu)化函數(shù)來優(yōu)化神經(jīng)網(wǎng)絡(luò)的梯度。

如下代碼所示就是神經(jīng)網(wǎng)絡(luò)的訓(xùn)練基本流程,通過不斷循環(huán)來使神經(jīng)網(wǎng)絡(luò)達(dá)到最優(yōu)。

for idx, (input, target) in enumerate(data_loader):
        # 梯度歸零 optimizer就是優(yōu)化函數(shù)
        optimizer.zero_grad()
        
        output = model(input) # 調(diào)用模型 獲取預(yù)測值
        loss = F.nll_loss(output, target) # 得到損失
        loss.backward() # 反向傳播
        optimizer.step() # 更新梯度

而由于神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)數(shù)據(jù)格式是向量,而表現(xiàn)形式是矩陣;因此神經(jīng)網(wǎng)絡(luò)中涉及大量的矩陣運(yùn)算。以及,神經(jīng)網(wǎng)絡(luò)本質(zhì)上就是一個數(shù)學(xué)模型,因此,神經(jīng)網(wǎng)絡(luò)中也涉及到大量的數(shù)學(xué)運(yùn)算,如求和,平方,求導(dǎo)等等。

而這就是實(shí)現(xiàn)一個基礎(chǔ)神經(jīng)網(wǎng)絡(luò)所需要的基本步驟,而哪些類似于RNN,CNN,Transformer等神經(jīng)網(wǎng)絡(luò)架構(gòu)的神經(jīng)網(wǎng)絡(luò)模型;只是在基礎(chǔ)神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)之上,為解決具體問題以及和具體的應(yīng)用領(lǐng)域相結(jié)合,而專門設(shè)計和優(yōu)化的模型。

簡單理解RNN,CNN,Transformer模型就是在神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)之上,如損失計算,優(yōu)化等;做了一些騷操作,這些操作能夠更好的處理自然語言,圖像等問題。

從哲學(xué)的角度來說就是,一般和特殊的關(guān)系;普通的神經(jīng)網(wǎng)絡(luò)就是一般的神經(jīng)網(wǎng)絡(luò),而RNN,CNN等就是特殊的神經(jīng)網(wǎng)絡(luò)。比如,Transformer神經(jīng)網(wǎng)絡(luò)架構(gòu)就是用來處理序列到序列到任務(wù)。


本文轉(zhuǎn)載自公眾號AI探索時代 作者:DFires

原文鏈接:??https://mp.weixin.qq.com/s/hzl0Fj0yLYMNgP4Swh8NMA??

?著作權(quán)歸作者所有,如需轉(zhuǎn)載,請注明出處,否則將追究法律責(zé)任
收藏
回復(fù)
舉報
回復(fù)
相關(guān)推薦