機(jī)器學(xué)習(xí)涉及到機(jī)器學(xué)習(xí)算法和模型的使用。對(duì)于初學(xué)者來說,這很容易讓人混淆,因?yàn)椤皺C(jī)器學(xué)習(xí)算法”經(jīng)常與“機(jī)器學(xué)習(xí)模型”交替使用。這兩個(gè)到底是一樣的東西呢,還是不一樣的東西?作為開發(fā)人員,你對(duì)排序算法、搜索算法等“算法”的直覺,將有助于你厘清這個(gè)困惑。在本文中,我將闡述機(jī)器學(xué)習(xí)“算法”和“模型”之間的區(qū)別。
機(jī)器學(xué)習(xí)中的“算法”是什么?
機(jī)器學(xué)習(xí)中的“算法”是在數(shù)據(jù)上運(yùn)行以創(chuàng)建機(jī)器學(xué)習(xí)“模型”的過程。
機(jī)器學(xué)習(xí)算法執(zhí)行“模式識(shí)別”。算法從數(shù)據(jù)中“學(xué)習(xí)”,或者對(duì)數(shù)據(jù)集進(jìn)行“擬合”。
機(jī)器學(xué)習(xí)算法有很多。比如,我們有分類的算法,如 K- 近鄰算法;回歸的算法,如線性回歸;聚類的算法,如 K- 均值算法。
下面是機(jī)器學(xué)習(xí)算法的例子:
? ? ? ?線性回歸
? ? ? ?邏輯回歸
? ? ? ?決策樹
? ? ? ?人工神經(jīng)網(wǎng)絡(luò)
? ? ? ?K- 最近鄰
? ? ? ?K- 均值
你可以把機(jī)器學(xué)習(xí)算法想象成計(jì)算機(jī)科學(xué)中的任何其他算法。
例如,你可能熟悉的一些其他類型的算法包括用于數(shù)據(jù)排序的冒泡排序和用于搜索的最佳優(yōu)先排序。
因此,機(jī)器學(xué)習(xí)算法具有許多特性:
? ? ? ?機(jī)器學(xué)習(xí)計(jì)算法可以用數(shù)學(xué)和偽代碼來描述。
? ? ? ?可以對(duì)機(jī)器學(xué)習(xí)算法的效率進(jìn)行分析和描述。
? ? ? ?機(jī)器學(xué)習(xí)算法可以用任何一種現(xiàn)代編程語(yǔ)言來實(shí)現(xiàn)。
例如,你可能會(huì)在研究論文和教科書中看到用偽代碼或 線性代數(shù) 描述的機(jī)器學(xué)習(xí)算法。你可以看到一個(gè)特定的機(jī)器學(xué)習(xí)算法與另一個(gè)特性算法相比的計(jì)算效率。
學(xué)術(shù)界可以設(shè)計(jì)出全息你的機(jī)器學(xué)習(xí)算法,而機(jī)器學(xué)習(xí)實(shí)踐者可以在他們的項(xiàng)目中使用標(biāo)準(zhǔn)的機(jī)器學(xué)習(xí)算法。這就像計(jì)算機(jī)科學(xué)的其他領(lǐng)域一樣,學(xué)者可以設(shè)計(jì)出全新的排序算法,程序員可以在應(yīng)用程序中使用標(biāo)準(zhǔn)的排序算法。
你還可能會(huì)看到多個(gè)機(jī)器學(xué)習(xí)算法實(shí)現(xiàn),并在一個(gè)具有標(biāo)準(zhǔn) API 的庫(kù)中提供。一個(gè)流行的例子是 scikit-learn 庫(kù),它在 Python 中提供了許多分類、回歸和聚類機(jī)器學(xué)習(xí)算法的實(shí)現(xiàn)。
機(jī)器學(xué)習(xí)中的“模型”是什么?
機(jī)器學(xué)習(xí)中的“模型”是運(yùn)行在數(shù)據(jù)上的機(jī)器學(xué)習(xí)算法的輸出。
模型表示機(jī)器學(xué)習(xí)算法所學(xué)到的內(nèi)容。
模型是在訓(xùn)練數(shù)據(jù)上運(yùn)行機(jī)器學(xué)習(xí)算法后保存的“東西”,它表示用于進(jìn)行預(yù)測(cè)所需的規(guī)則、數(shù)字和任何其他特定于算法的數(shù)據(jù)結(jié)構(gòu)。
我舉一些例子,可能會(huì)讓人更清楚地明白這一點(diǎn):
? ? ? 線性回歸算法的結(jié)果是一個(gè)由具有特定值的稀疏向量組成的模型。
? ? ? 決策樹算法的結(jié)果是一個(gè)由具有特定值的 if-then 語(yǔ)句樹組成的模型。
? ? ? 神經(jīng)網(wǎng)絡(luò) / 反向傳播 / 梯度下降算法一起產(chǎn)生一個(gè)由具有特定值的向量或權(quán)重矩陣和特定值的圖結(jié)構(gòu)組成的模型。
機(jī)器學(xué)模型對(duì)于初學(xué)者來說更具挑戰(zhàn)性,因?yàn)樗c計(jì)算機(jī)科學(xué)中的其他算法沒有明確的類比。
例如,排序算法的排序列表輸出并不是真正的模型。
最好的類比是將機(jī)器學(xué)習(xí)模型想象成一個(gè)“程序”。
機(jī)器學(xué)習(xí)模型“程序”由數(shù)據(jù)和利用數(shù)據(jù)進(jìn)行預(yù)測(cè)的過程組成。
例如,考慮線性回歸算法和由此產(chǎn)生的模型。該模型由系數(shù)(數(shù)據(jù))向量組成,這些系數(shù)(數(shù)據(jù))與作為輸入的一行新數(shù)據(jù)相乘并求和,以便進(jìn)行預(yù)測(cè)(預(yù)測(cè)過程)。
我們將數(shù)據(jù)保存為機(jī)器學(xué)習(xí)模型,以備后用。
我們經(jīng)常使用機(jī)器學(xué)習(xí)庫(kù)提供的機(jī)器學(xué)習(xí)模型的預(yù)測(cè)過程。有時(shí)候,我們可以自己實(shí)現(xiàn)預(yù)測(cè)過程作為我們應(yīng)用程序的一部分??紤]到大多數(shù)預(yù)測(cè)過程都非常簡(jiǎn)單,這通常都是直截了當(dāng)?shù)摹?/p>
算法與模型框架
現(xiàn)在我們已經(jīng)熟悉了機(jī)器學(xué)習(xí)的“算法”和機(jī)器學(xué)習(xí)的“模型”。
具體來說,就是對(duì)數(shù)據(jù)運(yùn)行算法來創(chuàng)建模型。
? ? ? 機(jī)器學(xué)習(xí) =》機(jī)器學(xué)習(xí)模型
我們還了解到,模型由數(shù)據(jù)和如何使用數(shù)據(jù)對(duì)新數(shù)據(jù)進(jìn)行預(yù)測(cè)的過程組成。如果你愿意的話,你也可以將這一過程視為一種預(yù)測(cè)算法。
? ? ?機(jī)器學(xué)習(xí)模型 == 模型數(shù)據(jù) + 預(yù)測(cè)算法
這種區(qū)分對(duì)于理解廣泛的算法非常有幫助。
例如,大多數(shù)算法的所有工作都在“算法”中,而“預(yù)測(cè)算法”的工作很少。
通常情況下,算法是某種優(yōu)化程序,即在訓(xùn)練數(shù)據(jù)集上使模型(數(shù)據(jù) + 預(yù)測(cè)算法)的誤差最小化。線性回歸算法就是一個(gè)很好的例子。它執(zhí)行一個(gè)優(yōu)化過程(或用線性代數(shù)進(jìn)行分析求解),找到一組權(quán)重,使訓(xùn)練數(shù)據(jù)集上的誤差之和平方最小化。
線性回歸
算法:在訓(xùn)練數(shù)據(jù)集上找到誤差最小的系數(shù)集。
模型:
模型數(shù)據(jù):整個(gè)訓(xùn)練數(shù)據(jù)集。
預(yù)測(cè)算法:找出 K 個(gè)最相似的行,取其目標(biāo)變量的平均值。
有些算法很瑣碎,甚至什么都不做,所有的工作都在模型或預(yù)測(cè)算法中。
K- 最近鄰算法除了保存整個(gè)訓(xùn)練數(shù)據(jù)集外沒有其他的算法。因此,弄醒數(shù)據(jù)就是整個(gè)訓(xùn)練數(shù)據(jù)集,所有的工作都在預(yù)測(cè)算法中,即,一行新數(shù)據(jù)如何與保存的訓(xùn)練數(shù)據(jù)集交互以作出預(yù)測(cè)。
K- 最近鄰
算法:保存訓(xùn)練數(shù)據(jù)。
模型:
模型數(shù)據(jù):整個(gè)訓(xùn)練數(shù)據(jù)集。
預(yù)測(cè)過程:找出 K 個(gè)最相似的行,取其目標(biāo)變量的平均值。
你可以把這個(gè)分解作為一個(gè)框架來理解任何機(jī)器學(xué)習(xí)算法。
機(jī)器學(xué)習(xí)是自動(dòng)編程
我們真的只是想要一個(gè)機(jī)器學(xué)習(xí)的“模型”,而“算法”就是我們獲得模型的路徑。
機(jī)器學(xué)習(xí)技術(shù)用于解決其他方法無(wú)法有效或高效解決的問題。
例如,如果我們需要將電子郵件分類為垃圾郵件或非垃圾郵件,我們需要一個(gè)軟件程序來完成此任務(wù)。
我們可以坐下來,手動(dòng)查看大量的電子郵件,然后寫 if 語(yǔ)句來完成合格任務(wù)。人們已經(jīng)試過這個(gè)方法。事實(shí)證明,這種方法是緩慢的、脆弱的,而且效果也不是很好。
相反,我們可以使用機(jī)器學(xué)習(xí)技術(shù)來解決這個(gè)問題。具體來說,像 樸素貝葉斯(Naive Bayes)這樣的算法就可以從大量的歷史郵件樣本數(shù)據(jù)集中學(xué)習(xí)如何將郵件分類為垃圾郵件和非垃圾郵件。
我們不想要“樸素的貝葉斯”,我們想要樸素貝葉斯給出的模型,就是我們可以用來對(duì)郵件進(jìn)行分類的模型(概率向量和使用概率概率的預(yù)測(cè)算法)。我們想要的是模型,而不是用來創(chuàng)建模型的算法。
從這個(gè)意義上來說,機(jī)器學(xué)習(xí)模型是一個(gè)由機(jī)器學(xué)習(xí)算法自動(dòng)編寫、或創(chuàng)建、或?qū)W習(xí)的程序,用來解決我們的問題。
作為開發(fā)人員,我們對(duì)人工智能意義上的機(jī)器學(xué)習(xí)算法的“學(xué)習(xí)”不太感興趣。我們并不關(guān)心模擬學(xué)習(xí)過程。有些人可能會(huì)關(guān)心,這很有趣,但這不是我們使用機(jī)器學(xué)習(xí)算法的原因。
相反,我們更看重的是機(jī)器學(xué)習(xí)算法提供的自動(dòng)編程能力更感興趣。我們希望能夠有效地創(chuàng)建一個(gè)有效的模型,并將其融入到我們的軟件項(xiàng)目中。
機(jī)器學(xué)習(xí)算法執(zhí)行自動(dòng)編程,而機(jī)器學(xué)習(xí)模型是為我們創(chuàng)建的程序。
評(píng)論
查看更多