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