如果問大多數人是否想要一台像電腦一樣的大腦,他們可能會很高興接受這個機會。但看看過去幾十年科學家們做了什麼,你會發現他們中的許多人一直在努力讓自己的電腦更像大腦!
如何做到?借助神經網絡——由數百、數千或數百萬個人工腦細胞組成的計算機程序,它們以驚人地相似的方式學習和行為。神經網絡到底是什麼?它們是如何工作的?讓我們來仔細看看!
如何將大腦與電腦區分開來?
你經常會聽到人們將人類大腦和電子計算機進行比較,乍看之下,它們確實有相似之處。
一個典型的大腦包含約 1000 億個微小的細胞,稱為神經元(沒有人知道確切有多少個,估計從約 500 億個到 5000 億個不等)。電腦(可能有幾百萬個電晶體,以相對簡單的方式連接)和大腦(可能有 10-100 倍更多的腦細胞,以更豐富和複雜的方式連接)之間的這種基本結構差異,是造成它們思考方式如此不同的原因。電腦非常適合存儲大量對它們無意義的信息,並根據我們事先輸入的明確指示(程序)以任何方式重新排列它。另一方面,大腦學習緩慢,採用更迂迴的方法,通常需要幾個月或幾年才能完全理解真正複雜的東西。但是,不像電腦,它們可以自發地以驚人新的方式將信息組合在一起——這就是貝多芬或莎士比亞的創造力來自的地方——識別原始模式,建立聯繫,並以完全不同的光線看待它們所學到的東西。
那就是電腦和大腦比較的開始和結束,因為兩者完全不同。不只是電腦是冷冰冰的金屬盒子,裡面塞滿了二進制數字,而大腦是溫暖的、有生命的東西,裡面充滿了思想、感覺和記憶。真正的區別在於,電腦和大腦的「思考」方式完全不同。
如果電腦能更像大腦就好了!這就是神經網路的用武之地!
什麼是神經網路?
神經網路的基本想法是在電腦中模擬(以簡化但相當真實的方式)大量緊密相連的腦細胞,以便讓它學習事物、識別模式,並以類似人類的方式做出決策。神經網路的驚人之處在於,你不必明確地編程它學習:它像大腦一樣自己學習!
但它不是大腦。重要的是要注意,神經網路通常是軟件模擬:它們是通過編程非常普通的計算機,以非常傳統的方式使用普通的晶體管和串行連接的邏輯閘,讓它們表現得好像是由數十億高度相互連接的腦細胞並行工作所構建而成。迄今為止,沒有人嘗試通過以與人類大腦完全相同的密集並行結構連接晶體管來構建計算機。
換句話說,神經網路與人類大腦的區別,正如氣象模型與真實的雲、雪花或陽光之間的區別一樣。計算機模擬只是一些代數變量和數學方程式的集合,將它們連接在一起(換句話說,是存儲在盒子中的數字,其值不斷變化)。它們對運行它們的計算機毫無意義,只對編程它們的人有意義。
真實和人工神經網路
在我們繼續之前,也值得注意一些術語。嚴格來說,用這種方式產生的神經網路被稱為人工神經網路(或 ANN),以區別於我們在大腦中找到的真實神經網路(由相互連接的腦細胞組成的集合)。您可能還會看到神經網路被稱為連接機(該領域也被稱為連接主義),並行分布式處理器(PDP),思維機器等。但是,在本文中,我們將始終使用術語「神經網路」來表示「人工神經網路」。
神經網路由什麼組成?
典型的神經網路由幾十到數百、數千甚至數百萬個人工神經元(稱為單元)組成,這些單元排列在一系列層中,每個層都連接到相鄰的層。其中一些,稱為輸入單元,被設計用來接收來自外部世界各種形式的信息,這些信息將被神經網路嘗試學習、識別或以其他方式處理。其他單元位於神經網路的另一端,並指示它如何對所學信息做出反應;這些被稱為輸出單元。在輸入單元和輸出單元之間,有一個或多個隱藏層,它們共同構成人工大腦的大部分。
大多數神經網路是完全連接的,這意味著每個隱藏單元和每個輸出單元都連接到相鄰層中的每個單元。 連接彼此之間的數字稱為權重,可以是正(如果一個單元激活另一個)或負(如果一個單元抑制或阻止另一個)。 權重越高,一個單元對另一個單元產生的影響就越大。 (這對應於實際的腦細胞在稱為突觸的微小間隙中觸發彼此的方式。)
深度神經網路
雖然簡單的神經網路可以由三層組成,如圖所示,但它也可以由輸入和輸出之間的許多不同層組成。這種更豐富的結構被稱為深度神經網路(DNN),通常用於解決更複雜的問題。理論上,DNN可以將任何類型的輸入映射到任何類型的輸出,但缺點是它需要更多的訓練:它需要看到數百萬或數十億個示例,而簡單的網路可能只需要數百或數千個。
無論深度或「淺度」,無論它如何被構建,無論我們如何在頁面上加以說明,都值得我們再次提醒自己,神經網路並不是真正的大腦或任何類似大腦的東西。最終,它只是一些巧妙的數學……一堆方程……如果您願意,可以稱為算法。
神經網路如何學習?
信息以兩種方式流經神經網路。當它在學習(被訓練)或正常運行(在被訓練後)時,信息模式會通過輸入單元輸入到網路中,這些單元會觸發隱藏單元層,這些單元又會到達輸出單元。這種常見的設計被稱為前饋網路。並非所有單元都會一直「觸發」。每個單元都會從左側的單元接收輸入,這些輸入會被乘以它們沿著傳輸的權重。每個單元以這種方式將它收到的所有輸入加起來,如果總和超過了一定閾值,則該單元會「觸發」並觸發它所連接的單元(它右側的單元)。
要讓神經網路學習,就必須有反饋元素參與——就像孩子們通過被告知他們做得對或錯來學習一樣。事實上,我們一直在使用反饋。想想你第一次學習玩保齡球時。當你拿起沉重的球並沿著球道滾動時,你的大腦會注意到球的移動速度和它所遵循的路線,並注意到你離擊倒瓶子有多近。下次輪到你的時候,你會記住你之前做錯了什麼,相應地修改你的動作,並希望把球扔得更好一點。所以你使用了反饋來比較你想要的結果與實際發生的結果,找出兩者之間的差異,並使用它來改變你下一次做的事情(「我需要扔得更用力」、「我需要向左滾一點」、「我需要晚一點放手」等等)。意圖和實際結果之間的差距越大,你就會越徹底地改變你的動作。

神經網路以完全相同的方式學習,通常是通過一種稱為反向傳播(有時簡稱為「反向傳播」)的反饋過程。這涉及比較網路產生的輸出與它應該產生的輸出,並使用它們之間的差異來修改網路中單元之間連接的權重,從輸出單元到隱藏單元再到輸入單元,也就是說,反向傳播。最終,反向傳播會使網路學習,將實際輸出與預期輸出之間的差異減少到兩者完全重合,因此網路會正確地弄清楚一切。

簡單的神經網路使用簡單的數學:它們使用基本的乘法來加權不同單元之間的連接。一些神經網路使用更複雜和精細的數學來學習在數據中識別模式。被稱為卷積神經網路(CNN 或有時稱為「ConvNets」)的它們的輸入層接受 2D 或 3D 的「表」數據(如你可能在學校學過的矩陣)。它們的隱藏層(有時有幾十個)包括一些執行稱為卷積的數學過程。簡單地說,卷積層會識別隱藏在數據中的顯著模式並將它們「集中」到更易於使用的形式。本質上,它們正在檢測關鍵特徵,然後可以由像更傳統的神經網路一樣工作的進一步層進行分類。CNN 在分類圖像或視頻、識別手寫等方面特別有效。
如何在實際中運作?
一旦網路經過足夠的學習,它就會到達一個可以用它從未見過的全新輸入集合來測試它的程度。例如,假設你一直在教一個網路,向它展示大量椅子和桌子的圖片,以它能理解的方式表示,並告訴它每個是椅子還是桌子。在向它展示了,比如 25 個不同的椅子和 25 個不同的桌子之後,你會給它一張它以前沒有遇到過的新設計的圖片——比如長椅——看看會發生什麼。根據你如何訓練它,它會嘗試將新示例分類為椅子或桌子,在過去的經驗基礎上進行概括——就像人類一樣。嘿,你教會了電腦如何識別家具!

這並不能說神經網路可以只是「看」家具並立即以有意義的方式回應它們;它不像一個人。考慮我們剛才給出的例子:網路實際上並沒有看家具。網路的輸入本質上是二進制數:每個輸入單元都被打開或關閉。因此,如果您有五個輸入單元,您可以使用二進制(是/否)答案向其中輸入關於不同椅子五個不同特徵的信息。問題可能包括 1)它有背嗎?2)它有頂部嗎?3)它有軟座椅嗎?4)您可以舒適地坐在上面很長時間嗎?5)您可以把很多東西放在上面嗎? 典型椅子將以 10110 或 10110 的二進制表示,而典型桌子將以 01001 或 01001 的二進制表示。因此,在學習階段,網路只是看著大量的 10110 和 01001 等數字,並學習到一些表示椅子(可能會輸出 1)而另一些表示桌子(輸出 0)。
神經網路有什麼用途?

通過以下例子,你可以看到神經網路在識別模式和做出簡單決策方面有許多不同的應用。
在飛機上,你可以使用神經網路作為基本自動駕駛系統,輸入單元從各種駕駛艙儀表讀取信號,輸出單元適當地修改飛機的控制系統,以使其安全飛行。在工廠內,你可以使用神經網路進行質量控制。假設你正在生產衣物清洗劑,可以測量不同方面的最終清洗劑(如顏色、酸度、厚度等),將這些測量值作為輸入輸入到神經網路中,然後讓網路決定是否接受或拒絕該批次。
在安全方面,神經網路也有許多應用。假設你正在運營一家銀行,每分鐘有成千上萬筆信用卡交易通過你的電腦系統。你需要一個快速的自動化方式來識別任何可能是欺詐交易的交易,這正是神經網路非常適合的。你的輸入可能是以下事項:
1)持卡人是否實際在場?
2)是否使用有效的PIN碼?
3)該卡在過去10分鐘內是否出現過五次或更多次的交易?
4)該卡是否在與註冊國家不同的國家使用?等等。
有了足夠的線索,神經網路可以標記任何看起來可疑的交易,讓人類操作員更仔細地調查它們。同樣地,銀行也可以使用神經網路來幫助它決定是否基於過去的信用記錄、目前的收入和就業記錄向人們提供貸款。
我們日常生活中的許多事情都涉及識別模式並使用它們來做出決策,因此神經網路可以以無數不同的方式幫助我們。它們可以幫助我們預測股市或天氣,操作雷達掃描系統,自動識別敵軍飛機或船隻,甚至可以幫助醫生根據症狀診斷複雜疾病。你的電腦或手機中現在可能正在運行著神經網路。如果你使用手機應用程式,在觸摸屏上識別你的手寫字跡,它們可能會使用簡單的神經網路來判斷你正在書寫哪些字符,通過觀察你用手指留下的痕跡中的特徵(以及你書寫它們的順序)來進行判斷。
某些語音識別軟件也使用神經網路,一些自動區分真正的電子郵件和垃圾郵件的電子郵件程序也使用神經網路。神經網路甚至被證明可以有效地將文本從一種語言翻譯成另一種語言。例如,谷歌自動翻譯在過去幾年中越來越多地使用這項技術,將一種語言中的單詞(網絡的輸入)轉換為另一種語言中的等效詞語(網絡的輸出)。 2016年,谷歌宣布正在使用所謂的神經機器翻譯(NMT)來瞬間轉換整個句子,並減少55%至85%的錯誤。這只是谷歌應用神經網路技術的一個例子:谷歌大腦是谷歌給其整個產品範圍的巨大研究努力命名的,包括其搜索引擎。它還使用深度神經網路為你在YouTube上看到的推薦提供動力,其模型“學習約十億個參數,並在數千億個實例上進行訓練”。
小結
人腦由複雜的神經元以矩陣方式密集連接構成,而電子計算機則由晶體管相對簡單的串行總線連接構成。人腦適合於學習、識別模式和創造力等任務,而電子適合於存儲大量信息並按照程序重新排列等任務。神經網絡技術的出現,使得計算機可以承載人類大腦,實現更複雜的任務。總體而言,神經網路通過使計算機系統更像人類而使其更有用。所以,當你下次想讓你的大腦像計算機一樣可靠時,再想想吧,並感激你已經有一個優秀的神經網路安裝在你的腦中!