“深度學(xué)習(xí)”雖然深奧,本質(zhì)卻很簡單。無論是圖像識別還是語義分析,機(jī)器的“學(xué)習(xí)”能力都來源于同一個算法 — 梯度下降法 (Gradient Descent)。要理解這個算法,你所需要的僅僅是高中數(shù)學(xué)。在讀完這篇文章后,你看待 AI 的眼光會被永遠(yuǎn)改變。
Google 研發(fā)了十年自動駕駛后,終于在本月上線了自動駕駛出租車服務(wù)。感謝“深度學(xué)習(xí)”技術(shù),人工智能近年來在自動駕駛、疾病診斷、機(jī)器翻譯等領(lǐng)域取得史無前例的突破,甚至還搞出了些讓人驚艷的“藝術(shù)創(chuàng)作”:
Prisma 把你的照片變成藝術(shù)作品
AI 生成的奧巴馬講話視頻,看得出誰是本尊嗎?
開源軟件 style2paints 能自動給漫畫人物上色
如果不了解其中的原理,你可能會覺得這是黑魔法。
但就像愛情,“深度學(xué)習(xí)”雖然深奧,本質(zhì)卻很簡單。無論是圖像識別還是語義分析,機(jī)器的“學(xué)習(xí)”能力都來源于同一個算法 — 梯度下降法 (Gradient Descent)。要理解這個算法,你所需要的僅僅是高中數(shù)學(xué)。在讀完這篇文章后,你看待 AI 的眼光會被永遠(yuǎn)改變。
一個例子
我們從一個具體的例子出發(fā):如何訓(xùn)練機(jī)器學(xué)會預(yù)測書價。在現(xiàn)實中,書的價格由很多因素決定。但為了讓問題簡單點,我們只考慮書的頁數(shù)這一個因素。
在機(jī)器學(xué)習(xí)領(lǐng)域,這樣的問題被稱為“監(jiān)督學(xué)習(xí) (Supervised Learning)”。意思是,如果我們想讓機(jī)器學(xué)會一件事(比如預(yù)測書的價格),那就給它看很多例子,讓它學(xué)會舉一反三(預(yù)測一本從未見過的書多少錢)。其實跟人類的學(xué)習(xí)方法差不多,對吧?
現(xiàn)在假設(shè)我們收集了 100 本書的價格,作為給機(jī)器學(xué)習(xí)的例子。大致情況如下:
頁數(shù)
書價
接下來我們要做兩件事:
告訴機(jī)器該學(xué)習(xí)什么;
等機(jī)器學(xué)習(xí)。
告訴機(jī)器該學(xué)什么
為了讓機(jī)器聽懂問題,我們不能說普通話,得用數(shù)學(xué)語言向它描述問題,這就是所謂的“建模”。為了讓接下來的分析更直觀,我們把收集回來的例子畫在數(shù)軸上:
我們希望機(jī)器通過這些樣本,學(xué)會舉一反三,當(dāng)看到一本從未見過的書時,也能預(yù)測價格。比如說,預(yù)測一本480頁的書多少錢:
480頁的書多少錢?
觀察圖表,我們能看出頁數(shù)和書價大致上是線性關(guān)系,也就是說,我們可以畫一根貫穿樣本的直線,作為預(yù)測模型。
如果我們把頁數(shù)看作 X 軸,書價看作 Y 軸,這根直線就可以表示為:
w 決定直線的傾斜程度,b 決定這根直線和 Y 軸相交的位置。問題是,看起來有很多條線都是不錯的選擇,該選哪條?換句話說 w 和 b 該等于多少呢?
每根直線都是一個候選的模型,該選哪個?
顯然,我們希望找到一根直線,它所預(yù)測的書價,跟已知樣本的誤差最小。換句話說,我們希望下圖中的所有紅線,平均來說越短越好。
紅線的長度,就是模型(藍(lán)色虛線)預(yù)測的書價,和樣本書價(藍(lán)點)之間的誤差。
紅線的長度等于預(yù)測書價和樣本書價的差。以第一個樣本為例,55頁的書,價格69元,所以第一根紅線的長度等于:
因為絕對值不便于后面的數(shù)學(xué)推導(dǎo),我們加個平方,一樣能衡量紅線的長度。
因為我們的預(yù)測模型是:
所以
這個樣本是一本 55 頁,69 元的書。
算式開始變得越來越長了,但記住,這都是初中數(shù)學(xué)而已!前面提到,我們希望所有紅線平均來說越短越好,假設(shè)我們有 100 個樣本,用數(shù)學(xué)來表達(dá)就是:
至此,我們把“預(yù)測書價”這個問題翻譯成數(shù)學(xué)語言:“找出 w 和 b 的值,使得以上算式的值最小。”堅持住,第一步馬上結(jié)束了!
我們現(xiàn)在有 2 個未知數(shù):w 和 b。為了讓問題簡單一點,我們假設(shè) b 的最佳答案是 0 好了,現(xiàn)在,我們只需要關(guān)注 w 這一個未知數(shù):
把括號打開:
在機(jī)器學(xué)習(xí)領(lǐng)域,這個方程被稱為“代價 (cost) 函數(shù)”,用于衡量模型的預(yù)測值和實際情況的誤差。我們把括號全打開:
不用在意方程中的數(shù)字,都是我瞎掰的。
至此,我們把“預(yù)測書價”這個問題翻譯成數(shù)學(xué)語言:“w 等于多少時,代價函數(shù)最小?”第一步完成!到目前為止,我們只用上了初中數(shù)學(xué)。
—
機(jī)器是怎么學(xué)習(xí)的
代價函數(shù)是個一元二次方程,畫成圖表的話,大概會是這樣:
不用在意坐標(biāo)軸上的具體數(shù)字,都是我瞎掰的。
前面講到,機(jī)器要找到一個 w 值,把代價降到最低:
機(jī)器采取的策略很簡單,先瞎猜一個答案(比如說 w 等于 20 ,下圖紅點),雖然對應(yīng)的代價很高,但沒關(guān)系,機(jī)器會用“梯度下降法”不斷改進(jìn)猜測。
如果你微積分學(xué)得很好,此時可能會問:求出導(dǎo)數(shù)函數(shù)為 0 的解不就完事了嗎?在實際問題中,模型往往包含上百萬個參數(shù),它們之間也并非簡單的線性關(guān)系。針對它們求解,在算力上是不現(xiàn)實的。
現(xiàn)在,我們得用上高中數(shù)學(xué)的求導(dǎo)函數(shù)了。針對這個瞎猜的點求導(dǎo),導(dǎo)數(shù)值會告訴機(jī)器它猜得怎么樣,小了還是大了。
如果你不記得導(dǎo)數(shù)是什么,那就理解為我們要找到一根直線,它和這條曲線只在這一個點上擦肩而過,此前以后,都無交集(就像你和大部分朋友的關(guān)系一樣)。所謂的導(dǎo)數(shù)就是這根線的斜率。
我們可以看得出,在代價函數(shù)的最小值處(即曲線的底部)導(dǎo)數(shù)等于 0。如果機(jī)器猜測的點,導(dǎo)數(shù)大于 0,說明猜太大了,下次得猜小一點,反之亦然。根據(jù)導(dǎo)數(shù)給出的反饋,機(jī)器不斷優(yōu)化對 w 的猜測。因為機(jī)器一開始預(yù)測的點導(dǎo)數(shù)大于 0 ,所以接下來機(jī)器會猜測一個小一點的數(shù):
機(jī)器接著對新猜測的點求導(dǎo),導(dǎo)數(shù)不等于 0 ,說明還沒到達(dá)曲線底部。
那就接著猜!機(jī)器孜孜不倦地循環(huán)著“求導(dǎo) - 改進(jìn)猜測 - 求導(dǎo) - 改進(jìn)猜測”的自我優(yōu)化邏輯 —— 沒錯,這就是機(jī)器的“學(xué)習(xí)”方式。順便說一句,看看下圖你就明白它為什么叫做“梯度下降法”了。
終于,皇天不負(fù)有心機(jī),機(jī)器猜到了最佳答案:
就這樣,頭腦簡單一根筋的機(jī)器靠著“梯度下降”這一招鮮找到了最佳的 w 值,把代價函數(shù)降到最低值,找到了最接近現(xiàn)實的完美擬合點。
總結(jié)一下,我們剛剛談?wù)摿巳拢?/p>
通過觀察數(shù)據(jù),我們發(fā)現(xiàn)頁數(shù)與書價是線性關(guān)系——選定模型;
于是我們設(shè)計出代價函數(shù),用來衡量模型的預(yù)測書價和已知樣本之間的差距——告訴計算機(jī)該學(xué)習(xí)什么;
機(jī)器用“梯度下降法”,找到了把代價函數(shù)降到最低的參數(shù) w ——機(jī)器的學(xué)習(xí)方法。
機(jī)器“深度學(xué)習(xí)”的基本原理就是這么簡單。現(xiàn)在,我想請你思考一個問題:機(jī)器通過這種方法學(xué)到的“知識”是什么?
現(xiàn)實問題中的深度學(xué)習(xí)
為了讓數(shù)學(xué)推演簡單點,我用了一個極度簡化的例子。現(xiàn)實中的問題可沒那么簡單,主要的差別在于:
現(xiàn)實問題中,數(shù)據(jù)的維度非常多。
今天在預(yù)測書價時,我們只考慮了頁數(shù)這一個維度,在機(jī)器學(xué)習(xí)領(lǐng)域,這叫做一個“特征 (feature)”。
但假設(shè)我們要訓(xùn)練機(jī)器識別貓狗。一張 200 * 200 的圖片就有 4 萬個像素,每個像素又由 RGB 三個數(shù)值來決定顏色,所以一張圖片就有 12 萬個特征。換句話說,這個數(shù)據(jù)有 12 萬個維度,這可比頁數(shù)這一個維度復(fù)雜多了。好在,無論有多少個維度,數(shù)學(xué)邏輯是不變的。
現(xiàn)實問題中,數(shù)據(jù)之間不是線性關(guān)系。
在今天的例子中,頁數(shù)和書價之間是線性關(guān)系。但你可以想象得到,貓照片的 4 萬個像素和“貓”這個概念之間,可不會是簡單的線性關(guān)系。事實上兩者之間的關(guān)系是如此復(fù)雜,只有用多層神經(jīng)網(wǎng)絡(luò)的上百萬個參數(shù)(上百萬個不同的 w:w1, w2, ..., w1000000)才足以表達(dá)。所謂“深度”學(xué)習(xí)指的就是這種多層網(wǎng)絡(luò)的結(jié)構(gòu)。
說到這里,我們可以回答前面的問題了:機(jī)器所學(xué)到的“知識”到底是什么?
就是這些 w。
在今天的例子中,機(jī)器找到了正確的 w 值,所以當(dāng)我們輸入一本書的頁數(shù)時,它能預(yù)測書價。同樣的,如果機(jī)器找到一百萬個正確的 w 值,你給它看一張照片,它就能告訴你這是貓還是狗。
正因為現(xiàn)實問題如此復(fù)雜,為了提高機(jī)器學(xué)習(xí)的速度和效果,在實際的開發(fā)中,大家用的都是梯度下降的各種強(qiáng)化版本,但原理都是一樣的。
-
AI
+關(guān)注
關(guān)注
87文章
31520瀏覽量
270334 -
人工智能
+關(guān)注
關(guān)注
1796文章
47673瀏覽量
240289 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5515瀏覽量
121551
原文標(biāo)題:用高中數(shù)學(xué)理解 AI “深度學(xué)習(xí)”的基本原理
文章出處:【微信號:IV_Technology,微信公眾號:智車科技】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
Nanopi深度學(xué)習(xí)之路(1)深度學(xué)習(xí)框架分析
如何在深奧中更快地學(xué)習(xí)PSoC?
什么是深度學(xué)習(xí)?使用FPGA進(jìn)行深度學(xué)習(xí)的好處?
物聯(lián)網(wǎng)的本質(zhì)是深度信息化
深度學(xué)習(xí)應(yīng)用入門
![<b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)</b>應(yīng)用入門](https://file.elecfans.com/web2/M00/49/EF/pYYBAGKhvHiAIxfzAABFJyElLKU580.png)
深度學(xué)習(xí)和普通機(jī)器學(xué)習(xí)的區(qū)別
![<b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)</b>和普通機(jī)器<b class='flag-5'>學(xué)習(xí)</b>的區(qū)別](https://file.elecfans.com/web1/M00/95/3A/pIYBAFz0we6AUZbhAAAT2eXNTqw108.jpg)
評論