| 導語 簡述一個2010年入坑的後臺如何轉向作算法和機器學習的歷程和感悟,附錄一個書單c++
寫在前面:算法
本文主要介紹的是本身的一些經歷,以及讀過的一些書,實際應用的經驗並無介紹,包括如今不少機器學習的書通常也是側重於理論,結合實踐的時候會發現和模型比起來,數據清洗、特徵工程的實際效果更明顯,而這方面很難有系統的理論知識,怎麼辦呢?讀paper,去搜索本身應用領域有關的、大公司的經典的paper,裏面對數據清洗、樣本篩選、特徵構造、系統搭建這方面會有詳細的介紹,在正式出版的書裏,這塊不多,因此讀書只是基礎,結合工做場景去應用才知道「紙上讀來終覺淺,絕知此事要躬行」。另外若是碰到比較抽象的問題而難以理解的時候,有一個訣竅是,多和生活聯繫起來,不少計算機上的難題在生活中是有相似的事情和成熟的解決方案,好比優化與登山;「世事洞明皆學問,人情練達即文章」-共勉編程
正文:瀏覽器
04年高考發揮失常,花了五分鐘填了兩個志願,華科光電+華科計算機,感謝當年光電專業超高的分數線把我刷掉了,我被調到了計算機;收到通知書之後,本來比較堅決的復讀的打算變的動搖,家境有比較糟糕,因而抱着早點讀完,早點出來掙錢的想法讀完了四年華科計算機;老實說,我不是一個特別愛動手的人,本科四年把全部c語言的書幾乎都讀了一遍,但動手能力仍是很通常;保研之後,由於家裏斷了我全部經濟支持,我花了比較多時間去掙生活費,因此專業也不算學的很好,只是晚上堅持把APUE和算法導論英文版啃完了,順便把unix網絡編程、c++設計新思惟、stl源碼剖析看完了,算是有一點基礎吧。網絡
找工做的時候,執拗的想找一個後臺開發,美其名曰能夠多年鑽研,沉澱技術;實際上回想起來不過是膽小,怕跟不上變化太快的技術節奏(有多少人和我同樣?)進入鵝腸之後,確實是作了幾年的後臺開發,從一個小白到負責瀏覽器後臺日活千萬的圖片轉碼服務,這中間的摸索、挫折、被叼不足爲外人道也,工做三年左右,我前後接觸過瀏覽器後臺幾乎全部的server模塊,對公司海量學習、柔性可用也有一些理解,也隱隱看到了傳統後臺的天花板,下一步該作什麼呢?必定要去造輪子、寫框架嗎?app
剛好這個時候,咱們成立了一個小說的項目組,而你們都知道我是一個骨灰級網絡小說愛好者,起點閱讀記錄是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的書,也有一些看似不着調的書,歸根到底,全部的神祕都會歸結於靈魂、意識,佛學說法不外求不是沒有道理的,畢。
此文已由做者受權騰訊雲技術社區發佈,轉載請註明文章出處