首頁>科技>

關注:灰質,有趣有料的AI技術分享

前言

人工神經網路已經飛入尋常百姓家,也是這一波智慧技術興起的“始作俑者”,從專業的角度講解神經網路的資料數不勝數,但是感覺都不太友好,要麼偏於某個細分,要麼過於晦澀,我就嘗試著白話一下,拋磚引玉。

先說一個詞,非線性。這是人工神經網路的主要特徵。什麼是非線性呢,舉個例子,超市促銷打折,原來一斤雞蛋4塊錢,兩斤雞蛋8塊錢,這個增加的過程就是線性的,但是現在做活動,凡購買三斤以上的,按照原價開根號的結果(實際當然不可能這樣算)收費,這種價格就是非線性了。也就是說本來按照數量和價格的關係作圖是個直線,現在變成曲線了,甚至是不規則曲線了,那麼就變成非線性了,粗略的先這麼理解一下。現實生活中,絕大部分實際情況是非線性的,比如樹葉形狀、天氣變化等等,線性情況往往是人為簡化的結果。

之前腦科學的文章中提到過,智慧的核心能力體現在對世界複雜資訊的處理能力上,智慧體透過資訊的處理產生行為,作用於外部世界並獲得有利於智慧本體的反饋結果。當世界大部分情況是非線性的時候,當然就需要比較好的非線性資訊處理能力,大腦有這個能力,但是人類發明的傳統模型大都是線性的,做個簡單的自動化處理還行,稍微複雜一些就要人手把手的帶著做了,不具備獨立工作的能力,算是輔助工具吧,比如數控機床、自動化生產線等等。

說清楚了非線性,再說人工神經網路,在神經網路之前也不是沒有非線性模型,神經網路區別於之前非線性工具的主要特點就在於,這玩意可以自己獨立用一些來自外部的資訊就能把背後的非線性規律搞出來,專業的說法叫訓練或擬合,而且很準確,這就省掉了人腦分析建立模型的過程,比如人臉識別、聲音識別等,這個模型人類科學家們搞了很多年都沒搞準,實在太複雜了。所以有了神經網路,人類就可以把收集到的十萬百萬甚至更多的資料直接扔給模型自己去學,是不是跟養孩子有點像了?

不過大家也別抱過多的幻想,現在的神經網路所能做到的事情還都非常簡單且重複,就是所謂的比較“窄”,比如識別人臉、識別聲音轉換成文字等,而且所識別的資料都需要別人提供給他,在多工方面遠不如人,連簡單的自己買菜做飯都不行呢。人類仍然是世界的絕對主宰,不用擔心。

發展歷程概要

最原始的神經元結構在上世紀初就已經搞清楚了,生物學家就把神經元的樹突、軸突、細胞核那個影象都已經弄出來了,畢竟那時候已經有觀察條件。但是人工神經網路的發展大概要從上世紀中葉算起,那時候的心理學家與數學家聯手,搞出了神經元的數學表達,也就是現在所用的神經元模型,可見技術的核心快一百年沒有更新了,其實科技進步挺慢的,遠沒有論文發表和媒體報道的那麼神速和激動人心。

後來馮諾依曼本來想搞一下類腦計算機,沒錯就是設計咱們電腦的馮諾依曼,馮諾依曼當時提出了兩種架構,指令儲存式計算機和以簡單神經元組成的再生自動機網路結構,前面那個結構就是咱們現在所用的計算機架構,後面那個是更類腦一些的架構,但是由於各種基礎技術還不具備條件,導致類腦計算機遠沒有指令儲存式計算機發展迅速,時至今日,伴隨一些資料收集、晶片、數學等相關學科發展到了臨界點,才觸發了這一波AI熱潮。所以點亮科技樹是有順序和條件的,不能光憑一腔熱血。

上個世紀中葉,神經網路也曾經風靡一時,就是很多人都聽說過的感知機,這個模型做線性分類玩的很溜,1968年AI大神明斯基專門有本書說這個技術,名字就叫《感知機》,但這本書更多的是批評這個技術的,透過數學分析指出了感知機的技術天花板,就是不能解決異或問題,所謂異或問題就是一個邏輯運算,定義相同則值為零,不同則值為一,形象的比方就是同性相斥異性相吸吧,這個主要限制了感知機對非線性問題的解決,大家覺得沒前途然後感知機就涼涼了。

多層感知機網路雖然理論上能解決異或問題,但是大家當時還不知道怎麼訓練多層網路,後來深度學習之父辛頓把這個問題解決了,提出了反向傳播的計算方法,復活了人工神經網路,後來這哥們因為在AI領域的各種重要發現還獲得了圖靈獎。題外說一下,辛頓是發明布林代數那個布林的後代,這一家子可是個學術望族,都可以單獨聊一大篇了,所以啥都是有傳承的,包括科學的精神,咱們國家好像在這方面還差一些,在經世濟民方面比較厲害一些,就不多說了。

與此同時,隨著計算機技術的快速發展,計算機逐漸普及和廣泛應用,也誕生了IBM、微軟等一票大公司,與此同時,計算機程式中已有的工具庫慢慢不夠用了,上世紀80年代,美國物理學家Hopfield倡導大家重新回到人工神經網路找找辦法,或許有希望。然後就出現了眾所周知的卷積神經網路CNN,也是人臉識別的核心模型,但從CNN的提出到火起來還等了十幾年的時間,主要是受到資料和硬體效能的限制,CNN作為一種需要給出帶標籤訓練資料的演算法,問題越困難,模型就越複雜,需要的訓練資料就越誇張,人臉這個事情還是等到李飛飛領導建立了一個百萬級的影象資料集ImageNet時才逐漸被突破,當然這個資料集裡不只是人臉,而且後來人臉識別模型的成熟化也不只是這個資料集的功勞,還有大量資本推動下的創業公司前赴後繼。

說到這兒,時間線就已經到了21世紀了,這個時候在CNN之外,又出現了深度前饋網路,正則化、稀疏編碼、迴圈神經網路、遞迴神經網路、LSTM長短時記憶、圖神經網路、脈衝神經網路、深度強化學習等等各種各樣的新模型,可以理解為各路煉丹師們(科學家和演算法工程師們)在用計算機這個丹爐,配製的各種不同丹藥,解決的問題不同,功效不同,但基本都是基於多層神經網路的架構在不斷豐富和發展。

核心原理試闡

神經網路通常指的就是人腦的網狀結構形式,組成的基本單元是神經元,連線方式主要透過突觸,人腦的全腦神經元數量規模是這個星球上最為龐大的物種之一,高達近千億個神經元之多。但人類應該不是最多的,畢竟體積方面還有更大的動物,比如非洲象據說高達2千多億個神經元,但是如果按照智商高地的大腦皮層神經元數量計算,人類勝過非洲象很多了,而且人類的大腦皮層神經元數量還超過了藍鯨近二十億。

知乎一位匿名回答很好,“其實人類在數十萬年的時間長度上腦規模已經沒有什麼太大的變化,腦這個玩意也就是個電腦硬體,CPU沒變,但裡面跑的Code在最近這幾千年裡面變化巨大,導致了巨大的行為變化。讓一對博士生個孩子丟到野外長大,還是個野人,不會在野外‘生長出’哪怕初中的知識水平。”

神經網路在感知、判斷、決策和控制問題,以及群體問題中都有很多實踐,但是應該說主體成果還是集中於識別問題中,其他方面雖然有些進展,但還要算視覺識別方面較為成熟一些,我們就以此來舉例說說。

如果直接一點說,神經網路本身在非線性的模式識別方面得天獨厚,深度神經網路就像是一個巨大的分類器,可以把影象等視覺資訊的分類問題進行精確處理。傳統的方法通常要人類專家提前做好數學建模,對於某類影象給出明確的訊號處理模型,然後計算機就能處理這類影象了。但是人臉在影象處理領域屬於非常複雜的問題,不同的光線、角度、性別、年齡等等都對臉部影象有影響,建立好的模型非常難,但是神經網路透過強大的分層處理方式就做到了,分層處理這個事不是我說的,是圖領獎獲得者Lecun說的。他的原話是“DeepLearning = Learning HierarchicalRepresentations.”翻譯過來就是 “深度學習等於學習多個分層的表示”。這個話怎麼理解呢,咱們就一點點掰扯掰扯這個意思。

首先要說到的就是最基本的元件,神經元。

神經元可以簡單的理解成一個類似於洗衣服的過程,往洗衣機裡扔進去一些衣服(資料),一頓清洗(處理)之後會扔出來一些洗乾淨的衣服(結果),這個處理的過程通常成為模型或者函式。最早期的神經元模型叫MP模型,因為兩個發明者的名字中各取了一個字母。借鑑了神經元的結構形式,結構如下。

MP的神經元模型結構簡圖

這裡先不放數學公式了,旨在幫助感興趣的童鞋入門瞭解,省的讓大家頭疼。這個東西長得就蠻像神經元的生物結構了,大家對比下感受下。

輸入就像樹突一樣可以接收訊號,輸出就像軸突傳遞處理結果,而計算過程就像細胞核一樣。MP的神經元模型中的連線線非常重要,每個連線線上還定義了不同的權值用於建模計算。

在MP的神經元模型裡,函式F(x)是一種取符號的函式。這個函式主要作用就是判斷最終輸出是0還是1,就是最簡單的分類問題,即給出了一種輸入的組合,當輸出分類為0時屬於一種分類,為1的時候就算另一類。

神經元的結構至此就已經介紹清楚了,這就是各種神經網路最為基礎也是最重要的組成元件,當然神經元的權重、連線數量和方式、處理函式都有很多種不同的組合方式,具有不同的效果。

有了基本的結構之後就該處理一個比較棘手的問題了,如何訓練神經元。

最開始神經元的權重都是人為設定的,精度的調整也都靠人肉實現,這當然太低效了。但這個問題的解決已經來到了神經元模型釋出的16年之後,由計算科學家提出了感知器模型及其訓練方法,終於這個時候的神經元權重可以透過訓練得到了。

經典感知器的結構是兩層的神經元組成,第一層傳遞資料作為輸入,不做計算,第二層做計算,而且可以做多輸出,比如輸出向量[a1,a2]等。但是這個時候的感知機由於只有一個真正意義上的計算層,咱們這裡把計算層作為神經網路層數的計數標準,因此經典的感知機網路算是單層神經網路,這種網路只能處理線性分類問題,就是畫條直線做個分類。無法做比較複雜的分類,比如下圖這種它就幹不了。

於是乎神經網路的研究沉寂了很多年,從感知機的釋出時間算起,過了整整28年才來到了雙層神經網路有效訓練方法的發表,這個時候深度學習之父辛頓聯合另外一名計算科學家發表了大名鼎鼎的反向傳播BP演算法,這個演算法可以有效解決雙層神經網路的訓練問題,而雙層神經網路又可以有效解決上圖的那個非線性分類問題,就是要畫個曲線才能完成的分類。理論上已經證明,雙層神經網路可以無限逼近任意連續函式。怎麼理解呢,簡單說就是隻要是連續曲線能分清楚的類別,雙層神經網路都能搞定。

具體的雙層網路模型和BP演算法的基本思路就是首先神經網路中需要調整的引數用矩陣來表達和計算,這也就是為什麼學習深度學習一定要掌握線性代數的原因了,因為矩陣運算來求解神經網路引數是數學上非常方便的方式。然後就是BP反向傳播演算法主要思想是用求導的方式計算偏差的梯度並使其逼近於0,將網路最終輸出結果與真實值之間的差距在不同引數調整中進行傳遞,從而對引數進行自動化的調整使其越來越接近需要擬合的非線性資料分佈。

至此,神經網路自身的核心要素基本齊備了,但是有個小插曲就是雙層神經網路與SVM之爭,當時由於算力和資料都有限,SVM以其不需調參、高效和可解釋等優勢,完虐雙層神經網路,學術界一度對神經網路拒之門外,這個從很多神經網路早期論文中的對比試驗都與SVM作比較就略見一斑。

時間來到21世紀,深度學習之父辛頓終於給大家帶來了其顛覆之作深度信念網路,這個網路集成了Lecun在上世紀80年代發表的卷積核元件,改變了網路訓練方式,並增加了網路層數,尤其是在李飛飛教授領導的ImageNet影象資料集的競賽中取得了非常優異的成績,自此,深度神經網路雖然仍然在可解釋性、算力和訓練資料等方面存在問題,但已名揚學術江湖,幾乎達到了言必稱深度學習的程度。

這裡借用一下部落格園博主計算機的潛意識的幾張圖看一下發展過程,比較清晰。

三起三落的神經網路(引用自部落格園-計算機的潛意思-神經網路淺講:從神經元到深度學習)

表示能力不斷增強(引用自部落格園-計算機的潛意思-神經網路淺講:從神經元到深度學習)

發展的外在原因(引用自部落格園-計算機的潛意思-神經網路淺講:從神經元到深度學習)

從上面的圖比較清楚的可以看到人工神經網路三起三落的發展過程,網路結構和核心元件的變化,以及相關效能的變化情況,這裡暫不贅述了。

啟示與展望

總的來說,人工神經網路隨著資料和算力的提升,尤其是在辛頓、LeCun、Ng、Bengio等人的不斷堅持下,獲得了學術界的廣泛認可和研究,但是當前仍然有很多問題沒有解決,比如可解釋性、算力門檻、資料門檻等,或許又會進入一次寒冬,或許會隨著一些關鍵問題的突破再上一個臺階都說不定。這大概會與AI核心模型的進步、算力的突破以及虛擬化(含資料)技術的發展都有極大關係,但是終究來說,解開認知現象的科學奧秘,並透過計算科學來充分利用這個奧秘解決人類發展中遇到的問題,是一個比較確定的大趨勢。

再說一說啟示,從人工神經網路的發展過程還是有很多啟示留給我們的。

首先,神經網路的提出與發展一直受到了神經科學的啟發,比如神經元的結構受到生物神經元啟發,ReLU函式的使用受到生物神經元對於激勵的非線性響應現象啟發、卷積核的使用受到大腦視覺機制的啟發、注意力機制等等,當然這種啟發都不是簡單的模擬,而是從計算的角度建立可行的實現方式,就像飛行的模擬一樣,建立合理的數學實現方式計算機才能夠模擬。

其次,不要把神經網路過度神化。神經網路較為強大的非線性擬合能力是其核心特徵,但是單獨靠神經網路並不一定無往而不利,通常還要與其他元件進行有機的結合,比如決策問題還是要從狀態轉移的角度去和馬爾科夫過程結合,形成深度強化學習等等。

最後,畢竟人工智慧也好,神經網路也好,都是人類科技樹攀爬過程中的一些分支,還有很多其他學科需要同步發展才能真正讓科技走入社會,變成可以解決問題的成果,借用辛頓說過的話,“... provided that computers were fast enough, data sets were bigenough, and the initial weights were close enough to a good solution. All threeconditions are now satisfied.”。意思就是說,算力足夠快、資料足夠豐富和模型初始化足夠好的情況下才有可能出現深度信念網路的重要突破,接下來人工神經網路的發展同樣如此,不可偏廢。算力方面的量子計算和類腦器件等,資料方面的大資料基礎設施和管理等,都同樣是非常重要的。

好了,關於人工神經網路咱們就聊到這,有很多專業知識都是點到為止,感興趣的同學可以找專業課程和資料學習下,咱們只是投石問路,希望對大家有點幫助,如果覺得不錯,請給咱們支援一下吧,分享、收藏、三連各種走起,在此多謝啦!

12
  • 整治雙十一購物亂象,國家再次出手!該跟這些套路說再見了
  • 新覺醒年代的創新