作者 |張紅林
編輯 | 顧鄉
本文主要介紹的是自己的一些經歷,以及讀過的一些書,實際應用的經驗並沒有介紹,包括現在很多機器學習的書一般也是側重於理論,結合實踐的時候會發現和模型比起來,資料清洗、特徵工程的實際效果更明顯,而這方面很難有系統的理論知識,怎麼辦呢?讀*****,去搜尋自己應用領域有關的、大公司的經典的*****,裡面對資料清洗、樣本篩選、特徵構造、系統搭建這方面會有詳細的介紹,在正式出版的書裡,這塊很少,所以讀書只是基礎,結合工作場景去應用才知道「紙上讀來終覺淺,絕知此事要躬行」。另外如果碰到比較抽象的問題而難以理解的時候,有乙個訣竅是,多和生活聯絡起來,很多計算機上的難題在生活中是有類似的事情和成熟的解決方案,比如優化與爬山;「世事洞明皆學問,人情練達即文章」-共勉
正文:04年高考發揮失常,花了五分鐘填了兩個志願,華科光電+華科計算機,感謝當年光電專業超高的分數線把我刷掉了,我被調到了計算機;收到通知書以後,原本比較堅定的復讀的打算變的動搖,家境有比較糟糕,於是抱著早點讀完,早點出來掙錢的想法讀完了四年華科計算機;老實說,我不是乙個特別愛動手的人,本科四年把所有c語言的書幾乎都讀了一遍,但動手能力還是很一般;保研以後,因為家裡斷了我所有經濟支援,我花了比較多時間去掙生活費,所以專業也不算學的很好,只是晚上堅持把apue和演算法導論英文版啃完了,順便把unix網路程式設計、c++設計新思維、stl原始碼剖析看完了,算是有一點基礎吧。
找工作的時候,固執的想找乙個後台開發,美其名曰可以多年鑽研,沉澱技術;實際上回想起來不過是膽小,怕跟不上變化太快的技術節奏(有多少人和我一樣?)進入鵝腸以後,確實是做了幾年的後台開發,從乙個小白到負責瀏覽器後台日活千萬的轉碼服務,這中間的摸索、挫折、被叼不足為外人道也,工作三年左右,我先後接觸過瀏覽器後台幾乎所有的server模組,對公司海量學習、柔性可用也有一些理解,也隱隱看到了傳統後台的天花板,下一步該做什麼呢?一定要去造輪子、寫框架嗎?
恰好這個時候,我們成立了乙個**的專案組,而大家都知道我是乙個骨灰級網路**愛好者,起點閱讀記錄是3.5億,閱仙稱號,於是我有機會去做**專案;在這個專案裡我們碰到了一些文字處理的難題,比如怎麼自動聚合同乙個章節的多個資料來源並挑選乙個最優的候選源,怎麼識別內容不對的源;在這個過程中,和搜尋轉崗過來的bencai有了比較多的交流,開始知道什麼叫詞袋模型、什麼叫nlp、什麼叫樸素貝葉斯、kmeans聚類;將這些演算法應用到**業務場景,確實取得了不錯的效果,於是一扇新的大門緩緩開啟。
五花八門的應用,又混雜了數學、統計、程式設計等知識,看起來就像乙隻兇悍的刺蝟,作為乙個只熟悉後台開發的碼農?該怎麼入手呢?複雜的問題,答案往往簡單;大抵可以從這麼三個方向入手:數學、文字或搜尋、程式設計;我個人的經歷實際是從文字處理入手,但並不推薦所有人都走這條路,如果你的工作和文字處理搭不上邊,大可不必學習太多和文字相關的奇技淫巧。直接從數學的統計或者概率入手,可能會更直接。
1.統計學習方法,李航博士是華為諾亞方舟的首席科學家,前不久一次會上見到了本尊,這本書的特點是:演算法齊備、推倒嚴謹,薄薄的一本書幾乎涵蓋了淺層學習所有的演算法,並都從數學上給出了較為嚴謹的推倒,適合有一定數學基礎的人入門使用;過程中發現自己數學上的不足,再回頭去補;
2.數學分析新講:北大張筑生老師的,一套三冊,我花了大約一年的時間才讀完,非常費勁,但是很值得,比普通的高等數學要周全的多,唯一小有瑕疵的地方是實數連續統的描述用了計數法,不過這裡可以參考陶哲軒的實分析,他是從peano公里體系出發來論述;費爾金斯的大作裡則是用戴德金分割來論述的,都對比一下會很有意思;
3.最優化導論:看完數學分析以後再看1中的推倒會發現還是有很多地方不甚了了,舉個例子牛頓法或者說lbfgs可以用在多種演算法的推導上,那牛頓法、海瑟矩陣到底是怎麼回事呢?這時候就是該祭出這本書的時候了,這本書我覺得是補齊了從數學到統計學習方法之間確實的一環,裡面主要介紹一些優化理論;簡單來說,機器學習裡乙個很大的困難是函式沒有解析式,那麼對函式求解最優解是不可能像二次函式一樣通過公式直接求得的,必須通過迭代的方式逐漸去逼近最優解,就像爬一座山,不能一下子看到山頂,但是我們可以看到比現在更高的地方,於是先爬一小段,到了那個位置再往上看,又能看到最高的地方,於是又換個方向再爬一段,最終我們一定可以爬到山頂;最優化導論的幾個演算法幾乎都可以往這個例子裡面套,不過是觀望和路線指定的策略略有差異罷了。
4.機器學習,周志華:大家都知道有乙個mithell寫過的機器學習,但實話說,那本書的內容真的比較陳舊了,不如讀周老師這本西瓜書,因為全書都在用西瓜舉例;這本書和1有不少重合的地方,區別在於這本書是從機器學習自身出發,彌補了1偏數學理論,而工程實踐嚴重缺失的不足,這本書則從基礎概念講起,讓你對機器學習有乙個基礎的、正確的理解,打個比方就和陳近南給韋小寶的那本絕世秘籍的目錄差不多,讀完這本書,你並不會馬上獲得很高的演算法設計調優的能力,但是你拿到了入場券,你可以選一兩個方向或一兩個演算法去深入研究;
5.《neural networks and deep learning》 :這就是我提到的深度學習的一篇優秀的blog,配有**,深入淺出的介紹了神經網路、bp演算法、深度學習的一些基本概念,適合入門;深入的話可以看看三位大神合著,最近剛出版的那本deep learning;72美刀的**不便宜,好在有電子版
小結1:上面5本書基本可以做乙個很好的入門了,之後的路該怎麼走,相信讀完了的同學一般都會有自己的看法,任何乙個領域,良好的入門手續才是比較難的,入門以後登堂入室的路怎麼走其實大家都會有自己的主見。接下來的書單我並沒全部讀完,僅供進一步參考,這裡也不再排序
2.概率論後續是隨機過程、統計模擬、時間序列這方面的資料,包括貝葉斯分析、吉布斯取樣、mcmc方法:統計這塊我的感覺比較差,理解比較慢,推薦陳希孺的兩本書吧,一本是概率 一本數理統計;貝葉斯的書我之前的文章有提到,大家可以去找找;吉布斯 mcmc建議看部落格
3.實分析:陶哲軒
4.微分流形:陳省身
5.點集拓撲:北大教材
6.泛函分析
這幾本書是高階版了,大部分可能用不到,想研究流形優化、核方法的同學可以挑戰一下
7.prml:模式識別與機器學習,非常翔實的一本書,也是經典,可惜我沒有讀完,只看了前幾章;
8.凸分析:最優化導論的公升級版,應該是目前優化理論的集大成者;
9.數學之美:吳軍博士的書,消遣的時候翻一翻吧
10.deep learning:三位大神版本
以下推薦幾本智慧型相關的書,博大家一笑
1.心智社會:馬文明斯基的巨著,他自己的總結挺好:沒有心智社會就沒有智慧型,智慧型源於笨拙。這本書主要是探索人的思維的本質,很有意思的論述;
2.弗洛伊德:馬文明斯基推崇的心裡學家,我也沒怎麼看,只翻了一點點夢的解析
3.上帝擲骰子嗎,量子物理史話:推薦讀一讀,對量子、意識有一點了解;
4.周易:配合孔子的十翼看看,中國玄學、文化起源的神書;
5.波若波羅蜜多心經:心浮氣躁的時候默念一下
總結2:這部分比較隨性,有深入研究ml的書,也有一些看似不著調的書,歸根到底,所有的神秘都會歸結於靈魂、意識,佛學說法不外求不是沒有道理的,畢。
再談程序 從入門到出家
這段時間由於工作上用到幾個比較基礎的程序程式設計,卻發現自己好久沒有接觸程序了,都狂忘了!不得不感慨幾句 老了老了 趁著對程序的回憶,也總乙個簡單的總結,下次可以回頭看看,也幫大家做乙個回顧 這篇文章就叫 再談程序 從入門到出家 建立程序 建立程序使用fork 函式,由fork函式建立的程序被稱為子...
機器學習從入門到精通(緒論)
機器學習致力於研究如何通過計算的手段,利用經驗來改善系統自身的效能,在計算機系統中,經驗 通常以 資料 形式存在,因此,機器學習所研究的主要內容,是關於計算機上從資料中產生 模型 的演算法,即 學習演算法 有了學習演算法,我們把經驗資料提供給它,它就能基於這些資料產生模型,在面對新的情況時,模型會給...
機器學習從入門到創業手記 機器學習環境配置
我,路思和高維從單位領了新的筆記本,也坐到了公司給我們提供的寬敞明亮的工位上,我覺得當時拒絕父母讓我回去工作也許是對的。第一天的工作並不複雜,李里給每個人列印了一張 機器學習開發環境配置表 的檔案,讓我們按照紙面的步驟把機器配置好。機器學習開發環境配置表 python 3.x安裝 訪問 圖3.1.1...