微博收藏(机器学习探讨)(二)
1.0?關于深度學習與工程師的討論
@龍星鏢局 感受:
1)深度學習真成了,80%機器學習工程師失業;
2)大規模機器學習依賴數據、架構,算法其次;
3)NLP是深度學習的前沿陣地,Dean,Bengio,Jordan都不會錯過;
4)機器學習門檻太低,編程能力才是碼農的最后防線;
5)大數據研究將會呈現巨頭壟斷的格局,大家趕緊找好山頭。
@Arber:同意 2)3),對1)4)則存懷疑,基礎架構越發達,工程師的角色則會靠近業務層,也越能發揮價值,不是寫程序的價值,而是解決問題的價值。5)么,數據在哪里,機會就在哪里。
@明風Andy:回復@Arber:2,3也不同意,算法實現的好壞和精妙度,分布式環境更加重要。圖像比NLP更加適合深度學習
@美人她爹: 基本上一個東西如果復雜到需要一個團隊來處理,就沒啥新意了。團隊創意效率膽識都遠低于個人。芯片操作系統網站生物工程都是例子。大公司死于自己建立的復雜性,這是一個孤膽英雄的時代
@愛可可-愛生活:[贊] 工程上分工細化的團隊是必要的,核心技術方面更需要獨當一面的孤膽英雄,否則也很難真正沉淀下去
@yhchuan:1.真成了應該會更繁榮,為啥都失業?就像是說軟件工程真成了,程序員都要下崗。2.數據和架構成熟之后,不同應用的不同算法難道不是核心問題?3.NLP。。。不是說太結構化的數據不適用DL?4.ML門檻低?會寫hello world就可以說精通編程了,所以編程其實門檻更低。5.巨頭壟斷各行各業都有,唯一同意的
@asker2:回復@諸神善待民科組: 深度學習現在才剛開始發展。靠一個general的多層RBM或者autoencoder是不夠的。就像word embedding,靠簡單的word2vec也是不夠的。更復雜,更強大的模型還等著被機器學習研究者開發出來
? ? ? ?@張俊林say:NLP確實是除了圖像音頻外的DL前沿探索區
2.0?小數據VS大數據?by BAOJIE
今后幾年的趨勢應該是小數據顛覆大數據,不是深度學習
1) 我覺得無論是從技術還是市場,到了拼系統的程度,就只有數據奴隸主,主要是大的數據奴隸主才能搞。但是這反而是顛覆他們的機會。因為他們的規模依賴他們的渠道和市場(不然哪里來那么多免費數據浪費)。但是現實市場中大多數問題并不需要這么大規模。這會是一個典型的創新者的窘境;
2) 絕大多數的機器學習問題的制約瓶頸不是算法,也不是系統,而是數據。能到拼系統階段的都是土豪了,大多數公司還沒到這個奢侈的階段就死了。在此階段前,只要數據好,什么爛算法和爛系統都能somehow work。但是數據是最貴的,上量貴,清理貴。找一個理解數據,算法和系統的人更貴;
3)對于大多數的蕓蕓眾生,去追谷歌臉書這些巨頭的風恐怕有些李德主義。算法的好壞取決與成本,取決與規模。對于占大多數的中小型機器學習問題,恐怕“小數據”方法才是關鍵,就是用最低的成本,盡可能的利用小的數據規模和機器規模,盡可能的利用先驗知識,盡可能的縮短投入產出周期;
4)和大多數其他工程問題一樣,制約技術選型的不是一個技術酷不酷,而是看它全周期的投入成本和維護成本。投入成本不僅要看機器成本,更主要是人力成本。采用成熟技術有助于降低成本,前沿技術向下滲透速度并不會那么快。深度學習和歷史上的神經網絡一樣,維護成本并不低,不會是萬靈藥;
5)我說的可能是偏見,不一定對:今后幾年的趨勢應該是小數據顛覆大數據,Smart Data超越Big Data。系統的可解釋性,可讀性,可維護性,可進化性。數據的自描述性,多能性。結構化數據(含知識圖譜)與非結構化數據的混合。我覺得這些都是可能的突破點,因為它們著眼于Value,降低成本。
3.0?@陳天奇怪:cxxnet和大規模深度學習
在今年發布的兩個機器學習項目中,cxxnet是最精彩的一個。因為它包含了我們團隊可以發揮到的機器學習和系統的各個方面的極致: 除了前沿的深度學習之外,它的兩個獨到特點也是讓我們在設計實現中最為享受的
1) 靈活的公式支持和極致的C++模板編程;
深度神經網絡的實現大致分兩類:以python為主的編程效率派和以c++為核心的為代表的追逐性能派。前者支持直接tensor的計算,而后者往往需要給每個神經網絡的層和更新公式編寫獨立的cuda kernel。編程效率派認為機器學習程序員應該是寫公式來達到代碼最大的可讀性和易改寫性。而很多以C++為核心的代碼之所以沒有支持非常靈活的張量計算,是因為因為運算符重載和臨時空間的分配會帶來效率的降低。
cxxnet的核心mshadow在這兩者之間做了一個平衡。使得我們在不損失效率的前提下可以通過模板編程技術允許開發者編寫和matlab/numpy類似的代碼,并且在編譯時自動展開成優化的kernel。其背后的expressiontemplate技術是我最喜歡的c++ trick之一。非常值得最求效率抽象和優美的同學了解。
因為采用了mshadow作為核心,直接導致cxxnet的各種實現可以非常簡單可讀,編寫一份代碼就可以在GPU和CPU上面跑。使得其在代碼簡潔和可擴展上更加容易。
2) 通用的并行參數共享和更新方案
多卡和多機計算一直是大規模機器學習中一個讓人興奮的話題。提到神經網絡并行,最讓我頭疼的是可以選擇的方案很多,而都涉及到不同的hack。單機多卡到底是用P2P,還是拷貝到內存,是用stream開始開多線程。分布式到底是用parameter server,MPI還是自己寫一個框架。可以選擇的方法很多。設計出一個分布式的代碼不難,困難的是如何讓并行的接口自然的獨立出來,使得其不會影響其它部分的實現。經過不斷地考慮,最終我決定采用了mshadow-ps這樣一個統一的參數共享接口。
簡單的說,mshadow-ps是一個GPU的異步parameter server接口(應該也是目前為止唯一一個,因為GPU線程模型和CPU不同,原有的的ps庫并不能直接用于GPU)。異步通信對于神經網絡的更新非常重要。在backprop算法中,我們很早就可以獲得梯度并且進行梯度同步,而只有到下一次forward到對應層的時候才會需要這個weight。
我和limu合作設計了ps風格的三個接口來解決這樣的同步問題,Push/PullReq和Pullwait。當獲backprop得梯度的時候直接調用push把梯度發送出去,并且調用pullreq請求結果。Push和Pullreq都是異步操作,背后會有單獨的線程同時完成數據拷貝同步,以及拷回的操作。而當我們需要weight之前在調用Pullwait來等待可能沒有完成的操作。這樣簡單的三個接口,使得我們可以經過很少的改動就可以設計出多卡和分布式的神經網絡來,并且在調用這些接口的時候完全不需要關系同步的實現是什么。
值得一提的是,這樣的編程模式把多GPU,分布式以及各個通信框架直接結合起來。mshadow-ps支持單機多卡的GPU PS,以及基于parameter-server的分布式PS實現。同樣的也可以很容易MPI來支持多機通信。使得一個統一的接口,可以完成從單機多卡到分布式各種后端實現的支持。并且因為高效的異步通信,使得我們可以在alexnet上面達到linearspeedup(注:并行的難度在于計算和通信的時間比,weight少更加復雜的網絡反而更加容易線性加速,而alexnet是非常困難的例子)。
經過團隊里面大家不斷地努力,cxxnet的V2終于可以和大家見面了。除了上述介紹的技術亮點之外,還有各種好玩的特性。現在把特點總結如下:
1. 輕量而齊全的框架: 我們盡力維持最小的依賴庫實現最多的功能。推薦環境下僅需要CUDA, OpenCV, MKL或BLAS即可編譯。
2. 強大的統一的并行計算接口:基于mshadow-ps的并行計算接口采用了一份代碼解決了多GPU,多機的異步同步。同步和計算重疊,在多份測試中均可以得到線性加速比。
3. 易于擴展的代碼結構:cxxnet計算核心由mshadow提供。Mshadow使用戶可以編寫numpy/matlab風格的代碼,但仍具備手動優化cuda 代碼的靈活性。CPU和GPU共享同一份代碼,在編譯期間通過模板自動翻譯成CUDA/MKL調用。
另外一些特性包括:
4.CuDNN支持:Nvidia原生卷積支持,可加速計算30%!
5.及時更新的最新技術:我們將及時跟進學術界的動態,例如現在已經支持MSRA的ParametricRelu和Google的Batch Normalization
6.Caffe模型轉換:支持將訓練好的Caffe模型直接轉化為cxxnet模型(本周內上線!)
7.方便的語言接口:在Python中直接進行訓練,方便可視化。Matlab也將很快提供
我們相信可以通過最簡潔清晰的代碼來完成高效的C++深度神經網絡實現。我們也歡迎對于系統和機器學習有興趣的同學加入到項目中來。
4.0?Eric Xing(CMU教授)的DNN-discussion
目前大數據主要分兩派:DL派和ML派,兩派之間有融合也有對立,比如Jordan教授就不碰DL,也有HILTON,LECUN教授堅守DL,當然吳恩達,ERIC XING屬于兩邊都沾邊!這個PPT很好對比兩者?DNN-discussion.pdf
5.0?深度學習綜述與建議
谷歌科學家、Hinton親傳弟子Ilya Sutskever的深度學習綜述及實際建議 比較喜歡其中關于tricks的建議:包括data, preprocessing, minibatches, gradient normalization, learning rate, weight initialization, data augmentation, dropout和ensemble。
文章地址
6.0
@梁斌penny
那天推特一個美軍(好像是高級研究員)來清華報告,他們的打法套路是:做事之前,先確定主要技術指標,自動測評工具做起來。再把任務分階段,每個階段內部,try大量學術界產業界的方法,大量try,留下work且快的,其他扔掉。最后整體系統就會好。東西用不用完全不看是不是best paper出的,只看實驗結果.
7.0?關于DL使用實機、場合的論文
文章《New to deep learning? Here are 4 easy lessons from Google》
關于深度學習使用的時機、場合和方法,來自Google的Greg Corrado給出一些建議:即使它能行,也未必是最佳方案;量體裁衣就好,并非要有大平臺才能做;足夠的數據還是很必要的;DL并非真的基于大腦工作機制
文章地址
8.0?關于DL的reading list
My deep learning reading list
主要是順著Bengio的PAMI review的文章找出來的。包括幾本綜述文章,將近100篇論文,各位山頭們的Presentation。全部都可以在google上找到。
BTW:由于我對視覺尤其是檢測識別比較感興趣,所以關于DL的應用主要都是跟Vision相關的。在其他方面比如語音或者NLP,很少或者幾乎沒有。個人非常看好CNN和Sparse Autoencoder,這個list也反映了我的偏好,僅供參考。
文章地址
評論:
@夏粉_百度:個人建議通過讀一些材料后,掌握深度學習本質后(比如能說清楚它的優缺點,在理論體系中的坐標位置),少量時間用于更新進展,更多時間應該花在思考上,比如如何改進和應用。我們提出的首個大規模稀疏特征上的深度學習算法DANOVA就是不斷思考的結果,比人工特征效率提升千倍。歡迎加入resume@baidu.com
@阿邦dd:回復@圖像視覺研究:直接跑他們的代碼吧。。覺得dl文章那么多,也就是從imagenet那篇開始成為state-of-art的,在之前的dl方法,性能都不行
? ? ? ? @圖像視覺研究:回復@阿邦dd:確實,現在是邊看文章邊研究代碼,收獲比光看文章要大很多
9.0?Pedro Domingos. A Few Useful Things to Know about Machine Learning.
論文地址:http://vdisk.weibo.com/s/hxqSZfjTE0X
翻譯版本:機器學習的那些事 譯者:劉知遠?
譯文地址:http://www.360doc.com/content/13/1020/18/7673502_322833764.shtml
評論:
@張棟_機器學習
這篇文章是我讀過的最好的機器學習文章之一:總結了 “機器學習實踐中學到的 12 條教訓” 這些教訓在任何教課書里都無法學到,只有在實踐和具體應用中能體會到,非常珍貴!?
? ? ? ? ? @龍星鏢局 Domingos 可是機器學習領域的大拿,他的很多工作也都是比較實用的,比如Markov Logic,meta-cost,Sum-Product Networks 等等。 另外,清華大學@劉知遠THU 研究員翻譯的中文版也很到位。
10.圖像自動標注技術的新進展
@微軟亞洲研究院
近幾年,各大科技公司圍繞在圖片自動標注技術上的嘗試層出不窮。今年,在微軟杰出科學家John Platt的帶領下,該技術取得了新進展。其團隊所開發的標注系統在用戶盲測中,23.3%圖片系統自動生成的描述比人為編輯的描述更被人認可。
地址
其他機構的研究成果:
百度和California大學:Explain Images with Multimodal recurrent neural networks.地址
University of Toronto:Unifying Visual-Semantic Embeddings with Multimodal Neural Language Models地址
Stanford 大學: Deep Visual-Semantic Alignments for Generating Image Descriptions地址
Long-term Recurrent Convolutional Networks for Visual Recognition and Description地址
11.
@王威廉
加州伯克利大學博士 Aria Haghighi 寫了一篇超贊的數值優化博文,從牛頓法到擬牛頓法,再到BFGS以及L-BFGS
Numerical Optimization: Understanding L-BFGS
地址
圖文并茂,還有偽代碼,強烈推薦。
@陳如山:?他的這篇文章寫的比較精簡,我之前也寫了幾篇關于常用優化算法的文章,從 steepest descent 到 newton 再到 quasi-newton (包括 lbfgs),包含所有公式推導及部分收斂性分析和 python 代碼 (可以畫 contour 圖)地址
其他相關的blog:地址
12.
@統計之都
Gilles Louppe的博士論文《隨機森林:從理論到實踐》 排版精美
地址
13.
@南大周志華: 這一波我們是走在Hinton前頭了。distillation這個名字比較潮//@李楠__NaN:這個distillation不是什么新想法,@南大周志華 老師十多年前就提出了的 twice learning來抽取 ensemble中的knowledge O網頁鏈接 O網頁鏈接 在DeepLearning下換個馬甲就出來混啦//@許家銘_CASIA#NIPS2014#Deep Learning workshop paper list have just been posted online by Andrew Ng, O網頁鏈接 , 看Hinton神 和Dean神在Google的合作文章, Distilling Knowledge怎么翻譯?知識蒸餾?知識抽取?。。特征壓縮表示的另類叫法嗎?
14.
@iB37
1)周志華CCL14講述boosting及其抗過擬合性25年故事O網頁鏈接 入手點集成學習大法好,轉向AdaBoost.從89年Kearns(外公生于廣州)和Valiant(圖靈獎得主)問強弱學習等價否源起,到探尋AB的抗過擬合性:間隔派和統計派各展身手.最后他們的貢獻 2)后續Hubel-Wiesel25年合作: 視覺處理 深度學習
Boosting 25 Years
15.?關于Kaggle的一些分享
(1)@王威廉 Kaggle各種機器學習競賽的冠軍及其他優勝者的源代碼匯總:地址
(2)Kaggle的一些總結,特征工程分重要,模型越簡單越好,很多leadboard上排名靠前的人overfitting了,模型融合永遠是比賽不可或缺的手段。Learing form the best地址
(3)參加kaggle競賽是怎樣一種體驗??地址
(4)許家銘_CASIA:Kaggle深度采訪CIFAR-10競賽(2013/10-2014/10)網頁鏈接?的獲獎者Ben Graham, Phil Culliton, 和 Zygmunt Zajac網頁鏈接?,看CNN如何取勝圖像分類任務,有大量經驗Trick代碼奉獻。順道拜訪CNN的推動者 Yann LeCun?地址
16.?
機器學習入門資源不完全匯總
http://ml.memect.com/article/machine-learning-guide.html
17.
K-means是最常用的聚類算法之一:容易理解,實現不難,雖然會有local optimum,但通常結果也不差。但k-means也不是萬金油,比如在一些比較復雜的問題和非線性數據分布上,k-means也會失敗。普林斯頓博士David Robinson寫了一篇不錯的分析文章,介紹了幾種k-means會失效的情形。
http://varianceexplained.org/r/kmeans-free-lunch/
總結
以上是生活随笔為你收集整理的微博收藏(机器学习探讨)(二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微博收藏(机器学习代码与工具)(一)
- 下一篇: 微博收藏(机器学习课程与论文)(三)