討論問題的前提是概念的澄清,概念的混淆是研發溝通中的一大障礙,極大地影響了溝通的效率。在人工智能尤其是機器學習領域,算法和模型是兩個相關而又有區別的兩個概念,弄清二者的含義和聯系可以使我們討論的問題更加明確。
什么是算法?
在計算機領域,算法有著明確的定義。為了通俗起見,這里引用百度百科對算法的描述:
算法(Algorithm)是指解題方案的準確而完整的描述,是一系列解決問題的清晰指令,算法代表著用系統的方法描述解決問題的策略機制。
也就是說,對于算法而言,能夠對一定規范的輸入,在有限時間內獲得所要求的輸出。算法中的指令描述的是一個計算,當其運行時能從一個初始狀態和(可能為空的)初始輸入開始,經過一系列有限而清晰定義的狀態,最終產生輸出并停止于一個終態。
不同的算法可能用不同的時間、空間或效率來完成同樣的任務,一個算法的優劣可以用空間復雜度與時間復雜度來衡量。
什么是模型?
模型是一個概念外延非常廣泛的詞,這里同樣引用百度百科中的描述:
通過主觀意識借助實體或者虛擬表現,構成客觀闡述形態結構的一種表達目的的物件(物件并不等于物體,不局限于實體與虛擬、不限于平面與立體)。
模型可以是模型玩具,科學模型,經濟學模型,邏輯模型等等,例如,地球儀就是就是地球的模型,理性人經濟人是經濟學關于人行為的模型,計算機網絡中的7層協議是網絡協議的模型等等。
其中,科學模型是科學研究中對一類研究方法的通稱,使用數學公式、電腦模擬或簡單的圖示來表示一個簡化的自然界,透過分析這個模型,以期能夠進一步了解科學,包括說明、驗證假說、或資料分析。依據不同需求,科學模型可以借由概念模型幫助了解現象,操作模型給出操作型定義,數學模型幫助量化,以及用圖像模型將抽象概念可視化。
需要重點關注的是數學模型。數學模型是關于部分現實世界以及為一種特殊目的而作的一個抽象的、簡化的結構,用字母、數字及其它數學符號建立起來的等式或不等式,以及圖表、圖像、框圖等描述客觀事物的特征及其內在聯系的數學結構表達式。
簡單來說, 模型是對事物的抽象。
機器學習中的算法與模型
在具體的機器學習領域,算法和模型也有著更為具體的定義。
機器學習中的"算法"
機器學習中的算法是指一種具體的計算方法,也就是如何求解全局最優解,并使得這個過程高效而且準確,本質上就是計算機算法。
機器學習算法執行“模式識別”,從數據中“學習”,或者對數據集進行“擬合”。機器學習算法可以用偽代碼來描述,可以用任何一種現代編程語言來實現,對算法效率的分析和描述也是如此。多種機器學習算法可以在一起實現,并在具有標準應用程序編程接口(API)的庫中提供。一個流行的例子是 scikit-learn 庫,它提供了 Python 中許多分類、回歸和聚類等機器學習算法的實現。
機器學習中的“模型”
機器學習中的“模型”是運行在數據集上的機器學習算法的輸出,表示機器學習算法所學到的內容,即用于進行預測所需的規則、數字和任何其他特定算法的數據結構。也就是說,機器學習模型是一個由機器學習算法自動編寫、創建或學習的程序,用來解決一類具體的問題。在某種意義上看,數據結構可以看作是一種模型,下面是BTree和神經網絡模型的對比。

機器學習要考慮的主要問題是學習什么樣的模型。例如,在監督學習過程中,模型就是所要學習的條件概率分布或決策函數。數據構成的樣本空間中可能包含各種條件概率分布或者決策函數,每一個都對應著一個模型,那么這個樣本空間中的模型個數就有多個。
機器學習中與模型相關的另一個概念是策略。策略是從樣本空間中挑選出參數最優的模型的準則,模型的分類或預測結果與實際情況的誤差(損失函數)越小,模型就越好。也就是說,策略就是通過引入損失函數的方式來度量模型的好壞。
機器學習中算法與模型的關系
算法和模型往往都是分不開的。算法是一類問題的解答,是模型建立流程的一個環節,也是賦予模型“思考”能力的環節。而模型則是一系列算法的數學表達,同時包含了數據以及任務的概念。因此,我們評估一個模型的好壞,而不是評估算法的好壞,算法只有其適用環境和場景。
就機器學習而言,通俗來講,模型可以近似地理解為目標函數,算法則是求解該目標函數的方法。所有問題都可以有多種建模的方法,比如分類問題可以用SVM或者NB來做,但它們的目標函數不同。例如,在決策樹中,其模型可以是二叉樹模型,如果寫成目標函數,那么則是一個分段函數。有了這個目標函數,怎么求解呢?一種典型的算法是貪心算法,或者叫啟發式算法,從根開始,采取一定的分裂原則進行分裂,這個分裂的原則是信息增益最大化,Gini系數方差最小。
基于決策樹的方案及其演化變種,到目前為止,其根本采用的方式都是啟發式分裂,無論是后續的Bagging,Boosting,隨機森林,深度森林,算法在本質上都沒改變,只是采用的模型在變化而已。
小結
算法和模型都有著廣泛的一般性意義。具體地,在機器學習領域,算法是在代碼中實現并在數據上運行的過程。模型由算法輸出,由模型數據和預測算法組成。機器學習算法提供了一種自動編程的類型,其中機器學習模型代表程序。明晰了概念,就有了進一步學習和討論的基礎。
























