看完這篇文章,從事人工智能的我再也不敢裝逼了
機(jī)器學(xué)習(xí)是什么?給你十秒鐘,請給出答案。
……
不知道?就這你還想從事人工智能行業(yè)?得了吧!
聽著:機(jī)器學(xué)習(xí)使用數(shù)據(jù)中的模式來標(biāo)記事物。
聽起來是不是很神奇?
......
好了,就此打住。
機(jī)器學(xué)習(xí)的核心概念其實(shí)非常簡單,簡單到讓人“尷尬”。
這里說的“尷尬”是指,如果有人在你面前“裝逼”,讓你覺得機(jī)器學(xué)習(xí)很神奇,他們應(yīng)該感到尷尬。為什么呢?且看這篇“反裝逼”指南。
這篇指南的作者是Cassie Kozyrkov,谷歌的首席決策情報(bào)工程師,不僅人美,心也善。經(jīng)常在Hacker Noon上發(fā)表一些與人工智能相關(guān)的干貨文章。
在這篇指南中,她使用的例子是葡萄酒。她還很貼心地提到,如果你不喜歡喝葡萄酒,也可以把葡萄酒腦補(bǔ)成任何你喜歡喝的飲品,比如茶。
好了,廢話不多說,讓我們搬起小板凳,進(jìn)入正題吧~
機(jī)器學(xué)習(xí)到底是如何工作的?
機(jī)器學(xué)習(xí)并不是魔法,沒有數(shù)據(jù)是不可能學(xué)習(xí)的,所以想要完成這個類比,必須要喝一些葡萄酒。
數(shù)據(jù)
為了學(xué)習(xí),需要有獻(xiàn)身精神。大家可以體會下,一口氣喝了50種葡萄酒是種什么感受。關(guān)鍵是喝完酒還不算完,我還要處理這些信息,并把它們可視化,以便在下面觀看。
每一種葡萄酒都有相應(yīng)的年份,品嘗完了之后要打個分,然后給出一個判斷。這個判斷,也就是我們希望人工智能之后能夠自己做出的判斷:Y代表好喝,N代表不好喝。
相關(guān)的數(shù)據(jù)都記錄在了電子表格中(左),但是為了讓大家看得舒服,我把所有的數(shù)據(jù)都可視化了(右)。
算法
接下來,就要進(jìn)行下一件事情了。把紅色區(qū)域和藍(lán)色區(qū)域分開,你能做到嗎?機(jī)器學(xué)習(xí)就是要選擇一種算法來完成這個過程,選了哪個算法,就決定了最后會得到哪種模型。
如果你想著劃一條線來完成這項(xiàng)工作的話,那恭喜你!你剛剛發(fā)明了一種機(jī)器學(xué)習(xí)算法,它的名字叫……感知器(perceptron)。是的,就是這么高大上,它的名字就是這么酷炫。請不要被機(jī)器學(xué)習(xí)中的“行話”嚇倒,通常情況下都是大忽悠。
但是,你劃的線應(yīng)該指向哪里呢?我們的目標(biāo)是把Y和N分開,劃一條直線并不是一個非常聰明的解決方案。
我們選擇一種機(jī)器學(xué)習(xí)算法的目的,是為了找到最合理的地方劃出分界線。這需要通過優(yōu)化目標(biāo)函數(shù)來完成。
優(yōu)化
你可以這樣想:目標(biāo)函數(shù)就像是棋盤游戲的規(guī)則一樣,優(yōu)化就是找到一個能夠獲得高分的玩法。
從傳統(tǒng)上來說,在機(jī)器學(xué)習(xí)中,我們更喜歡“棍棒”而不是“胡蘿卜”。也就是對錯誤進(jìn)行計(jì)分。這就是為什么機(jī)器學(xué)習(xí)中的目標(biāo)函數(shù)被稱為“損失函數(shù)”,目的就是要盡量減少損失。
想親自玩一把嗎?回到上面的那張圖,用你的手指在屏幕上劃線把Y和N分開,直到零失誤。感知器同志,感覺到未來觸手可及了嗎?
也許,你得到的解決方案是這樣的:
最左邊的這種結(jié)果,我沒有嘗試過。中間的那個也不太合適。我最喜歡的是最右邊那個。
算法是具有多樣性的,它們之間最不同的一個方面,就是它們怎么去確定分界線。
癡迷于優(yōu)化的那群人會告訴你,以微小的增量調(diào)整分界線是不明智的,還有更好、更快的方法來找到最佳位置。一些研究人員致力于花一輩子的時間找出一種方法,不管數(shù)據(jù)多復(fù)雜,都能最簡單地找到最好的分界線位置。
算法的另一個不同的方面是邊線的形狀。邊界線不一定是直的。不同的算法,使用的邊界線形狀也不同。如下圖:
為追趕潮流的人設(shè)計(jì)的算法
如今,沒有一個追趕數(shù)據(jù)科學(xué)浪潮的人會選擇用直線來區(qū)分。那些看上去很靈活、很彎曲的線在他們之中非常流行。他們會使用其實(shí)并沒有多少神經(jīng)的神經(jīng)網(wǎng)絡(luò)算法。我更傾向于稱它們?yōu)?ldquo;瑜伽網(wǎng)絡(luò)”或者是“多層數(shù)學(xué)運(yùn)算”,但好像沒有人喜歡我的這種叫法。
不同的算法會告訴你,它們會在數(shù)據(jù)中放置什么形狀的邊界線。但如果你是一個應(yīng)用型的機(jī)器學(xué)習(xí)愛好者,記不住它們那種天書般的名字也沒關(guān)系——在實(shí)踐中,你只需要盡可能多地將數(shù)據(jù)輸入到算法中,然后重復(fù)執(zhí)行那些看起來很有希望的事情就行了。
模型
一旦邊界線劃好了,算法也就完成了,你就能從中得到你想要的東西了:一個模型。在下一次我給它“看”一瓶新的葡萄酒的時候,它就能將數(shù)據(jù)轉(zhuǎn)換成決定。
標(biāo)簽
一旦你把新鮮出爐的模型投入使用,在計(jì)算機(jī)中輸入葡萄酒的年份和評價分?jǐn)?shù)后,你的模型會給它找出對應(yīng)的區(qū)域并輸出標(biāo)簽。
那問題來了,我們?nèi)绾沃浪欠裼行??誰知道這是不是瞎搞?最直接的辦法就是對輸出進(jìn)行檢查。
通過運(yùn)行一堆新數(shù)據(jù)來測試你的模型,并確保它能夠一直能夠良好的運(yùn)行。事實(shí)上,無論模型是算法想出來的還是程序員想出來,都要這樣做。
結(jié)語
在我此前的另一篇文章中,我對整個過程進(jìn)行了一個類比:
詩人與機(jī)器學(xué)習(xí)
如果你看不懂這個類比,也許你會喜歡這個:詩人會選擇一種方法(算法),將文字寫在紙上。這種方法決定了詩歌的形式(邊界線形狀)是俳句還是十四行詩?一旦他們以最佳的方式完成了十四行詩,它現(xiàn)在就是一首詩(模型)。
機(jī)器學(xué)習(xí)模型與傳統(tǒng)的編程
但是,以這種方式得到的模型,與程序員通過觀察問題,并手動制定一些規(guī)則來編寫的代碼沒有太大的不同。二者在概念上是相同的。
不要到處說機(jī)器學(xué)習(xí)的“再訓(xùn)練”(retraining)有多厲害了。程序員也可以坐在那里調(diào)整代碼以響應(yīng)新的信息。
這就是全部了嗎?
是的,差不多了。機(jī)器學(xué)習(xí)工程中最困難的部分就是安裝軟件包,接著就是處理數(shù)據(jù)集,然后就能在上面運(yùn)行一個有限的算法了。
接下來就是“超參數(shù)調(diào)優(yōu)”,別被忽悠住了,不過是在生成一個模型之前,沒完沒了地?cái)[弄代碼設(shè)置而已。
當(dāng)你使用新的數(shù)據(jù)評估這個模型的時候,如果結(jié)果不太理想,你還得一遍又一遍地重復(fù),直到能夠拿出手。 這就是為什么雇傭一些對失敗有耐心的人來做這件事非常重要。如果是個玻璃心,估計(jì)撐不了幾回合就吐血了吧。
如果你期待有什么奇跡,我勸你越早失望越好。機(jī)器學(xué)習(xí)是非??菰锏倪^程。但是,如果你能夠耐得住性子,你能做的事情將會是非常不可思議的。它可以幫你寫下你自己都想不到的代碼,還讓你能夠把那些不可言說的代碼自動化。
最后,提個醒。不要因?yàn)楹唵味憛捤?。要知道,杠桿也很簡單,但它可以撬動整個地球。





















 
 
 







 
 
 
 