1. 程式人生 > 其它 >方法概述:機器學習

方法概述:機器學習

機器學習是實現人工智慧目標的一種重要手段。機器學習的實質是,尋找一個合適函式,能夠基於輸入,輸出人類想要的結果。然後,想要熟練使用機器學習來解決實際問題是不容易的,它需要根據具體問題去做很多種選擇,包括模型的選擇、引數的調整、訓練資料的預處理等等。

1. 機器學習來龍去脈

1.1 人類智慧與人工智慧

人類具備智慧,可以學習、思考以及創新,能夠做到很多機器做不到的事情。

在計算機(Computer)被研發出來不久後,為降低人類工作負擔,一些專家早在1950年提出了人工智慧(Artificial Intelligent,AI)的概念,希望找到方法能夠使機器和人類一樣具備智慧。

為達到人工智慧的目標,專家們提出多種方法均為奏效,直到1980年機器學習被提出。

1.2 類比:生物的先天本能和後天學習

人類(生物)的智慧來源於兩方面,一方面是先天的本能。例如,剛出生的河狸在聽到流水聲後就會自發地築水壩,直到聽不到流水聲為止。

類比到機器中,一些人希望通過提前人工設立規則(hand-crafted rules)使機器表現得具備智慧。 例如, 設計一個能通過聲音幫你關掉音樂的機器人,可以在程式中寫程式碼:當聽到 "turn off" 的詞彙時就把音樂關掉。但這種方法的問題是:①無法考慮到所有的可能性,非常僵化,無法超越規則的書寫者;②智慧的背後是大量的IF規則撰寫工作,人力成本高,不適合小型企業。

1980年提出的機器學習方法基於人類(生物)後天學習的思想,要做的其實是讓機器他有自己學習的能力(而不是寫程式讓他做到某件事)。當機器具備學習能力後,我們就可以告訴它一系列的問題和答案,使其能夠舉一反三學到解決該類問題的能力,例如影象識別任務。

我們希望學習後的機器具有影象識別的能力,能夠認識它之前沒有看過的貓。

1.3 機器學習實質:尋找一個合適的 function

機器學習的實現必須依賴計算機程式,而計算機程式的執行需要有明確的變數和執行邏輯。因此,我們需要將機器學習的思想用計算機可實施的數學語言去表述。

機器學習的實質是,尋找一個合適函式,能夠基於輸入,輸出人類想要的結果,如下。

重點在於尋找函式的過程(學習),區別於人工設立規則去建立函式。

2. 機器學習的三個步驟

2.1 Define a set of function

機器學習的過程可以轉化為一個“大海撈針”的選擇過程。第一步,我們要先準備一個 function set(函式集合),這些函式有好有壞,而我們的目標函式應該在裡面,只是不知道是哪一個。

2.2 Goodness of function

為了篩選出我們的目標函式,首先要確定什麼是“好”。“好”的定義不同,目標函式自然也不同。

對於不同的任務,“好”的定義是不同的,需要針對具體任務去建立評價方法(需量化)。

例如,對於有監督的分類任務,我們希望目標函式的對應輸出和實際一致,如下所示:

如果一個函式,看到猴子圖輸出猴子,看到貓的圖輸出貓,那就是好的。如果一個函式看到狗卻輸出猴子或貓,那才是壞的。通過在訓練樣本中的識別正誤記錄,可以計算出函式的好壞程度。

2.3 Pick the best function

只是有一個能夠決定 function 好壞是評價方法是不夠的。因為 function set 有成千上萬個候選的 function,所以我們需要一個有效率的演演算法,可以快速從function set中挑出最好的。最好的function 一般被記為 f*,這個函式應當具備舉一反三的能力(測試集效能也較高)

3. 機器學習現有技術

通常學習的情景(scenario)是你沒有辦法控制的。比如,因為我們沒有data做監督學習,所以我們才做reinforcement learning。任務(task)是指我們要解決的問題型別。

不同的 model 就是不同的 function set。Model有很多種,最簡單的就是線性模型,但我們會花很多時間在非線性的模型上。在非線性的模型中最耳熟能詳的就是Deep learning。

3.1 有監督學習(Supervised Learning)

有監督學習從訓練資料集中訓練模型,再對測試資料進行預測,訓練資料由輸入和輸出對組成。

3.1.1 迴歸(regression)

輸出變數為數值(scalar)的預測任務稱為迴歸問題。

3.1.2 分類(classification)

輸出變數為有限個離散變數的預測問題稱為分類問題。

例如,二分類可以鑑別垃圾郵件,將其放到垃圾箱。多分類可以自動將新聞分到不同的版塊。

3.1.3 結構學習(Structured Learning)

輸出是結構性物件的預測問題稱為結構學習問題,比如輸入輸出均為序列的任務。

3.2 半監督學習(Semi-supervised Learning)

監督學習與無監督學習相結合的一種學習方法,使用大量的未標記資料,以及同時使用標記資料。半監督學習希望使用較少的標註資料達到還不錯的學習效果。

在半監督學習的技術中,這些沒有label的data可能也是對學習有幫助的。

3.3 遷移學習(Transfer Learning)

將某個領域或任務上學習到的知識或模式應用到不同但相關的領域或問題中。主要思想是從相關領域中遷移標註資料或者知識結構、完成或改進目標領域或任務的學習效果。

3.4 無監督學習(Unsupervised Learning)

訓練樣本的標記資訊未知, 目標是通過對無標記訓練樣本的學習來揭示資料的內在性質及規律,為進一步的資料分析提供基礎。
此類學習任務中研究最多、應用最廣的是"聚類" (clustering),其目的在於把相似的東西聚在一起,主要通過計算樣本間和群體間距離得到。現在流行的詞嵌入等表徵學習方法也是無監督學習。

3.5 強化學習(Reinforcement Learning)

在reinforcement learning 裡面,我們沒有告訴機器正確的答案是什麼,機器所擁有的只有一個分數,就是他做的好還是不好。

這也比較符合我們人類真正學習的情景:學校裡面的老師會告訴我們正確的答案(有監督學習),但在真實社會中沒人會告訴你正確答案,你只知道你做得好還是做得不好。

4. 深度學習(Deep learning)

深度學習是一種實現機器學習的技術。最初的深度學習是利用深度神經網路來解決特徵表達的一種學習過程。深度神經網路本身並不是一個全新的概念,可大致理解為包含多個隱含層的神經網路結構。

為了提高深層神經網路的訓練效果,人們對神經元的連線方法和啟用函式等方面做出相應的調整。其實有不少想法早年間也曾有過,但由於當時訓練資料量不足、計算能力落後,因此最終的效果不盡如人意。後來資料量和計算能力充足後,深度學習摧枯拉朽般地實現了各種任務,使得似乎所有的機器輔助功能都變為可能。

5. 機器學習發展應用

機器學習目前尚不具備傳統意義上的通用智慧,它基本只能針對某一具體任務進行訓練和應用。
想要熟練使用機器學習來解決實際問題是不容易的,它需要根據具體問題去做很多種選擇,包括模型的選擇、引數的調整、訓練資料的預處理等等。做這些工作的人可被稱為 “AI訓練師”。
一方面,我們需要針對具體問題選擇和訓練合適的模型(類比:選擇有剋制關係的寶可夢來戰鬥)。 另一方面,當沒有合適的模型可以使用時需要進行研發(類比:獲取新的寶可夢)。

6. 參考資料

  1. Datawhale 開源教程:李巨集毅機器學習
  2. 【機器學習筆記】有監督學習和無監督學習
  3. 遷移學習概述(Transfer Learning)
  4. 李巨集毅機器學習視訊