? 上一期,我們為你介紹了什么是機器學習和深度學習,今天我們給你講一講神秘的神經網絡。
? 神經網絡,全稱是人工神經網絡,顧名思義這是從人類中樞神經系統受到的啟發,發明了人工神經網絡這個概念。在人工神經網絡中,簡單的人工節點,稱作神經元,連接在一起形成一個類似生物神經網絡的網狀結構。
? 神經網絡是我們上節課介紹的深度學習的基礎,這是一門強大的機器學習方法,可以這么說,正是神經網絡快速發展帶來的變革,引發了今天人工智能潮流的火爆。
那么,什么是神經網絡?
? 神經網絡最重要的用途是分類,為了讓你對分類有個直觀的認識,我們先看幾個例子:
? 貓狗分類:有一大堆貓、狗照片,把每一張照片送進一個機器里,機器需要判斷這幅照片里的東西是貓還是狗。
? 廣告識別:現在有一封電子郵件,把出現在里面的所有詞匯提取出來,送進一個機器里,機器需要判斷這封郵件是否是營銷廣告郵件。
? 影像識別:病人把在醫院照的X光影像片交給醫生,醫生把照片送進一個機器里,機器需要判斷這個病人是否得病,得的什么病。
? 這種能自動對輸入的東西進行分類的機器,就叫做分類器。
? 分類器的輸入和輸出都是一堆數值,比如第一個例子里,分類器的輸入是照片,假如每一張照片都是100*100像素的紅綠藍三通道彩色照片,那么分類器的輸入就是一個長度為100*100*3=30000的向量。輸出的時候,0則表示圖片中是狗,輸出1則表示是貓。
? 分類器的目標就是讓正確分類的比例盡可能高。一般我們需要首先收集一些樣本,人為標記上正確分類結果,然后用這些標記好的數據訓練分類器,訓練好的分類器就可以在新來的數據上工作了。
? 好,現在我們以輸出貓和狗為例,假設分類器的輸入是通過某種途徑獲得的兩個值,輸出是0和1,比如分別代表貓和狗。現在有一些樣本:
? 大家想想,最簡單地把這兩組特征向量分開的方法是啥?當然是在兩組數據中間畫一條豎直線,直線左邊是狗,右邊是貓,分類器就完成了。以后來了新的向量,凡是落在直線左邊的都是狗,落在右邊的都是貓(如下圖)。
? 一條直線把平面一分為二,一個平面把三維空間一分為二,兩邊分屬不同的兩類,這種分類器就叫做神經元。
? 上圖的分類器好分,但是下圖呢?
? 當樣本的復雜程度增加的時候,一個神經元只能切一刀的缺點就會顯露。這時的解決辦法是多層神經網絡,底層神經元的輸出是高層神經元的輸入。我們可以在中間橫著砍一刀,豎著砍一刀,然后把左上和右下的部分合在一起,與右上的左下部分分開;也可以圍著左上角的邊沿砍10刀把這一部分先挖出來,然后和右下角合并。
? 每砍一刀,其實就是使用了一個神經元,把不同砍下的半平面做交、并等運算,就是把這些神經元的輸出當作輸入,后面再連接一個神經元。這個例子中特征的形狀稱為異或,這種情況一個神經元搞不定,但是兩層神經元就能正確對其進行分類。只要你能砍足夠多刀,把結果拼在一起,什么奇怪形狀的邊界神經網絡都能夠表示,所以說神經網絡在理論上可以表示很復雜的函數/空間分布。
? 最后我們來說一下神經網絡的訓練。它依靠反向傳播算法:最開始輸入層輸入特征向量,網絡層層計算獲得輸出,輸出層發現輸出和正確的類號不一樣,這時它就讓最后一層神經元進行參數調整,最后一層神經元不僅自己調整參數,還會勒令連接它的倒數第二層神經元調整,層層往回退著調整。經過調整的網絡會在樣本上繼續測試,如果輸出還是老分錯,繼續來一輪回退調整,直到網絡輸出滿意為止。這有點像小米式互聯網思維,從用戶終端聽取意見,優化需求更新產品功能,最終做出用戶喜歡的,強參與感的智能手機。
? 如果形象地打個比方,神經網絡就像一個剛開始學習東西的小孩子,開始認東西,作為一個大人(監督者),第一天,他看見一只京巴狗,你告訴他這是狗;第二天他看見一只波斯貓,他開心地說,這是狗,糾正他,這是貓;第三天,他看見一只蝴蝶犬,他又迷惑了,你告訴他這是狗……直到有一天,他可以分清任何一只貓或者狗。
? 這就是神經網絡,你看懂了么?
小結:
? 神經網絡是一種把東西進行分類的機器,它由若干個神經元組成。每個神經元就像一把剪刀,可以把兩組數據一分為二;若干個神經元經過剪切、拼接、粘貼之后,最終可以把兩個東西區分開(例如區分貓和狗),這就是神經網絡。
預告:
? 下一期,我們將向你介紹神奇的蒙特卡羅算法,結合神經網絡,可以為你解析AlaphaGo的工作原理。
? 如果你感興趣,請留意關注微信公眾號:智能加研究院