一文讀懂ML中的解析解與數值解
本文約2300字,建議閱讀8分鐘。
本文將介紹解析解和數值解的定義,並介紹不同的解在機器學習中的應用。
你是否有如下疑問:
- 什麼數據最適合我的問題?
- 什麼演算法最適合我的數據?
- 如何對我的演算法進行調參?
本文將為你解釋為什麼沒有一個機器學習專家能對上述問題給出直接答案。事實上,找到合適的數據、演算法、參數是應用機器學習的難題,也是你唯一需要努力解決的部分。
解析解與數值解
在數學運算中,有些問題可以通過解析法和數值法解決。
- 解析解是用一種易於理解的形式描述問題,並計算精確解。
- 數值解是先猜測解,隨後檢驗此解是否足以解決問題。
平方根是一個能同時用兩種方法解決的案例。
但通常我們更偏愛解析法。因為這種方法更快,並且能得到精確的解。儘管如此,有時由於時間和硬體性能的限制,我們必須採用數值法。
找到線性回歸方程的係數是一個很好的例子。它既可以通過解析法計算,比如使用線性代數;但當我們不能把所有數據都儲存在一台電腦里來進行解析計算時,我們也可以運用數值法解決問題,比如通過梯度下降法。所以,當解析解是未知的時候,我們只能藉助數值法。
解析解
一旦問題被界定之後,很多問題都有明確的解。我們可以遵循一系列邏輯步驟來計算最終的精確解。例如當給定一個具體的算術問題時(如加法或減法),你知道如何操作。在線性代數中,有一系列的方法可以用來分解矩陣,這取決於矩陣的特性是方陣、矩形陣、包含實數還是虛數等等。
附鏈接(機器學習中分解矩陣的簡介):
https://machinelearningmastery.com/introduction-to-matrix-decompositions-for-machine-learning/
我們可以將其更廣泛地拓展到軟體工程中,對於那些反覆出現的問題,無論具體的應用場景如何,我們可以通過一系列廣受好評的設計來解決它們。例如用訪問者模式對列表中每一項執行操作。
一些問題在機器學習中已經界定明確並且得到了解析解。例如無論數據集中整數值有多少個,我們都可以用同樣的方法很容易地將一個分類變數變為獨熱編碼(one hot encoding)。然而不幸的是,機器學習中我們關心的大部分問題都沒有解析解。
附鏈接(為什麼在機器學習中使用獨熱編碼):
https://machinelearningmastery.com/why-one-hot-encode-data-in-machine-learning/
數值解
很多我們感興趣的問題並沒有精確解,或者至少沒得到解析解。我們必須要猜測可能的解並測試它們,看看解是否合適。這涉及到構建問題並在一系列候選解中進行試錯。從本質上來看,尋找數值解的過程可以看作一個搜索的過程。
這些解有一些有趣的特性:
- 不合適的解與合適的解是很容易區分的。
- 我們通常不知道合適的解長什麼樣,只能在已經測試的候選解中進行對比。
- 我們的目標往往是找到一個近似的或「足夠好」的解而不是唯一的最佳解。
最關鍵的是最後一點,因為通常情況下,我們嘗試用數值解來解決的問題都非常有挑戰性(因為我們沒有簡單的方法來解決它)。這種情況下,任何足夠好的解都很實用。此外,需要強調的是一個給定的問題會有多種解,其中的許多解都足以解決問題。但機器學習中我們感興趣的很多問題都需要數值解。比這更糟的是,隨著進度的推進,每個子問題的數值解會影響後續子問題的解空間。
機器學習中的數值解
應用機器學習是個數值性質的學科。一個給定的機器學習模型,其核心是個優化問題,本質上是要尋找一系列有未知參數的項來完成等式。從廣義上來講,每個演算法都有不同的「等式」和「項」。
等式一般是容易計算的,以便估計給定項的參數。但是對於給定的數據集,我們往往不知道要用什麼項多少項才能得到「不錯的」甚至是「最佳的」預測。
這就是我們經常要解決的數值優化問題。之所以是個數值問題,是因為我們要用有雜訊的、不完整的和易出錯的有限觀測樣本來解決優化問題。模型會儘可能地解釋數據並在這些觀測的輸入和輸出之間形成映射。
機器學習中更廣泛的經驗解
作為機器學習演算法的核心,數值優化問題實際上屬於一類更廣泛的問題。具體的優化問題受很多因素影響,這些因素在很大程度上影響了最終解的「優化程度」,並且都沒有解析解。例如:
- 使用什麼數據
- 使用多少數據
- 在建模前如何處理數據
- 使用什麼模型或演算法
- 如何給演算法調參
- 如何評估演算法效果
客觀地講,以上這些是機器學習中的開放性問題的一部分。它們沒有解析解,你必須探索哪些元素的組合能最好地解決你的問題,對各種組合方案進行測試和評估,這個過程相當於一個巨大的搜索問題。在這種情況下,你需要知道其他候選方案的得分,才能知道高分應當是多少。除了試錯法,還可以從其他已經得到解的相關問題中借鑒想法,除此以外沒有其他客觀路徑能解決這個問題。
這種憑經驗的方法經常被稱為「搜索式機器學習」,後文提供的文獻中進行了進一步探索。
回答你的疑問
我們回到開頭的問題,在一個具體的建模預測問題中,什麼樣的數據、演算法和參數最合適呢。沒人能通過看你的數據或問題描述,就告訴你怎樣解決它最好,甚至是相對好。經驗可以幫助領域內的專家找到著手點,並幫助他們驗證早期猜測,但通常情況下早期猜測過於複雜或存在低級錯誤。
要找的足夠好的解,往往需要預測建模。並且作為機器學習從業者,這也是你的職責。這是應用機器學習的艱難工作,也是需要練習的部分。掌握好這個部分可以使你在業內更有競爭力。
拓展閱讀
關於本文如果想了解更多,可以參閱以下資源:
- 基於數據驅動選擇機器學習演算法
https://machinelearningmastery.com/a-data-driven-approach-to-machine-learning/
- 將應用機器學習問題歸為搜索問題的簡介
https://machinelearningmastery.com/applied-machine-learning-as-a-search-problem/
- 為什麼應用機器學習很難?
https://machinelearningmastery.com/applied-machine-learning-is-hard/
- 解析法和數值法有什麼差別?
https://math.stackexchange.com/questions/935405/what-s-the-difference-between-analytical-and-numerical-approaches-to-problems
總結
通過本文的介紹,你應當明白了解析解和數值解之間的區別,以及應用機器學習的經驗性質。具體來說如下:
- 解析解是得到精確解的邏輯過程。
- 數值解是更慢的試錯過程並且只能得到估計解。
- 在對一個具體的預測建模問題選擇數據、演算法和參數時,應用機器學習的核心思想是尋找一個數值解。
原文標題:Analytical vs Numerical Solutions in Machine Learning
原文鏈接:https://machinelearningmastery.com/analytical-vs-numerical-solutions-in-machine-learning/
作者:Jason Brownlee
翻譯:王雨桐
推薦閱讀:
※從數據採集中獲益的8大產業
※智慧警務指揮決策系統,助力平安城市
※R語言第一章總結
※如何利用大數據找到VC們?
※數據分析師還吃香嗎?用數據告訴你