以麻辣火鍋為例,解釋機器學習原理(口水流了一地)

2022-07-23 16:31:04

編譯:歐剃


啥,火鍋?!對,你沒有看錯,就是火鍋!


冬天到了,誰不喜歡暖烘烘、香噴噴的火鍋呢?想象一下,當你坐在一家你最喜歡的火鍋店里,當服務員給你端上熱氣騰騰的鍋子,當食材在沸騰的湯汁中翻滾沉浮,那四溢的香氣簡直要讓冰冷的寒冬都退避三舍。



但你有沒有想過,在這鍋美味的背后,到底都有哪些工序呢?我指的可不是流著口水涮羊肉的過程,而是從最初對食材的挑選到服務員把鍋端上桌的整個過程!有趣的是,這和機器學習過程中所需的工序并沒有什么太大的區別。


騙你是小狗!聽我一項一項細細說來~


1. 挑選食材——數據生成


為了打造最豐富的口感和最誘人的芳香,對食材的挑選是我們準備火鍋的最初步驟,也是一切準備的基礎。所以,我們得在市場里花費許多時間,鎖定需要的食材和佐料。


這就像一開始的數據生成過程,就像那些用戶操作,或者那些會觸發傳感器的移動、熱源或噪聲信號等,在這一步,我們將從所有可能的特征中,選取和最后模型直接相關的那些,并據此定下需要生成、測量、統計哪些數據。



2. 購買食材——數據收集


當你在市場上挑選到需要的食材和佐料之后,我們得把它們買下來,這個不難理解吧?


同樣,這就對應了數據收集的過程,也就是通過統計程序、瀏覽器、傳感器等,收集到所需的各種實際數據的過程。



3. 運輸食材——數據準備


在采購結束后,我們得把這一大堆食材運回后廚,放進倉庫里備用。這一步,你可能需要對食材進行簡單的分類,比如有的食材需要放進冰箱或者冷庫。


這就像是把數據整理到數據庫或者數據湖之類的倉庫里,以便程序讀取。同樣,在這一步,你可能需要把數據分成用于訓練和用于檢測等不同的部分。



4. 選擇廚具和鍋型——確定數據預處理方式和算法


對每一種食材,你都需要一個合適的廚具來處理它。如果你需要給土豆削皮,那刮皮刀顯然比剪刀好用,如果你需要剁排骨,就得放下那個漏勺,掄起大菜刀。同理,對不同風格的火鍋,也有不同類型的炊具(鍋子)可供選擇。比如老北京火鍋,你就得用帶煙囪的銅爐,而重慶火鍋還是九宮格的有味道。當然為了滿足各種不同的客人,你可能還得準備一些比較復雜的鴛鴦鍋什么的。


當然,許多情況下,最簡單的往往才是最好的——你一般不會見到哪家火鍋店專門拿“鴛鴦鍋”做招牌吧?——反正我是沒見到。



同樣,在機器學習的過程中,廚具就是你要采用的數據預處理方法,而炊具就是算法,比如線性回歸算法或者隨機森林算法等等。沒錯,如果真的有需要,你確實得準備點鴛鴦鍋,額,我的意思是深度學習算法。這些不同的選項將是影響你模型效果的超參數。對于簡單的鍋子(劃掉)算法來說.,這些超參數不多,但對于復雜的算法來說,超參數將會非常非常多。


此外,復雜的算法并不能保證一定會得到更好的結果(如果你不相信,請試試用下面這種鍋來煎蛋什么的)。所以,請務必慎重選擇你的算法。


5. 選擇配方——選擇模型


選定食材和炊具之后,你還需要選定配方,按照配方的要求準備好鍋底所需的各種調味料、食材和鍋子,這些千變萬化的組合,最后形成了豚骨小鍋、牛油辣鍋、清湯老火鍋等等一系列不同風格的產品。


這就是你的模型。不,模型和算法并不是同一個東西。一個模型包含了算法所要求的預處理和后處理過程。



既然說到了預處理,我們的下一個步驟就是……



6. 處理食材——數據預處理


我打賭,大部分配方的開頭,都只寫著“把xx切片”或者“把xx去皮”之類的話,而不會告訴你要把食材洗干凈。這基本上算是一個默認的前提條件——畢竟沒有人喜歡吃臟土豆,對吧?


對數據來說也是一樣,沒有人喜歡骯臟的數據。你需要進行數據清洗,也就是說,處理那些缺失值和異常值。然后你也要給它們削削皮、切切片——我是指,你要對數據進行預處理——比如將分類特征的值(比如“男/女”等)進行數字化編碼(用0、1等數字來代表每種類型)。


大家都不喜歡這一步,不管是數據科學家還是廚師(大概吧)都不喜歡。



7. 打造特色——特征工程


有時候,你可以在食材上發揮許多創意,讓它們發揮出不一樣的特色風味,或是呈現出復雜精致的外觀。


比如你可以用香料腌制切成薄片的牛肉,配上芳香的白芝麻;也可以把蔬菜切片擺盤成特殊的形狀,再撒上一些清水;還可以用切碎的小米椒搭配香油蒜泥,加上秘制調料配成特色蘸料……


沒錯,這就是特征工程!這一步很重要,因為如果你干的足夠巧妙,它能在很大程度上優化模型的表現。


基本上差不多每個數據科學家都喜歡這一步,我估計廚師們也一樣。


8. 開始烹飪——訓練模型


這一步是一切的重心——沒有經過烹飪,鍋底就只是那些食材和香料而已。顯然,你需要將各種原材料放進炊具里,調整火候,等上一段時間,然后再來看看。


這就是訓練模型的過程了。你把數據放進算法里,調整各種超參數,等它訓練上一段時間,再來檢查一下。



9. 品嘗調味——微調參數


就算你逐字逐句依照菜譜來做,你也無法保證每一個細節都完全無誤,對吧?所以,你要怎么知道有沒有弄錯什么?當然是嘗一嘗啦!如果湯底不對頭,你可以嘗試加一些調料進行調味,也可能要調整一下火候來挽救一下什么的——但你還是要繼續煮下去!


某些不幸的時候,你的鍋底可能會黏住、燒糊,或者不管你怎么去挽救,湯的味道嘗起來都很恐怖。那么,你只能含著熱淚把它倒掉,從失敗里吸取教訓,重新來過。


只要堅持不懈,在加上一點點運氣,你還是很有希望熬出一鍋美味的湯底啦~



調味就像是評估和微調的過程。你需要檢查你的模型,判斷它是否按照你設想的那樣運行。如果不是,你可能需要加入更多的特征,或者調節超參數,以期對模型產生改變。但你還需要繼續訓練下去!


同樣,在某些運氣不好的時候,你的模型完全無法收斂,或者不管你怎么調整它都無法給出滿意的預測結果。那么,你也只能含淚丟掉這個模型,吸取教訓,從頭來過。


只要堅持不懈,在加上一點點運氣,你還是很有希望訓練出一個高性能的模型啦~



10. 端菜上桌——打包部署


到這一步,從廚師的角度來看,ta的工作已經完成了。火鍋已經準備好,食材和涮料齊備,搞定。


但我們的客人還是饑腸轆轆,桌面空空如也。如果火鍋店沒有及時把客人點的東西送上桌,那這個店多半是要倒閉的,廚師也得下崗。


所以,當一切齊備的時候,還需要小心地將火鍋端上桌,布置好各種涮菜、小碟,餐具、漏勺,客人們才能開吃。如果上菜的時候把食材灑了,甚至把鍋底打翻了,那之前干的活都白做了。


這個過程就像是機器學習模型的部署過程。這時候端給客人的就不是火鍋,而是預測函數。就象鍋底一樣,預測函數也要“裝起來”,上線部署變成“數據產品”,讓客戶可以把“食材”數據放進去,并且得到想要的結果。如果在這過程中流水線(pipeline)出了問題,甚至對預測函數產生了破壞,這之前所有的訓練和調整過程也就都“泡了湯”啦。



當當當!搞定啦!這就是火鍋里的機器學習之道——在這個過程中,許多人共同努力,合作熬出了最后的美味!


幾個小貼士:

● 如果食材本身不好,做出來的湯肯定不行——沒有什么配方能挽救這種問題,也沒有什么炊具能改變這個現實。

●如果你是廚師,請別忘了,要是服務員不把鍋端上去,那就沒有人能享用到這些美味了。

●?如果你是餐館老板,別強迫你的廚師用什么廚具/炊具——你不可能一把菜刀應萬變,也不可能永遠都用鴛鴦鍋——另外,如果你的廚師不得不花上大量時間清洗和處理食材的話,ta一定不會很高興的。

說了這么多,不知道你的感覺如何,反正我是按耐不住,要去吃一次X底撈了……


歡迎大家留言分享你對“火鍋”的看法!


參考和圖片來源:

● Daniel Godoy https://towardsdatascience.com

● pixabay.com

● unsplash.com


名師出高徒。想和領域大牛一起學人工智能?點擊 [閱讀原文] ,Google X 創始人,Google Brain 科學家帶你深入《機器學習工程師》納米項目。預測房價、狗狗識別、訓練機器人走迷宮,硅谷超棒的實戰項目等你挑戰

Copyright ? 2023 All Rights Reserved 版權所有 重慶餐飲網
26uuu奇米