▌一、AI的定義及學(xué)術(shù)上的AI概念
AI,即人工智能,是當(dāng)前技術(shù)大熱門,一定有很多同學(xué)想學(xué),但是又覺得高深莫測,不知從何下手,沒關(guān)系,本文會讓大家迅速入門。
首先明確下AI的定義,很多人抱怨AI已經(jīng)變成了一種營銷語言,是個筐,什么都往里裝,而實際上似乎也是這樣……AI本來就是個很寬泛的概念,年輕人可能沒見過下面這種東西:
(圖1:人工智能是個筐,洗衣機也往里裝)
二十年前的AI洗衣機!上面會有一個大大的Fuzzy Logic標(biāo)簽和按鈕,這個標(biāo)簽彰顯了洗衣機的尊貴身份,按下這個按鈕則會有一些不可描述的事情發(fā)生!實際上這種洗衣機在洗衣服之前只是做了下面這些工作:
(圖2:人工智能洗衣機的 " 智能 " 之處)
什么?這種只要幾個傳感器和幾個If-Else語句、絕大多數(shù)程序員都能輕松搞定的事情,也算是AI嗎?當(dāng)然算,這是AI中的一種,被稱為模糊控制,真正的學(xué)術(shù)概念,真的不是洗衣機廠在吹牛,那么學(xué)術(shù)上的AI概念是什么呢?
(圖3:什么是人工智能)
簡單的說,AI就是任何可以讓機器模擬人類行為的技術(shù),像上文中可以自主決定洗衣時間的洗衣機,使用的就是AI中的模糊控制技術(shù),屬于AI技術(shù)中最為簡單的一種,更為復(fù)雜的還有知識表示與推理、模式識別、遺傳算法等,上述這些都是相對比較傳統(tǒng)的AI。
當(dāng)前大熱機器學(xué)習(xí)技術(shù)是AI至關(guān)重要的子集,與模糊控制、知識表示與推理這類基于顯式預(yù)置規(guī)則的技術(shù)不同,機器學(xué)習(xí)是基于統(tǒng)計學(xué)方法的,是利用統(tǒng)計學(xué)方法從已有的經(jīng)驗數(shù)據(jù)中獲取規(guī)律并改進機器行為的AI技術(shù)。
機器學(xué)習(xí)雖然在近幾年才變得熱門,但是其算法本質(zhì)上并不是什么新東西,比如貝葉斯分類器早已廣發(fā)應(yīng)用于垃圾郵件攔截至少有十余年之久。有一大類使用多層神經(jīng)網(wǎng)絡(luò)的機器學(xué)習(xí)技術(shù)被稱為深度學(xué)習(xí),這里深度的含義即是多層,多層中的多是個相對概念,根據(jù)算法的不同,可能是三五層,也可能是上百層。
深度學(xué)習(xí)也是種非常古老的技術(shù),比模糊邏輯的洗衣機還要老,但是之前一直受算力的限制而無法發(fā)揮其技術(shù)潛力,一次稍微復(fù)雜些的深度學(xué)習(xí)實驗會進行百萬億次甚至百億億次的浮點運算,當(dāng)年即使是最頂級的人工智能專家也苦于無法找到具備此等算力實驗環(huán)境而只能讓才華停留在空想。
近年來由于GPU性能的大幅提高和GPU集群技術(shù)的普及,具備這種算力的硬件成本大幅下降,極大的促進了深度學(xué)習(xí)技術(shù)的發(fā)展,而現(xiàn)在公有云也會提供GPU服務(wù),花個電影票的價錢就能體驗一次深度學(xué)習(xí)過程,舊時王謝堂前都難有的燕,嘩啦啦的飛入尋常碼農(nóng)家。
讀到這里有人可能會問,為什么是GPU推動了深度學(xué)習(xí)的發(fā)展,CPU不行嗎?簡單的說,深度學(xué)習(xí)需要大量的神經(jīng)網(wǎng)絡(luò)運算,這些運算中的絕大部分是矩陣的加法和乘法,運算本身并不復(fù)雜,只是運算量特別大,從運算復(fù)雜度上看,CPU做這種運算屬于牛刀殺雞,但是從運算量上看,雞太多了,區(qū)區(qū)幾把牛刀,即CPU的幾個核,累死也殺不完。
而GPU生來就是做圖像處理的,圖像的數(shù)據(jù)結(jié)構(gòu)就是矩陣,圖像處理主要就是做矩陣的加法和乘法。即GPU專注于矩陣運算,而不必像CPU那樣支持多種運算、數(shù)據(jù)結(jié)構(gòu)和控制邏輯,這就讓GPU的核比CPU的核簡單的多,所以兩千塊的CPU最多也就六個核,而兩千塊的GPU則有幾百個核,高端GPU有幾千個核。雖然GPU的每個核在功能和性能上都遠不如CPU,但是核的數(shù)量是CPU的成百上千倍,所以在做矩陣運算這個單項上,GPU的性能是CPU的十幾倍,甚至上百倍。
▌二、機器學(xué)習(xí):基于統(tǒng)計學(xué)方法的AI
AI是個很大的技術(shù)范疇,當(dāng)前大熱的機器學(xué)習(xí)是基于統(tǒng)計學(xué)方法的AI,而深度學(xué)習(xí)是機器學(xué)習(xí)中的最新大熱門,當(dāng)紅炸子雞。
或者可以說,AI這個概念在不同的時代背景下有著不同的含義,比如二十年前談家電的時候AI就是模糊控制,今天我們在IT圈里說AI一般指的就是機器學(xué)習(xí)。那么問題又來了,機器學(xué)習(xí)能用來做什么呢?
簡單的說,解決一切無法用顯式預(yù)置規(guī)則解決的問題,例如下圖
(圖4:機器學(xué)習(xí)的適用場景)
有人說了,我列一組規(guī)則,滿足這些規(guī)則的圖像,就是樹,比如:
有一個圓柱形的物體支撐著一個扇形物體;
圓柱形物體是深褐色或者類似的顏色,扇形物體是綠色或者黃色;
……
這樣貌似可行,可是再想想,這也可能是根棒棒糖。有人又說了,那我再繼續(xù)加規(guī)則,可是問題是,不能一直這樣的舉反例、加規(guī)則的循環(huán)下去,具體到工程實現(xiàn)中,就是不可能讓一個程序員一直在一旁待命,遇到反例就改程序,更糟糕是這些規(guī)則之間還可能會存在沖突,規(guī)則多了就很難理清。
這時機器學(xué)習(xí)就有了用武之地了,讓機器學(xué)習(xí)程序讀取一些樹的圖片,程序就會自動提取這些圖片的特征,讀取的圖片越多,提取的特征就越精確,這些圖片就是訓(xùn)練數(shù)據(jù),只要訓(xùn)練數(shù)據(jù)的質(zhì)量足夠好,訓(xùn)練次數(shù)足夠多,這個程序識別樹的精確度就會非常高,甚至比人還高。再回想一下人類識別樹的過程,人類思維從來都不是通過一系列的規(guī)則來識別樹的,而是小時候看過一些樹的照片和實物后,“莫名其妙的”就知道什么是樹了,這個過程實際上是和機器學(xué)習(xí)非常相似的。
然而可怕的是,通過這樣的學(xué)習(xí)過程,機器學(xué)習(xí)程序不光可以識別樹,還可以進一步識別哪些是蘋果樹、哪些是桃樹、哪些是荔枝樹,以至于黑楊、糖楓、鐵杉、赤松等成百上千種你從沒見過的品種,完勝絕大多數(shù)人類選手。
所以李開復(fù)老師曾經(jīng)說過:“如果人可以在5秒鐘內(nèi)對工作需要的思考和決策做出相對應(yīng)的決定,那么這項工作就有非常大的可能被AI全部或部分取代?!备膳碌氖?,機器學(xué)習(xí)程序是可以7×24不停的學(xué)習(xí)和工作的,所以在可以預(yù)見的未來,在此類任務(wù)上除少數(shù)專家之外(這些專家為機器學(xué)習(xí)程序提供訓(xùn)練數(shù)據(jù)),絕大多數(shù)人類必將完敗。甚至最后連這些專家都不是AI的對手,因為AI可以集結(jié)眾多專家的智慧,就像AlphaGo下圍棋一樣。
所以不要糾結(jié)AI會不會戰(zhàn)勝人類了,就像沒人會糾結(jié)自己算算術(shù)不如計算器一樣,這些無聊的事情都留給機器去做好了。
為什么我們要如此關(guān)注機器學(xué)習(xí)呢?
(圖5:眼下必須高度關(guān)注機器學(xué)習(xí),尤其是深度學(xué)習(xí))
卷積神經(jīng)網(wǎng)絡(luò)之父YannLeCun說這是一種全新的編程方式,叫DifferentiableProgramming。DifferentiableProgramming和聲明式編程有些相似之處:你只需準(zhǔn)備好輸入數(shù)據(jù)和期望的輸出數(shù)據(jù)作為訓(xùn)練數(shù)據(jù),神經(jīng)網(wǎng)絡(luò)就會自動構(gòu)造出中間的過程。更有意思的是,訓(xùn)練好的機器學(xué)習(xí)模型是可以芯片化的,相比于通用型的CPU,這種芯片可以大大降低晶體管數(shù)量和能耗,并提高運行效率。
▌三、幾個神經(jīng)網(wǎng)絡(luò)的基本概念
(圖6:基本概念1)
神經(jīng)元:簡單的說就是一個一次函數(shù)y=wx+b,其中w被稱為權(quán)重,即weight,b被稱為偏差,即bias,x和y即是神經(jīng)元的輸入和輸出。就是這么簡單。記得之前有人開玩笑說我在二維平面上畫一條直線,這個就是AI了。設(shè)想如果你把一盒圍棋撒到了地板上,然后讓你判斷一下能否在地板上畫一條直線把黑子和白子分開,如果能請畫出這條直線,現(xiàn)在讓你用程序來完成此事,這當(dāng)然是AI!
神經(jīng)網(wǎng)絡(luò):即多個神經(jīng)元的輸入和輸出對接。
(圖7:基本概念2)
深度神經(jīng)網(wǎng)絡(luò):即多個神經(jīng)網(wǎng)絡(luò)對接。
常見的深度神經(jīng)網(wǎng)絡(luò)有卷積神經(jīng)網(wǎng)絡(luò)CNN和遞歸神經(jīng)網(wǎng)絡(luò)RNN。
(圖8:常用的神經(jīng)網(wǎng)絡(luò))
▌四、老鼠的屁股:卷積神經(jīng)網(wǎng)絡(luò)
首先解釋下什么是卷積,其實很簡單:
(圖9:什么是卷積)
就是兩個矩陣的對應(yīng)位置相乘再求和。大矩陣就是神經(jīng)網(wǎng)絡(luò)要處理的數(shù)據(jù),比如一幅樹的圖片,小矩陣被稱為卷積核,神經(jīng)網(wǎng)絡(luò)對圖片的處理過程就是用卷積核在大矩陣上一步步的移動并相乘、求和,這么做的目的是什么呢?卷積核實際上是個篩子,上述過程實際上就是對大矩陣進行掃描和特征篩選的過程。
說到這里,可能有同學(xué)會問,現(xiàn)在我知道卷積是什么了,那卷積神經(jīng)網(wǎng)絡(luò)里的神經(jīng)元和神經(jīng)網(wǎng)絡(luò)又在哪里呢?
答案是,卷積核其實就是神經(jīng)元。前面說神經(jīng)元就是一次函數(shù),那其實是神經(jīng)元最基本的形式,實際應(yīng)用中這種相乘和相加關(guān)系大多是用矩陣來表示的,比如卷積核和被處理矩陣每個對應(yīng)位置的相乘都是一個一次函數(shù)(這里做了些簡化,忽略了相加),整體上表示為矩陣的相乘和相加,也就是前文中說的GPU最擅長的事情。而一堆卷積核的“互動”和其后的一些處理過程,就構(gòu)成了神經(jīng)網(wǎng)絡(luò)。
我們繼續(xù)以圖片識別為例解釋卷積神經(jīng)網(wǎng)絡(luò)的工作過程,至于其他類型的工作,只要輸入數(shù)據(jù)可以用矩陣描述,過程和圖片識別非常類似。
(圖10:卷積的作用)
上圖的卷積核是個老鼠屁股,這里使用的是灰度圖片,所以老鼠屁股被表示為一個具有圖片像素灰度值的小矩陣,如果是彩色圖片那就是分別描述三原色深度的三個小矩陣,而老鼠被表示為一個具有像素灰度值的大矩陣,彩色圖片同理。
現(xiàn)在讓卷積核在老鼠圖片上逐個像素的移動、相乘、求和,突然得出了一個很大的數(shù),即發(fā)現(xiàn)了一個老鼠屁股!這里的“很大”實際上是指卷積運算的結(jié)果超過了一個激活函數(shù)的閾值,超過了這個閾值就發(fā)出警報:“叮咚,發(fā)現(xiàn)老鼠屁股!”,沒超過就默不做聲。
接下來再想象一下我們有老鼠耳朵卷積核、老鼠眼睛卷積核、老鼠胡須卷積核、老鼠尾巴卷積核等一大堆卷積核,分別用這些卷積核掃描圖片,如果卷積運算的結(jié)果都超過了閾值,就可以說這副圖片具備老鼠的各種特征,即這副圖片的內(nèi)容在很大的可能性上是一只老鼠。
現(xiàn)在同學(xué)們應(yīng)該明白卷積的作用了吧!上面這些老鼠圖片也不知道最初源自何處,真是非常形象的說明了問題,在此對原作者深表感謝。
再回到前面那個“如何識別一棵樹”的問題,如果用卷積神經(jīng)網(wǎng)絡(luò)來解決這個問題,實際上就是用通過訓(xùn)練數(shù)據(jù)提取樹的特征的過程,主要工作就是求得描述這些特征的卷積核,然后再用這些卷積核去掃描訓(xùn)練數(shù)據(jù)之外的圖片,就可以判斷出圖片的內(nèi)容是不是一棵樹了。
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4771瀏覽量
100712 -
機器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8406瀏覽量
132558 -
ai技術(shù)
+關(guān)注
關(guān)注
1文章
1266瀏覽量
24285
原文標(biāo)題:AI雜談:從洗衣機到老鼠屁股
文章出處:【微信號:rgznai100,微信公眾號:rgznai100】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論