1. 程式人生 > 其它 >【機器學習】機器學習大白話

【機器學習】機器學習大白話

買芒果

嘴饞的你想吃芒果了,於是你走到水果攤,挑了幾個讓老闆過過秤,然後你再根據芒果的斤兩付錢走人。

顯然,買芒果你當然是挑著最甜、最熟的來買(因為你是根據重量而不是質量來掏錢的)。怎麼個挑法才靠譜呢?

對了,你奶奶說過,金黃色的要比淺黃的更甜些。於是你就做了一個簡單的規定:只挑金黃色的買,過磅、付錢、回家。就這麼簡單?不盡然。

生活沒那麼簡單

拎著芒果回到了家,嚐了嚐,你發現有些很對口味,有些則馬馬虎虎。顯然,光憑你奶奶的智慧還是有所不足的。挑芒果不能只看顏色。

一 番細品,再一番苦想之後,你得出了結論:那些大個兒的、金黃色的芒果一定是甜的,而那些小個兒的、金黃的就只有一半是甜的了。(比如,你買了 100 個黃燦燦的芒果,50 個個頭較大,50 個個頭一般,那麼個頭大的那 50 個就都是甜的,個頭小的 50 個當中就平均只有 25 個是甜的了。)

你 對自己的研究發現甚感滿意,想著下次買芒果的時候能更靠譜些。終於你又來到了水果市場,發現你最常去的那個水果攤已經見不著蹤影了。於是你就找了另一個攤 檔,而他們的芒果又產自不同的地方。你撓撓頭,嘆了口氣:得了,“大個、金黃色的果子甜”的經驗在這又不適用了,一切從頭開始。嚐了一遍後,你發現那些小 個的、淺黃的芒果是當中最甜的。

你的表妹大老遠的來看你,你決定給她整些美味的芒果嚐嚐。但她並不在乎果子甜不甜,而只關心是不是鮮嫩多汁。好吧,你又撓撓頭,在果攤嚐了一遍,發現越軟的越多汁。

這次,你到了另一個國度。這兒的芒果味道與家鄉的截然不同:綠色的竟然要比黃色的味道更棒。

你結了婚,發現她對芒果完全不感冒,而對蘋果很是喜歡。這回,你又跑去買蘋果去了。你又得學神農“遍嘗百果”,摸索蘋果的物理特徵和味道之間都有怎樣的聯絡——為了她,又有什麼不可以的呢?滿滿的都是愛呀。

寫段電腦程式來幫忙

為什麼不用電腦程式來幫你挑芒果(或蘋果)呢?你把規則寫了出來:

if (color is bright yellow and size is big and sold by favorite vendor):
    mango is sweet.if (soft): mango is juicy.
etc.

這就是你挑芒果用到的規則了。把它發給你的弟弟,想必他也能幫你買到對你口味的芒果。

但問題在於,每回你在試驗之後得出了觀察結果,你都得把規則做一番修正。你還得明察秋毫地瞭解清楚都有那些因素在影響芒果的品質。如果問題複雜起來的話,你在上面耗費的心血甚至都有可能為你拿個“芒果科學”的 PhD 下來(如果有的話)。

但這樣的大閒人還真的不多。

寫個機器學習演算法吧

機器學習演算法是普通演算法的進化版,它們讓你的程式變得“更聰明”,能從你提供的資料裡自動學到東西。

你 在市場上隨機選擇了某個品種的芒果(training data),把每個芒果的物理特徵都寫進了一個表格——顏色、大小、形狀、產地、所屬果攤等(features),甜度、多汁程度、成熟度(output variables)也做了記錄。你把這些資料都放進了一個機器學習演算法(classification/regression),然後這個演算法就會自動 從芒果的物理特徵和品質之間得出一個相關性模型。

等到下一回你到市場的時候,你把在售的芒果的特徵資訊都收集起來,再扔進你的機器學習算 法,它就會利用之前計算出來的模型來預測哪些芒果是甜的、熟的、以及/或多汁的了。該演算法可能會使用和你曾經手寫的差不多的規則,也有可能使用的規則會更 有相關性,不管怎樣,在很大程度上你都不用操太多心了。

現在,演算法在手,你就可以挺直身板去買芒果去了。更重要的是,你的演算法還能繼續演進 (reinforcement learning),讀取更多的訓練資料,準確率也更高,每預測錯誤後再進行自我修正。更妙的是,你還能用同一個演算法來訓練不同的模型,預測預測蘋果、橙 子、香蕉、葡萄、櫻桃、西瓜什麼的。

機器學習:讓你的演算法聰明起來,這樣你就可以少動腦了。