關(guān)于神經(jīng)網(wǎng)絡(luò)的輸入格式——數(shù)據(jù)集的處理,關(guān)于神經(jīng)網(wǎng)絡(luò)模型的結(jié)構(gòu)說明 原創(chuàng)
“ 外部數(shù)據(jù)需要經(jīng)過嵌入——Embedding轉(zhuǎn)換成神經(jīng)網(wǎng)絡(luò)可以識(shí)別的向量格式的數(shù)據(jù) ”
開發(fā)一個(gè)大模型或者說神經(jīng)網(wǎng)絡(luò)需要經(jīng)過以下幾個(gè)大致步驟:
1. 數(shù)據(jù)集的處理
2. 神經(jīng)網(wǎng)絡(luò)模型設(shè)計(jì)
3. 神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練
前向傳播
損失計(jì)算
優(yōu)化器
反向傳播
可能很多人覺得神經(jīng)網(wǎng)絡(luò)模型很復(fù)雜,也看不懂啥是啥;比如說很多人還分不清pytorch和Transformer的區(qū)別,也看不明白Transformer的結(jié)構(gòu)圖是什么。
所以,今天我們以Transformer架構(gòu)為例,詳細(xì)梳理一下神經(jīng)網(wǎng)絡(luò)模型的功能結(jié)構(gòu);其它神經(jīng)網(wǎng)絡(luò)架構(gòu)也大致相同,不同點(diǎn)主要集中在神經(jīng)網(wǎng)絡(luò)的具體功能實(shí)現(xiàn)。
神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)說明
數(shù)據(jù)集處理
其實(shí)嚴(yán)格來說第一步數(shù)據(jù)集的處理不屬于神經(jīng)網(wǎng)絡(luò)模型功能的范疇,它只是一個(gè)前置處理功能,目的就是把外部輸入的數(shù)據(jù)轉(zhuǎn)化為神經(jīng)網(wǎng)絡(luò)模型可以處理的格式。
而神經(jīng)網(wǎng)絡(luò)接受的數(shù)據(jù)格式就是——向量格式。
這一點(diǎn)從神經(jīng)網(wǎng)絡(luò)模型的拓?fù)鋱D中也可以看的出來,神經(jīng)網(wǎng)絡(luò)模型雖然可以有n(n大于等于1)層網(wǎng)絡(luò),但有兩個(gè)比較特殊的神經(jīng)網(wǎng)絡(luò)層,那就是輸入層與輸出層;因?yàn)檩斎雽优c輸出層需要與外界交互,輸入層需要接收外部輸入的數(shù)據(jù);而輸出層需要把神經(jīng)網(wǎng)絡(luò)中的數(shù)據(jù)輸出給外部。
其次,從Transformer的結(jié)構(gòu)圖中也可以看出,Transformer架構(gòu)的核心點(diǎn)在于多層的encoder-decoder,也就是編碼器和解碼器結(jié)構(gòu);而編碼器是由多頭注意力機(jī)制——前饋神經(jīng)網(wǎng)絡(luò)層以及兩個(gè)殘差鏈接和歸一化處理層組成;而解碼器與編碼器幾乎相同,只是多了一個(gè)多頭注意力層以及殘差鏈接和歸一化層。
而輸入嵌入和位置編碼只屬于前置處理,即不屬于編碼器也不屬于解碼器,但編碼器和解碼器都需要這個(gè)前置功能。
神經(jīng)網(wǎng)絡(luò)模型設(shè)計(jì)
神經(jīng)網(wǎng)絡(luò)模型簡單來說就是一個(gè)模擬人類大腦神經(jīng)網(wǎng)絡(luò)運(yùn)作的一個(gè)數(shù)學(xué)模型,可以把它簡單理解成一個(gè)函數(shù);對使用者來說,神經(jīng)網(wǎng)絡(luò)就是一個(gè)黑盒模型,給定一個(gè)輸入,神經(jīng)網(wǎng)絡(luò)就會(huì)按照特定的規(guī)則給出一個(gè)輸出。
只不過這個(gè)模型比較特殊的一點(diǎn)就是,模型可以通過學(xué)習(xí)數(shù)據(jù)的規(guī)律實(shí)現(xiàn)不斷進(jìn)化的過程,只不過目前來看這個(gè)學(xué)習(xí)過程是被動(dòng)的,而不是主動(dòng)的。
從本質(zhì)上來講,神經(jīng)網(wǎng)絡(luò)就是多維向量的計(jì)算過程,通過把外部數(shù)據(jù)轉(zhuǎn)化為向量,然后根據(jù)某種規(guī)則計(jì)算其在高維空間中的數(shù)學(xué)關(guān)系。
模型的訓(xùn)練
在上面神經(jīng)網(wǎng)絡(luò)模型設(shè)計(jì)中說過,模型可以通過學(xué)習(xí)數(shù)據(jù)規(guī)律實(shí)現(xiàn)不斷進(jìn)化,這個(gè)學(xué)習(xí)就是通過模型訓(xùn)練來實(shí)現(xiàn)的;在訓(xùn)練的過程中需要把模型調(diào)整到訓(xùn)練模式,然后模型就可以使用前/反向傳播,損失計(jì)算,優(yōu)化函數(shù)等來實(shí)現(xiàn)模型參數(shù)的調(diào)優(yōu)——也就是學(xué)習(xí)的過程。
而至于模型是怎么訓(xùn)練的, 以及其詳細(xì)的訓(xùn)練過程;這個(gè)就要看神經(jīng)網(wǎng)絡(luò)到底是怎么設(shè)計(jì)的,其有多少網(wǎng)絡(luò)層,以及每層網(wǎng)絡(luò)的功能實(shí)現(xiàn)過程;雖然神經(jīng)網(wǎng)絡(luò)的重點(diǎn)在于模型的設(shè)計(jì),但訓(xùn)練數(shù)據(jù)的質(zhì)量,以及訓(xùn)練的過程都會(huì)直接影響到模型的效果。
神經(jīng)網(wǎng)絡(luò)的執(zhí)行過程是一個(gè)線性過程,這一層的輸入來自上一層的輸出,而這一層的輸出又是下一層的輸入。而每層神經(jīng)網(wǎng)絡(luò)完成什么樣的任務(wù),就看你這層神經(jīng)網(wǎng)絡(luò)是怎么設(shè)計(jì)和實(shí)現(xiàn)的。
這就像排水管道一樣,水管就是神經(jīng)網(wǎng)絡(luò)層,向量就是“水流”里面的水。
本文轉(zhuǎn)載自公眾號AI探索時(shí)代 作者:DFires
