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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

幾個小貼士:

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

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

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

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

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

參考和圖片來源:

● Daniel Godoy towardsdatascience.com

pixabay.com

unsplash.com

機器學習課程瞭解下?

Udacity?

cn.udacity.com
圖標

知乎機構號:來自矽谷的終身學習平臺——優達學城(Udacity.com),專註於技能提升和求職法則,讓你在家能追隨 Google、Facebook、IBM 等行業大佬,從零開始掌握數據分析、機器學習、深度學習、人工智慧、無人駕駛等前沿技術,激發未來無限可能!

優達學城(Udacity)?

www.zhihu.com
圖標

知乎專欄:優達技術流,每天分享來自行業大牛、工程師必讀的技術乾貨優達技術流?

zhuanlan.zhihu.com
圖標

推薦閱讀:
相關文章