知道如何操作還不夠!深入了解4大熱門機(jī)器學(xué)習(xí)算法
本文轉(zhuǎn)載自公眾號(hào)“讀芯術(shù)”(ID:AI_Discovery)。
機(jī)器學(xué)習(xí)已然成為許多領(lǐng)域的大熱詞。但其實(shí),真正了解機(jī)器學(xué)習(xí)的人還是少數(shù),大多數(shù)人屬于以下兩個(gè)陣營(yíng):
- 不懂機(jī)器學(xué)習(xí)算法;
- 知道算法是如何工作的,但不知道為什么會(huì)工作。
因此,本文試圖闡述算法的工作流程和內(nèi)容,盡力直觀地解釋其中的工作原理,希望能讓你對(duì)此有豁然開(kāi)朗之感。
決策樹(shù)
決策樹(shù)用水平線和垂直線劃分特征空間。下圖是一個(gè)簡(jiǎn)單的決策樹(shù),有一個(gè)條件節(jié)點(diǎn)和兩個(gè)類節(jié)點(diǎn),表示一個(gè)條件以及判斷滿足該條件的節(jié)點(diǎn)屬于哪個(gè)類別。
請(qǐng)注意,標(biāo)記為不同顏色的字段與該區(qū)域內(nèi)實(shí)際是該顏色或熵的數(shù)據(jù)點(diǎn)之間有很多重疊。要以最小化熵構(gòu)造決策樹(shù),這種情況下,可以添加一個(gè)額外的復(fù)雜層。如果加入另一個(gè)條件(x<6,y>6),可以把相應(yīng)區(qū)域的點(diǎn)標(biāo)為紅色。這個(gè)移動(dòng)降低了熵值。
該算法在每個(gè)步驟中都試圖找到一種方法來(lái)構(gòu)建樹(shù),使熵最小化。將熵的數(shù)量看作是“無(wú)序的”、“混亂的”,其對(duì)立面是“信息增益”——分頻器為模型添加信息和見(jiàn)解的多少,具有最高信息增益(以及最低熵)特征的,分割位于頂部。
這些條件的一維特征可能會(huì)被拆分,方式可能為:
注意,條件1分離清晰,因此熵低,信息增益高。而條件 3就不同了,這就是它被放置在決策樹(shù)底部的原因。決策樹(shù)的構(gòu)造確保其輕量級(jí)。
隨機(jī)森林模型
隨機(jī)森林模型是決策樹(shù)的袋裝版本(引導(dǎo)聚合),其主要含義是:每個(gè)決策樹(shù)都要經(jīng)過(guò)數(shù)據(jù)子集的訓(xùn)練,然后輸入每個(gè)模型之間的傳遞,其輸出通過(guò)如均值之類的函數(shù)以最終輸出。袋裝法(bagging)是一種綜合學(xué)習(xí)形式。
有很多類似的例子可以解釋隨機(jī)森林的有效性。以下是一個(gè)常見(jiàn)的例子:
你要決定下一頓去哪家餐館,需要他人的推薦,你必須回答“是或否”的問(wèn)題,引導(dǎo)他們決定你去哪一家餐廳。你是選擇問(wèn)一個(gè)朋友還是問(wèn)幾個(gè)朋友,是普遍共識(shí)嗎?除非只有一個(gè)朋友,多數(shù)人會(huì)選擇問(wèn)幾個(gè)朋友。這個(gè)類比告訴我們,每棵樹(shù)都有“思維多樣性”,它們選擇不同的數(shù)據(jù),因此有不同的結(jié)果。
這個(gè)類比雖簡(jiǎn)單明了,卻未引起Andre Ye的注意。現(xiàn)實(shí)生活中,單一朋友選項(xiàng)的經(jīng)驗(yàn)比所有朋友的經(jīng)驗(yàn)都要少,但在機(jī)器學(xué)習(xí)中,決策樹(shù)和隨機(jī)森林模型是根據(jù)相同的數(shù)據(jù)進(jìn)行訓(xùn)練,因此體驗(yàn)相同,集成模型實(shí)際上并沒(méi)有接收到任何新信息。如果你請(qǐng)一位無(wú)所不知的朋友推薦,他也不會(huì)有什么反對(duì)意見(jiàn)。
根據(jù)隨機(jī)提取數(shù)據(jù)子集以模擬人工“多樣性”的同一數(shù)據(jù)進(jìn)行訓(xùn)練的模型,如何比對(duì)整個(gè)數(shù)據(jù)進(jìn)行訓(xùn)練的模型表現(xiàn)更好?以具有重正等分布噪聲的正弦波為例,這一單個(gè)決策樹(shù)分類器自然是一個(gè)非常高方差的模型。
選擇 100個(gè)“近似器”,這些近似器隨機(jī)選擇正弦波上的點(diǎn)并生成正弦擬合,就像對(duì)數(shù)據(jù)子集進(jìn)行訓(xùn)練的決策樹(shù)一樣。然后對(duì)這些擬合進(jìn)行平均,形成袋形曲線,也就是一條更平滑的曲線。
裝袋算法之所以有效,是因?yàn)樗档土四P偷姆讲?,并以人為方式使模型置信度更高,幫助提高泛化能力,這也是裝袋算法在低方差模型(如邏輯回歸)中不起作用的原因。
支持向量機(jī)
支持向量機(jī)試圖找到一個(gè)可以最好地劃分?jǐn)?shù)據(jù)的超平面,依靠“支持向量”的概念來(lái)劃分兩個(gè)類別。
不幸的是,大多數(shù)據(jù)集并不是那么容易分離的。如果分離容易,SVM 可能就不是處理數(shù)據(jù)集的最佳算法了??紤]一維分離這樣的目標(biāo)是沒(méi)有完美分隔線的,因?yàn)槿魏我粋€(gè)分離都會(huì)導(dǎo)致兩個(gè)單獨(dú)的類被歸為同一個(gè)類。
一個(gè)分裂的提議
SVM 能夠使用所謂的“內(nèi)核技巧”解決這類問(wèn)題,將數(shù)據(jù)投射到新的維度,使分離任務(wù)更加容易。例如,創(chuàng)建一個(gè)新維度,僅定義它為 x^2(x是原始維度):
數(shù)據(jù)被投射到新的維度,每個(gè)數(shù)據(jù)點(diǎn)在兩個(gè)維度中表示為(x,x^)后,數(shù)據(jù)是完全可分離的。使用各種內(nèi)核(最普遍、多式非分體、sigmoid 和 RBF 內(nèi)核)、內(nèi)核技巧可以完成創(chuàng)建轉(zhuǎn)換空間的繁重任務(wù),使分離任務(wù)變得簡(jiǎn)單。
神經(jīng)網(wǎng)絡(luò)
神經(jīng)網(wǎng)絡(luò)是機(jī)器學(xué)習(xí)的巔峰。相關(guān)發(fā)現(xiàn)以及在此基礎(chǔ)上進(jìn)行無(wú)限變化和改進(jìn),使其成為領(lǐng)域內(nèi)深度學(xué)習(xí)的主題。不可否認(rèn),神經(jīng)網(wǎng)絡(luò)仍然不完整(“神經(jīng)網(wǎng)絡(luò)是無(wú)人理解的矩陣乘法”),但最簡(jiǎn)單的解釋方法是通用近似定理(UAT)。
在其核心,每個(gè)監(jiān)督算法都試圖為數(shù)據(jù)的一些基本功能建模,通常是回歸平面或要素邊界。思考函數(shù)y=x2,它可以通過(guò)幾個(gè)步驟建模為任意精度。
這就是神經(jīng)網(wǎng)絡(luò)所能做的,也許會(huì)稍微復(fù)雜并且超越水平步驟(如下圖二次線和線性線)來(lái)建模關(guān)系,但其核心就是一個(gè)分段函數(shù)近似器。
每個(gè)節(jié)點(diǎn)都委托給分段函數(shù)的一部分,網(wǎng)絡(luò)的目的是激活負(fù)責(zé)部分要素空間的特定神經(jīng)元。例如,如果要對(duì)是否留胡子的男性進(jìn)行圖像分類,應(yīng)將幾個(gè)節(jié)點(diǎn)專門分配到經(jīng)常出現(xiàn)胡子的像素位置。在多維空間的某個(gè)地方,這些節(jié)點(diǎn)表示數(shù)值范圍。
"神經(jīng)網(wǎng)絡(luò)為什么工作"的問(wèn)題仍然沒(méi)有答案,UAT沒(méi)有回答這個(gè)問(wèn)題。但它指出神經(jīng)網(wǎng)絡(luò)在某些人的解釋下可以建模任何功能,可解釋的人工智能領(lǐng)域興起,通過(guò)激活最大化和靈敏度分析等方法回答這些問(wèn)題。
圖源:unsplash
這4種算法以及其他許多算法其實(shí)都是低緯度的,并且非常簡(jiǎn)單。這就是機(jī)器學(xué)習(xí)領(lǐng)域的一個(gè)關(guān)鍵點(diǎn),我們聲稱在人工智能中看到的許多“魔法”和“智能”,實(shí)際上是隱藏在高維表象下的一個(gè)簡(jiǎn)單算法。
決策樹(shù)將區(qū)域拆分為正方形很簡(jiǎn)單,但將高維空間拆分為超立方體則不簡(jiǎn)單;SVM 通過(guò)執(zhí)行內(nèi)核技巧,提高從一維到二維的可分離性,但 SVM 在數(shù)百個(gè)維度的大數(shù)據(jù)集上做同樣的事情是難上加難。
我們對(duì)機(jī)器學(xué)習(xí)的欽佩和困惑是源于對(duì)高維空間缺乏理解,學(xué)習(xí)如何繞過(guò)高維空間,理解本地空間的算法,對(duì)直觀理解很有幫助。