這幾個機器學習核心問題,不會數學也能搞定!
如何用一種通俗易懂的方式闡述機器學習和人工智能領域最重要的話題?
人工智能已成為未來的趨勢。汽車可以自動駕駛,計算機在圍棋比賽上打敗了人類,機器人也在搶走人類的工作。不久后,機器人將推翻人類的政府,奴役我們的后代……好吧,或許這并不會發生。但這樣也回避了問題的實質:人工智能的極限是什么?
答案顯而易見——這取決于對人工智能的定義。如果將人工智能定義為只會下圍棋的電腦,那未來的圍棋程序會比現在更先進。但可惜的是,沒有人會用這個定義。奔馳在宣傳他們的智能駕駛時,大約不會是在談論他們的汽車如何下圍棋。但反過來說,你可以像市場營銷人員那樣去定義人工智能——你們公司在產品中使用了人工智能,我們的產品也是。沒人清楚知道我們的產品是如何實現人工智能的,但它絕對不是人工智障,所以這就成了。
那么,到底什么是智能呢?經過對人類大腦、心理學,甚至螞蟻社會的大量研究,可以得出這樣的結論——智能包括兩個主要部分:第一,識別模式的能力;第二,運用這些模式來實現目標的能力。
對此有很多解釋,但有一個例子很清楚地說明了這一結論:想想那些非常聰明的人,比如說,在數學領域非常聰明的人。想象一下這類人在數學課上是不是都不太專心——為什么?因為他/她知識吸收地非常快。他/她意識到了這一模式,并決定在剩下的課堂時間里不再集中注意力。這些人也可能很快完成作業,因為他/她善于將課堂上學到的知識(又稱模式)運用到作業中。
這個定義也適用于其他類型的智能。例如,具有藝術才能的人似乎能夠識別出什么將會是好的藝術,并利用這種直覺創造新的、好的藝術。如果這還沒有足夠的說服力,要知道,維基百科也為智能提供了一個類似的定義,你肯定不想和維基百科爭論,它可是互聯網上最可靠的知識來源。
來源:boredpanda.com
有一個專門研究算法的領域,它創建模型,從數據中提取模式,并將其應用于其他數據,這就是機器學習。有一個機器學習中最重要的概念之一——過度擬合。過度擬合只是一種花哨的說法,表示模型發現的模式過于復雜,導致預測未來點時出現問題。
來源:wikipedia.org
假設你的任務是畫一條線將紅點和藍點分開,但是這些點的顏色可能是隨機性的,也就是數據有些混亂。黑線似乎是一個合理的解決方案,它并沒有正確地對所有的點進行分類,但其似乎考慮到了邊界上的一些點是可以朝任何方向移動的。綠線成功地分離了所有的點,但不同之處在于: 我們標黃了一些區域,在這些區域里,如果是按照綠線劃分,一個新點會被歸為紅色,而如果是按照黑線劃分,一個新點會被歸為藍色。
這肯定不是通過MicrosoftWord完成的。可以使用專業的軟件,比如Photoshop。
那么,相信大家會同意這一點,即標黃區域更可能包含藍色而不是紅色的點。這就是過度擬合——綠線在現有點(訓練點)上區分地比較好,但在新的點(測試點)上卻區分地相對較差。
我們可以這樣說,產生綠線的模型在訓練點上發現了太多的模式。這個模型太善于去發現模式,所以在應用模式時,沒有意識到其發現的模式可能并不適用于新的點。那么,最核心的問題在于發現哪些模式是有效的,哪些只是數據自身的干擾。
許多聰明的人試圖用一些非常巧妙的方法來解決這個問題,他們使用長方程和大量的希臘字母來防止模型找到像綠色這樣奇怪的線,這個步驟叫做正則化。無論是在訓練過程中添加正則化,還是在模型本身中加入正則化,這些都是改進機器學習的方法。
但其實,我們略過了最重要的一步。在求助于復雜的數學之前,我們忘了問“為什么”。是的,總是有關于“為什么天空是藍色的”,或者“為什么我們存在于宇宙中”這樣的問題,但這些都不是這里提及的問題(不是你要尋找的問題)。我們更關心的是為什么智能在一般情況下是有效的。我們試圖去找出哪種模式能夠奏效,但還沒有確定為什么任何模式都奏效。為什么下一個點應該是藍色或紅色;為什么不能是紫色的呢?
事實上,我們也不知道是誰第一個提出這個問題,但幸運的是,都會有人自始至終決定要想出一個答案:之所以有些模式能奏效,是因為繪制測試數據應該獨立于訓練數據,并且兩者應該來自相同的分布。這只是一種數學上的說法,測試模型時,我們不應該讓其受不同于訓練時環境的影響。下一個點是紫色的可能性很小,是因為我們已經看到了很多點,沒有一個是紫色的。畢竟,當擲一個六面骰子時,我們不能預計一半正面一半反面,但可以預計的是,如果以同樣的方式投擲相同的硬幣,應該會得到類似的結果。借用一句勵志名言:“如果你總是在做一直在做的事情,就會得到一直在得到的東西。”
好吧,這是由Microsoft Word完成的。
這與區分實際模式和過度擬合有什么關系呢? 如果你注意到上圖,過度擬合的主要原因是綠線模型試圖擬合了一些異常值。假設可以通過某種方式將這些點分組到不同的區域,其中一些區域包含異常值并且不符合找到的模式(黃色區域),而另一些區域包含確實符合找到的模式的點(綠色區域)。
直觀地說,“綠色”區域的范圍應該更大,包含更多的點,并且在預測未來的點時更準確。換句話講,如果更多的點出現在“綠色”區域,我們預計它們是紅色的。另一方面,如果更多的點出現在“黃色”區域,雖然有些會是紅色的,我們會認為大部分會是藍色的。
當然,為了得到更多的點,我們總是可以收集更多的數據。但有時候,你會發現自己只是一個貧窮的本科生,沒有別人擁有的經費、時間或資源。無論如何,有時收集更多的數據是不可行的。因此,與其這樣做,我們可以忽略部分訓練數據,并用被我們遺漏的點來“添加”點!
這也不是一個新概念——這是使用了驗證集(我們在驗證集中驗證那些模型從訓練集中找到的模式)。使用驗證集來確定特定的過擬合區域是一種新方法。然而,人們沒有這樣做是有原因的。
“綠色”區域看起來很不錯,但首先,它們很難找到,其次,這些區域的構建依賴于數據。簡單來說,有些區域明顯是“綠色”的,有些區域明顯是“黃色”的,但是有些區域很難確定顏色,因為這些區域是圍繞訓練數據建立的。這個問題的解決方法依賴于與美國相同的基本原則。如果針對不同數據訓練的兩個模型得到了相同的“黃色”區域,那就會很奇怪。
因此,對于第一個模型中不確定的區域,如果基于不同數據的模型來重復這個著色過程,便可以根據第二個模型來決定它們的顏色! 如果這個模型發現了相同的區域,那么我們可以非常肯定它不是偶然發現的,所以它應該是“綠色“的。相反,如果第二個模型沒有找到該區域,那么很可能是干擾,應該將其涂成“黃色”。
那么,要如何確定這些區域呢? 通過找集群! 你可能會問,什么是找集群?
來源:wikiepdia.org
找集群就是在數據中找到集群。如圖所示,找集群就是在數據中找到三個集群。同一集群中的點看起來與模型相似。如果有多種方法可以轉換這些點并在模型中繪制(例如,在神經網絡的每一層中),那么根據定義,在所有圖中處于相同集群中的點對模型來說是不可區分的。這很清晰——如果模型能夠區分它們,那么它們在某個時候就會在不同的集群中。無論如何,如果定義了這些總是在同一個集群中的點的位置,那么現在就有了各自的區域了!
機器學習就是尋找能夠分離點的算法(還有回歸)。算法傾向于找到綠線,因為這將最小化分類錯誤。機器學習的挑戰在于找到一種可以得到黑線的算法,因為這可能在新的點上更有效。正則化,也就是巧妙的數學,幫助我們得到更接近黑線的東西。