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訓練師”。
一方面,我們需要針對具體問題選擇和訓練合適的模型(類比:選擇有克制關系的寶可夢來戰斗)。 另一方面,當沒有合適的模型可以使用時需要進行研發(類比:獲取新的寶可夢)。
