1. 程式人生 > >1.0初識機器學習

1.0初識機器學習

目的 最值 tom 一條直線 坐標系 能夠 課程 斜線 多少

1.歡迎參加《機器學習》

  當我們使用谷歌或者必應搜索網頁的時候,當我們搜索相冊中老友的照片的時候,當我們的電子郵箱收到許多郵件,而垃圾郵件被自動的過濾的時候,都有機器學習在起作用。

  但最值得我們興奮的是,我們可以夢想有一天,我們可以通過機器學習制造出像我們一樣智能的AI,雖然這個目標距離我們還很遠,但是已經有許多人,在通過機器學習,采用學習算法嘗試模擬人類大腦的學習方式。

  本套課程就是裏介紹這些算法。通過本套課程,你將學習到最先進的機器學習算法。但僅知道算法及其數學含義,卻不知道如何用來解決用它來解決你所關心的問題是遠遠不夠的。

  我們需要花長時間來設計一套算法,讓機器學習,然後通過讓機器自己編程,來幫我們解決問題。

  如今眾多領域都在受著機器學習的影響,比如數據挖掘領域(通過收集諸如用戶點擊等數據,讓公司更加了解用戶;電子病歷;計算生物學,對DNA的分析讓我們對人類的奧秘知之更多,還有工程學領域……),無法手動編程的領域(如自動直升機,無人駕駛汽車,手寫識別,自然語言的處理,計算機視覺理解圖像),同時為百萬人根據每個人的喜好私人訂制程序,實現真正的人腦級別的智能。

  12種最受歡迎的IT技術,機器學習位列第一,就業需求遠遠大於人才被培養出來的數目。

2.什麽是機器學習

  試圖定義機器學習,並了解在什麽情況下使用機器學習。

  機器學習的學界對機器學習也尚未有一個統一的定義,在這裏介紹一些被廣泛認同的定義。

  首先,Arthur Samuel 給出的定義為:在沒有明確設置的情況下,使計算機擁有學習能力的研究領域。

  Samuel成名於1950年,他使用機器學習,讓計算機通過算法學習,成為了一個比他棋藝更高的跳棋玩家。他所做的是讓計算機自己跟自己下棋幾萬次,讓程序觀察哪些布局容易贏,從而成為一個比Samuel更會跳棋的棋手。

  Samuel給出的定義顯然顯得陳舊而狹隘,Tom Mitchell更新了定義,他提出:計算機程序從經驗E中學習,解決某一任務T,進行某一性能度量P,通過P測定在T上的表現因經驗E而提高。

  機器學習的課程,不僅僅要交給你一些工具,更重要的是要教給你怎樣使用這些工具。就像吳恩達舉的例子:想象別人教你如何成為一個木匠,他說這是一個榔頭,這是一個螺絲刀,這是一個鋸,祝你好運。這樣可不好,對吧?雖然這種教學方法,似乎跟國內大學的教學方法不謀而合,但如果這麽課程想要讓你真正的學會機器學習,更重要的是教你怎樣正確的使用這些工具,知道如何使用機器學習算法的人,與不知道機器學習工具如何使用的人,用很大的不同。

3.監督學習

  在定義監督學習之前,最好先舉一個例子來解釋。

  技術分享圖片

  根據相關數據分析,預測房價。橫軸代表房屋的面積(平方英尺),縱軸代表房屋每平尺均價。

  如果想要預測750平方英尺的房子的均價,可以做一條斜線,將所有數據擬合,然後根據很坐標750,找到對應的縱坐標價格。

技術分享圖片

  除了用一條直線進行擬合,還可以通過二次函數或者二階多項式來擬合數據會更好

技術分享圖片

  那應該使用一條直線進行擬合數據,還是二次函數曲線進行擬合數據?在這個問題中,不論哪種模型,顯然並沒有絕對的對錯。

  這是監督學習算法的一個例子。

  監督學習是指:我們給算法一個數據集,其中包含了正確答案,也就是說我們給它一個房價的數據集,在這個數據集中的每個樣本,我們都給出正確的價格,這個房子的實際賣價,算法的目的就是給出更多的正確答案,例如,為你朋友想賣掉的這所新房子給出估價,用更專業的術語來定義,它也被稱為回歸問題,這裏的回歸問題是指:我們想要預測連續的數值輸出,也就是價格,技術上而言,價格能夠被等分,因此價格實際上是一個離散值,但通常我們認為房價是一個實數,標量或是連續值,回歸這個術語是指:我們設法預測連續值的屬性。

  另一個例子,根據電子病歷腫瘤的尺寸來判斷腫瘤是惡性腫瘤還是良性腫瘤。

技術分享圖片

  橫軸代表腫瘤尺寸,縱軸1代表是惡性腫瘤,0代表良性腫瘤,坐標系中,我們輸入了五個惡性腫瘤樣本,五個良性腫瘤樣本。

  假設我們有個朋友不幸患了腫瘤,機器學習就是判斷出腫瘤是惡性的概率,用更專業的術語講,這就是一個分類問題。

  分類是指:我們設法預測一個離散值輸出,0或1,惡性或良性。

  在實際中遇到的問題,有時你也有兩個以上可能的輸出值,在實際的腫瘤分類中,可能有三種類型的腫瘤癌,因此,你可能要設預測值0,1,2或3.

  另一種分類方法,良性用圈代表,惡性用叉代表,橫軸代表腫瘤,縱軸代表年齡,我們將惡性區和良心區用一條直線分開,用了兩個特征來進行機器學習分類,實際中,還可以加入更多的特征(腫瘤厚度,腫瘤細胞的分布均勻程度等無窮多特征的算法)。

  技術分享圖片

  監督學習,我們給算法一個數據值,其中包含了正確答案,算法給出更多的正確答案。其中包含回歸問題和分類問題,回歸問題是給出連續值,分類問題是給出離散值。

4.無監督學習

  聚類算法屬於無監督學習的一種,根據簇群,將相關的內容分為一個群。比如經常給你發郵件的人,會被分為一個簇群,認為你們之間是互相認識的,或者基因組中,顏色相近的分為一個簇群。

  雞尾酒會問題:假設在一個小型雞尾酒宴會上,有兩個人同時說話,有兩個麥克風,放在距離兩個人不同的地方進行聲音收集采樣,通過算法,我們可以將兩個人所說話的聲音音頻源分離開來。同時如果將其中一個人,換成背景音樂,通過算法,我們依然可以將人說話的聲音與背景音樂兩段疊加在一起的音頻源分離開。

技術分享圖片

  想要達到這個功能,需要敲多少代碼呢?只要在特定的編程環境下,只需要一行代碼:

[W,s,v]=svd((repmat(sum(x.*x,1),size(x,1),1).*x)*x);

  當然很多研究人員花費了很長時間才想出了這樣一行代碼,這並不是一個簡單的問題。

  實際上,在適合的編程環境下,許多學習算法都可以是很簡短的程序。

  這也是為什麽本套課程,要以Octave的編程環境。Octave是一個免費開源的軟件,使用Octave和MATLAB這類的工具,許多的學習算法,都可以通過幾行代碼來實現,在後續的課程中,將教給大家如何使用Octave,在Octave中實現這些算法。實際上,在矽谷的許多項目機器學習算法,我們都是先用Octave建立軟件原型,因為在Octave中實現這些學習算法,速度快得驚人。這裏每個函數,如svd函數,即奇異值分解的縮寫,其實這個已經作為線性代數的常規函數,內置到Octave當中了,如果你想使用C++或Java做這個,將需要很多的代碼,還要鏈接復雜的C++或Java庫。當然,你使用C++,java或者python,一樣可以實現這個函數,只不過要更加的復雜罷了。使用Octave作為你的學習工具和原型工具,它將使你更快的學習算法,建立模型。而事實上很多在矽谷大公司工作的人,會先用Octave來建立學習算法原型,只有在這個算法可以工作後,才將其遷移到C++、java或者其他編譯環境,事實證明這樣做,比你一開始就用C++更快的實現算法。

  作為一個開發者,時間是你最寶貴的資源之一,所以使用Octave是必需的。

  總結一下,我們談到了無監督學習,實際上它是一種學習機制,你給算法大量數據,要求它找出數據的類型結構。

  例子:

    根據被你標記為垃圾郵件的特點,判斷新發來的郵件是否是垃圾郵件,屬於監督學習。

    谷歌根據新聞網頁,推送跟相似內容的新聞網頁,采用了聚類算法,屬於非監督學習。

    市場的細分,屬於非監督學習。

    根據電子病歷的樣本數據,判斷是否患有糖尿病,屬於監督學習。

  

  

  

  

  

1.0初識機器學習