机器学习极简入门课
特別提示
本課程為李燁老師達(dá)人課課程,需要購買訓(xùn)練營課程的同學(xué)請點擊下方鏈接:
21 天入門機(jī)器學(xué)習(xí)-第03期
課程介紹
本達(dá)人課針對機(jī)器學(xué)習(xí)初學(xué)者,從機(jī)器學(xué)習(xí)、深度學(xué)習(xí)最基本的原理及學(xué)習(xí)意義入手,以模型為驅(qū)動,帶領(lǐng)大家吃透幾個最經(jīng)典的機(jī)器學(xué)習(xí)模型——學(xué)習(xí)這些模型的原理、數(shù)學(xué)推導(dǎo)、訓(xùn)練過程和優(yōu)化方法。
本課為每個模型提供了極小數(shù)據(jù)量的“極簡版”實例,方便讀者從直觀上了解模型的運行原理。借助這些例子,大家可以將自己變身為“人肉計算機(jī)”,通過口算/筆算每一步的推導(dǎo),模擬算法全過程,進(jìn)而徹底理解每個模型的運作方式。
此外,本課還介紹了構(gòu)建數(shù)據(jù)集、特征選擇、調(diào)參、驗證模型的方法,以及如何同步進(jìn)行編程語言學(xué)習(xí)。幫助您掌握進(jìn)行機(jī)器學(xué)習(xí)產(chǎn)品開發(fā)的基本能力。
作者介紹
李燁,高級軟件工程師,現(xiàn)就職于微軟(Microsoft),曾在易安信(EMC)和太陽微系統(tǒng)(Sun Microsystems)任軟件工程師。先后參與聊天機(jī)器人、大數(shù)據(jù)分析平臺等項目的開發(fā)。微信公眾號:yuesiyuedu;個人微信號:julia_li_2013
課程大綱
本課程大綱分為六大部分,共計 42 篇:
課程內(nèi)容
開篇詞 | 入門機(jī)器學(xué)習(xí),已迫在眉睫
大家好,我是李燁。現(xiàn)就職于微軟(Microsoft),曾在易安信(EMC)和太陽微系統(tǒng)(Sun Microsystems)任軟件工程師。先后參與過聊天機(jī)器人、大數(shù)據(jù)分析平臺等項目的開發(fā)。在未來的 10 周里,我將通過“機(jī)器學(xué)習(xí)極簡入門課”與同學(xué)們分享機(jī)器學(xué)習(xí)相關(guān)知識。
課程背景
首先,我們來看下當(dāng)前機(jī)器學(xué)習(xí)領(lǐng)域招聘市場行情。
上面表格中所有帶有“算法”、“人工智能”、“數(shù)據(jù)挖掘”、“視覺”字樣的職位,都需要掌握機(jī)器學(xué)習(xí)相關(guān)知識。
在產(chǎn)品和服務(wù)中應(yīng)用機(jī)器學(xué)習(xí)模型,已經(jīng)逐步成為互聯(lián)網(wǎng)行業(yè)的通行方法。甚至很多傳統(tǒng)軟件企業(yè),也開始嘗試應(yīng)用機(jī)器學(xué)習(xí)。說得更直接些,人工智能正處在炙手可熱的風(fēng)口浪尖上,作為程序員不會機(jī)器學(xué)習(xí)都不好意思去找工作。
很多技術(shù)開發(fā)者迫切希望快速進(jìn)入人工智能領(lǐng)域,從事工程或者算法等相關(guān)工作,這也是我推出這門課程的初衷。
課程大綱
本課程針對機(jī)器學(xué)習(xí)初學(xué)者,從機(jī)器學(xué)習(xí)、深度學(xué)習(xí)最基本的原理及學(xué)習(xí)意義入手,以模型為驅(qū)動,帶領(lǐng)大家吃透幾大最經(jīng)典的機(jī)器學(xué)習(xí)模型——學(xué)習(xí)其原理、數(shù)學(xué)推導(dǎo)、訓(xùn)練過程和優(yōu)化方法。配合精心設(shè)計的極小數(shù)據(jù)量的“極簡版”實例,方便讀者從直觀上了解模型的運行原理,利用實例大家還可將自己變身為“人肉計算機(jī)”,通過口算/筆算每一步的推導(dǎo),模擬算法全過程,進(jìn)而徹底理解每個模型的運作方式。結(jié)合自身實踐經(jīng)驗,我總結(jié)了多個構(gòu)建數(shù)據(jù)集、特征選擇、調(diào)參、驗證模型的高效方法,并教授大家如何同步進(jìn)行編程語言學(xué)習(xí),助你快速擁有機(jī)器學(xué)習(xí)產(chǎn)品開發(fā)的基本能力。
本課程大綱分為六大部分,共計42篇。
第一部分:緒論
- 授人以魚不如授人以漁。本部分從意義和作用出發(fā),給出相應(yīng)的學(xué)習(xí)方法和與理論配套的編程練習(xí)。
第二部分:基本原理
深諳其理,才能靈活應(yīng)變。本部分帶大家了解什么是機(jī)器學(xué)習(xí)、機(jī)器如何自己學(xué)習(xí),以及機(jī)器學(xué)習(xí)三要素:數(shù)據(jù)、模型、算法之間的關(guān)系。
模型是機(jī)器學(xué)習(xí)的核心,那么模型是怎么得到的呢?本部分也將講解模型的獲取(訓(xùn)練)和評價(驗證/測試)過程,相應(yīng)數(shù)據(jù)集合的劃分以及具體的評價指標(biāo)。
這部分知識和后面講述的具體模型結(jié)合起來,就可以實踐了!
第三部分:有監(jiān)督學(xué)習(xí) I
- 抓住關(guān)鍵,個個擊破。本部分重在詳細(xì)講解有監(jiān)督學(xué)習(xí)中經(jīng)典的線性回歸、樸素貝葉斯、邏輯回歸、決策樹模型。這幾個模型不僅基礎(chǔ)、經(jīng)典、常用,而且數(shù)學(xué)工具特別簡單。
第四部分:有監(jiān)督學(xué)習(xí) II
- 百尺竿頭,更上一層樓。本部分主要講述支持向量機(jī)、支持向量回歸、隱馬爾可夫和條件隨機(jī)場模型,從支持向量機(jī)開始,數(shù)學(xué)工具的需求較之前上了一個臺階,難度明顯加大。
第五部分:無監(jiān)督學(xué)習(xí)
- 無須標(biāo)注,方便運行。本部分重在講解無監(jiān)督學(xué)習(xí)中的聚類、高斯混合及主成分分析等模型。訓(xùn)練數(shù)據(jù)無須標(biāo)注,方便在各種數(shù)據(jù)上隨時進(jìn)行嘗試,是這些模型的特征。在現(xiàn)實中,經(jīng)常用來作為有監(jiān)督的輔助手段。
第六部分:從機(jī)器學(xué)習(xí)到深度學(xué)習(xí)
- 超越自我,實現(xiàn)蛻變。本部分重在講解深度學(xué)習(xí)基本原理、深度學(xué)習(xí)與機(jī)器學(xué)習(xí)的關(guān)聯(lián)與銜接,以及深度學(xué)習(xí)目前的應(yīng)用領(lǐng)域,為讀者下一步學(xué)習(xí)“深度學(xué)習(xí)”奠定基礎(chǔ)。
點擊了解《機(jī)器學(xué)習(xí)極簡入門》。
整個課程以經(jīng)典模型為驅(qū)動,講述每一個模型所解決的問題域,模型原理和數(shù)學(xué)推導(dǎo)過程。作為課程的主體,第三部分和第四部分講解的每個模型,都附有實例和相應(yīng)的 Python 代碼。每個例子的數(shù)據(jù)量都非常小——這樣設(shè)計就是為了讓讀者可以用人腦模擬計算機(jī),根據(jù)剛剛學(xué)到的模型算法對這些極小量數(shù)據(jù)進(jìn)行“模擬訓(xùn)練/預(yù)測”,以此來加深對模型的理解。
你將收獲什么
AI 技術(shù)崗位求職知識儲備
如果大家真的有意投身到人工智能領(lǐng)域,從事相關(guān)技術(shù)性工作,通過技術(shù)筆試、面試則是必要條件。在面試中被要求從頭解釋某一個機(jī)器學(xué)習(xí)模型的運行原理、推導(dǎo)過程和優(yōu)化方法,是目前非常常見的一種測試方法。機(jī)器學(xué)習(xí)模型雖然很多,但是經(jīng)典、常用的很有限。如果能學(xué)會本課程所講解的經(jīng)典模型,你將足以挑戰(zhàn)這些面試題。
觸類旁通各大模型與算法
各種機(jī)器學(xué)習(xí)模型的具體形式和推導(dǎo)過程雖然有很大差別,但在更基礎(chǔ)的層面上有許多共性。掌握共性之后,再去學(xué)新的模型、算法,就會高效得多。雖然本課的第二部分集中描述了部分一般性共同點,但真要理解個中含義,還需要以若干具體模型為載體,從問題發(fā)源,到解決方案,再到解決方案的數(shù)學(xué)抽象,以及后續(xù)數(shù)學(xué)模型求解的全過程,來了解體味。這也就是本課以模型為驅(qū)動的出發(fā)點。
極簡版實例體驗實際應(yīng)用
運用到實踐中去,是我們學(xué)習(xí)一切知識的目的。機(jī)器學(xué)習(xí)本身更是一種實操性很強(qiáng)的技術(shù),學(xué)習(xí)它,原本就是為了應(yīng)用。反之,應(yīng)用也能夠促進(jìn)知識的深化理解和吸收。本課雖然以原理為核心,但也同樣介紹了:劃分?jǐn)?shù)據(jù)集、從源數(shù)據(jù)中提取特征、模型訓(xùn)練過程、模型的測試和評估等方法和工具。
配套數(shù)據(jù)+代碼快速實操上手
本課程中各個實例的 Python 代碼及相應(yīng)數(shù)據(jù),大家可以下載、運行、改寫、參考。
課程寄語
我希望本課的讀者在知識和技巧的掌握之外,能夠?qū)W(xué)習(xí)到的基本規(guī)律運用到日常生活中,更加理性地看待世界。
再遇到“人工智能產(chǎn)品”,能夠根據(jù)自己的知識,去推導(dǎo):How it works——
- 它背后有沒有用到機(jī)器學(xué)習(xí)模型?
- 如果有的話,是有監(jiān)督模型還是無監(jiān)督模型?
- 是分類模型還是回歸模型?
- 選取的特征是哪些?
- 如果由你來解決這個問題,有沒有更好的方法?
我們自己用來判斷萬事萬物的“觀點”、“看法”、“洞察”,實際上都是我們頭腦中一個個“模型”對所聞所見(輸入數(shù)據(jù))進(jìn)行“預(yù)測”的結(jié)果。這些模型自身的質(zhì)量,直接導(dǎo)致了預(yù)測結(jié)果的合理性。
從機(jī)器學(xué)習(xí)認(rèn)識客觀規(guī)律的過程中,我們可以知道,模型是由數(shù)據(jù)和算法決定的。對應(yīng)到人腦,數(shù)據(jù)是我們經(jīng)歷和見過的萬事萬物,而算法則是我們的思辨能力。
作為人類,我們不必被動等待一個外來的主宰者,完全可以主動訓(xùn)練自己的思維模型,通過改進(jìn)算法和增大數(shù)據(jù)量及數(shù)據(jù)多樣性來提升模型質(zhì)量——如果能在這方面給讀者朋友們帶來些許啟發(fā),我實在不勝榮幸。
最后,預(yù)祝每一位訂閱課程的朋友,能夠通過學(xué)習(xí)找到心儀的工作,如果大家有任何疑問和建議,也歡迎通過讀者圈與我交流,我們共同學(xué)習(xí),共同進(jìn)步。
我之前分享的一場 Chat 《入行 AI,選個腳踏實地的崗位》中曾提到,工業(yè)界所需的 AI 技術(shù)人員,更多集中在算法、工程、數(shù)據(jù)相關(guān)崗位之上,并全面總結(jié)了不同崗位角色所需要具備的素質(zhì)、日常工作的狀態(tài)及職業(yè)發(fā)展路徑。這場 Chat 也將收錄在課程中,作為福利供大家免費閱讀,加油!
點擊了解《機(jī)器學(xué)習(xí)極簡入門》。
第01課:為什么要學(xué)原理和公式推導(dǎo)
機(jī)器學(xué)習(xí)最直接的應(yīng)用,就是利用模型解決實際業(yè)務(wù)中的問題。
本課所講解的幾個經(jīng)典模型,均是前輩在機(jī)器學(xué)習(xí)發(fā)展的幾十年間所總結(jié)出的、解決特定問題的固定模式,并且已在實踐中得到很好證明。
學(xué)會這些模型,一則可以以它們?yōu)檩d體理解“機(jī)器學(xué)習(xí)”是一種怎樣的機(jī)制;二則掌握了模型,也就掌握了當(dāng)前許多實際問題的有效解決方案。
學(xué)模型就要學(xué)公式推導(dǎo)嗎?
在實際工作中,我們要運用一種模型,其實有很多現(xiàn)成的算法庫、學(xué)習(xí)框架。只要將相應(yīng)的數(shù)據(jù)輸入工具、框架中,用幾行代碼指定模型的類型和參數(shù),就能自動計算出結(jié)果。
既然如此,何必再去學(xué)其中的原理,一步步推導(dǎo)讓人頭暈的數(shù)學(xué)公式?
對于這個問題,首先給出我的意見:
機(jī)器學(xué)習(xí)的原理和數(shù)學(xué)推導(dǎo)一定要學(xué)!
此處且舉個直觀的例子:
工具就像是武器,學(xué)會使用某種工具,只是學(xué)會了這種武器最基本的招式和套路。而理論學(xué)習(xí)即策略學(xué)習(xí),決定了在未來真實對戰(zhàn)中,遇到對手攻擊時,你選取哪些招式套路,如何組合起來去迎敵。
反過來講,如果根本不學(xué)模型原理,只是把一個個應(yīng)用場景背誦下來,需要的時候直接把模型當(dāng)黑盒使用——這樣做我們能學(xué)到什么?
我們將學(xué)到:
這和調(diào)用任何一個封裝好的 API(無論其功能)有什么區(qū)別?和調(diào)用同事撰寫的模塊接口又有什么不同?
學(xué)會這幾件事能讓你相對他人產(chǎn)生什么樣的壁壘?作為一個原本非 AI 領(lǐng)域的開發(fā)者,難道因為會安裝幾個支持庫,會調(diào)幾個接口就身價倍增,就成為機(jī)器學(xué)習(xí)工程師了?
學(xué)習(xí)原理的必要性
回過頭來,我們從正面來看學(xué)習(xí)原理的必要性。
功利層面
咱們先來看看最直接的用處。
面試會考
最起碼,找工作的時候,但凡稍微靠譜點的企業(yè),在面試“機(jī)器學(xué)習(xí)工程師”時,一定會問到模型原理和推導(dǎo)過程!所問到的模型,隨著時間推移會越來越復(fù)雜。
三四年前甚至更早,企業(yè)技術(shù)面試時,大多會問線性回歸。這兩年,已經(jīng)基本從邏輯回歸開始問了。再過一兩年是否會問支持向量機(jī),不得而知,但理論考察勢必會越來越難。
真想入這行,為了面試也得學(xué)其中的原理。
老板會問
在日常編碼中,可能確實只是調(diào) API 而已。
很多時候,在決定使用哪個工具、框架,調(diào)用哪個模型算法后,你還需要向老板、合作方甚至客戶解釋其中的緣由。
以前誰負(fù)責(zé)哪個模塊都是自己搞定所有事,你怎么還想讓別人給你標(biāo)注數(shù)據(jù)呀?
花費這么多時間和人力訓(xùn)練出的模型,怎么連個 DSAT 都 Fix 不了啊?
既然再多投入幾倍資源也達(dá)不到 95% 以上的正確率,為什么不干脆直接用 Rule-Base 來解決?
……
Manager、Tech Lead、PM 都有可能圍繞機(jī)器學(xué)習(xí)/深度學(xué)習(xí)投入產(chǎn)出比,提出各種問題。要在工作中運用這些技術(shù),首先要說服他們。這個時候,原理就派上用場了。
同事會質(zhì)疑
對你應(yīng)用 ML/DL 的疑問,不僅來自上司,很多時候也來自于同級別的同事。
相對于老板對性價比的關(guān)注,同事可能更關(guān)心技術(shù)細(xì)節(jié)——質(zhì)疑新框架/工具/模型/算法,與之前的實施方案相比,在功能、性能等方面的差異。
別人都用 TensorFlow,你為什么要用 Caffe 呢?
以前這個分類器,我們用邏輯回歸挺好的,你為什么非要換成 RNN 呢?
用這個譜聚類做數(shù)據(jù)預(yù)處理,歸根到底不還是利用詞袋模型算詞頻,比直接計算 tf-idf 做排序能好多少呢?
……
到了這個層面,只簡單概括說說原理已經(jīng)不夠了,需要深入細(xì)節(jié)做對比:
- 不同模型的特質(zhì)、適用場景,對當(dāng)前數(shù)據(jù)的匹配程度;
- 不同算法對算力和時間的消耗;
- 不同框架對軟硬件的需求和并行化的力度;
了解了這些,才有資格討論技術(shù)。
【文-1】
實用層面
當(dāng)然,在日常工作中可以完全不理會 Peer 的質(zhì)疑,對于 Boss 的決定也可以照單全收絕無二話。Engineer 嘛,只要埋頭干活就好了。但總得把活兒干好吧。
作為一個機(jī)器學(xué)習(xí)工程師,把活干好的基本標(biāo)準(zhǔn)是:針對技術(shù)需求,提供高質(zhì)量模型。
再高一個層次則是:針對業(yè)務(wù)需求,提供高質(zhì)量的解決方案。
優(yōu)化模型
機(jī)器學(xué)習(xí)工程師又被戲稱為調(diào)參工程師。
其所要做的工作就是在限定的數(shù)據(jù)上、規(guī)定時間內(nèi),為具體技術(shù)需求(比如訓(xùn)練一個分類器)提供性能盡量高、消耗資源盡量少的模型。
選特征、調(diào)超參、換模型,稱為調(diào)參工程師的三板斧,要想有章法地使用它們,理論基礎(chǔ)還是必不可少的。
至此,上面 【文-1】 處所描述內(nèi)容,不再是和他人論戰(zhàn)的“彈藥”,而成了工作步驟的指導(dǎo)。
- 評判模型性能的指標(biāo)有哪些,如何計算?
- 正在使用的模型是怎么工作的?
- 這些超參數(shù)是什么含義,調(diào)整它們會產(chǎn)生哪些影響?
- 特征選取有哪些原則、方法可運用?
如果連以上問題都不了解,又怎么優(yōu)化模型?
針對實際問題定向建模
成為一名合格的調(diào)參工程師,固然可以在 AI 領(lǐng)域占據(jù)一席之地,但對于業(yè)務(wù)和團(tuán)隊而言,仍然是個可有可無的角色。
真正創(chuàng)造價值的,從來都是解決實際問題的人。
這些經(jīng)典的模型、算法,是前人在解決實際問題中所研究出的、具備通行性的解決方案。它們被廣泛應(yīng)用,是因為所解決的目標(biāo)問題總會持續(xù)出現(xiàn)。
然而,新問題也會隨著新需求不斷涌現(xiàn),現(xiàn)有成果可能無法解決這些新問題,調(diào)參工程師這時將束手無策。
但對于理論知識扎實的機(jī)器學(xué)習(xí)工程師來說,他們完全有可能針對具體業(yè)務(wù)問題,構(gòu)造出目標(biāo)函數(shù),甚至開發(fā)出符合自身軟硬件資源特點的求解算法。
到了這一步,即使還使用現(xiàn)成工具,也不是靠 Google 一下 Best Practice,以及復(fù)制粘貼下代碼就能解決的了。必須具備理論基礎(chǔ)和數(shù)學(xué)層面的建模能力才行。
點擊了解《機(jī)器學(xué)習(xí)極簡入門》。
第02課:學(xué)習(xí)機(jī)器學(xué)習(xí)原理,改變看待世界的方式
學(xué)習(xí)機(jī)器學(xué)習(xí),除了上一篇提到的實實在在的好處外,在務(wù)虛方面同樣受益。
學(xué)習(xí)模型運作原理,可以了解現(xiàn)實事物如何轉(zhuǎn)化為數(shù)字并被計算,結(jié)果又如何映射回現(xiàn)實世界來影響我們的生活。
掌握機(jī)器學(xué)習(xí)相關(guān)知識,能為我們客觀認(rèn)識現(xiàn)實帶來下面這些幫助。
破除迷信
在這個看起來人工智能要席卷一切的年代,不光是正在或立志于在 AI 領(lǐng)域做技術(shù)工作的人,任何人都有必要從原理角度了解機(jī)器學(xué)習(xí)、深度學(xué)習(xí)是干什么的,以及如何發(fā)揮作用。
作為一個帶有神秘色彩的熱點概念,人工智能(AI)被熱炒、被歪曲、被妖魔化是難免的。
人工智能是一個學(xué)術(shù)研究領(lǐng)域,目前在工業(yè)界有一定的應(yīng)用和探索。AI 歸根到底是個技術(shù)問題,可學(xué)、可用、可研究亦可質(zhì)疑,而不是只能頂禮膜拜的法術(shù)神功。
具備最基本的判斷能力,才有可能不會被“神話”迷惑,不被“鬼話”恐嚇。
知道 ML/DL 模型是如何工作的,總不至于看了篇《AI 專業(yè)畢業(yè)生年薪 50 萬》就慌慌忙忙報個了 2 萬塊的培訓(xùn)班,學(xué)了 pip install tensorflow ,通過復(fù)制粘貼代碼可運行幾個習(xí)題數(shù)據(jù)集,就以為能夠找份年薪 50 萬的工作了。
知道 AI 有哪些落地點和局限,就不至于瞟了幾眼《XX 職業(yè)要消失了》,《XXX 崗位將被人工智能取代》之類的網(wǎng)文就驟然開始仇視社會,好像自己明天就沒有活路了似的。
除了判斷事,判斷人可能更重要一些。
了解一件事的原理,自己有個基本的是非標(biāo)準(zhǔn),再去看別人對它的評論,就不難看出評論者的“斤兩”。也就不至于被其所說內(nèi)容之外的語氣、措辭,或者刻意的態(tài)度所誤導(dǎo)。
《機(jī)器學(xué)習(xí)極簡入門》。
追本溯源
人工智能從提出到現(xiàn)在已有幾十年,幾經(jīng)沉浮。這些年間,模型、算法、實現(xiàn)技術(shù)已更迭了好幾代,如今和當(dāng)年已是天壤之別。
所有的發(fā)展都不是憑空出現(xiàn)的,新方法、技術(shù)均在原有基礎(chǔ)上創(chuàng)新得來。每一個具體的進(jìn)步,都僅僅是向前的一小步而已。
最容易創(chuàng)新的是技巧和細(xì)節(jié),越“大”的創(chuàng)新,出現(xiàn)的頻率越低。而原理所揭示的,就是這種“大”的、相對穩(wěn)定的東西。
機(jī)器學(xué)習(xí)最經(jīng)典的那幾個模型,歷史都不短,長則半世紀(jì),短的也快 20 年了。
深度學(xué)習(xí),早年是從屬于機(jī)器學(xué)習(xí)的神經(jīng)網(wǎng)絡(luò),因為運算能力不夠而被束之高閣多年,近些年借助計算機(jī)硬件和分布式計算的發(fā)展而大放異彩。
雖然技術(shù)本身和應(yīng)用結(jié)果產(chǎn)生了巨大的飛躍,但從根本的原理層面,卻有著緊密的傳承。
了解一件事是如何運行的,明晰事物發(fā)展的客觀規(guī)律,知道從最簡單的原理學(xué)著手逐層推進(jìn),比從一個已經(jīng)很復(fù)雜的狀態(tài)入手,一下子糾纏在各種不得要領(lǐng)的細(xì)節(jié)中要高效得多。
有了這樣的認(rèn)識,也就不會被一些名詞所局限。不會僅僅因為人家做了一些細(xì)節(jié)改變,或者換了個說法就以為天翻地覆了。
具體到 AI 領(lǐng)域,真的了解了支柱技術(shù)的基本原理,總不至于:
看了一篇《當(dāng)這位70歲的 Hinton 老人還在努力推翻自己積累了 30 年的學(xué)術(shù)成果……》,便宣布再也不學(xué) CNN、DNN、RNN 了(好像真的學(xué)過一樣)。
或者:
因為《深度學(xué)習(xí)已死,可微分編程萬歲!》刷屏,就以為目前在視覺、語音、NLP 等領(lǐng)域已經(jīng)在創(chuàng)造價值的 DL 工具瞬間消失無用了。
精進(jìn)看待世界的方法
相較于仍然處于經(jīng)驗(“煉丹”)階段的深度學(xué)習(xí),傳統(tǒng)的統(tǒng)計學(xué)習(xí)模型和方法已經(jīng)具備了相對完善的理論基礎(chǔ)。
我強(qiáng)烈建議:即使目標(biāo)崗位是“深度學(xué)習(xí)工程師”,也應(yīng)該從統(tǒng)計學(xué)習(xí)方法學(xué)起。
一方面深度學(xué)習(xí)與機(jī)器學(xué)習(xí)具有傳承的關(guān)系,學(xué)習(xí)后者對于直觀理解前者有極大幫助。
另一方面,統(tǒng)計學(xué)習(xí)方法建立在將概念“數(shù)字化”(向量化)的基礎(chǔ)上,以數(shù)學(xué)公式和計算來表達(dá)概念之間的關(guān)聯(lián)及轉(zhuǎn)化關(guān)系。機(jī)器學(xué)習(xí)是一種認(rèn)識世界的工具,借助它,我們可以從一個新的角度來看待世間萬物。
換句話說,當(dāng)我們知道機(jī)器是怎樣通過學(xué)習(xí)事物特征的概率分布和轉(zhuǎn)換來掌握事物規(guī)律的時候,我們就有可能反過來審視自己看待世界的方法,發(fā)現(xiàn)其中不合理的部分,并主動優(yōu)化自己的思維模型。
比如,我在學(xué)習(xí)機(jī)器學(xué)習(xí)原理的過程中,對人類的思維方式產(chǎn)生了一些思考:
人類的道德標(biāo)準(zhǔn)實際是一種社會層面的極大似然估計。
遺忘是學(xué)習(xí)的一個步驟,是一種對信息的過濾方法,也是人類在腦力有限情況下對自身大腦的一種保護(hù)機(jī)制。
人類的偏見是一種長期訓(xùn)練的結(jié)果,在信息極其匱乏的情況下,對人們做決定往往是有正向幫助的。信息越豐富,偏見的負(fù)面影響也就越嚴(yán)重。
大多數(shù)人最常用的思維模型是 KV Pair,有些人似乎終身只有這一種思維模型。
一般人往往默認(rèn)一類事物的所有個體在概率空間是均勻分布的。在考慮某一個事物個體時,對其在同類事物中所處的位置——是小概率事件還是常態(tài)?發(fā)生概率相對之前是穩(wěn)定、上升還是下降?——通常毫不在意,而一概認(rèn)為被提及的個體很重要。
對于原因和結(jié)果的關(guān)系,多數(shù)人根本沒想過去探究其轉(zhuǎn)換模型,而直接默認(rèn)是線性關(guān)系。比如:A 地的年均 PM2.5 指數(shù)是 B 地的 10 倍,PM2.5 被認(rèn)為與肺癌發(fā)病率有關(guān),于是想當(dāng)然以為 A 地肺癌發(fā)病率是 B 地 10 倍。
當(dāng)一件事物比較復(fù)雜,涉及多個方面的時候,要對它有一個全面的評價,目前最常用的方法是構(gòu)建一個線性回歸模型:選定一些特征,針對每個特征獨立打分,最終加權(quán)求和(例如大學(xué)排名之類)。
線性回歸是一個非常簡單的模型,往往無法達(dá)到很好的效果。但即使這樣簡單的模型,很多人還是無法掌握。
面對一項事物,既不能列舉出其主要特征,也不知道如何評估每個特征,更不用提再加權(quán)求和了。多數(shù)人最常用的全面評價標(biāo)準(zhǔn),如果是一手資料則一般以某(幾)個個例的某個特征來代替全集;如果是二手資料,則一般選擇相信自己最先接觸到的他人結(jié)論。
以上這些僅是一些很初級的想法,并沒有進(jìn)一步的研究驗證。
我分享出來只是想說明:學(xué)習(xí)機(jī)器學(xué)習(xí)原理和公式推導(dǎo),并非只是做一些無聊的數(shù)字變換。很可能由此為我們打開一扇窗,讓我們從新的角度看待世界,并為日常的思考過程提供更加可量化的方法。
點擊了解《機(jī)器學(xué)習(xí)極簡入門》。
第03課:如何學(xué)習(xí)“機(jī)器學(xué)習(xí)”
學(xué)習(xí)“機(jī)器學(xué)習(xí)”這件事,我走過很長的一段彎路。有一些心得、體會和方法,在此和大家分享。
《機(jī)器學(xué)習(xí)極簡入門》
以模型為驅(qū)動,了解“機(jī)器學(xué)習(xí)”的本質(zhì)
本課力圖引導(dǎo)大家以模型為驅(qū)動,進(jìn)行學(xué)習(xí)。
我選擇了幾種經(jīng)典模型(例如:線性回歸、邏輯回歸、決策樹、支持向量機(jī)、條件隨機(jī)場、K 均值等),作為入門的進(jìn)階。
初次學(xué)習(xí)模型,不必貪多。但就這些選定的模型,一定要搞清楚其問題域、模型函數(shù)、目標(biāo)函數(shù)、訓(xùn)練算法……潛入到數(shù)學(xué)公式推導(dǎo)的層面,對每一步的公式變換和對應(yīng)的物理意義有所理解,然后再去實踐。
這一個個的模型,就是機(jī)器學(xué)習(xí)的“肌肉”,我們要通過觀察學(xué)習(xí)這一塊塊肌肉,以其為載體來了解機(jī)器學(xué)習(xí)的核心——將事物轉(zhuǎn)化為數(shù)值,將關(guān)系、變換轉(zhuǎn)化為運算,以事實(數(shù)據(jù))為依據(jù),以規(guī)章(算法)為準(zhǔn)繩,通過計算來掌握事物的客觀規(guī)律(模型)。
要知道,這些經(jīng)典模型固然經(jīng)典,但是到了實際應(yīng)用中,它們并非神圣不可改變。也不是說機(jī)器學(xué)習(xí)就僅限于這些經(jīng)典模型。
只有掌握了機(jī)器學(xué)習(xí)精髓的人,才可能靈活運用現(xiàn)有模型去解決實際問題,甚至進(jìn)一步針對具體問題得出自己的模型和算法。
反復(fù)學(xué)習(xí),從記憶到掌握
當(dāng)然,達(dá)到這種程度并非一蹴而就,總要從最簡單的模型開始。
根據(jù)我的經(jīng)驗,即使要真正掌握本課列出的這幾個最常用且相對簡單的模型,也需要反復(fù)學(xué)習(xí)。
有可能第一遍看完有點似懂非懂,或者感覺自己明白了,但要自己從頭推導(dǎo)又卡殼了。
就像剛學(xué)完又忘掉的生字,或是背了一半后半部分怎么也想不起來的九九乘法口訣。這都是非常正常的現(xiàn)象。究其原因,就是還沒有真正掌握。
多學(xué)幾遍,從頭到尾掌握整件事情的邏輯,知道一個模型是怎么從最初設(shè)定目標(biāo),到一步步實現(xiàn)目標(biāo)的——當(dāng)真正掌握了這個過程之后,再回頭看一個個具體的模型,每一步都是順理成章的。
掌握了事物內(nèi)在的邏輯,再去記憶,就容易多了。
學(xué)習(xí)標(biāo)準(zhǔn)設(shè)置得不必太高,比如可以這樣:
第一遍學(xué),只要求自己能完全掌握機(jī)器學(xué)習(xí)數(shù)據(jù)、模型、算法相互作用的基本關(guān)系,訓(xùn)練過程和評價標(biāo)準(zhǔn)。具體的模型,掌握最簡單的線性回歸就可以。
只要從頭到尾掌握了第一個模型,做到:能夠從模型函數(shù)開始推導(dǎo)出目標(biāo)函數(shù),再用梯度下降算法求解,用(偽)代碼實現(xiàn)梯度下降求解過程。
第一遍學(xué)習(xí)掌握一個模型;第二遍學(xué)習(xí)就不難掌握2-3個模型;第三遍就有可能掌握本課列出的大部分模型………如此由易到難,螺旋式推進(jìn)。
對于一些本身就比較復(fù)雜的數(shù)學(xué)模型,比如條件隨機(jī)場、隱馬爾科夫這類涉及場論和勢函數(shù)的模型,如果直接入手,往往會卡在模型函數(shù)本身上。但是當(dāng)有了前面幾個模型的基礎(chǔ),了解了更抽象層面的原理,掌握起來就容易多了。
數(shù)學(xué)需要多精深?
很多同學(xué),想學(xué)機(jī)器學(xué)習(xí)。但是一上來就看模型,看到一大堆炫酷的公式,往往感覺很嚇人。
有些人也就因此萌生退意,要么放棄,要么只用現(xiàn)成工具把模型當(dāng)作黑盒使用。
其實,學(xué)習(xí)經(jīng)典模型,并不需要多么精深的數(shù)學(xué)功底,只要掌握大學(xué)理工科本科所教授的數(shù)學(xué)知識就基本夠用了。
基礎(chǔ)數(shù)學(xué)概念
在學(xué)習(xí)的最初階段,只要:
- 學(xué)過坐標(biāo)系;
- 了解函數(shù)、向量和矩陣的概念;
- 能從直觀角度對求導(dǎo)、求微與函數(shù)的關(guān)系有所理解;
- 并掌握最簡單的矩陣運算。
就可以對本課中的經(jīng)典機(jī)器學(xué)習(xí)模型有一定深度的感性認(rèn)識了。
本課中的公式都是經(jīng)過精簡的,務(wù)必要掌握。如果數(shù)學(xué)工具實在掌握得太少,最起碼也要讀懂一組公式推導(dǎo)中的第一個和最后一個式子:
讀懂它們都針對哪些變量進(jìn)行了怎么樣的運算;
這些變量和運算的物理意義是什么;
第一個式子是對哪種真實場景的數(shù)學(xué)描述;
最后推導(dǎo)的結(jié)果又具備怎樣的特征。
初次學(xué)習(xí)者,可以暫且掌握到這個深度。
兩條路徑反芻數(shù)學(xué)知識
當(dāng)然,僅僅掌握到這種程度,勉強(qiáng)可以套用現(xiàn)成的模型,卻不可能達(dá)到靈活運用的程度。
所以,同學(xué)們應(yīng)力求理解每一步推導(dǎo)過程。
如果有可能,可以事先復(fù)習(xí)一下大學(xué)本科的高數(shù)(數(shù)學(xué)分析)、概率統(tǒng)計和線性代數(shù)。或者,在學(xué)習(xí)模型的過程中,一旦遇到了數(shù)學(xué)上的阻礙,就回頭去查找相應(yīng)知識。
制定數(shù)學(xué)知識速查手冊
很多數(shù)學(xué)問題,之所以讓人頭大,其實并不是真的有多難,而是符號系統(tǒng)比較復(fù)雜,運算繁復(fù),或者運算所表達(dá)的物理意義多樣。
很多時候造成困擾是因為想不起來這里用到什么定理,哪個公式,或者這樣操作表達(dá)的含義是什么。
如果把常用的細(xì)小知識點都記錄下來,按主題整理成速查手冊(小字典),需要用的時候快速查找對應(yīng)的知識點,這樣我們的“機(jī)器學(xué)習(xí)”學(xué)習(xí)之路就順暢不少。
下面兩個是我自己制作的例子,供大家參考:
- 機(jī)器學(xué)習(xí)常用微積分知識速查手冊
- 機(jī)器學(xué)習(xí)常用線性代數(shù)知識速查手冊
日常學(xué)習(xí) Tips
關(guān)聯(lián)
把新學(xué)到的東西和日常的工作、生活聯(lián)系起來,進(jìn)行思考。比如:將理論代入現(xiàn)實,不同領(lǐng)域間事物的類比,相似內(nèi)容的對比等。
以身邊的實例來檢測理論。不僅能夠加深理論知識的理解,而且有助于改進(jìn)日常事物的處理方法。
記錄
準(zhǔn)備一個筆記本,紙質(zhì)版或電子版均可。有什么發(fā)現(xiàn)、感想、疑問、經(jīng)驗等等,全都記下來。
如果是對某個話題、題目有比較完整的想法,最好能夠及時整理成文,至少記錄下要點。
隔一段時間把筆記整理一下,把分散的點滴整理成塊,一點點填充自己的“思維地圖”。
分享
知識技能這種東西,學(xué)了,就得“炫耀”——把學(xué)習(xí)到的新知識、理論、方法,分享給更多的人。如此一來,倒逼自己整理體系、記憶要點。這可以說是與人方便自己方便的最佳實例。
把自己的感想、體會、經(jīng)驗分享出來的同時,也鍛煉了自己的邏輯思維能力和歸納總結(jié)能力。一舉多得,何樂而不為?
點擊了解《機(jī)器學(xué)習(xí)極簡入門》。
第04課:為什么要學(xué) Python 以及如何學(xué) Python
第05課:機(jī)器是如何學(xué)習(xí)的?
第06課:機(jī)器學(xué)習(xí)三要素之?dāng)?shù)據(jù)、模型、算法
第07課:模型的獲取和改進(jìn)
第08課:模型的質(zhì)量和評判指標(biāo)
第09課:最常用的優(yōu)化算法——梯度下降法
第10課:線性回歸——從模型函數(shù)到目標(biāo)函數(shù)
第11課:線性回歸——梯度下降法求解目標(biāo)函數(shù)
第12課:樸素貝葉斯分類器——從貝葉斯定理到分類模型
第13課:樸素貝葉斯分類器——條件概率的參數(shù)估計
第14課:邏輯回歸——非線性邏輯函數(shù)的由來
第15課:邏輯回歸——用來做分類的回歸模型
第16課:決策樹——既能分類又能回歸的模型
第17課:決策樹——告訴你 Hello Kitty 是人是貓
第18課:SVM——線性可分 SVM 原理
第19課:SVM——直觀理解拉格朗日乘子法
第20課:SVM——對偶學(xué)習(xí)算法
第21課:SVM——線性 SVM,間隔由硬到軟
第22課:SVM——非線性 SVM 和核函數(shù)
第23課:SVR——一種“寬容”的回歸模型
第24課:直觀認(rèn)識 SVM 和 SVR
第25課:HMM——定義和假設(shè)
第26課:HMM——三個基本問題
第27課:HMM——三個基本問題的計算
第28課:CRF——概率無向圖模型到線性鏈條件隨機(jī)場
第29課:CRF——三個基本問題
第30課:從有監(jiān)督到無監(jiān)督:由 KNN 引出 KMeans
第31課:KMeans——最簡單的聚類算法
第32課:譜聚類——無需指定簇數(shù)量的聚類
第33課:EM算法——估計含有隱變量的概率模型的參數(shù)
第34課:GMM——將“混”在一起的樣本各歸其源
第35課:GMM——用 EM 算法求解 GMM
第36課:PCA——利用數(shù)學(xué)工具提取主要特征
第37課:PCA——用 SVD 實現(xiàn) PCA
第38課:人工智能和神經(jīng)網(wǎng)絡(luò)
第39課:幾種深度學(xué)習(xí)網(wǎng)絡(luò)
第40課:深度學(xué)習(xí)的愿景、問題、應(yīng)用和資料
附錄:入行 AI,選個腳踏實地的崗位
閱讀全文: http://gitbook.cn/gitchat/column/5ad70dea9a722231b25ddbf8
總結(jié)
- 上一篇: VMware vSphere 7.0U3
- 下一篇: Qss语法及应用