AI神經網絡

人工智能已經發展了六七十年,經歷了幾度繁榮和衰落。雖然已取得不錯的進展,但是與理想中的人工智能差距還是很大。

 

人工智能三大學派:符號學派、連接學派、行為學派。符號學派認為,任何能夠將物理的某些模式或符號進行操作并轉化成另外一些模式或符號的系統,就可能產生智能行為;連接學派認為高級的智能行為是從大量神經網絡的連接中自發出現的,通過大量神經元來模擬大腦;行為學派并沒有把目光聚焦到高級智能的人類身上,而是關注低級的昆蟲能靈活走動并快速反應。上世紀的八九十年代形成三足鼎立的形勢。

 

這幾年再度讓人工智能火起來的是連接學派,連接學派通過深度學習將以往很多領域的表現都大幅提高,連接方式無疑已經成為目前最閃耀的人工智能解決方案。連接派的模型都是以神經網絡為基礎進行創新的,所以核心部分仍然是神經網絡結構。

 


關于分類

人類對事物的識別其實很大程度就是對事物進行分類。就好比下面圖中的各種花,我們看到桔梗時就知道它是一種花,看到曼陀羅時也認為它是一種花,看到不同的花我們都對它們進行分類。類似的還有人、樹、汽車等等,都屬于分類概念,當看到相應事物時都會對其進行分類。

 

分類是人工智能的核心部分,神經網絡則可以實現像人類這樣的識別分類能力。對于機器來說,所有信息都是用離散的數字信號來表征的,神經網絡的目標就是通過這些離散的信號來進行分類從而達到識別效果。

 


最簡神經網絡

感知器是最基礎的神經網絡,它可以有多個輸入(x1,x2,…xn),每個輸入對應有一個權重(w1,w2…wn),除此之外還有一個偏置項 w0。每個輸入和對應的權重相乘然后進行累加,再通過一個階躍函數,最簡神經網絡就是這么簡單。這么簡單的模型有什么用?其實它可用于線性分類。

 


假如現在有兩類事物,分別用藍色和黃色表示。我們提取了兩個判斷因子 x1 和 x2,現在準備使用簡單的神經網絡函數來決定某個點屬于藍色還是黃色。先計算 z = a x1+b x2+c,然后再將 z 值通過 Sigmoid 激活函數,Sigmoid 函數如圖,其值被壓縮到 0-1 之間,0.5 作為藍黃色的分界線。

 


現在的問題是 a、b、c 參數該怎么確定才能正確地將藍色和黃色分開呢?我們先隨便猜三個值,比如 a=0.20,b=-0.3,c=0.7,則此時的分類效果如下。

 


繼續猜 a=-0.20,b=-0.7,c=-0.5,這會運氣好,效果看起來挺不錯的,都正確分類了。可以肯定的是我們可以無限地猜測下去,而且會找到更加完美的分割線。但是哪條分割線是最好的,而且我們應該如何來尋找這些分割線呢?目前為止我們采取的是猜的策略,也許一猜就中,也許永遠都猜不中。

 


更強大的神經網絡

簡單的感知機屬于線性模型,而通過嵌套多個神經網絡層和增加神經元就可以解決很多復雜的問題。

 

整個神經網絡模型包含了三要素:線性變換、非線性變換和線性決策。線性與非線性變換實際上就是坐標變換,將信息聚合到其他空間中。從線性到非線性屬于特征變換,將某種特征轉成另外一種特征。而多層神經網絡就是做表征學習。

 

從數學上看,神經網絡的嵌套就是多個函數嵌套,通過復雜的函數嵌套關系來描述特征關系。

 


同樣是對兩類事物進行分類,但這次的任務比較復雜,可以看到黃色和藍色并不能通過簡單的函數進行分割,這時最簡單的神經網絡已經無能為力了,此時就需要嵌套多個神經網絡層并且增加神經元來解決了。

 


現在我們先對原來中間的網絡層增加兩個神經元,并再增加一層網絡,一共擁有兩個隱含層。

 


最終這種多層的神經網絡確實能夠完成對這種比較復雜的兩類事物的分類。

 


訓練神經網絡

我們不可能靠猜測靠運氣吃飯,神經網絡的參數也一樣,還是要踏踏實實地按照科學的方針來訓練神經網絡。實際上我們常常用誤差逆傳播算法來訓練神經網絡,它使用的是梯度下降法,通過反向傳播不斷調整神經網絡中各個權重從而使輸出層的誤差平方和最小。

 

神經網絡的輸出層我們會獲取到了一個最終的輸出,而這個輸出與目標值可能存在誤差,可以使用誤差平方和作為評判標準,這樣我們就可以判斷我們找到的函數的好壞。

 


而且,誤差是會反向傳播的,每個神經元都會有對應的誤差。具體處理時通過梯度下降法便可以更新每一個神經元的權重,這樣就能解決了神經網絡中連接的參數值了,即能確認所有函數的參數。

 


大概流程為:

計算從輸入到輸出的前饋信號。

根據預測值和目標值計算輸出誤差 E。

通過前一層中的權重和相關激活函數的梯度對它們進行加權反向傳播誤差信號。

基于反向傳播誤差信號和輸入的前饋信號計算參數的梯度

 

使用計算好的梯度來更新參數,公式為