神經(jīng)網(wǎng)絡技術棧介紹:PyTorch,Transformer,NLP,CV,Embedding
學習了一段時間神經(jīng)網(wǎng)絡技術之后發(fā)現(xiàn)對很多東西理解還不夠深刻,所以今天就來梳理一下神經(jīng)網(wǎng)絡的技術棧,深入了解一下不同的工具在神經(jīng)網(wǎng)絡中所處的位置,以及其扮演的角色。
先說一句廢話,神經(jīng)網(wǎng)絡僅僅只是神經(jīng)網(wǎng)絡,它不涉及具體的任務,只是一個神經(jīng)網(wǎng)絡模型;神經(jīng)網(wǎng)絡要解決實際問題就需要和不同的任務領域相結合。
神經(jīng)網(wǎng)絡技術棧
要了解或者說要學習神經(jīng)網(wǎng)絡,首先要從兩個方面去入手——技術原理和應用場景。
神經(jīng)網(wǎng)絡是基于人工智能領域中,機器學習的深化——深度學習,通過模仿人類的大腦神經(jīng)的行為來實現(xiàn)人工智能的一種技術手段。
因此,基于這種思想誕生了神經(jīng)網(wǎng)絡模型;既然是模仿人類大腦的神經(jīng)網(wǎng)絡模型,那么具體的數(shù)學模型應該是什么樣的呢?
因此,這里就產(chǎn)生了神經(jīng)網(wǎng)絡模型中幾種常見的神經(jīng)網(wǎng)絡架構及其變種,RNN——循環(huán)神經(jīng)網(wǎng)絡,CNN——卷積神經(jīng)網(wǎng)絡和Transformer——自注意力模型。
為什么會有多種不同的神經(jīng)網(wǎng)絡架構模型?
因為人類還無法真正模擬出人類的大腦神經(jīng)網(wǎng)絡,因此只能根據(jù)不同的任務類型設計能夠處理不同任務的神經(jīng)網(wǎng)絡模型;比如說Transformer擅長處理NLP任務,CNN適合處理圖像任務等。
所以說可以簡單把神經(jīng)網(wǎng)絡技術理解成一種實現(xiàn)人工智能的思想,而RNN,CNN與Transformer等神經(jīng)網(wǎng)絡架構是其中的幾種實現(xiàn)方式,也可以理解成數(shù)學模型。
而有了思想還要有具體的實現(xiàn),因為神經(jīng)網(wǎng)絡的本質是數(shù)學模型,因此需要進行大量的數(shù)學計算;所以,谷歌和meta公司分別開發(fā)了一款神經(jīng)網(wǎng)絡的開發(fā)框架,Tensorflow和PyTorch,也就是一個科學計算框架,里面封裝了大量的數(shù)學計算公式等。
因此,如果說RNN,CNN和Transformer是一種實現(xiàn)思想;那么PyTorch就是實現(xiàn)這些思想的具體工具;有了PyTorch和Tensorflow技術人員在開發(fā)神經(jīng)網(wǎng)絡時就會簡單很多。
以上是神經(jīng)網(wǎng)絡中純粹的技術問題,網(wǎng)絡模型是理論,PyTorch和Tensorflow負責具體實現(xiàn)。
而從實際的價值來說,技術的作用是解決問題,也就是應用;因此,需要把神經(jīng)網(wǎng)絡技術與其它領域的任務相結合,去解決實際問題,這樣才能發(fā)揮神經(jīng)網(wǎng)絡的真正價值。
而作為一個人工智能,最基礎的功能當然就是要能夠和人類進行正常交流;因此,神經(jīng)網(wǎng)絡就必須能夠理解語言,圖像,視頻;并且能夠生成新的內容。
所以,神經(jīng)網(wǎng)絡與自然語言處理(NLP)任務相結合就有了自然語言處理的神經(jīng)網(wǎng)絡模型;而神經(jīng)網(wǎng)絡與圖像,視頻處理的任務相結合,就有了CV——計算機視覺處理。
所以說,NLP和CV是神經(jīng)網(wǎng)絡技術的兩個主要應用方向;但NLP和CV并不是依賴于神經(jīng)網(wǎng)絡技術而存在,NLP和CV是兩項獨立的技術領域;只不過神經(jīng)網(wǎng)絡技術在這兩個領域中表現(xiàn)還不錯。
神經(jīng)網(wǎng)絡與NLP和CV的關系就類似于農(nóng)村地鍋和城市里的天然氣類似;做飯可以用地鍋,也可以用天然氣;只不過天氣熱用起來更簡單方便。神經(jīng)網(wǎng)絡就相當于天然氣,但不用神經(jīng)網(wǎng)絡還有其它方法研究NLP和CV。
這也是為什么,明明你學了pyTorch和Transformer,你依然不知道該怎么解決NLP和CV的問題;原因就在于神經(jīng)網(wǎng)絡只是研究NLP和CV的一種工具。這就相當于你學會了使用天然氣,但就代表你會做菜了嗎? 畢竟天然氣和做菜是兩個領域的問題。
那現(xiàn)在應該知道神經(jīng)網(wǎng)絡與NLP,CV的關系了吧?以及神經(jīng)網(wǎng)絡的幾種經(jīng)典架構模型;但Embedding又是什么東西?
Embedding中文叫做嵌入,簡單來說就是一種數(shù)據(jù)格式轉換工具;在神經(jīng)網(wǎng)絡中,主要的數(shù)據(jù)格式是向量(張量);而在人類的交流中主要是文字,圖片,視頻等數(shù)據(jù)格式。
因此,使用神經(jīng)網(wǎng)絡模型就需要把人類認識的文字,圖片,視頻等格式的數(shù)據(jù),轉換成神經(jīng)網(wǎng)絡能難過處理的數(shù)據(jù)格式——也就是張量(向量)。而這個過程就是Embedding要做的事情,數(shù)據(jù)格式轉換。