模型描述和算法
文章目錄
- 導(dǎo)讀
- 算法的定義
- 原型的概念
- 模型的概念
- 建模的必要性
- 算法和模型
- 機(jī)器學(xué)習(xí)中模型的描述
導(dǎo)讀
我們在描述算法的時候,往往也會提到“算法模型”這個概念。模型是什么?算法和模型之間有什么聯(lián)系?
算法的定義
如果你在大學(xué)學(xué)過了數(shù)據(jù)結(jié)構(gòu),這句話你應(yīng)該耳熟能詳:
通俗地講,算法是解決問題的一種方法或一個過程。更嚴(yán)格地講,算法是由若干條指令組成的有窮序列,且滿足下述4條性質(zhì)
-
輸入:0個或者多個外部提供的量作為算法輸入項
-
輸出:算法應(yīng)當(dāng)產(chǎn)生至少一個量作為輸出項
-
確定性:組成算法的每條指令是清晰的、沒有歧義的
-
有限性:算法中每條指令的執(zhí)行次數(shù)是有限的,執(zhí)行每條指令的時間也是有限的
——摘自《計算機(jī)算法設(shè)計與分析》(第五版),王曉東著
那,模型又是什么?
原型的概念
在說明模型之前必須說說原型是什么。原型,簡單的說,就是最原始的模型。動漫里經(jīng)常有作者以身邊的誰為原型創(chuàng)作的,打個比方的話,應(yīng)該就是40原老師筆下的貓娘了。(吐槽:胖次專業(yè)戶畫貓娘有什么不對嘛)
當(dāng)然原型不限于這個。還有其他的比如:
實際生產(chǎn)中經(jīng)理最關(guān)心的實際上也是一種原型,即生產(chǎn)、管理的實際對象。
或者是研究員在解決實際問題的時候,對于新假設(shè)的提出有啟發(fā)作用的也叫原型。
模型的概念
當(dāng)我們拿到一個問題之后,如果分析出了原型,我們就能夠進(jìn)行一定程度的總結(jié),然后忽略部分細(xì)節(jié)、加強(qiáng)部分計算,最終就能夠?qū)⒁粋€實際問題的解法提取成一套數(shù)學(xué)方程式。
一個很簡單的例子:你想帶你家的幾只貓娘出去玩,可是考慮到在玩上需要多花錢,于是你選擇在路費上盡可能節(jié)省。這個問題大家應(yīng)該熟悉得不能再熟悉了吧,就是線性規(guī)劃。把一個實際的問題整理成多條直線的相交問題,這就是建模。
我們知道,現(xiàn)在普遍使用的算法例如深度搜索、哈密頓回路等等經(jīng)典算法都是經(jīng)過很長時間的發(fā)現(xiàn)、假說、論證、優(yōu)化的不停循環(huán)才產(chǎn)生出來,而這個論證的過程就是將算法抽象為一系列的數(shù)學(xué)模型,然后計算時間復(fù)雜度、空間復(fù)雜度,最終在比較中篩選更為優(yōu)秀的。
也就是說:
模型是一類問題的解題步驟,亦即一類問題的算法。
——摘自慕碼人2483693對模型與算法之間是什么關(guān)系一問的回答
建模的必要性
那么,為什么建模呢?
一個實際問題往往涉及很多很多個方面。舉個例子:你們家的小貓娘突然有一天看著像渾身沒勁,往往有無數(shù)個原因,被你冷落了、陪你玩累了、有點生病了、發(fā)情期到了等等。
但是,這么多因素誰知道是什么情況啊,萬一沒病給整出病了,那不得心疼得要命。所以,你拿出了貓娘觀察記錄小本本,查詢了你們家的貓娘從小以來點點滴滴的反應(yīng),高興了、傷心了、痛苦了、冷漠了等等應(yīng)有盡有。然后針對這些表現(xiàn),你一項項對比,并得出一個相關(guān)系數(shù)。找出所有項目中相關(guān)系數(shù)最大的一項,然后發(fā)現(xiàn)你的貓娘就只是玩累了而已。給她鋪條毯子好好睡吧。
這就是建模的好處,能夠從所有的選項中找出相關(guān)變量并剔除無關(guān)變量,甚至能夠分析相關(guān)變量到底如何影響最終結(jié)果。
算法和模型
算法和模型往往都是分不開的。算法是一類問題的抽象解答,而模型則是一系列算法的數(shù)學(xué)表達(dá)。
如果問題不是一類問題,就單單類似這只貓接下來要做什么這樣的問題,算法也就失去了存在的必要;同樣的,算法如果也不是一系列算法,就單單類似這只狗吃骨頭的流程這樣的算法,模型也沒有存在的必要。就像是數(shù)據(jù)結(jié)構(gòu)中的抽象實體類ADT一樣,它的存在就是為了描述一系列相似問題的解法的。
所以,你能夠理解為什么會有推薦算法模型了么?因為一系列的APP都將會根據(jù)用戶的使用情況收集偏好并提高用戶體驗,這些APP囊括了生活中的方方面面,包括美食、服飾、手辦、模玩、家具還有電子產(chǎn)品甚至性癖(比方說pixiv)等等。因為類似,這就抽象出來了。
機(jī)器學(xué)習(xí)中模型的描述
正如一開始所說的,算法需要有0個以上的輸入、1個以上的輸出,機(jī)器學(xué)習(xí)中的算法也是一樣的,有著0個以上的數(shù)據(jù)集輸入,輸出至少一個結(jié)果。數(shù)據(jù)集中包括了大量的具有相似數(shù)據(jù)結(jié)構(gòu)的信息,可以是事實,也可以是虛擬信息;而輸出則是根據(jù)結(jié)果的預(yù)測、分類等等。就如下圖所示:
這個機(jī)器學(xué)習(xí)的算法并不是一成不變的,同樣也是在不斷的實踐和訓(xùn)練中逐漸發(fā)現(xiàn)最貼近事實、最能概括所有內(nèi)容的數(shù)學(xué)模型和算法。
是不是能理解了?
總結(jié)
- 上一篇: 智慧生活一“手”开启,贝迪特掌静脉系统可
- 下一篇: 02-链表结构(Linked list)