討論問題的前提是概念的澄清,概念的混淆是研發溝通中的一大障礙,大大影響了溝通的效率。在人工智慧尤其是機器學習領域,演算法和模型是兩個相關而又有區別的兩個概念,弄清楚二者的意義和連結可以使我們討論的問題更加明確。
在電腦領域,演算法有著明確的定義。為了通俗起見,這裡引用百度百科對演算法的描述:
演算法(Algorithm)是指解題方案的準確而完整的描述,是一系列解決問題的清晰指令,演算法代表著用系統的方法描述解決問題的策略機制。
也就是說,對於演算法而言,能夠對某一規範的輸入,在有限時間內獲得所要求的輸出。演算法中的指令描述的是一個計算,當其運行時能從一個初始狀態和(可能為空的)初始輸入開始,經過一系列有限而清晰定義的狀態,最終產生輸出並停止於一個終態。
不同的演算法可能用不同的時間、空間或效率來完成同樣的任務,一個演算法的優劣可以用空間複雜度與時間複雜度來衡量。
模型是一個概念外延非常廣泛的詞,這裡同樣引用百度百科中的描述:
透過主觀意識借助實體或虛擬表現,構成客觀闡述形態結構的一種表達目的的物件(物件不等於物體,不限於實體與虛擬、不限於平面與立體)。
模型可以是模型玩具,科學模型,經濟學模型,邏輯模型等等,例如,地球儀就是就是地球的模型,理性人經濟人是經濟學關於人行為的模型,計算機網路中的7層協定是網路協定的模型等等。
其中,科學模型是科學研究中對一類研究方法的通稱,使用數學公式、電腦模擬或簡單的圖示來表示一個簡化的自然界,透過分析這個模型,以期能夠進一步了解科學,包括說明、驗證假說、或資料分析。依據不同需求,科學模型可以藉由概念模型幫助了解現象,操作模型給出操作型定義,數學模型幫助量化,以及用圖像模型將抽象概念視覺化。
需要重點關注的是數學模型。數學模型是關於部分現實世界以及為一種特殊目的而作的一個抽象的、簡化的結構,用字母、數字及其它數學符號建立起來的等式或不等式,以及圖表、圖像、框圖等描述客觀事物的特徵及其內在聯繫的數學結構表達式。
簡單來說, 模型是對事物的抽象。
在具體的機器學習領域,演算法與模型也有著更具體的定義。
機器學習中的"演算法"
機器學習中的演算法是指一種具體的計算方法,也就是如何求解全局最優解,並使得這個過程高效且準確,本質上就是電腦演算法。
機器學習演算法執行“模式識別”,從資料中“學習”,或對資料集進行“擬合”。機器學習演算法可以用偽代碼來描述,可以用任何一種現代程式語言來實現,對演算法效率的分析和描述也是如此。多種機器學習演算法可以在一起實現,並在具有標準應用程式介面(API)的庫中提供。一個流行的例子是 scikit-learn 函式庫,它提供了 Python 中許多分類、迴歸和聚類等機器學習演算法的實作。
機器學習中的「模型」
機器學習中的「模型」是運行在資料集上的機器學習演算法的輸出,表示機器學習演算法所學到的內容,即用於進行預測所需的規則、數字和任何其他特定演算法的資料結構。也就是說,機器學習模型是一個由機器學習演算法自動編寫、創建或學習的程序,用來解決一類具體的問題。在某種意義上看,資料結構可以看作是一種模型,以下是BTree和神經網路模型的比較。
機器學習要考慮的主要問題是學習什麼樣的模型。例如,在監督學習過程中,模型就是要學習的條件機率分佈或決策函數。資料構成的樣本空間中可能包含各種條件機率分佈或決策函數,每一個都對應著一個模型,那麼這個樣本空間中的模型個數就有多個。
機器學習中與模型相關的另一個概念是策略。策略是從樣本空間中挑選出參數最優的模型的準則,模型的分類或預測結果與實際情況的誤差(損失函數)越小,模型就越好。也就是說,策略就是透過引入損失函數的方式來測量模型的好壞。
機器學習中演算法與模型的關係
演算法和模型往往都是分不開的。演算法是一類問題的解答,是模型建立流程的環節,也是賦予模型「思考」能力的環節。而模型則是一系列演算法的數學表達,同時包含了資料以及任務的概念。因此,我們評估一個模型的好壞,而不是評估演算法的好壞,演算法只有其適用環境和場景。
就機器學習而言,通俗來講,模型可以近似地理解為目標函數,演算法則是求解該目標函數的方法。所有問題都可以有多種建模的方法,例如分類問題可以用SVM或NB來做,但它們的目標函數不同。例如,在決策樹中,其模型可以是二元樹模型,如果寫成目標函數,那麼則是分段函數。有了這個目標函數,要怎麼求解呢?一種典型的演算法是貪心演算法,或稱為啟發式演算法,從根開始,採取一定的分裂原則來分裂,這個分裂的原則是資訊增益最大化,Gini係數方差最小。
基於決策樹的方案及其演化變種,到目前為止,其根本採用的方式都是啟發式分裂,無論是後續的Bagging,Boosting,隨機森林,深度森林,演算法在本質上都沒改變,只是採用的模型在變化而已。
演算法和模型都有著廣泛的一般性意義。具體地,在機器學習領域,演算法是在程式碼中實現並在資料上運行的過程。模型由演算法輸出,由模型資料和預測演算法組成。機器學習演算法提供了一種自動編程的類型,其中機器學習模型代表程式。明晰了概念,就有了進一步學習與討論的基礎。
以上是演算法與模型的淺析的詳細內容。更多資訊請關注PHP中文網其他相關文章!