人工智能入門基礎
對人工智能領域來說,2016年是值得紀念的一年。不僅計算機「學」得更多更快了,我們也 懂得了如何改進計算機系統(tǒng)。一切都在步入正軌,因此,我們正目睹著前所未有的重大進步:我們有了能用圖片來講故事的程序,有了無人駕駛汽車,甚至有了能夠 創(chuàng)作藝術的程序。如果你想要了解2016年的更多進展,請一定要讀一讀這篇文章。AI技術已逐步成為許多技術的核心,所以,理解一些常用術語和工作原理成為了一件很重要的事。
本文引用地址:http://www.ex-cimer.com/article/201710/367893.htm人工智能是什么?
人工智能的很多進步都是新的統(tǒng)計模型,其中絕大多數(shù)來自于一項稱作「人工神經網絡」(artificial neural networks)的技術,簡稱ANN。這種技術十分粗略地模擬了人腦的結構。值得注意的是,人工神經網絡和神經網絡是不同的。很多人為了方便起見而把 「人工神經網絡」中的人工二字省略掉,這是不準確的,因為使用「人工」這個詞正是為了與計算神經生物學中的神經網絡相區(qū)別。以下便是真實的神經元和神經突 觸。
我 們的ANN中有稱作「神經元」的計算單元。這些人工神經元通過「突觸」連接,這里的「突觸」指的是權重值。這意味著,給定一個數(shù)字,一個神經元將執(zhí)行某種 計算(例如一個sigmoid函數(shù)),然后計算結果會被乘上一個權重。如果你的神經網絡只有一層,那么加權后的結果就是該神經網絡的輸出值。或者,你也可 以配置多層神經元,這就是深度學習的基礎概念。
它們起源何處?
人工神經網絡不是一個新概念。事實上,它們過去的名字不叫神經網絡,它們最早的狀態(tài)和我們今天所看到的也完全不一樣。20世紀60年代,我們把它稱之為感知 機(perceptron),是由McCulloch-Pitts神經元組成。我們甚至還有了偏差感知機。最后,人們開始創(chuàng)造多層感知機,也就是我們今天 通常聽到的人工神經網絡。
如果神經網絡開始于20世紀60年代,那為什么它們直到今天才流行起來?這是個很長的故事,簡單來說,有一些原因阻礙了ANN的發(fā)展。比如,我們過去的計算 能力不夠,沒有足夠多的數(shù)據(jù)去訓練這些模型。使用神經網絡會很不舒服,因為它們的表現(xiàn)似乎很隨意。但上面所說的每一個因素都在變化。如今,我們的計算機變 得更快更強大,并且由于互聯(lián)網的發(fā)展,我們可使用的數(shù)據(jù)多種多樣。
它們是如何工作的?
上面我提到了運行計算的神經元和神經突觸。你可能會問:「它們如何學習要執(zhí)行何種計算?」從本質上說,答案就是我們需要問它們大量的問題,并提供給它們答 案。這叫做有監(jiān)督學習。借助于足夠多的「問題-答案」案例,儲存在每個神經元和神經突觸中的計算和權值就能慢慢進行調整。通常,這是通過一個叫做反向傳播 (backpropagation)的過程實現(xiàn)的。
想象一下,你在沿著人行道行走時看到了一個燈柱,但你以前從未見過它,因此你可能會不慎撞到它并「哎呦」慘叫一聲。下一次,你會在這個燈柱旁邊幾英寸的距離 匆匆而過,你的肩膀可能會碰到它,你再次「哎呦」一聲。直到第三次看到這個燈柱,你會遠遠地躲開它,以確保完全不會碰到它。但此時意外發(fā)生了,你在躲開燈 柱的同時卻撞到了一個郵箱,但你以前從未見過這個郵箱,你徑直撞向它——「燈柱悲劇」的全過程又重現(xiàn)了。這個例子有些過度簡化,但這實際上就是反向傳播的 工作原理。一個人工神經網絡被賦予多個類似案例,然后它試著得出與案例答案相同的答案。當它的輸出結果錯誤時,這個錯誤會被重新計算,每個神經元和神經突 觸的值會通過人工神經網絡反向傳播,以備下次計算。此過程需要大量案例。為了實際應用,所需案例的數(shù)目可能達到數(shù)百萬。
既然我們理解了人工神經網絡以及它們的部分工作原理,我們可能會想到另外一個問題:我們怎么知道我們需要多少神經元?為什么前文要用粗體標出「多層」一詞? 其實,每層人工神經網絡就是一個神經元的集合。在為ANN輸入數(shù)據(jù)時我們有輸入層,同時還有許多隱藏層,這正是魔法誕生之地。最后,我們還有輸出 層,ANN最終的計算結果放置于此供我們使用。
一 個層級本身是神經元的集合。在多層感知機的年代,我們起初認為一個輸入層、一個隱藏層和一個輸出層就夠用了。那時是行得通的。輸入幾個數(shù)字,你僅需要一組 計算,就能得到結果。如果ANN的計算結果不正確,你再往隱藏層上加上更多的神經元就可以了。最后我們終于明白,這么做其實只是在為每個輸入和輸出創(chuàng)造一 個線性映射。換句話說,我們了解了,一個特定的輸入一定對應著一個特定的輸出。我們只能處理那些此前見過的輸入值,沒有任何靈活性。這絕對不是我們想要 的。
如今,深度學習為我們帶來了更多的隱藏層,這是我們如今獲得了更好的ANN的原因之一,因為我們需要數(shù)百個節(jié)點和至少幾十個層級,這帶來了亟需實時追蹤的大 量變量。并行程序的進步也使我們能夠運行更大的ANN批量計算。我們的人工神經網絡正變得如此之大,使我們不能再在整個網絡中同時運行一次迭代。我們需要 對整個網絡中的子集合進行批量計算,只有完成了一次迭代,才可以應用反向傳播。
有幾種類型?
在今天所使用的深度學習中,人工神經網絡有很多種不同的結構。典型的ANN中,每個神經元都與下一層的每個神經元相連接。這叫做前饋人工神經網絡(盡管如 此,ANN通常來說都是前饋的)。我們已經知道,通過將神經元與其他神經元按特定模式相連接,在處理一些特定情景的問題時,我們就會得出更好的結論。
1、遞歸神經網絡
遞歸神經網絡(RNN)的設計初衷是為了解決神經網絡不能基于過去知識做出決策的缺陷。典型的ANN已經在訓練中學會了基于文本做出決策,但是一旦它開始為實用做決策,這些決定之間就是彼此獨立的。
一個遞歸神經網絡
為什么我們會想要這樣的東西?好吧,想一想玩21點游戲。如果一開始你得到4和5,你就會知道2以下的牌都不在牌堆中。這種信息會幫助你決定是否要拿牌。 RNN在自然語言處理中十分有用,因為前文的字詞有助于理解文中其他詞語的含義。雖然有不同類型的實現(xiàn)方式,但是目的都是一樣的。我們想要保留信息。為了 達到這一目的,我們可以通過雙向遞歸神經網絡( bi-directional RNN)或執(zhí)行一個能根據(jù)每次前饋來進行調整的遞歸隱藏層。如果你想學習更多有關RNN的知識,可以查閱這篇博 客:http://karpathy.github.io/2015/05/21/rnn-effectiveness/。
說到這里,就不得不提到記憶網絡( Memory Networks),這一概念是說,如果我們想要理解諸如電影或者書中那些構筑于彼此之上的事件時,就必須記住比一個RNN或LSTM(長短期記憶人工神經網絡,一種時間遞歸神經網絡)更多的信息。
Sam走進廚房。
Sam拿起蘋果。
Sam走進臥室。
蘋果掉到了地上。
問:蘋果在哪兒?
答:臥室里。
這是這篇論文(http://arxiv.org/pdf/1503.08895v5.pdf)中的例子。
2、卷積神經網絡
卷積神經網絡(CNN)有時被稱為LeNets(以Yann LeCun命名),是層間隨機相連的人工神經網絡。然而,以這樣的方式設置突觸是為了有助于減少需要優(yōu)化的參數(shù)量。通過標記神經元連接的某種對稱性,你能 「重新使用」神經元以得到完全相同的副本,而不需要同等數(shù)量的突觸。由于CNN能識別出周圍像素的模式,因此它通常用于圖像處理。當你將某一像素與其周圍 的像素進行比較時,會包含冗余信息。由于存在對稱性,你可以壓縮類似信息。這聽起來像是CNN的完美情況,Christopher Olah也有一篇關于理解 CNNs和其他類型的ANNs的優(yōu)質博客(http://colah.github.io/posts/2014-07-Conv-Nets- Modular/ )。還有一篇關于CNN的博客:http://www.wildml.com/2015/11/understanding- convolutional-neural-networks-for-nlp/ 。
3、強化學習
我想要探討的最后一種 ANN的類型是強化學習(Reinforcement Learning)。強化學習是一個專業(yè)術語,用來描述計算機在嘗試將某種回報最大化時所表現(xiàn)出來的行為,這意味著它本身不是一個人工神經網絡的結構。然 而,你能用強化學習或遺傳算法來構建你以前從沒想過要用的人工神經網絡結構。 YouTube用戶SethBling上傳的用強化學習系統(tǒng)來構建可以自己玩Mario游戲的人工神經網絡的視頻就是個很好的例子。
另一個強化學習的例子是DeepMind公司的視頻中展示的能教程序玩各種Atari游戲。
結論
現(xiàn)在,你應該對目前最先進的人工智能有了一定的了解。神經網絡正在驅動你能想到的幾乎所有事情,包括語言翻譯、動物識別、圖片捕捉、文本摘要等等。在未來,你將越來越多地聽到它的名字。
評論