1. 程式人生 > >機器學習這麼火,想跳坑該怎麼做?

機器學習這麼火,想跳坑該怎麼做?

最近這幾天什麼遊戲最火?當然是“上街抓皮卡丘”的Pokémon GO遊戲。 

這款遊戲的亮點,就是把遊戲玩家所在的真實地理位置當做遊戲中的座標,而把現實中的世界當做遊戲中的地圖。因此,可愛的小精靈就會突然出現在你周圍的現實世界。 

玩家進入遊戲,開啟地圖和定位之後,就能四處尋找身邊隱藏的小精靈。 

等等,皮卡丘遊戲和機器學習有什麼關係? 

皮卡丘遊戲屬於虛擬現實的一種。而虛擬現實、無人機、3D列印和機器學習是號稱來自未來的四大黑科技。 

無人機技術相對較為成熟,經過市場整合,現在已進入低調的擴張期。3D列印面臨著種種技術瓶頸,尚處於技術完善階段。虛擬現實和機器學習則是目前被媒體熱捧的物件。

 

1.什麼是機器學習

無論你聽沒聽說、或者願不願意,我們的生活已經開始被機器學習的技術所影響了。先看幾個例子。 

1.1 AlphaGo

它的中文名叫做阿爾法圍棋,顧名思義是一款圍棋人工智慧程式,幾個月前因在韓國成功大敗世界圍棋冠軍、職業九段選手李世石而名聲大噪。


(本文圖片源自網路,圖片版權歸原作者所有,侵刪) 

它的工作原理是“深度學習”,即多層的人工神經網路和訓練。每層神經網路會把大量矩陣數字作為輸入,通過非線性啟用方法取權重,再產生另一個數據集合作為輸出。 

簡單的說,就是AlphaGo先從十幾萬份人類69段職業棋手的對弈棋譜中,學習和模仿人類常見的落子方式;然後在比賽中對於每一步,預計對手的幾種應對方式,估計落子後的形勢和贏面,選擇其中最有利的一種走法。

 

現在,碾壓過人類的AlphaGo也沒有閒著,正在緊密落鼓的進行三維迷宮遊戲Labyrinth學習訓練,試圖實現下次對人類大腦的碾壓。


1.2自動翻譯

如果你覺得AlphaGo只是下圍棋的,離自己的生活比較遠,那麼下面這個機器學習的例子,你一定用得上。 

當出國旅遊時,最頭疼的問題就是語言問題了。 

去英語國家還好,尚可以用蹩腳的英語向路人問問路、聊聊天。 

如果是去非英語國家呢?恐怕連路牌都看不懂,更別說去餐館點菜了。 

四年前,3M君到法國巴黎旅遊,興致沖沖的衝到某著名牛排店想去吃法式大餐,然而選單拿上來之後是這樣的: 


不懂法語的我內心是奔潰的,話說你們就不能配些圖片在選單上面嗎?

 

不配圖片也就算了,自傲的法國人總是認為法語是最美的語言,根本不屑於學英語。 

溝通無效,3M君只好根據價格反推哪些條目可能是牛排,然後隨機選中幾條,一個字母一個字母的敲進手機去查。 

幸好這些單詞是拉丁語系,由26個字母組成。如果是日語選單,誰能告訴我可以用什麼輸入法、還有怎麼把日語敲到手機裡?


不過現在有了機器學習,再也不用擔心這個問題了。 

只需要下載Google TranslateAPP,然後把手機的攝像頭對準某行外文,能在螢幕上實時顯示翻譯後的語言,像是下圖這樣。 


亮點就是無需手動敲入單詞,只需要用手機自帶的照相機對準選單即可,然後手機就能自動識別文字,並翻譯成中文。

1.3指紋識別

當然,自動翻譯的技術現在還沒有完全成熟,大多數時候只能給一個大概的意思,並不能完全精確翻譯。 

第三個機器學習的例子則是目前已經正在成熟使用的,那就是指紋識別。 

人類的手指指腹上都有凹凸的面板所形成的紋路,這些紋路有許多細節特徵,例如起點、終點、結合點和分叉點。 

每個人的指紋並不相同,指紋識別就是通過比較這些細節特徵的區別來進行鑑別。


 先用海量的指紋對機器進行訓練,告訴它什麼樣的指紋是誰的。然後機器在成千上萬次的學習過程中學會了如何提取了指紋的特徵值及判斷。 

現已成功運用於門禁系統、考勤系統、膝上型電腦、銀行交易等。

1.4機器學習與人工智慧

看了上面這些例子,是否對機器學習有了一些基本的概念? 

維基百科對機器學習的定義是:從資料中自動分析獲得規律,並利用規律對未知資料進行預測的演算法。 

不少人可能會把機器學習和人工智慧當做一個東西,但其實機器學習只是人工智慧裡面的一個子學科。

人工智慧核心在邏輯推理,並不一定需要機器學習。比如,GPS導航想尋找兩地之間最短的行車路線,如果已經知道路況、流量等引數,只需要搜尋路徑即可,無需學習。 

但世界上許多事情不是簡單的邏輯能夠說清楚的,或者說理論推導對解決實際問題不適用,還不如直接的從資料中得到規律更有效。 

機器學習的原理就在於:讓計算機模擬人類的學習功能,從一個模型開始,通過實驗和犯錯來訓練它,使其從大量的資料中發現規律,並在實踐中不斷地完善和增強自我,從而能對測試進行準確預測。 

2.機器學習能幹些什麼

除了上面三個例子,機器學習還能幹什麼?下面詳細列舉機器學習的用途,都是一些耳熟能詳的名詞。

2.1資料探勘


它是指從資料中提取出隱含的過去未知的有價值的潛在資訊。 

定義很抽象是不是?不如來看例子。最經典的案例要數“啤酒與尿布”的故事。 

上世紀90年代,美國沃爾瑪的高管在分析銷售資料時,發現了一個奇怪的現象:在某些時候,“啤酒”與“尿布”這兩件看上去八杆子打不著的東東,經常會同時出現在購物籃中。這種現象引起了管理人員的注意,經過後續的調查和分析發現,這種現象主要出現在年輕的父親身上。

在美國有小寶寶的家庭中,一般是母親在家中照看嬰兒,而父親則前去超市,購買生活用品,當然包括尿布。年輕的父親在購買尿布的同時,往往會順便為自己買一些啤酒,這樣就會出現啤酒與尿布這兩件看上去不相干的商品,經常會出現在同一個購物籃的現象。

如果這個年輕的父親在賣場只能買到兩件商品之一,則他很有可能會直接放棄購物而到另一家商店,直到可以一次同時買到啤酒與尿布為止。沃爾瑪發現了這一獨特的現象,開始嘗試將啤酒與尿布擺放在相同的地方,讓年輕的父親可以同時找到這兩件商品,並很快地完成購物。

資料探勘,就是要挖掘出資料之間隱藏著的不知道的關係和資訊,以此瞭解資料中潛在的規律,然後用歷史預測未來

 2.2自然語言處理

簡單的說,自然語言處理就是把自然語言轉化為計算機程式更易於處理的形式,或者把計算機資料轉化為自然語言。熱門的運用包括: 

機器翻譯


將某種語言自動翻譯至另一種語言。比如將中文自動翻譯成日語。

問答系統


和機器人對話,例如Siri.

自動摘要


產生一段文字的摘要,例如產生報紙上某篇長文章的摘要。

自然語言生成


前幾年火過一段時間自動寫詩詞、自動起名字的軟體。

此外,還有語音合成、文字朗讀、文字校對等。

2.3生物特徵識別

通過使用數理統計方法對生物體(一般特指人)本身的生物特徵進行分析,來區分生物體個體的計算機技術。包括:

人臉識別


指紋識別


掌紋識別


虹膜和視網膜識別


體型識別

2.4語音和手寫識別

語音識別


對著電腦說話,電腦自動講語音轉化為文字。某些輸入法目前已經可以做到。

手寫識別


將影象中的文字自動轉換成是計算機可以使用的字元程式碼。

鍵盤敲擊識別


簽名識別


2.5醫學診斷

目前的看病診斷模式,一般是由醫生等專業人員根據病症、病史(包括家庭病史)、病歷或醫療測試結果等資料作出判斷。

 

未來,診斷過程可能會被機器代替。 

(6)檢測信用卡欺詐


首先用持卡人的大量正常交易資料來對機器進行訓練。比如一個人通常每週去兩次超市,每天中午去食堂吃飯等等。機器和演算法學習到這是一個正常的交易序列。 

然後,可以通過執行演算法檢測每次交易是否為異常交易的概率。如果判斷為正常交易,則把這次交易也列為學習案例,從而達到實時狀態更新;如果判斷為異常交易,立即引發信用卡凍結。

此外,機器學習還被廣泛運用於:搜尋引擎、證券市場分析、DNA序列測序、

戰略遊戲和機器人等領域、計算機視覺等領域。

 

3.目前的瓶頸

由於媒體的熱捧,加上過熱的創業風,使得機器學習好像是馬上要取代人類一樣。 

各行各業都表示要轉行做機器學習,包括不少IT培訓班也把機器學習作為必備培訓專案。 

事實上,新技術的發展有條Gartner曲線,先被炒得大熱,再跌下來,又慢慢爬坡到穩定的狀態 


 目前的機器學習,還存在不少技術瓶頸:

(1)儘管在某些點有重大突破,但在更多的領域只能處於實驗室研究階段。比如,面部識別在實驗室測試時,識別率可以達到98%以上。然而如果你把一臺攝像機放到大街上,識別率能達到40%已經是非常不錯。 

(2) 需要海量的學習資料。兩三歲的小孩,只要大人給他指過幾次小狗,下次十有八九他都能認出來。然而不論是多強的機器學習模型,也不可能只看幾張狗的圖片,就能準確地認識狗。 

(3) 想學習機器學習,需要技術人員學習大量的基礎知識和演算法。 

4.跳坑之前需要做些什麼?

看到這裡,如果你還對機器感興趣,而且看好它,可以試試從下面入手:

(1) 基本數學和計算機知識

數學:微積分、線性代數、概率論、數理統計

計算機:Matlab或者Python

(2) CourseraMachine Learning課程


Andrew Ngcoursera的創始人之一,這是一門入門級課程,涵蓋了機器學習的一些基本概念和方法。深入淺出,通俗易懂,邏輯清晰,學完之後可以對機器學習有一個比較全面清晰的認識。 

(3) 統計學習方法和機器學習實戰

《統計學習方法》比較詳細地介紹了演算法的原理,從理論層面來研究演算法。演算法的覆蓋面很廣,偏重於理論 

《機器學習實戰》介紹了機器學習領域十大演算法的原理及應用,但沒有深入其背後的數學分析。提供了案例研究問題並用Python程式碼例項來解決,偏重於實踐 

學到這裡,就算正式進入機器學習的大坑了。接下來,還願不願意做這個,以及準備具體做什麼,就要根據自己的需求制定相關的學習路線了。

(END)

3M君,酷愛MatlabPython程式設計,擅長影象識別和多媒體處理。不定時po一些自己在科學、工程計算程式設計中總結的經驗教訓、小技巧、實用工具和好玩的東西,歡迎關注~