是什麼讓我與機器學習隔行如隔山?

最近《人民日報》和眾多媒體對王者榮耀連篇累牘的口誅筆伐讓我不禁思考一個問題:現實生活與遊戲世界何其相似,都是要經過一步步歷練、一個個關卡,才能不斷晉級,但為什麼很多人願意花費大量的時間和金錢在遊戲中廝殺修鍊,卻在現實世界裡甘於平庸?除了遊戲能讓人及時享樂外,我想,還有一個重要原因是:看得見的上升路徑。

遊戲的設計者為了讓新用戶開始玩遊戲,一路上或明或暗地給予指導,各種經驗值指標時刻反饋你的水平。各種遊戲攻略也讓你知道要想升級還要殺什麼怪,殺幾個怪,去哪裡殺。

但現實生活不是。現實生活處處充滿了信息不對稱和信息噪音。學習更是。沒有人能明確告訴你,你該從哪裡開始,下一步該學習什麼,學完應達到什麼水平,還欠缺什麼。

你想學機器學習,上網搜零基礎入門機器學習。入門推薦書十幾本,每本書的評論都是毀譽參半。你還發現,這不是你想學就能學的,還有先修課!微積分、線性代數、概率論和數理統計、編程……於是你搜先修課的推薦書,又是十幾本!你花了兩個星期看每本書的評論,力求找到最適合自己的。還沒摸到機器學習的邊,你的激情就在半路上耗盡了……

這些我都經歷過,好像有一層看不見的玻璃把我和它隔離,明明每天都能聽到看到各種關於機器學習的消息,但就是摸不著它,找不到門路,技術文章也越看越糊塗。後來我決定還是從最經典的斯坦福大學的課程開始吧,雖然這門課也有不少批評的聲音。

現在,我已在Coursera上學完該課程,作為「過來人」,我真誠地建議你,如果不知道從哪裡開始,就從吳恩達教授在Coursera上開始的機器學習開始吧。

這門課在2012年推出的,有些人認為內容過時了,而且編程軟體用的是MATLAB,不是現在流行的Python,但我依然建議從這門課開始,原因如下:

1.這門課是真正面對初學者的,能讓你快速入門。沒有過多的數學推導,所需要的數學和編程知識老師都會在前兩周的課程中介紹,而且不難。機器學習是需要微積分、線性代數的基礎,但沒必要再把大學數學書從頭學一遍。在本文後面,我會具體介紹數學需要掌握哪些知識。

2.相比Python,MATLAB是一個更好的開始。在課程開始,吳恩達教授也解釋了為什麼使用MATLAB,而不是Java、Python等語言。MATLAB十分便於矩陣計算,而現代數學的推導中大量使用矩陣表示,所以如果你有一個演算法(或想法)想付諸實踐,MATLAB能非常有效率地驗證想法的可行性,你可以先用MATLAB做雛形(demo),再用其他語言編程。我個人感覺,Python的優勢是有許多機器學習的庫,簡單說就是別人已經把演算法寫成了程序,你只需導入數據,用起來方便,但不利於理解演算法。MATLAB利於檢驗學習效果。我在學習神經網路演算法時,以為自己理解了,在做編程作業時才發現理解錯了。

3.這門課不僅介紹了經典的演算法,而且對於業界廣泛應用的演算法也進行了介紹。學完這門課看知乎上大部分文章時,你再也不會看著一個個名詞覺得雲里霧裡。

最有效率的學習方式是輸出,為了鞏固所學,我打算根據課程內容寫一系列學習筆記,盡最大可能以最淺白的語言介紹機器學習,真正讓零基礎的也能看懂。如果你想學習機器學習,但又不確定吳恩達教授的課程是否適合自己,可以先看看我的學習筆記,了解課程的難度和內容。

Q:學習吳恩達教授的機器學期前,至少要掌握哪些數學知識?

A:微積分:導數的含義,會求偏導

線性代數:矩陣的乘法、線性相關、線性方程組、向量、矩陣的逆。以浙大線性代數教材為例,掌握前四章的基本概念和基本計算既可。

概率論與數理統計:正態分布的標準化。

看,其實需要掌握的數學知識真沒多少

如果大家對這門課還有什麼問題,歡迎留言

學習筆記系列已發布:

機器學習筆記(一)--一元線性回歸(linear regression) - 知乎專欄


推薦閱讀:

Coursera (或其它慕課平台)上有哪些演算法、數據結構相關的課程值得推薦?
學習之道(1)---何為學習?
有了 Coursera,為什麼還要搞個學堂在線?
Coursera 裡面的課程是否都是入門級的?
在 Coursera 工作是怎樣一番體驗?

TAG:Coursera | 吴恩达AndrewNg | 机器学习 |