非碼農也能看懂的“機器學習”原理
我們先來說個老生常談的情景:某天你去買芒果,小販攤了滿滿一車芒果,你一個個選好,拿給小販稱重,然后論斤付錢。
自然,你的目標是那些最甜最成熟的芒果,那怎么選呢?你想起來,啊外婆說過,明黃色的比淡黃色的甜。你就設了條標準:只選明黃色的芒果。于是按顏色挑好、付錢、回家。啊哈,人生完整了?
呵呵呵。
告訴你吧人生就是各種麻煩
等你回到家,嘗了下芒果。有些確實挺甜,有些就不行了。額~顯然,外婆教的金科玉律還不夠用,光看顏色不靠譜哪。
閉關研究大半天以后,你得出結論:大個的明黃色芒果必然甜,小個的,就只有一半幾率會是甜的了。
于是下次,你滿意地帶著這個結論再去買芒果,卻發現你經常光顧的那個小販關門度假去了。好吧,換家店,結果人家的進貨渠道還不一樣,那芒果是另一個地方種的。你這套法則不管用了,又得從頭再來。好吧,這家店里每種芒果你都嘗了下,總結出來小個淡黃色的最甜。
還沒結束。你遠房表妹又來找你玩了。要招待些好的吧?但她說了,她無所謂芒果甜不甜,汁水多就行。好唄,你還得再做一次實驗,找到芒果越軟汁水越多的規律。
接著你又移民了。一嘗這邊的芒果,咦,新世界的大門打開了。綠色的芒果居然比黃色的好吃……
最后,你結婚了,領導表示不愛吃芒果,要吃蘋果。于是你所有關于芒果的知識都沒用了。只能按老方法再重新研究遍蘋果的物理特征跟它味道好不好之間的關系。蘋果吃到吐?沒辦法,你愛老婆嘛。
有請碼農
好了,現在想象下,這一路辛酸曲折的,你寫了組程序幫忙減輕負擔。那程序邏輯基本應該類似這樣:
預設變量 顏色、大小、店家、硬度
如 顏色=明黃
大小=大
店家=經常光顧的小販
則 芒果=甜
如 硬度=軟
則 芒果=多汁
用著很爽吧,你甚至可以把這套玩意兒發給你小弟,他挑來的芒果也包你滿意。
但每做一次新實驗,你就得人肉改一次程序邏輯。而且你得首先保證自己已經理解了選芒果那套錯綜復雜的藝術,才能把它寫進程序里。如果要求太復雜、芒果種類太多,那光把所有挑選規則翻譯成程序邏輯就夠你出一身大汗,相當于讀個“芒果學”博士了。
不是所有人都有“讀博”的功夫的。
有請“機器學習”算法
機器學習算法其實就是普通算法的進化版。通過自動學習數據規律,讓你的程序變得更聰明些。
你從市場上隨機買一批芒果(訓練數據),把每只芒果的物理屬性列一個表格出來,比如顏色、大小、形狀、產地、店家,等等(特征),對應芒果的甜度、汁水多少、成熟度,等等(輸出變量)。然后把這些數據扔給機器學習算法(分類/回歸),它就會自己計算出一個芒果物理屬性與其品質之間的相關性模型。
等下一次你去采購時,輸入店里在賣的芒果的物理屬性(測試數據),機器學習算法就會根據上次計算出來的模型來預測這些芒果品質如何。機器用的算法可能跟你人肉寫的邏輯規則類似(比如決策樹),也有可能更先進,但反正基本上你不用多慮。
好啦,現在你可以信心滿滿去買芒果了,顏色大小啥的都是浮云,交給機器去操心唄。更妙的是,你的算法還會逐漸進化(強化學習):根據其預測結果的正誤,算法會自行修正模型,那么隨著訓練數據的積累,到后來它的預測就會越來越準確。最妙的來了,用同一個算法,你可以做好幾個模型,蘋果桔子香蕉葡萄各給爺來上一套,不要說老婆有令,就是七大姑八大嬸各有所好,也再不用發愁了。
用一句話總結機器學習就是:走自己的屌絲路,讓你的算法牛逼去吧
不知道作者要說什么
這個。。。隨便看看就行,不要當真