tft每日頭條

 > 圖文

 > 深度學習入門神經網絡

深度學習入門神經網絡

圖文 更新时间:2024-07-02 13:12:03

機器學習、深度學習、CV、NLP…,這些看起來高大上的概念都與當今火爆全球的人工智能(AI, Artificial Intelligence)相關,那麼處在浪潮之巅的AI入門門檻有多高呢?所謂訓練模型,讓模型自我學習又是指什麼呢?‍♂️ 本文将為大家分享入門AI的必經之路,也是深度學習(Deep Learning)的基礎---神經網絡(NN,Neural Network)。

深度學習入門神經網絡(一文參透神經網絡及其實現)1

文章大綱

深度學習入門神經網絡(一文參透神經網絡及其實現)2

1.為什麼是神經網絡?

人類之所以在所有靈長類動物中處于絕對優勢地位,是因為我們與其他動物相比,具有高度發達的大腦,複雜的抽象思維、語言、自我意識以及解決問題的能力,其中模仿能力是我們在漫長的時間裡存活下來的重要手段,也是創新創造的靈感源泉。

深度學習入門神經網絡(一文參透神經網絡及其實現)3

人類大腦使得我們可以處理眼睛看到的”圖像“,耳朵聽到的”文本“,還有各種各樣超級複雜的計算。這種無以倫比的信息處理能力讓人無比憧憬,在很多影視劇我們都可以看到人們對于AI的想象,計算機從設計之初的基礎配置,不斷學習,慢慢産生自我意識,逐漸達到與人類無法區分的水平,讓我想起了《迷你黑鏡》那個短片,牆裂推薦去看一下。正如人類看到鳥兒在空中飛翔模仿出飛機一樣,為了接近智能這一目标,走在人類前沿的科學家們試圖用計算機模仿人腦,賦予其“學習”的能力,因此構造出了”人工神經網絡“,簡稱神經網絡。

2.什麼是神經網絡?

在中學生物課本中我們曾學習過神經元,其由細胞體、樹突、軸突構成,樹突用于接收其他神經元的信号,軸突向其它神經元發送信号,而細胞體是處理信号的”司令部“,多個神經元借助突觸相互連接形成的網絡,就是神經網絡。

深度學習入門神經網絡(一文參透神經網絡及其實現)4

2.1 人腦中神經網絡的數學表達

在神經網絡中,神經元之間可以傳遞信号,一個神經元接收其它神經元傳來的信号,并判斷這些信号之和是否超過某個阈值,若超過該阈值,則神經元作出相應的反應,稱之為“點火”;否則忽略該信号,不作出反應。其中接收的信号也大小不一,這是因為各個信号的重要程度不一樣,也就引入了“權重(weight)”的概念,也叫回歸系數(regression coefficient)。如此便可以将神經網絡數學化表示,我們假設接收來自神經元 x1,x2 ,x3 的信号,其相對應的權重分别是w1 ,w2 ,w3 ,則神經元接收的輸入信号之和就可以表示為

深度學習入門神經網絡(一文參透神經網絡及其實現)5

我們假設上文提到的阈值為θ,那麼根據阈值大小判斷是否點火就對應于是否有輸出,進而可以将無輸出表示為y=0,有輸出表示為y=1,那總體數學表達如下所示:

深度學習入門神經網絡(一文參透神經網絡及其實現)6

其圖像為

深度學習入門神經網絡(一文參透神經網絡及其實現)7

将上式移項得到

深度學習入門神經網絡(一文參透神經網絡及其實現)8

圖像變化如下圖所示

深度學習入門神經網絡(一文參透神經網絡及其實現)9

這就是單位階躍函數

深度學習入門神經網絡(一文參透神經網絡及其實現)10

綜合上述函數,統一化表示為

深度學習入門神經網絡(一文參透神經網絡及其實現)11

式子中的阈值θ代表了神經元的感應能力,θ越大,表示神經元感應遲鈍,越小表示感應靈敏,神經元越容易興奮。數學是一門美麗的學科,它充滿了和諧與奇異,而在這個式子中最後的-θ在一排加号中卻顯得有些異類,我們考慮将式子中的-θ改寫成 b,那麼對應的式子變為

深度學習入門神經網絡(一文參透神經網絡及其實現)12

其中

深度學習入門神經網絡(一文參透神經網絡及其實現)13

,這也就是神經網絡中的一般表達。這裡的b稱之為偏置(bias),也叫截距(intercept)對應在神經網絡圖中可以增加一個虛拟輸入1,權重為偏置b,由此形成整個神經網絡的數學表達基礎,後續所有問題都在此基礎上展開,如圖

深度學習入門神經網絡(一文參透神經網絡及其實現)14

将該圖轉換成更簡潔的數學圖形表示

深度學習入門神經網絡(一文參透神經網絡及其實現)15

将圖中的輸入和權重向量化表示,則

深度學習入門神經網絡(一文參透神經網絡及其實現)16

3.如何實現神經網絡

3.1單層神經網絡---線性回歸

有了神經網絡的數學表達我們就可以很清楚的做一些推導,那麼如何在計算機裡實現神經網絡呢?

中學我們學過y=ax b這種簡單的一元函數,看起來和我們前面的數學表達如出一轍,那麼a就是神經網絡中的權重,b是偏置,y在神經網絡中常用z來表示,在神經網絡的任務中,我們輸入的樣本含有多個特征,将這些特征輸入到我們的神經網絡,最終要得到的是合适的w和b,也就是訓練完成我們的神經網絡。這個函數就是我們的模型,輸入特征得到相應的輸出的過程就是預測,所以這種函數也叫預測函數。y=ax b是一種線性函數,可以用來做回歸預測,比如簡單的根據城市人口預測數據預測利潤,如圖

深度學習入門神經網絡(一文參透神經網絡及其實現)17

根據已有的人口和利潤的對應數據,我們就可以拟合出一條回歸直線,然後預測出對應的結果。我們将思緒拉回到最簡單的公式z=w1x1*w2x2 b ,在這個公式裡有兩個特征,我們将根據這兩個特征得到預測值z_hat ,下圖是該網絡的結構

深度學習入門神經網絡(一文參透神經網絡及其實現)18

這就是最簡單的單層神經網絡,但是明明有兩層為什麼叫單層神經網絡呢?這是因為在AI領域,通常在命名一個神經網絡的時候不考慮輸入層,隻考慮輸入層之後的層數。一般将1稱為x0 ,這樣能保證結構的整體性。把輸入層的三個參數與相對應的權重相乘,在輸出層加和就可以得到我們想要的預測值。

3.2 使用PyTorch實現單層神經網絡

3.2.1 PyTorch簡介

神經網絡的實現需要借助深度學習框架(Deep learning framework),本文采用pytorch來實現。簡單介紹一下,pytorch由FacebookAI實驗室研發,基于torch,底層由C 實現的開源的深度學習框架,得益于其優秀的靈活性和支持海量數據運算等優勢,目前pytorch在學術界非常流行。但是太不建議直接去官網查看API,官網雖然簡潔,但是其模塊卻是按字母順序排列,對新手極不友好,這裡給出pytorch模塊的整體框架,具體細節大家在使用中遇到問題再去查官方文檔。

深度學習入門神經網絡(一文參透神經網絡及其實現)19

3.2.2 使用tensor實現神經網絡

在介紹了pytorch之後,我們就可以使用其基本數據類型---tensor(張量)來建立神經網絡,從神經網絡的左邊輸入特征 ,右邊輸出預測值 ,這個過程就叫做神經網絡的正向傳播(forward spread)。下面給出一組數據

x0

x1

x2

y

1

0

0

-0.1

1

0

1

0.1

1

1

0

0.1

根據這組數據,我們利用tensor實現,代碼如下:

importtorch X = torch.tensor([[1,0,0],[1,0,1],[1,1,0]], dtype = torch.float32) z = torch.tensor([-0.1, 0.1, 0.1]) w = torch.tensor([-0.1,0.2,0.2]) defLinear1(X,w): zhat = torch.mv(X,w) returnzhat zhat = Linear1(X,w)

在jupyter lab上面的運行結果如下所示

深度學習入門神經網絡(一文參透神經網絡及其實現)20

可以看到輸出的預測值 與我們設定的值 是相同的,接下來我們使用深度學習框架來實現神經網絡。

3.2.3 使用torch.nn實現單層神經網絡

torch.nn是構建神經網絡結構的包,在這個包中有神經網絡的各種“層”(注:不含輸入層),這些層都是nn.Module的子類,而線性層就是torch.nn.Linear這個類。同樣使用前面的簡單數據

x0

x1

x2

y

1

0

0

-0.1

1

0

1

0.1

1

1

0

0.1

torch.nn.Linear實現,代碼如下

importtorch X = torch.tensor([[0,0],[0,1],[1,0]], dtype = torch.float32) output = torch.nn.Linear(2,1) # 實例化,并傳入參數 zhat = output(X)

可以看出,使用nn.Linear實現神經網絡,代碼非常簡潔,當數據量變大,網絡變複雜時,這種簡潔的優勢會更加明顯。

nn.Linear的第一個參數是指上一層的神經元數,第二個參數指本層神經元個數,根據前面的神經網絡架構圖,可以清楚的看出在例子中,上一層是輸入層,神經元個數等于特征個數(2個),當前層是輸出層,神經元個數隻有1個。

其中隻定義了特征矩陣X,沒有定義w和b,這是因為使用框架定義神經網絡,類似nn.Linear的層,都會在實例化的同時随機初始化w和b。

nn.Linear還有其他參數,如bias是控制是否需要偏置b的參數

jupyter lab運行結果

深度學習入門神經網絡(一文參透神經網絡及其實現)21

因為随機生成的w和b,所以輸出的預測值 與我們設定的值 是不相同的,因為随機的緣故每次運行結果并不一樣,如果要保證能夠複現,可以設定随機數種子

torch.random.manual_seed(66)#随機種子的數值自行設定就好

深度學習入門神經網絡(一文參透神經網絡及其實現)22

本文僅是簡單介紹了神經網絡,線性回歸算是最簡單的神經網絡了,後續還會有邏輯回歸,二分類神經網絡,多分類神經網絡,更進階的有卷積神經網絡CNN,循環神經網絡RNN等等,但是殊途同歸,掌握了簡單的網絡搭建,後續都隻是在模型上增加複雜度而已。

接下來我還會繼續分享神經網絡的搭建,記錄自己的學習與收獲,歡迎大家一起讨論學習。

我是吳彧,歡迎關注。V 克魯斯卡

End

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关圖文资讯推荐

热门圖文资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved