1. 程式人生 > >乾貨 | 機器學習沒有你想的那麼複雜

乾貨 | 機器學習沒有你想的那麼複雜


作者 | Anish Phadnis
翻譯 | Mika
本文為 CDA 資料分析師原創作品,轉載需授權

人腦是最神奇的。你知道我更感興趣的是什麼嗎?是我們的學習能力。我們如何能夠適應並學習全新的技能,然後應用到日常生活之中呢?

我有一個6歲的弟弟,我看著他從懵懵懂懂的小嬰兒逐漸長大。他學會了如何爬行、走路、跑;如何學會說話,理解簡單的語法和簡單的數學。

本文中我就要談談如何讓機器複製這種學習的能力。

假設我想教機器如何區分狗和貓。這很簡單,我的弟弟很容易就能做到。但是如何將其程式設計在機器上呢?我們不能簡單的認為,所有的貓都是尖耳朵,或所有的狗都有毛。如果我們試圖用程式碼寫下所有貓狗間的差異,從而來解決這個問題,那麼這是非常繁瑣的,而且成功的可能性很低。

通過機器學習,演算法能夠理解貓與狗之間的差異,而無需刻意進行程式設計。它不需要我們去指導應該如何區分貓和狗。演算法只需要看許多不同的貓和狗影象,並學習當中的區別。

這與我弟弟學會辨別貓狗很類似。不需要告訴他貓狗的差異,只需要告訴他,這張圖是狗,這張圖是貓。隨著時間的推移,小孩子就能慢慢了解貓狗的分別是什麼樣了。

總而言之,機器學習能夠讓機器學會如果執行任務,而無需明確地程式設計。

深度學習

我們知道機器學習是什麼,那麼深層學習到底是什麼呢?

很簡單,深度學習只是機器學習中的一個領域。

深度學習只是機器學習的一個子集

深度學習演算法被稱為神經網路,它以人腦為模型,模仿人類學習的方式。

讓我們以區分貓狗的例子來理解神經網路的執行原理。從本質上講,神經網路接收輸入,這裡也就是貓狗的影象;然後得出輸出,即標籤為貓或狗的影象。在輸入和輸出之間,隱藏層從影象中提取特徵。例如,這張圖中有長鼻子,鋒利的牙齒,尾巴等,然後通過這些資訊預測影象為貓還是狗。

在這裡插入圖片描述

神經網路

有時候這些特徵很重要,比如狗的鼻子比貓長;而有時特徵並不重要。為了解決這個問題,神經網路給某些特徵賦予了比其他特徵更多的權重,即如果一張影象中的動物鼻子較長,則更有可能是狗。最終大量的特徵彙集在一起​​,神經網路通過足夠的特徵判斷影象是否是狗,如果是的話則輸出這張圖是是狗。

但是如果出錯了呢?當然,神經網路無法一開始就準確無誤。神經網路判斷影象為貓,然而實際上是狗,這是學習的地方。

那這時會怎樣呢?它進入隱藏層,神經網路決定將相應的權重放在相應的功能上。如果出錯,網路必須進行調整,從而得出正確的結果。經過反覆的調整,最終神經網路將能夠分辨出兩者間的差異。

我實際上能夠構建這樣的神經網路,並得出95%的準確率。結果並不完美,但仍然是驚人的。

機器學習能解決哪些問題

在機器學習中,有3個不同的分支,它們都分別解決不同型別的問題。

監督學習

監督學習是我到目前為止在向你解釋的,因為它是最容易理解的。給出輸入,並得知輸出是什麼。我們有貓的影象,而且知道它被標記為貓。通過給合適的特徵賦予合適的權重,從而得出正確的結果,即影象為貓。

這就類似你在複習細胞生物學測試。你在在測試自己是否掌握了細胞不同部分的功能。你正在學習細胞結構,即輸出,並將其與輸出——細胞各部分的功能相匹配。這就是你在學習從輸入到輸出的過程。

無監督學習

無監督學習是一個數據集,但當中沒有標籤或沒有正確的答案。當中只有資料點,無監督學習的目的是找出資料中的模式,並幫助得出結論。

舉一個簡單的例子。給監督學習演算法一個正方形,告訴它是正方形,然後在給出一個三角形,告訴它這是三角形,諸如此類。接著它會理解是正方形是什麼樣的,三角形又是什麼樣的。

而在無監督的學習問題中,它只會給出一堆形狀,而不會被告知它這些是形狀。在這種情況下,無監督學習演算法將相似的形狀組合在一起,可能是邊的數量相同的形狀,具有相同區域的形狀,具有相似顏色的形狀等等。接著它會找到基礎模式能夠將形狀分類。

這就是無監督學習演算法如何嘗試在資料點中找到模式的例子。演算法確定這是資料點之間的最佳分割,因為所有黃點與其他黃點最相似,所有紅點與其他紅點最相似,並且所有藍點與其他藍點相似。

強化學習

這實際上是我在機器學習中最喜歡的主題,也是我在程式設計方面投入時間最多的部分。最吸引我的就是以下視訊中的這種行走機器人。

強化學習是理解如何在環境中讓獎勵最大化獎勵的智慧體。在以上視訊中,當智慧體能夠行走時就將獲得獎勵。為了將獎勵最大化,它將盡可能長時間地行走。

智慧體通過測試所有可能的腿部動作來實現行走。智慧體會因此獲得獎勵,因此它會繼續行並重復這一行動。

這很類似當我六歲的弟弟學走路時,媽媽會在他邁步時會鼓掌和歡呼。當他摔倒時他會停止讓他跌倒的行動,並繼續採取獲得媽媽鼓掌歡呼的步驟。最終,他學會了跑。

強化學習每次都讓我大吃一驚。

應用

讓我們來談談機器學習在現實中的應用。

自然語言處理(NLP)

計算機通過0和1中說話,我們用文字說話。我們的談話方式與計算機的談話方式之間存在差距,我們必須訓練計算機來理解我們的語言。使用NLP,計算機不僅能夠轉錄單詞,而且能夠從中提取意義,甚至能以某種語調進行對話!有了Siri,Alexa和Cortana等助手,與智慧手機交談最終會像在手機上使用鍵盤一樣普遍。

計算機視覺(CV)

NLP讓計算機具有通話能力,CV讓計算機能夠看到。這被應用在自動駕駛汽車中,用於檢測不同的物體,如其他汽車、行人以及道路上的車道。這能夠讓計算機從攝像機中提取資訊。這還可以用於簡單的人臉識別和檢測演算法,正如Facebook上使用的那樣。

分析健康資料

想象一下,Mark每天都在他家附近的公園裡散步,但突然有一天他摔倒了,心臟病發作了。心臟病像許多其他疾病一樣是非常突然的,幾乎沒有任何預兆。我們身體中的某些模式預示著即將發生的某些健康方面的問題。通過使用Fitbits等裝置能夠來跟蹤我們身體的健康資料,從而能夠分析這些資料並提前開始進行預測。通過分析健康資料,在Mark心臟病發作前一週,醫生們就能夠知道,並及時提供他需要的幫助。

關鍵要點

機器學習能夠機器學習如何執行任務,而且無需明確地程式設計。

深度學習是機器學習的一個子集,它使用稱為神經網路的特定演算法,該演算法是以人腦為模型的。

監督學習具有輸入和輸出,其目的是弄清楚如何從輸入到輸出。無監督學習具有資料點,其目的只是在資料中找到模式。

強化學習是機器人在物理和虛擬世界中學習如何走路、跳躍和執行其他人類行為的方式。

機器學習和深度學習的潛力是無限的,它將以前所未有的方式徹底改變世界。