詩(shī)人般的機(jī)器學(xué)習(xí),ML工作原理大揭秘
機(jī)器學(xué)習(xí)使用數(shù)據(jù)中的模式來(lái)標(biāo)記事物。聽(tīng)起來(lái)好像很神奇,實(shí)際上核心概念相當(dāng)簡(jiǎn)單。
比如說(shuō)標(biāo)記事物,把酒分為好喝或者不好喝就是一個(gè)例子。這種標(biāo)記不必想得太復(fù)雜,記得享受好喝的美酒就行啦~當(dāng)然,如果你不喜歡喝酒,那無(wú)酒精的飲品可以了解一下→_ →
一、ML 工作原理
機(jī)器學(xué)習(xí)不是魔術(shù)。沒(méi)有數(shù)據(jù)就無(wú)法學(xué)習(xí),因此我必須嘗一嘗。嘗過(guò)之后我給它一個(gè)「N」的標(biāo)簽,N 代表「nope」,意思是「我們不要再試這個(gè)了?!惯@是我們?yōu)榭茖W(xué)做出的貢獻(xiàn)。
1. 數(shù)據(jù)
學(xué)習(xí)需要素材。想象一下我嘗了 50 種酒(為科學(xué)獻(xiàn)身!)并將其可視化。每種酒都有年限、評(píng)分及我們嘗試學(xué)習(xí)的正確答案:Y 代表「Yummy(好喝)」,N 代表「not-so-yummy(不怎么好喝)」。
我品嘗了酒的味道并把它們的數(shù)據(jù)記錄在電子表格(左),但是我覺(jué)得以右圖的方式向你展示信息可能更友好。
2. 算法
選擇要使用的機(jī)器學(xué)習(xí)算法,就是在選我們要用到的「菜譜」。你要做的就是把紅色和藍(lán)色的事物分開(kāi),怎樣,沒(méi)問(wèn)題吧?
如果你想畫(huà)一條線,那恭喜啦!你發(fā)明了一種叫「感知機(jī)」的 ML 算法。嗯,一個(gè)這么簡(jiǎn)單的東西名字就是這么高大上!不要被機(jī)器學(xué)習(xí)里的術(shù)語(yǔ)給嚇住了,實(shí)際上很多東西沒(méi)有其名字那么復(fù)雜和厲害啦。
你會(huì)怎么把紅色和藍(lán)色的東西分開(kāi)呢?
你的線要怎么畫(huà)?你應(yīng)該也能看出來(lái),一條水平線不是什么聰明的解決方案。我們的目標(biāo)是把 N 和 Y 分開(kāi)來(lái),而不是裝飾地平線。
機(jī)器學(xué)習(xí)算法的目的是在數(shù)據(jù)中選擇最合理的地方設(shè)置柵欄,而這要取決于數(shù)據(jù)點(diǎn)的位置。那要怎么做?答案是:優(yōu)化目標(biāo)函數(shù)。
3. 優(yōu)化
我計(jì)劃專門(mén)寫(xiě)個(gè)博客來(lái)講優(yōu)化問(wèn)題,但目前先這么著想:目標(biāo)函數(shù)就像是棋盤(pán)游戲的得分規(guī)則,優(yōu)化目標(biāo)函數(shù)就是找出游戲的玩法,然后盡可能獲得***分。
目標(biāo)函數(shù)(損失函數(shù))就像是棋盤(pán)游戲的得分系統(tǒng)。這張圖說(shuō)明,大學(xué)時(shí)代我還沒(méi)有學(xué)會(huì)優(yōu)化問(wèn)題……
通常在 ML 中,我們更喜歡大棒而不是胡蘿卜——分?jǐn)?shù)是對(duì)錯(cuò)誤的懲罰,而游戲規(guī)則是這些錯(cuò)誤得分越少越好。這也是為什么在機(jī)器學(xué)習(xí)中目標(biāo)函數(shù)被稱為「損失函數(shù)」,且目標(biāo)是最小化損失。
想試試嗎?回到上面的分類圖,把你的手指水平放在屏幕上旋轉(zhuǎn),直到錯(cuò)誤得分為零。
希望你找到的解決方案如下所示:
來(lái),先看圖片最左邊;簡(jiǎn)單粗暴地畫(huà)一條水平線…中間的會(huì)更好一點(diǎn),但還不是***的。我喜歡最右邊的方法。
4. 生活的調(diào)味品
如果你喜歡變化,那么你會(huì)愛(ài)上算法的。世界上有太多算法了,它們彼此之間的區(qū)別在于分割邊界時(shí)嘗試的位置不同。
「優(yōu)化狂魔」將告訴你以小的幅度旋轉(zhuǎn)柵欄(fence)是絕對(duì)不行的,有很多更好的方式可以更快速到達(dá)***位置。一些研究者竭盡全力嘗試結(jié)合多種方法在最短的距離內(nèi)到達(dá)***位置,不管地形(由輸入決定)變得如何反常。
多樣性的另一來(lái)源是邊界的形狀。柵欄不必是直線,不同的算法使用不同的柵欄。
當(dāng)我們選擇這些復(fù)雜術(shù)語(yǔ)時(shí),我們其實(shí)只是選擇了用來(lái)劃分標(biāo)簽的邊界形狀。我們想用一條斜線分割樣本,還是很多水平/垂直的線或者靈活的曲線?可選擇的算法實(shí)在是太多了,分類邊界的形狀也各不相同。
5. 潮人喜歡的算法
現(xiàn)在,機(jī)器學(xué)習(xí)潮人都不喜歡直線。靈活的曲線在機(jī)器學(xué)習(xí)大潮中大受歡迎(即「神經(jīng)網(wǎng)絡(luò)」,盡管其實(shí)并沒(méi)有什么神經(jīng),這個(gè)名字是半個(gè)多世紀(jì)以前出現(xiàn)的,充滿了雄心壯志,似乎沒(méi)有人喜歡我的建議——將它們重命名為「瑜伽網(wǎng)絡(luò)」或「多層數(shù)學(xué)運(yùn)算」)。
與其接受與線性算法和大腦神經(jīng)網(wǎng)絡(luò)的炒作性質(zhì)的對(duì)比,不如從柔術(shù)表演能力的角度來(lái)思考神經(jīng)網(wǎng)絡(luò)。其他方法在數(shù)學(xué)瑜伽方面略遜一籌。但是沒(méi)有什么東西是免費(fèi)的,神經(jīng)網(wǎng)絡(luò)需要付出代價(jià),因此不要相信任何人稱神經(jīng)網(wǎng)絡(luò)是***解決方案的說(shuō)法。
神經(jīng)網(wǎng)絡(luò)或許也可以被稱為「瑜伽網(wǎng)絡(luò)」,其特殊能力在于能夠提供非常靈活的邊界。
那些專業(yè)的算法名稱告訴你它們將要用什么形狀的柵欄劃分輸入數(shù)據(jù)。如果你是一名應(yīng)用機(jī)器學(xué)習(xí)愛(ài)好者,不記住它們也沒(méi)問(wèn)題,但在實(shí)踐中你需要將數(shù)據(jù)輸入到盡可能多的算法中,然后在看起來(lái)更有前途的算法上進(jìn)行迭代。布丁的存在意義就在于吃,那么我們來(lái)吃吧~
即使翻閱了課本,你也很難一次就找到解決方案。別擔(dān)心。這不是個(gè)有一個(gè)正確答案的游戲,沒(méi)有人能一次就找到解決方案。你需要修補(bǔ)、嘗試并接著玩。留給設(shè)計(jì)新算法的研究人員一個(gè)問(wèn)題:「它是如何工作的」。(你最終可能會(huì)熟悉這些名字,就像你了解困擾你的任何一部爛肥皂劇的角色一樣。)
6. 模型
一旦柵欄到位,算法就完成了,你從中得到的就是你想要的:一個(gè)模型,說(shuō)白了就是一個(gè)「食譜」。現(xiàn)在有一些指令,讓電腦在下次看到一瓶新酒時(shí)用來(lái)將數(shù)據(jù)轉(zhuǎn)換成決策。如果數(shù)據(jù)落在藍(lán)色區(qū)域,就叫它藍(lán)色。落在紅色部分就叫它紅色。
7. 標(biāo)注
一旦你把新鑄造的模型投入「薦酒」生產(chǎn)中,你就可以通過(guò)給電腦輸入年齡和評(píng)審分?jǐn)?shù)來(lái)使用它,系統(tǒng)會(huì)查找出對(duì)應(yīng)的區(qū)域并輸出標(biāo)簽。
當(dāng)我有四瓶新酒時(shí),我只需將它們的輸入數(shù)據(jù)與「食譜」中的紅色和藍(lán)色區(qū)域進(jìn)行匹配,并相應(yīng)地給它們貼上標(biāo)簽。看到?jīng)]?這很容易!
我們?cè)趺磁袛嗨欠裼行?檢查輸出!
通過(guò)運(yùn)行一堆新數(shù)據(jù)來(lái)測(cè)試你的系統(tǒng),并確保它運(yùn)行良好。不管是誰(shuí)出的這種主意,跟著做就對(duì)了。
二、總結(jié)
以下,我另一篇文章為你提供了一份簡(jiǎn)單直觀的總結(jié):
1. 詩(shī)人般的機(jī)器學(xué)習(xí)
如果你還對(duì)機(jī)器學(xué)習(xí)感到困惑,那么可以試試這個(gè)類比:一位詩(shī)人選擇一種方法(或算法)將所有詞匯組合在紙上。這種方法決定了詩(shī)歌體裁(或決策邊界的形狀),這種體裁可能是三行俳句,也可能是十四行詩(shī)。一旦詩(shī)人完成了作品,即找到了將語(yǔ)句填充到十四行詩(shī)的***方法,現(xiàn)在完成的詩(shī)歌就相當(dāng)于機(jī)器學(xué)習(xí)中的模型。
2. ML 模型 vs 傳統(tǒng)代碼
我想指出,機(jī)器學(xué)習(xí)模型和程序員通過(guò)評(píng)估問(wèn)題而寫(xiě)出代碼并手工制定規(guī)則的做法并不存在不可逾越的鴻溝。用非擬人化的語(yǔ)言來(lái)描述機(jī)器學(xué)習(xí)就是,模型在概念上和通常的代碼是相同的。
「隨著新樣本的輸入,重復(fù)運(yùn)行算法來(lái)調(diào)整決策邊界」,這種說(shuō)法會(huì)使你難以將機(jī)器學(xué)習(xí)和程序員的標(biāo)準(zhǔn)工作聯(lián)系起來(lái)。人類也可以隨新信息的獲取而調(diào)整代碼。
3. 這就是機(jī)器學(xué)習(xí)的全部嗎?
是的,機(jī)器學(xué)習(xí)工程方法真正困難的部分在于安裝軟件包,并對(duì)粗糙的數(shù)據(jù)集進(jìn)行一系列炫酷的操作,這樣就相當(dāng)于在數(shù)據(jù)上運(yùn)行了一個(gè)非常復(fù)雜的算法。接下來(lái)是對(duì)代碼設(shè)定的***修改,請(qǐng)注意別讓高貴的名字「超參數(shù)調(diào)優(yōu)」迷惑了你。當(dāng)你在新數(shù)據(jù)上評(píng)估模型的性能時(shí),如果它的性能非常感人,那么你可能就需要重新設(shè)計(jì)方案并訓(xùn)練。這一修正過(guò)程需要持續(xù)到獲得還能接受的效果,這也就是為什么機(jī)器學(xué)習(xí)工程師需要有良好的耐心。
機(jī)器學(xué)習(xí)不是魔術(shù)。機(jī)器學(xué)習(xí)能讓你寫(xiě)出不能完全理解,但能自動(dòng)地工作得很好的代碼。不要嫌棄它太簡(jiǎn)單,杠桿也很簡(jiǎn)單,但它能撬動(dòng)整個(gè)地球。
原文鏈接:https://hackernoon.com/machine-learning-is-the-emperor-wearing-clothes-59933d12a3cc
【本文是51CTO專欄機(jī)構(gòu)“機(jī)器之心”的原創(chuàng)譯文,微信公眾號(hào)“機(jī)器之心( id: almosthuman2014)”】