1. 程式人生 > >機器學習從入門到出家

機器學習從入門到出家

| 導語 簡述一個2010年入坑的後臺如何轉向做演算法和機器學習的歷程和感悟,附錄一個書單

寫在前面:

本文主要介紹的是自己的一些經歷,以及讀過的一些書,實際應用的經驗並沒有介紹,包括現在很多機器學習的書一般也是側重於理論,結合實踐的時候會發現和模型比起來,資料清洗、特徵工程的實際效果更明顯,而這方面很難有系統的理論知識,怎麼辦呢?讀paper,去搜索自己應用領域有關的、大公司的經典的paper,裡面對資料清洗、樣本篩選、特徵構造、系統搭建這方面會有詳細的介紹,在正式出版的書裡,這塊很少,所以讀書只是基礎,結合工作場景去應用才知道“紙上讀來終覺淺,絕知此事要躬行”。另外如果碰到比較抽象的問題而難以理解的時候,有一個訣竅是,多和生活聯絡起來,很多計算機上的難題在生活中是有類似的事情和成熟的解決方案,比如優化與爬山;“世事洞明皆學問,人情練達即文章”

-共勉

正文:

04年高考發揮失常,花了五分鐘填了兩個志願,華科光電+華科計算機,感謝當年光電專業超高的分數線把我刷掉了,我被調到了計算機;收到通知書以後,原本比較堅定的復讀的打算變的動搖,家境有比較糟糕,於是抱著早點讀完,早點出來掙錢的想法讀完了四年華科計算機;老實說,我不是一個特別愛動手的人,本科四年把所有c語言的書幾乎都讀了一遍,但動手能力還是很一般;保研以後,因為家裡斷了我所有經濟支援,我花了比較多時間去掙生活費,所以專業也不算學的很好,只是晚上堅持把APUE和演算法導論英文版啃完了,順便把unix網路程式設計、c++設計新思維、stl原始碼剖析看完了,算是有一點基礎吧。

找工作的時候,固執的想找一個後臺開發,美其名曰可以多年鑽研,沉澱技術;實際上回想起來不過是膽小,怕跟不上變化太快的技術節奏(有多少人和我一樣?)進入鵝腸以後,確實是做了幾年的後臺開發,從一個小白到負責瀏覽器後臺日活千萬的圖片轉碼服務,這中間的摸索、挫折、被叼不足為外人道也,工作三年左右,我先後接觸過瀏覽器後臺幾乎所有的server模組,對公司海量學習、柔性可用也有一些理解,也隱隱看到了傳統後臺的天花板,下一步該做什麼呢?一定要去造輪子、寫框架嗎?

恰好這個時候,我們成立了一個小說的專案組,而大家都知道我是一個骨灰級網路小說愛好者,起點閱讀記錄是3.5億,閱仙稱號,於是我有機會去做小說專案;在這個專案裡我們碰到了一些文字處理的難題,比如怎麼自動聚合同一個章節的多個數據源並挑選一個最優的候選源,怎麼識別內容不對的源;在這個過程中,和搜尋轉崗過來的bencai有了比較多的交流,開始知道什麼叫詞袋模型、什麼叫NLP、什麼叫樸素貝葉斯、Kmeans聚類;將這些演算法應用到小說業務場景,確實取得了不錯的效果,於是一扇新的大門緩緩開啟。

我開始閱讀資訊檢索導論,這本書是介紹搜尋的一本書,但其中涉及到很多基礎的機器學習演算法,比如譜聚類、kmeans聚類、LSA等等;中間轉做過一段視訊,不是很成功,最後又開始轉為商業化,一開始我們想做點選率模型,後來因為是cpm模式,對點選率要求不高,就開始做商業畫像;這個過程中,讀過的基本比較重要的是李航博士的統計學習方法,裡面把淺層學習的幾個演算法都從數學上給出了比較嚴謹的推倒,也是看這本書的時候意識到自己的數學基礎還不是很好,雖然我對數學還是比較有興趣,但是出來幾年,很多也都忘了。

讀這本書過程發現,機器學習對數學分析、概率論、線性代數以及優化理論都有不低的要求,於是開始回過頭來重讀數學分析,穿插著看了周志華的機器學習(俗稱西瓜書);深度學習方面第一本書才剛剛付梓,但是網上有些部落格還是有的,我讀了一篇tutorial性質的部落格。再回過頭來看,人工智慧是一個很大的概念,機器學習知識其中一部分,機器學習可以有各種定義和解讀,可以說是讓計算機從大量資料中自動學習規律,並應用;可以從資訊壓縮角度理解為,講大量資料壓縮陳成模型等等,他的應用也很廣泛,應用在文字方面就是自然語言處理;應用在影象方面就是影象、模式識別;應用在推薦上就是推薦系統;應用在視訊上可以做動作捕捉、實體識別等等;應用在汽車上可以是自動駕駛;在商業上,是廣告排序。

五花八門的應用,又混雜了數學、統計、程式設計等知識,看起來就像一隻凶悍的刺蝟,作為一個只熟悉後臺開發的碼農?該怎麼入手呢?複雜的問題,答案往往簡單;大抵可以從這麼三個方向入手:數學、文字或搜尋、程式設計;我個人的經歷實際是從文字處理入手,但並不推薦所有人都走這條路,如果你的工作和文字處理搭不上邊,大可不必學習太多和文字相關的奇技淫巧。直接從數學的統計或者概率入手,可能會更直接。

下面我按照我的一個學習大概歷程給一個書單吧,不一定是最全的,也不一定是最合理的,僅供大家參考:

1.統計學習方法,李航博士是華為諾亞方舟的首席科學家,前不久一次會上見到了本尊,這本書的特點是:演算法齊備、推倒嚴謹,薄薄的一本書幾乎涵蓋了淺層學習所有的演算法,並都從數學上給出了較為嚴謹的推倒,適合有一定數學基礎的人入門使用;過程中發現自己數學上的不足,再回頭去補;

2.數學分析新講:北大張築生老師的,一套三冊,我花了大約一年的時間才讀完,非常費勁,但是很值得,比普通的高等數學要周全的多,唯一小有瑕疵的地方是實數連續統的描述用了計數法,不過這裡可以參考陶哲軒的實分析,他是從peano公里體系出發來論述;費爾金斯的大作裡則是用戴德金分割來論述的,都對比一下會很有意思;

3.最優化導論:看完數學分析以後再看1中的推倒會發現還是有很多地方不甚了了,舉個例子牛頓法或者說LBFGS可以用在多種演算法的推導上,那牛頓法、海瑟矩陣到底是怎麼回事呢?這時候就是該祭出這本書的時候了,這本書我覺得是補齊了從數學到統計學習方法之間確實的一環,裡面主要介紹一些優化理論;簡單來說,機器學習裡一個很大的困難是函式沒有解析式,那麼對函式求解最優解是不可能像二次函式一樣通過公式直接求得的,必須通過迭代的方式逐漸去逼近最優解,就像爬一座山,不能一下子看到山頂,但是我們可以看到比現在更高的地方,於是先爬一小段,到了那個位置再往上看,又能看到最高的地方,於是又換個方向再爬一段,最終我們一定可以爬到山頂;最優化導論的幾個演算法幾乎都可以往這個例子裡面套,不過是觀望和路線指定的策略略有差異罷了。

4.機器學習,周志華:大家都知道有一個mithell寫過的機器學習,但實話說,那本書的內容真的比較陳舊了,不如讀周老師這本西瓜書,因為全書都在用西瓜舉例;這本書和1有不少重合的地方,區別在於這本書是從機器學習自身出發,彌補了1偏數學理論,而工程實踐嚴重缺失的不足,這本書則從基礎概念講起,讓你對機器學習有一個基礎的、正確的理解,打個比方就和陳近南給韋小寶的那本絕世祕籍的目錄差不多,讀完這本書,你並不會馬上獲得很高的演算法設計調優的能力,但是你拿到了入場券,你可以選一兩個方向或一兩個演算法去深入研究;

5.《neural networks and deep learning》http://neuralnetworksanddeeplearning.com :這就是我提到的深度學習的一篇優秀的blog,配有程式碼,深入淺出的介紹了神經網路、bp演算法、深度學習的一些基本概念,適合入門;深入的話可以看看三位大神合著,最近剛出版的那本deep learning;72美刀的價格不便宜,好在有電子版

小結1:上面5本書基本可以做一個很好的入門了,之後的路該怎麼走,相信讀完了的同學一般都會有自己的看法,任何一個領域,良好的入門手續才是比較難的,入門以後登堂入室的路怎麼走其實大家都會有自己的主見。接下來的書單我並沒全部讀完,僅供進一步參考,這裡也不再排序

1.線性代數,我讀完了浙大版的線性代數,但很遺憾,這本書過於簡單,對矩陣分解、奇異值分解等機器學習裡的常用只是沒有涉及,網上比較推崇的是strang的兩本書,一本是introduction to linear algebra 另一本事applied linear algebra;我是準備配合視訊讀前一本

2.概率論後續是隨機過程、統計模擬、時間序列這方面的資料,包括貝葉斯分析、吉布斯取樣、mcmc方法:統計這塊我的感覺比較差,理解比較慢,推薦陳希孺的兩本書吧,一本是概率 一本數理統計;貝葉斯的書我之前的文章有提到,大家可以去找找;吉布斯 mcmc建議看部落格

3.實分析:陶哲軒

4.微分流形:陳省身

5.點集拓撲:北大教材

6.泛函分析

這幾本書是進階版了,大部分可能用不到,想研究流形優化、核方法的同學可以挑戰一下

7.PRML:模式識別與機器學習,非常翔實的一本書,也是經典,可惜我沒有讀完,只看了前幾章;

8.凸分析:最優化導論的升級版,應該是目前優化理論的集大成者;

9.數學之美:吳軍博士的書,消遣的時候翻一翻吧

10.deep learning:三位大神版本

以下推薦幾本智慧相關的書,博大家一笑

1.心智社會:馬文明斯基的鉅著,他自己的總結挺好:沒有心智社會就沒有智慧,智慧源於笨拙。這本書主要是探索人的思維的本質,很有意思的論述;

2.弗洛伊德:馬文明斯基推崇的心裡學家,我也沒怎麼看,只翻了一點點夢的解析

3.上帝擲骰子嗎,量子物理史話:推薦讀一讀,對量子、意識有一點了解;

4.周易:配合孔子的十翼看看,中國玄學、文化起源的神書;

5.波若波羅蜜多心經:心浮氣躁的時候默唸一下

總結2:這部分比較隨性,有深入研究ml的書,也有一些看似不著調的書,歸根到底,所有的神祕都會歸結於靈魂、意識,佛學說法不外求不是沒有道理的,畢。

原文出自騰訊雲技術社群https://www.qcloud.com/community

相關推薦

機器學習入門出家

| 導語 簡述一個2010年入坑的後臺如何轉向做演算法和機器學習的歷程和感悟,附錄一個書單 寫在前面: 本文主要介紹的是自己的一些經歷,以及讀過的一些書,實際應用的經驗並沒有介紹,包括現在很多機器學習的書一般也是側重於理論,結合實踐的時候會發現和模型比起來,資料清

人工智慧新書推薦——《PyTorch機器學習入門到實戰》

人工智慧入門實踐, 輕鬆玩轉PyTorch框架。 校寶線上出品的書籍《PyTorch機器學習從入門到實踐》發售了! 內容簡介 近年來,基於深度學習的人工智慧掀起了一股學習的熱潮。本書是使用PyTorch深度學習框架的入門書籍。本書從深度學習原理入手,由淺入

【halcon教程資料】全網彙總如何快速、高效率學習機器視覺入門到精通

我以八年的視覺工程師開發的工作經驗告訴你,你不要再因為學習halcon發愁了,我接觸過很多學習halcon的小白,並不是不願意學,而是不知道怎麼快速、高效率的學習精通,一天天的過去了,對學習halcon還是一片茫然!總結起來就以下幾點:   1.資料匱乏,沒有一整套系統性的資料去學習,沒人指導!   2.

機器學習最佳入門學習資料匯總

行程 view 概率 應該 mic 時有 挖掘 書包 發現 譯者:teyla 原文作者:Jasonb 發布:2014-06-05 13:54:15 挑錯 這篇文章的確很難寫,因為我希望它真正地對初學者有幫助。面前放著一張空白的紙,我坐下來問自己一個難題:面對一個對機器學習

機器學習如何入門

應用 內容 png 相關 作業 公式 hadoop log src 作者:Leon鏈接:https://www.zhihu.com/question/20691338/answer/102249162來源:知乎著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請

Linux學習入門到打死也不放棄,完全筆記整理(持續更新)

linux 運維 學習筆記 這是一片學習筆記的匯總,查看內容請點擊各章節介紹。 第一章,計算機基礎和linux基本介紹 http://blog.51cto.com/13683480/2095433 第二章,linux基礎 http://blog.51

Python數據挖掘與機器學習技術入門實戰

機器學習摘要: 什麽是數據挖掘?什麽是機器學習?又如何進行Python數據預處理?本文將帶領大家一同了解數據挖掘和機器學習技術,通過淘寶商品案例進行數據預處理實戰,通過鳶尾花案例介紹各種分類算法。 課程主講簡介:韋瑋,企業家,資深IT領域專家/講師/作家,暢銷書《精通Python網絡爬蟲》作者,阿裏雲社區技術

機器學習認知到實踐(第2輯)(套裝共3冊,Python+TensorFlow).epub

  【下載地址】 套裝書目 《Python機器學習實踐指南》 《TensorFlow機器學習專案實戰》 《TensorFlow技術解析與實戰》   簡介 《Python機器學習實踐指南》 機器學習是近年來漸趨熱門的一個領域,同時Pytho

機器學習怎麼入門——自學篇

轉自:https://blog.csdn.net/lsc989818/article/details/78817348 時也勢也,最近因為機緣巧合,下定主意要從專案管理領域跳轉到機器學習領域(人工智慧/深度學習),為了更快更高效的進入學習狀態,我對這一塊的培訓市場和自學方法也做了一些調研。上一篇

python學習入門到精通要多久?

Python是近幾年來的新秀語言。在程式語言的排行榜上異軍突起。在目前科技的最前沿,人工智慧(AI)領域也佔據了一席之地。於是,追逐潮流的同學們也加入了學習Python的大軍中。python學習從入門到精通要多久?按理說,Python學習什麼時候才能精通,是沒有具體時間的。原因很簡單,每個人的學習能力,每個人

tensorflow學習 入門到實戰(轉)

原文作者:zhaozhengcoder連結:https://www.jianshu.com/p/27a2fb320934來源:簡書簡書著作權歸作者所有,任何形式的轉載都請聯絡作者獲得授權並註明出處。   前一段時間比較系統的學習了一下tensorflow,從安裝tensorflow到實

轉:圖解十大經典機器學習演算法入門

原文:https://blog.csdn.net/jrunw/article/details/79205322   弱人工智慧近幾年取得了重大突破,悄然間,已經成為每個人生活中必不可少的一部分。以我們的智慧手機為例,看看到底溫藏著多少人工智慧的神奇魔術。 下圖是一部典型的智慧手機上安裝的一些常

機器學習---基礎----圖解十大經典機器學習演算法入門

轉自:https://blog.csdn.net/jrunw/article/details/79205322 弱人工智慧近幾年取得了重大突破,悄然間,已經成為每個人生活中必不可少的一部分。以我們的智慧手機為例,看看到底溫藏著多少人工智慧的神奇魔術。 下圖是一部典型的智慧手機上安裝的一些常見應用程式,可能

QT學習入門入門 step by step (3)

接上文 通過上邊的兩種方法,大體瞭解了Qt的類及介面設計器的用法,下邊的方法是把Qt的介面封裝成一個自定義類 3. 通過自定義類生成helloworld (1)還是建立一個空專案 (2)新增一個自定義介面 (3)建一個c++類,繼承自 QDialog,通過此可學習Q

QT學習入門入門 step by step (4)

專案檔案 *.pro 檔案分析 #--------------------------- # 註釋部分 # 注意:本檔案不支援 “//”做註釋,若使用則編譯時報錯 #--------------------------- QT += core gui //在使用qmake

林軒田機器學習基石入門(二)

上一節中我們主要講到機器學習的應用場景,而這一節主要向大家介紹我們身邊機器學習的例子,讓大家對機器學習有更多的直觀瞭解。 機器學習如今已滲透在我們的日行中,這很讓人驚訝,你每天都能夠接觸到它。 對於人們來說“衣食住行”是每天的基礎要求。 當你肚子餓想

林軒田機器學習基石入門(三)

上一節我們主要向大家介紹我們身邊機器學習的例子,這一節我們將探討機器學習由什麼元素組成(機器學習的模型結構)。 首先我們先看個信用卡的例子。 假設我們想用機器學習來判斷“是否同意貸款給這個客戶?”,我們會將使用者的資訊資料輸給模型(比如年齡,性別,職業,工

python 機器學習實踐入門

機器學習概念概念 機器 學習是電腦科學的一個分支,從模式識別、人工智慧和計算學習理論發展而來,我們可以將其作為資料探勘的工具 側重用於資料分析方法理解給定的資料   目的是:開發能夠從先前觀測的資料,通過可調整的引數進行學習的 程式,為了改善預測結果,將引數設計為可自動調整的 常見應用:垃

[深度學習入門到女裝]FCN

本文簡單介紹一下FCN模型,並對caffe原始碼進行閱讀 對於convolution: output = (input + 2 * padding  - ksize)  / stride + 1; 對於deconvolution: output = (input -

機器學習簡易入門-附推薦學習資料

感謝黃海廣博士的分享 原創: 機器學習初學者 機器學習初學者 今天 機器學習如何入門?目前沒有明確的答案。本站面向廣大初學者,推薦下機器學習(含深度學習)簡易入門的路線及學習資料,入門了以後,就會知道自己需要增強哪部分知識了,也會知道找什麼資料來學習。 (1)機器學