機器學結

來源:文萃谷 7.47K

機器學習,討論的是如何讓計算機程序進行學習。因為現實世界中有很多問題,不能通過直接編程解決,如手寫數字識別,自動駕駛等。人們希望計算機程序也能像人一樣,從已有的經驗中進行學習,來提高它的性能。

機器學結

那什麼是機器學習了?首先來看什麼是學習。學習的一般説法是,在經驗的作用下,行為的改變。學習有一個要素,那就是經驗,學習的結果是行為的改變。如果人經過學習後,並沒有改變其行為,則不能稱其學習了。

機器學習的概念略有不同,因為學習的主體從人變成了計算機程序。機器學習的最早的一個非正式描述是1959年,由arthur samuel給出:field of study that gives computers the ability to learn without being explicitly programmed(機器學習是一種學習的領域,它給計算機學習的能力,而沒有經過顯式編碼)。這個顯式編碼應該是針對學習的結果來説的,即計算機學到的東西並不是人寫到程序裏的,比如arthur samuel寫了一個下的程序,經過與程序本身對奕很多盤後,能輕易把arthur samuel擊敗,這就證明學習的結果不是顯示編碼的。機器學習的更現代的定義是1998年由卡內基梅隆大學的tom mitchell提出:a computer program is said to learn from experience e, with respect to some task t, and some performance measure p, if its performance on t, as measured by p, improves with experience e(計算機程序從經驗中學習了,是説它對於某個任務的性能提高了,這個性能是通過p來度量的)。

使用機器學習方法來解決某個任務,首先需要對這個任務選取合適的原型,如線性迴歸,logistic 迴歸,樸素貝葉斯,svm(支持向量機)等,然後通過經驗來優化性能度量p。這裏先來説説性能度量p,原型選擇好以後,我們需要根據一定的方法來調整原型的參數,從而達到優化性能度量p的目的。機器學習的理論很大程度上都是在講優化,如最小訓練誤差,最小均方差,最大似然率,凸集優化等。機器學習的過程,就是利用經驗,來對性能度量p最優化的過程。在實際中,我們並不知道最優是個什麼樣子,機器學習的結果是對最優值的一個估計,這個估計以大概率收斂於最優值。

根據經驗的不同,機器學習可以分做以下三類:監督學習(supervised learning),無監督學習(unsupervised learning)以及增強學習(reinforcement learning)。監督學習是指在訓練經驗中明確告訴了正確結果,這就和教小孩認水果一樣,期望他在學習後能正確認出水果的種類。先給他一個蘋果,告訴他,這是蘋果。再給他一個蘋果,告訴他,這是蘋果。如此幾次之後,再給他一個蘋果,問他,這是什麼?如果小孩悟性還好的話,就會説,”這是蘋果“。給他一個梨,再問他,如果説”這不是蘋果“。這就表示學會了,用機器學習的術語,就叫收斂。如果答的不對,那麼説明還需要繼續訓練。監督學習算法的輸出如果是連續的,稱為迴歸(regression),如果是離散的,稱為分類(classification)。大部分的機器學習任務都是監督學習。無監督學習的只有訓練樣本並沒有正確結果,繼續上面那個例子,這次給小孩一堆蘋果,梨和桔子,我們不告訴他這都是些什麼,只讓他把這些水果按它們的品種分開。待他分開這些 水果後,再給他一個桔子,我們期望他能把這個放到桔子那一堆。非監督學習的常用方法是聚類。最後一類是增強學習,這在機器人領域應用廣泛。比如小孩如果乖乖的坐在那吃飯,我們就説乖寶寶,如果他到處亂動,把飯吃得桌子上比碗裏還多,多半就要被説好好吃飯,壞寶寶之類的。多次以後,寶寶就會發現,如果他表現聽話些,大家都會誇他,喜歡和他玩,拍拍他頭之類的,如果不聽話,就會得不到這些。寶寶就會盡量往聽話的方面表現,以得到大家的讚揚和好感,特別是做了壞事以後......這就是增強學習,我們只對程序的行為做出評價,程序就會做出更有可能得到正面評價的行為。

機器學習需要用到線性代數,概率與統計,以及一些最優化方法,如梯度(一階偏導數),拉格朗日條件極值,凸優化(convex optimizition)等。

機器學結 [篇2]

智能:

智能這個詞可以用很多方法去定義。這裏我們把它定義為能夠根據某些情況做出正確的決定。做出好的決策需要知識,並且這種知識必須是一種可操作的,例如解釋傳感器數據並且使用它去做決策。

人工智能:

感謝那些人類曾經寫過的程序,允許這些程序去做一些我們認為有用的事情。在這種情況下,計算機已經獲得了某種程度的智能。在21世紀的開始的時候了,仍然有很多任務,人和動物可以很簡單做到,而計算機卻無法企及。許多這些任務落到人工智能的標籤下,包括許多感知器和控制任務。為什麼我們不可能寫程序去幹這些事情?我相信這是因為我們自己本身並不是真正的知道如何去做這些任務的.,即使我們的大腦能夠做到。做這些事情涉及的目前隱式的知識,但是我們通過數據和樣本獲得這些信息,例如觀察在某種輸入下,人類是如何做的。我們如何讓機器去獲得那種只能?使用數據和樣本去建立可操作的知識就是機器學習。

機器學習:

機器學習有很長的歷史了,並且有很多教科書講了很多有用的道理。這裏我們專注到幾個最相關的課題。

學習的形式化:

首先,讓我們把最一般的機器學習框架形式化一下。我們給定如下樣本:

d={z1,z2,...,zn}

zi是從一個未知的過程 p(z)的樣本。我們給定一個損失函數l,它有兩個參數,一個是決策函數f,一個是樣本z,它返回一個實數。我們想去找到l(f,z)的最小值。

有監督學習:

在有監督學習,每個樣本z=(x,y) 函數f的入參是x,這裏最常用的例子包括:

-迴歸: y 是一個實數或者是向量,f的輸出和y是一個集合,我們經常把損失函數作為均方差:

l(f,(x,y))=||f(x)-y||^2

-分類:y 是一個和分類序號對應的有限正整數,我們經常把這個損失函數作為一個對數函數,並且fi(x)=p(y=i|x),也就是説給定x, y=i的概率。

l(f,(x,y))=-log(fy(x)) 這裏的約束是 fy(x)>=0, sum(fi(x))=1

無監督學習:

在無監督學習

無監督學習中,我們學習到一個函數f,它幫助去描述一個未知概率分佈p(z).某些函數直接估計p(z)自身(這個叫做密度估計)。在其他例子中,f是一個嘗試描述密度主要集中在哪裏。聚類算法將輸入空間分割成區域(經常是一個樣本為中心)。其他聚類算法創建了一個硬分區(比如k-means),而另一個則構建了軟分區(例如gaussian mixture模型),這個軟分區給出z屬於每一個分類的概率。其他非監督學習算法是那些構建了新的z的表達。許多深度學習算法屬於此類,pca也算是這個。

直接泛化:

大多數泛化學習算法推薦了一個單一原則,直接泛化。它假設如果樣本a如果和樣本b接近,則對應的輸出f(a)和輸出f(b)應該接近。這是直接泛化插值的基本原則。這個原則是非常厲害,但是它有侷限性,如果我們有多個函數怎麼辦?如果目標函數比訓練的樣本有多個輸出?這樣的話,直接泛化將不成立了,因為我們需要至少和目標函數一樣多的樣本,才能夠覆蓋多個函數,才能夠通過這樣的原則來泛化。換句話説,給定知識 d,人類大腦不一定只學習了一個函數就不做了,而是學會了很多函數,你這時候直接泛化就不成立了。

由於下面的原因這個問題和所謂維數詛咒深深的聯繫在了一起。

當輸入空間是高緯度的,且指數級增長的時候,是很可能有多個函數需要學習的。舉個例子,我們想去區別給定輸入的10個不同的輸出,並且,我們關心所有n個變量的10的n次方個配置。單單使用直接泛化,我們需要至少一個樣本去泛化10的n次方個樣本才能達到所有的泛化。

分佈式表達 vs 本地表達 和間接泛化

整數n的一個簡單的二進制直接表達是一個b位的序列,且 n<b, 所有的位是0,除了第n位,整數n的簡單的二進制分佈式表達是一個log2b位的序列,伴隨着一個通常的n的二進制編碼。在這個例子,我們看到,分佈式表達可以是比本地的表達成指數級的高效。在相同的自由參數個數下,相比直接表達,分佈式表達能夠達到指數級別的能力。它們因此提供了更好泛化能力的潛力,因為學習理論表明樣本的數目o(b)調優。

另一個區別是,聚類和主成分分析,或者限制伯瓷慢機。前面的是本地的,後面的是分佈式的。

用k-means聚類,我們為每一個原型維護一個參數向量。例如,每個區域一個。在pca,我們通過記錄它的目標可能性的主方向來表達它的分佈。現在想象一個簡單的主成分解釋器,在每一個的方向上,不管在那個方向上的投影是高於或者低於一個閥值,在d個方向上,我們能夠區分2的第d次方個區域。rbms是類似的,它定義了d個超平面,並且關聯了一個位來標識在那個面的那一邊。一個rbm然後關聯了一個輸入區間到每一個i表達位的配置。(這些位就是隱藏單元,在神經網絡裏的術語。)

rbm的參數的個數大約等於隱藏單元的個數和輸入維數。 我們可以看到rbm的區域數目或者pca的區域數目可以隨着輸入參數的個數指數級的增長,但是k-means的傳統聚類區間表達的區域數量僅僅線性的和隨着參數的數目增長。換句話説,意識到一個rbm可以泛化到一個和隱藏單元對應的配置的新的區域,這個樣本卻是沒有被看到的,也就是説聚類算法不可能做到的。

熱門標籤