神經網絡是怎么學習的? 原創
“ 神經網絡的本質就是一個數學函數,也就是y=f(x)中的f ”
今天這篇文章主要是用來記錄一個問題,神經網絡是怎么學習的?
這個問題是在昨天寫神經網絡的開發框架——PyTorch和神經網絡架構——Transformer架構時突然發現的一個問題。
神經網絡的學習過程
在學習大模型或者說神經網絡的過程中,我們知道一件事就是,神經網絡在設計完成之后,需要經過大量的數據進行訓練;具體流程就是要把訓練數據輸入到模型中,然后模型經過一系列的處理,如損失計算,參數調整(反向傳播算法),一步一步的把模型參數調整到最優解。
但是從PyTorch框架來看,所謂的模型訓練就是在不斷的進行數學運算,包括矩陣運算,求導等等;而從Transformer架構來看,模型訓練就是經過架構中的編碼器和解碼器,通過數學計算的方式提取數據的特征,最終獲得結果。
這里就產生了一個問題,那就是為什么數據經過一系列數學運算之后,就可以學習到數據的特征;雖然說模型是通過矩陣運算,把數據轉化為向量之后,通過計算向量之間的數學關系來表示數據的特征;比如說,歐式距離,平方差等。
在多維的向量空間中,具有語義或關聯性的數據在多維空間中就會呈現一定的數學關系;但神經網絡是怎么知道它們之間的數據關系的?
在無監督學習中,數據之間的關系是模型根據自身的數學規則去計算訓練數據的潛在關系;而在監督學習中,模型是通過損失函數計算訓練數據與目標結果的數學關系——損失差;之后在經過調優函數進行反向傳播,動態調整模型參數的過程。
所以,從表現來看神經網絡之所以能學習到數據特征,主要原因并不在于數學計算,而在于怎么進行這個數學計算,比如第一步該怎么算,第二步該怎么算;最終計算出一個結果。
因此,神經網絡模型就類似于一個數學領域中的函數,也就是y=f(x),核心就在于這個f——數學關系。
而神經網絡這個函數f(x)和普通函數的區別就在于,普通函數是一個具備一定關系的數學公式,其參數和關系是固定的;而神經網絡這個函數的參數和關系卻是可以動態調整的。
怪不得很多人說,神經網絡的本質就是一個數學問題,更嚴格的說法應該是數學領域中的向量問題;而具體表現為矩陣運算。
訓練數據被轉換為向量之后,神經網絡模型就對這個向量進行七顛八倒的變換。
總的來說,神經網絡的載體是向量,方法是矩陣運算,核心是數學關系——也就是進行怎樣的數學計算,其數學原理是什么?也就是說y=f(x)的這個f到底是什么?
看來是時候需要研究一下Transformer的論文——《Attention is All You Need》了。
本文轉載自公眾號AI探索時代 作者:DFires
