神經網絡理論與技術學習以及工具 原創
“ 為什么數據在神經網絡模型中經過數學變換,就能被學習?”
關于神經網絡技術有兩個大的方向,一個是搞應用,另一個是搞技術;當然這里所說的應用并不是指完全脫離技術,而是指以大模型技術為底座構建上層應用或產品。
而今天所講的主要是關于神經網絡技術的學習,包括怎么實現一個神經網絡,應該使用哪些工具等等。
神經網絡技術學習及工具
先科普一下,現在爆火的大模型技術就是基于深度學習的神經網絡模型;所謂的大模型技術本質上就是神經網絡技術。
從應用層面來看,我們給大模型一個輸入,然后大模型就會給我們一個輸出;不論是文字,圖片還是視頻都是如此,而這個也叫做AIGC。
但問題就在于大模型是怎么做到的呢?也就是怎么才能實現一個這樣的神經網絡模型?
從原理上來看,神經網絡模型就是模仿人類大腦的物理結構,也就是大腦神經網絡;然后使用數學建模的方式,根據人腦神經網絡構建的數學模型。
因此,第一個學習神經網絡的重要工具就出現了——數學計算,具體落地就是pyTorch和Tensorflow等科學計算框架;pyTorch和Tensorflow框架中封裝了大量的數學計算公式,如微積分,概率,線性代數,向量計算等;當然,除這兩者之外還有其它計算框架,這里就不多介紹了。
而從應用上來說,數學只是一種工具,解決具體的問題還需要有具體的理論基礎;比如說,pytorch框架中有微分方程,向量計算;但第一步是先進行向量計算還是進行微分計算,這個就是有神經網絡理論所決定的。
因此,這里就涉及到了學習神經網絡模型的第二個工具,神經網絡模型結構;典型的如Transformer,RNN,CNN,LSTM等模型結構。由于目前神經網絡這個數學模型還無法做到像真正的人腦一樣,因此根據不同的任務目標設計出了不同的神經網絡結構模型。
在學習神經網絡模型結構中,雖然官方和網絡上給了大量的學習案例,但神經網絡模型為什么能夠經過多種網絡層的變換,就可以“學習”和“生成”新的內容,這個就需要大量的基礎理論,如數學,腦科學,計算機科學等。
否則,即使你按照別人的架構實現了一個神經網絡模型,并且能夠很好的完成任務目標;也不一定能真正理解神經網絡的運作原理。
再然后就是關于神經網絡的訓練,如損失計算,反向傳播,優化函數,數據準備等。
比如說,什么類型的神經網絡使用什么樣的損失函數,以及反向傳播方式;而優化函數又應該怎么實現,這個需要根據具體的網絡模型設計來決定。
而數據準備也是一個復雜的處理過程;比如多種數據格式,多種數據來源,怎么把多種數據格式處理成統一的格式,以及文本,圖像,視頻等向量化。
具體來說,文本數據需要創建詞庫,需要確定輸入數據等前后關系;圖像數據的特征提取,以及不同格式數據在高維空間和低維空間中的表示以及轉換問題。
總之,神經網絡技術的學習是一個實踐性很強的領域;單純的實踐和單純的理論都很難學好神經網絡這門技術。
有實踐沒理論,那么就像無頭蒼蠅一樣,知其然不知其所以然;有理論實踐,就會形成典型的眼高手低,感覺自己什么都懂,但一深入就直接傻眼。
所以,學習神經網絡先用別人的案例,自己實現一個神經網絡模型;然后能不能用,以及好不好用并不重要,先搞明白神經網絡的運行機制再說。
本文轉載自公眾號AI探索時代 作者:DFires
