過去幾年來,機器學習已經成為最重要且最多產的IT與人工智慧分支項目了。這不讓人意外,因為它的應用每天都在各種業務部門中擴展,不斷產生更新且更強大的工具與結果。開放原始碼、準生產框架,以及每個月發表的上百篇論文,都對IT歷史中,某項最普遍的自由化進程作出貢獻。但為何機器學習如此重要且寶貴?

簡介:傳統與自我調整機器

自遠古以來,人類總是持續不斷地創造工具與機器來簡化工作,減少完成各種不同工作所需的整體勞力。他們可在不知道任何物理定律的情況下發明槓桿(由Archimedes第一次提出)、各種工具,以及更複雜的機器,來負擔更冗長且更複雜的程序。只要使用簡單的方法,就可以更輕鬆且無痛地錘釘子,使用推車來搬運移動很重的石頭或木頭也是如此。不過,這兩個例子之間的差別為何?雖然後者也是一種簡單的機器,但它的精密程度已經可讓人不需要思考每一個步驟,就可完成複合性的工作。有一些基本的機械定律可用橫向力量有效地對抗重力,但人類、馬或牛都不瞭解它們。古人只不過是看到一個可改善生活的小技巧(輪子)。

我們學到的經驗是,如果機器沒有具體實用的可能性,它永遠都不會真正產生效用或流行。如果使用者很容易就可以知道一台機器可以協助他們用較少的勞力或完全自動地完成工作,人們立刻就會認為這台機器很實用,並持續改善它們。就第二個例子而言,後續的智慧開始在齒輪、輪子或輪軸上湧現。所以我們可以在進化清單中加入後續的步驟:自動化的機器、組建它們(現在我們稱為寫程式)來將能量轉換成工作,以完成特定目標。風車與水車是只要人類稍微控制(與直接操作比較)就可以完成一項完整工作的基本工具案例。

不過,磨坊成功的關鍵是什麼?我們不能說人類在發展技術的初期,就能夠試著將智慧轉換成工具。河水與風都表現出一種姑且可稱為「流動(flowing)」的行為。它們有一些可讓我們免費使用的能量,但機器必須具備一些感知力(awareness),以促成這個程序。輪子可以繞著輪軸旋轉上百萬次,但風必須找到合適的表面來推動。答案似乎顯而易見,但你應該試著站在沒有任何知識或經驗的人的角度來思考,他們當時開發的是一種全新的技術方法。如果你比較喜歡將「智慧」這個詞留給近年來的成果,也可以說這段歷史始於工具,先到達簡單的機器,再到更有智慧的機器。

我們不討論中間的過程(但並非不重要),直接跳到現代,並改變討論的範圍。可編寫程式的電腦已經很普遍、有彈性,也愈來愈強大了;此外,internet的擴展,可讓我們最省力地分享應用軟體與相關資訊。在同一台機器上運行的文字處理軟體、email用戶端、web瀏覽器,都是這種彈性的範例。無可否認,IT的變革大幅改變,有時也改善我們的日常工作,但如果沒有機器學習(與它的所有應用),許多工作應該是與電腦領域毫不相干的。垃圾郵件過濾、自然語言處理、使用網路攝影機或智慧手機來做視覺追蹤與預測分析,只是少數徹底改變人機互動並增加人類期望的應用。許多案例都將電子工具實際轉換成人類感知的延伸,改變我們與許多日常情況的互動方式。它們藉由填補人類感知、語言、推理與模型及人工儀器之間的間隙來完成這個目標。

這種系統並非立基於靜態或永久性架構(模型參數與架構),它的基礎是使其行為適應外部訊號(資料集或即時輸入),並且如同人類,使用不確定且零碎的資訊來預測未來。

學習才是最重要的

「學習」真正的意思是什麼?簡單地說,學習是根據外界的刺激來進行改變,並且記得多數經驗的能力。所以機器學習是一種工程法,對每一項會增加或改善適應能力的技術而言,它都是最重要的事情。例如,機械表是一種非凡的產品,但它的結構符合固定的規律,如果某些外部事件發生變化,它就失去效用。這種能力是動物特有的,特別是對人類而言;根據達爾文的理論,它也是所有物種生存與進化的關鍵成功因素。就機器而言,就算它們無法自動演化,看起來也遵循同樣的規律。

因此,機器學習的主要目標是研究、建立與改善數學模型,我們可用與環境相關的資料(由一個通用的環境來提供)來訓練(一次或持續)這個模型,以推論未來並進行決策,而不需要完全瞭解所有的影響因素(外部因素)。換句話說,一個代理程式(一種軟體實體,可接收環境資訊,選擇最佳行動來達到特定目標,並觀察它的結果)會調整統計學習方法,試著找出正確的機率分布,並使用它們來計算最有可能成功(且最小誤差)的行動(值或決策)。

我比較喜歡使用推斷(inference)而非預測(prediction),這只是為了避免「機器學習是一種現代魔法」的奇怪(但不罕見)觀念。此外,你也可以加入基本的說明:演算法唯有在可影響實際資料時,才能以較高的準確度推算一般規則並學習它們的結構。所以你可以放心使用預測這個詞,但應該採用物理或系統理論領域中的含義。即使在最複雜的情況下,例如使用摺積神經網路來做影像分類,每一個資訊片段(幾何、顏色、特徵、對比...等等)都已經被儲存在資料中,模型也必須有夠大的彈性來持久擷取與學習它。

在接下來的小節,我們會簡單說明常見的機器學習方法。

監督式學習

監督式方法的特徵是採取教師或主管的概念,其主要工作是提供準確的誤差(直接與輸出值比較)度量給代理。在實際的演算法中,這項功能是藉由提供以一對資料(輸入與預期輸出)組成的訓練集合來完成的。代理可以利用這項資訊來修正它的參數,以降低整體損失函數(global loss function)的大小。在每次迭代之後,如果演算法有足夠的彈性,且資料元素是前後一致的,整體的準確性將會提升,且預測值與預期值之間的差異會趨近於零。當然,監督式方法的目標是訓練一個可以處理之前從未見過的案例的系統。所以,你必須讓模型發展泛化(generalization)的能力,並避免所謂的過擬(overfitting)問題,這種問題是因為過度的能力造成過度學習(我們會在後續的各章更詳細討論,不過,這種問題的主要影響之一是,它只能準確預測用來訓練的樣本,當它預測其他的樣本時,會有相當高的誤差)。

它使用相同的資料集來訓練兩個不同的模型(對應兩個較粗的線條)。前者是令人無法接受的,因為它無法泛化並捕捉最快速的動態變化(以頻率而言),而後者看起來可在原始的趨勢及在預測分析時正確泛化的剩餘能力之間取得良好的平衡。

正式來說,前一個案例稱為迴歸(regression),因為它有連續的輸出值。相反,如果可能的結果只有離散的數量(稱為類別(categories)),這個程序就變成分類(classification)。有時較佳的做法是確定機率分布,而不是預測實際的類別。例如,你可以訓練一個演算法來辨識手寫的字母,所以它的輸出是類別(英文有26個允許的符號)。另一方面,即使對人類而言,當字母的視覺清晰程度無法讓它歸類為某個類別時,這種程序也會造成多個可能的輸出。這代表用離散機率分布來表示實際的輸出比較好(例如,使用26個連續的正規化值,讓它們加起來都等於1)。

常見的監督式學習應用包括:

●以迴歸或分類為基礎的預測分析

●垃圾郵件偵測

●模式檢測

●自然語言處理

●情緒分析

●自動影像分類

●自動序列處理(例如音樂或語音)

非監督式學習

這種方法沒有任何監督者,因此有絕對誤差量值;它的用途是讓你知道如何根據一組元素的相似程度(或距離量值)來分組(分群)。例如,當你看到上一張圖時,在不考慮顏色或形狀的情況下,可以立刻看到兩個組別。事實上,圓點(以及三角點)決定了一個相關的集合;它們彼此間的差異程度遠大於內部的點之間分離程度。打個比喻,在理想的情況下,如果只考慮彼此間的相對位置與內部凝聚力,我們可以分割一片有幾座島嶼的海。

在下一張圖中,每一個橢圓都代表一個群聚,在那些區域內的點都可以用相同的記號來標示。圖中也有一些邊界點(例如在圓形區域的三角形)需要採用特定的標準(一般是權衡距離量值)來決定所屬的群聚。就像模糊分類(P與異常R),良好的分群方式應考慮離群值(outlier)的存在,以增加內聚(在視覺上,這代表選出可將區域密度最大化的子區域)與群聚間的分隔。

例如,你可以優先考慮單點與質心間的距離,或算出屬於同一個群集與不同群聚的點之間的平均距離。在這張圖中,所有邊界的三角形都彼此相近,距離它們最近的鄰點是另一個三角形。但是,在真實的問題中,通常會有部分重疊的邊界區域,代表有些點因為它們的特徵值而有高度的不確定性。

我們可以用機率分布來做另一種解釋。當你看到橢圓形時,它們代表介於最小與最大變異數之間的多變量高斯區域的範圍。考慮整個區域,一個點(例如,藍色星號)可能屬於任何群聚,但它屬於第一個群聚(左下角)的機率是最高的,群聚的成員就是依此而定。當所有高斯變異數與均數(換句話說,形狀)都穩定了,每一個邊界點就會被單個高斯分布捕捉(除了具有相同機率的案例之外)。在技術上,我們可以說這種方法可最大化特定資料集的高斯混合的似然(likelihood)。這是橫跨許多應用,且非常重要的統計學習概念。

另一種重要的技術會使用有標籤與無標籤的資料。因此這種方法稱為半監督式,當你需要使用少量的完整(有標籤)案例來分類大量的資料,或當你需要在分群演算法中加入一些限制(例如,將一些元素指派給特定的群聚,或排除其他的)時,可以採用它們。常見的非監督式應用包括:

●物件分割(例如使用者、產品、電影、歌曲⋯等等)

●相似性檢測

●自動標籤

強化學習

強化學習雖然沒有實際的監督者,但它也採用環境提供的回饋。但是,在這種方法中,資訊比較有品質,且不用協助代理決定測量的誤差。在強化學習中,這種回饋通常稱為獎勵(有時負面的回饋被定義為懲罰),它很適合用來瞭解在某種情況下採取的動作究竟是否正面。代理要學習的是最有益的行動順序,如此一來,它才能夠永遠根據最高的即時性與累積獎勵做出最佳的決定。換句話說,一項行動也可能是不完美的,但是就整體的策略來看,它可提供最高的總報酬。它採取的是「理性的代理人一定會追求可以增加他們的財富的目標」的概念。具備遠見是高級代理人的特徵,而短視的代理人通常無法正確地評估即時行動的後果,因此他們的策略都不是最好的。

強化學習在不完全確定環境、通常非常動態,以及不可能取得準確的誤差量值時特別有效率。過去幾年來,人們已將許多傳統演算法套用到深度神經網路,來學習Atari遊戲的最佳策略,並教導代理程式為正確的動作與代表狀態的輸入(通常是螢幕擷圖或記憶體傾印)建立關係。

超越機器學習:深度學習與受生物啟發的自我調整系統

在過去幾年來,因為越來越多強大且便宜的電腦,許多研究者開始採用複雜(深度)的神經架構來實現二十年前難以想像的目標。從1957年起,當Rosenblatt發明第一個感知器之後,人們就對神經網路愈來愈感興趣。但是因為許多限制(與記憶體和CPU速度有關),讓人們無法進行大量的研究,並埋沒許多這種演算法可能的應用。

幾十年來,許多研究者開始訓練愈來愈大的模型,使用許多不同的階層來建構它們(這就是這種方法稱為深度學習的原因),來處理新的挑戰性問題。便宜且快速的電腦讓他們可在可接受的時間內取得結果,以及使用非常大的資料集(以影像、文字與動畫組成)。這些努力產生令人印象深刻的結果,特別是基於照片元素與使用強化學習來做即時智慧型互動的分類。

這些技術背後的概念,是建立工作方式與腦部一樣的演算法,因為來自神經科學與認知心理學的貢獻,這一個領域已經取得許多重要的進展。特別是,目前有愈來愈多人對於模式辨識與聯想記憶感到興趣,它們的結構與工作方式很類似在新皮質發生的事情。這種做法可讓我們使用更簡單的演算法,稱為modelfree;它們並非採用特定問題的任何數學物理公式,而是採用一般的學習技術與重複經驗。

當然,測試不同的架構以及對演算法進行最佳化,是比定義復雜的模型(也比較難以根據不同的環境來調整)還要簡單許多的工作(而且可以用平行處理來完成)。此外,即使在沒有環境模型(context-based model)的情況下,深度學習的效能也比其他的方法好。這意味著,在許多情況下,以不確定因素產生的不精確決策,通常比用非常複雜的模型(通常不那麼快)輸出的精確決策還要好。對動物而言,這通常攸關生死,牠們的成功,通常隱含著捨棄了一些精確度。

常見的深度學習應用包括:

●影像分類

●即時視覺追蹤

●自動汽車駕駛

●Logistic最佳化

●生物資訊學

●語音辨識

許多這類的問題也可以用傳統的方法來解決,有時會複雜許多,但深度學習仍然勝過它們。此外,你可以將它們的應用擴展到你原本認為極度複雜的情況,例如自動車或即時視覺物件辨識。

資料學習與大數據

另一個可以應用機器學習的領域是大數據。在Apache Hadoop問世之後(它實作了有效的MapReduce演算法),各種商業領域所管理的資訊數量已成倍增長,這也是使用它們來做機器學習的契機,讓許多應用得以實現,例如大規模協同過濾(mass collaborative filtering)。

想像有一個線上商店有上百萬位使用者,且只有一千種產品。考應使用一個矩陣來建立每一位使用者與每一種產品的關係,並使用隱式或顯式的排行。這個矩陣有1,000,000×1,000個儲存格,即使產品的數量有限,但用它來做的任何運算都會十分緩慢且耗費記憶體。相反地,當你使用群聚以及平行演算法時,這種問題就會消失,而且可在極短時間內以較高維度來運算。

想像一下使用上百萬個樣本來訓練一個影像分類器的情況。我們必須對單一實例迭代多次,處理小批量的圖片。就算我們可以用串流方法來處理這個問題(以有限的記憶體),但你對於必須等待好幾天,才能讓模型開始有良好的效能。如果改用大數據做法,你可以非同步地訓練許多區域模型、定期共享更新,並使用主模型來重新同步所有成員。有一些強化學習問題已經開始使用這項技術來處理了,它會讓許多代理(通常是以不同的執行緒來管理)玩同一個遊戲,定期為整體智慧付出它們的貢獻。

並非每一種機器學習問題都適合使用大數據,且並非所有大資料集都適合用來訓練模型。但是在特定情況下,它們的結合可移除一些小規模情況下的限制,產生非凡的結果。

總結

我們介紹了自我調整系統的概念;它們可以從經驗中學習並修改行為,來將完成目標的可能性最大化。機器學習是一群技術的名稱,它們會實作自我調整演算法來進行預測,並根據資料的共同特徵來自動組織輸入資料。

監督式、非監督式與強化是三種主要的學習策略。第一種會假設有位可提供準確的誤差回饋的教導者。因此這種演算法會拿它的輸出與正確的結果做比較,並據此修正參數。非監督演算法沒有外部的教導者,所以每件事都是從資料直接學習來的。演算法會試著找出元素群組的所有共同特徵,來將新的樣本歸類為正確的群聚。監督式學習的樣本,是根據已知特徵來將物件自動分為特定種類來提供的;而一般的非監督式學習應用,是以後續的標示或處理,來自動劃分項目群組。第三種學習類似監督式,但它只接收關於其行動品質的環境回饋。它並不知道哪裡出錯或誤差的大小,只是接收通用的資訊,來協助決定該繼續採取某個策略或選擇另一種策略。(摘錄整理自《初探機器學習演算法》)

 

初探機器學習演算法

Giuseppe Bonaccorso/著;賴屹民/譯

碁峯出版

售價:480元

 

作者簡介

Giuseppe Bonaccorso

Giuseppe Bonaccorso是具備12年經驗的機器學習與大數據顧問,擁有義大利University of Catania電機工程學碩士,與義大利University of Rome,Tor Vergata和英國University of Essex的畢業後研究經驗。


Advertisement

更多 iThome相關內容