| PaddlePaddle是一個最早由百度科學(xué)家和工程師共同研發(fā)發(fā)起的并行分布式深度學(xué)習(xí)平臺,兼?zhèn)湟子眯浴⒏咝?、靈活性和可擴展性,有超過30個產(chǎn)品使用此平臺。 在2016年9月1日百度世界大會上,百度首席科學(xué)家Andrew Ng(吳恩達)宣布正式對外開源。 近幾年深度學(xué)習(xí)的概念非常火,我們很幸運趕上并見證了這一波大潮的興起。記得2012年之前提及深度學(xué)習(xí),大部分人并不熟悉,而之后一段時間里,也有些人仍舊持懷疑的態(tài)度,覺得這一波浪潮或許與之前sparse coding類似,或許能持續(xù)火個兩三年,但終究要被某個新技術(shù)新方法所取代,再后來,無論是學(xué)術(shù)界還是工業(yè)界,總有些研究者為自己沒有在第一時間跟進這波浪潮感到后悔莫及。確實,從2012年AlexNet取得ImageNet的冠軍開始,五年過去了,深度學(xué)習(xí)的方法仍舊占領(lǐng)著人工智能這片領(lǐng)域。 隨著這波浪潮,有些人作為弄潮兒,興起一波波巨浪,引領(lǐng)各個領(lǐng)域從傳統(tǒng)方法到深度學(xué)習(xí)方法的轉(zhuǎn)變,并希望能夠通過了解其他領(lǐng)域的方法改進自己所從事的領(lǐng)域;有些人辛勤地工作,利用深度學(xué)習(xí)的方法為公司提高業(yè)績,希望實時跟進并實現(xiàn)最新的技術(shù);有些校園中的研究僧,一方面需要了解最新技術(shù)及其背后原理,另一方面還有發(fā)文章和找工作的壓力;有些相關(guān)從業(yè)者,如編輯、記者,經(jīng)常報道AI領(lǐng)域新聞,卻從沒有時間仔細研究深度學(xué)習(xí);還有些非技術(shù)人員,總會在這些新聞后驚恐地詢問“天網(wǎng)是否能在有生之年建成?”或是“AI對人類的威脅到了什么程度?”。 僅僅通過一節(jié)課程,或是一本書來解決以上所有問題明顯是不可能的。鑒于國內(nèi)機器學(xué)習(xí)資料還是偏少,而且大多是理論性質(zhì),并沒有實踐模塊,我們從去年年底開始著手寫一本深度學(xué)習(xí)相關(guān)的tutorial,并希望通過一章章真實的案例來帶大家熟悉深度學(xué)習(xí)、掌握深度學(xué)習(xí)。這個tutorial中每一章內(nèi)容都圍繞著一個真實問題,從背景介紹到使用PaddlePaddle平臺進行代碼實驗,完整地讓大家了解整個問題如何用深度學(xué)習(xí)來解決,從此告別紙上談兵。參加本次活動之前,沒有想到這次報名人數(shù)之多。看了下報名群中的同學(xué)不乏一些高端用戶,于是我知道本篇課程必然要要一些同學(xué)失望了,因為這一講作為第一講,只能考慮到大多數(shù)用戶,設(shè)計成難度適中的課程,為大家提供一些深度學(xué)習(xí)最基本的概念,以便更輕松地入門深度學(xué)習(xí)。如果您是高端用戶(能自己run起來深度學(xué)習(xí)模型或做過一些常識),建議您可以直接移步tutorial自學(xué),當然如果感興趣,歡迎繼續(xù)關(guān)注我們系列的后續(xù)課程。 首先,對這個系列的后續(xù)深度學(xué)習(xí)課程做一個預(yù)告。在這份tutorial中,我們將覆蓋如下內(nèi)容: 
 本節(jié)課程中,我們主要帶大家了解深度學(xué)習(xí),通過它的一些有用或有趣的應(yīng)用了解深度學(xué)習(xí)的基本原理和工作方式。 一、深度學(xué)習(xí)是什么傳統(tǒng)的機器學(xué)習(xí)中,我們要為每種任務(wù)定義其特定的解決方案。對于圖像,曾經(jīng)人們耗費大量精力設(shè)計各種描述子進行圖像特征描述;對于文本,單單一個機器翻譯任務(wù)就動輒多個模型的設(shè)計:如詞語對齊、分詞或符號化(tokenization)、規(guī)則抽取、句法分析等,每一步的錯誤都會積累到下一步,導(dǎo)致整個翻譯結(jié)果不可信,且要追查一個錯誤會非常復(fù)雜。 深度學(xué)習(xí)的優(yōu)勢,就是可以彌補以上問題,一方面減少了對大量手工特征的依賴,對于圖像文本等領(lǐng)域可以直接從原數(shù)據(jù)進行建模;另一方面通過端到端的網(wǎng)絡(luò)模型(即一個網(wǎng)絡(luò)直接從輸入到輸出建模,而不需要中間步驟)減少了多步驟中錯誤累積的問題。 深度學(xué)習(xí)采用多層神經(jīng)網(wǎng)絡(luò)的方法,依賴大數(shù)據(jù)和強硬件。 
 二、深度學(xué)習(xí)的應(yīng)用深度學(xué)習(xí)可以涵蓋很多應(yīng)用范圍,我們這里可以先以幾個有意思的應(yīng)用,給大家一個基本概念, 工業(yè)界常用的例子會在后續(xù)課程中詳細地舉例。 極簡版無人車無人車概念近幾年很火,從傳統(tǒng)領(lǐng)域到互聯(lián)網(wǎng)企業(yè)都多少有這個方向的研究者。對于初步接觸神經(jīng)網(wǎng)絡(luò)的同學(xué),我們先引入一個小任務(wù)。如下圖所示為一個可遙控小車在車道上的運行軌跡,小車上方搭載GoPro攝像頭。圖中藍線表示垂直基準線,紅線表示每一時刻小車應(yīng)駛方向。我們的目標是,基于人為操控小車的行駛方向和當前圖像數(shù)據(jù),給出其駕駛方案。 這里,可以用神經(jīng)網(wǎng)絡(luò)指定網(wǎng)絡(luò)的輸入輸出分別是當前圖像和應(yīng)走的方向,整體作為一個回歸問題來處理,其中輸入圖像用多層卷積神經(jīng)網(wǎng)絡(luò)來解析。這里可能有朋友會說,其實我只需要用基本圖像處理技術(shù)(比如二值化圖像后再檢測連通域)找出來左右兩條車道,再向前方車道線中點位置方向走不就行了嗎?確實是可以這么干的,我們這里只是為了說明深度學(xué)習(xí)的端到端訓(xùn)練,舉例個最簡版的無人車,有清晰的車道線,并且沒有紅綠燈、障礙物等干擾。實際情況中,需要考慮跟蹤前車、車道保持、障礙物檢測、紅綠燈檢測等多種情況,因此需要多模型的設(shè)計和集成。單就最簡單情況下車道檢測的這個事情來說, 確實可以僅通過圖像處理 人工策略達成目的,也不需要什么訓(xùn)練數(shù)據(jù),但這就要求程序員每遇到一個badcase都需要人工修改策略,這樣等下一位程序員接手這段代碼的時候,就只能嗚嗚嗚了。 拍攝照片油畫化2015年的一篇文章[5],將藝術(shù)家梵高和深度學(xué)習(xí)聯(lián)系在了一起,文中實現(xiàn)了將藝術(shù)畫style附體于日常拍攝照片,從而得到“藝術(shù)照”的效果。其做法是設(shè)計一個神經(jīng)網(wǎng)絡(luò),定義該網(wǎng)絡(luò)的損失函數(shù)為Diff(拍攝照片,生成作品) 與 Diff(藝術(shù)畫,生成作品)這兩個Diff的加權(quán)和。其中Diff表示兩幅圖片的差異。但如果通過每個像素的差異來計算這個Diff的話,顯然不合理,對于拍攝照片和生成作品而言,像素值必然已經(jīng)大變,而對于藝術(shù)畫和生成作品而言,可能色調(diào)相似,但靠單個像素值去比就肯定是相差甚遠了。所以我們其實想要的只是一個抽象的概念,如下圖的例子,我們只需要生成的圖包含“貓”,且畫風(fēng)和中間的藝術(shù)照相似。于是采用了神經(jīng)網(wǎng)絡(luò)的隱層作為度量他們Diff的空間。 圖片轉(zhuǎn)載自: http://phunter./post/mxnet-tutorial2 機器翻譯剛才的兩個例子都是深度學(xué)習(xí)在圖像中的應(yīng)用,其在文本中同樣意義重大。和圖像不同的是,文本作為一個序列化信息,深度神經(jīng)網(wǎng)絡(luò)對這樣數(shù)據(jù)的的處理和圖像不太相同,但除此之外的基本思路就可以相互遷移了。比如已經(jīng)了解了通過深度學(xué)習(xí)進行圖像分類的方法,那么文本分類只是變化一下,將一短文本映射成特征向量從而進行分類,這可以通過將理解圖片的卷積神經(jīng)網(wǎng)絡(luò)改為處理序列信息的循環(huán)神經(jīng)網(wǎng)絡(luò)完成。類似地,機器翻譯(用計算機來進行不同語言之間的翻譯)也可以通過類似的方法。以通過深度學(xué)習(xí)進行中譯英為例,首先通過一個循環(huán)神經(jīng)網(wǎng)絡(luò)理解一句漢語(映射為文本語義信息,可以是一個向量,也可以是一個時序信息),稱此過程為“編碼”,再將這個文本語義信息通過另一個循環(huán)神經(jīng)網(wǎng)絡(luò),每個時刻輸出一個英語單詞,稱此過程為“解碼”,通過這樣的編碼-解碼結(jié)構(gòu)即完成了機器翻譯。我這里只是白話說出了機器翻譯的大概思想,感興趣的同學(xué)可以參考機器翻譯一章的tutorial或追蹤后續(xù)課程。 為你寫詩看完以上內(nèi)容,如果想讓你根據(jù)一個詞創(chuàng)作一首詩,你想能怎么做呢?恐怕已經(jīng)有同學(xué)想到了:用翻譯的做法寫詩。不錯,機器翻譯其實可以用到很多地方,只需要修改數(shù)據(jù)集就ok,如果我們想根據(jù)一個詞,讓機器“創(chuàng)作”一首詩,只需要將翻譯模型的輸入設(shè)置為這個詞,而輸出是詩句即可。不過,通常這么做是有問題的,因為這樣做導(dǎo)致輸入序列很短而輸出很長,其間的依賴并不能充分發(fā)揮出來,硬將這樣的兩個序列綁在一起可能導(dǎo)致機器強硬地“背”下來如輸入語料而沒有真正理解語義。因此,有的工作中用短語生成第一句詩詞,用第一句去生成第二句……;或者可以用前n-1句生成第n句詩詞。感興趣的同學(xué)可以自己試一下,也可以試用一下度秘里面寫詩模塊。 商品推薦商品推薦是電商和新聞客戶端們的關(guān)注熱點,他們都關(guān)注用戶興趣的把控,其推薦系統(tǒng)的好壞往往會對用戶留存和購買情況有較大影響。這里我們可以想見,最基本的推薦策略是爆款推薦(全民熱點),和已瀏覽或是購買/收藏了的項目。對于大量用戶沒有過瀏覽記錄的項目,傳統(tǒng)推薦方法一般采用協(xié)同過濾,即推薦給用戶相似用戶的興趣項,另一種方法是通過基于內(nèi)容過濾推薦,即推薦給用戶瀏覽項目的相似項,這其中就涉及到用戶相似度和產(chǎn)品/項目相似度的獲取。一方面,我們可以利用深度學(xué)習(xí)進行其相似度的建模,另一方面,我們還可以將用戶特征和產(chǎn)品/項目特征映射到一個相同的空間進行特征比較,也就是將下圖A(協(xié)同過濾)和B(基于內(nèi)容過濾)策略改為C。 三、深度學(xué)習(xí)的缺陷說過了神經(jīng)網(wǎng)絡(luò)的牛逼之處,我們再來看看它的一些缺陷,至少是目前難以解決的問題。 特斯拉事件關(guān)注特斯拉的同學(xué)應(yīng)該都有注意到,去年一位23歲的中國男青年,在駕駛特斯拉電動汽車沿京港澳高速河北邯鄲段公路行駛時,前車躲避障礙物后,該男子躲閃不及撞上了道路清掃車,發(fā)生嚴重車禍導(dǎo)致死亡。 特斯拉官方并沒有公布過其內(nèi)部算法,我們只知道特斯拉的自動駕駛系統(tǒng)Autopolit中曾有以色列Mobileye公司提供的技術(shù)。Mobileye是一家基于視覺幫助減少交通事故的公司,其研發(fā)多年的高級駕駛輔助系統(tǒng)(ADAS)處于業(yè)內(nèi)領(lǐng)先,主要基于單目攝像頭傳回的圖像,通過深度神經(jīng)網(wǎng)絡(luò)進行車輛檢測、車道識別等[3]。但Mobileye自己也表示曾經(jīng)提醒過特斯拉公司,他們的這套系統(tǒng)只能起輔助作用, 并不完善,也不能完全保障車主。雖然特斯拉官方聲明由于車主家屬不愿提供更多信息,導(dǎo)致具體Autopolit錯誤原因無從定位,但原因或是因為中國獨有的道路清掃車不曾出現(xiàn)在單目視覺的訓(xùn)練數(shù)據(jù)集,或是因為光照等特殊因素導(dǎo)致的圖像質(zhì)量問題,都說明無法僅通過視覺技術(shù)保障自動駕駛的安全性。我們不能將這起事故歸結(jié)于是深度學(xué)習(xí)的缺陷,但在實際系統(tǒng)中, 我們目前確實難從一個端到端的系統(tǒng)中完全定位并解決問題,大家還可以看下面的例子進一步理解。 可解釋性在之前的“深度學(xué)習(xí)是什么”這一節(jié)中,我們講到深度學(xué)習(xí)可以利用端到端的學(xué)習(xí)避免一些多步驟積累錯誤導(dǎo)致的問題,然而這其實也是一種缺陷。我們無從定位問題出在哪里。下面就以圖像分類的一個badcase為例進行說明。 ImageNet競賽2012年冠軍工作AlexNet的作者Krizhevsky 曾提出,雖然AlexNet效果很棒,但為了最優(yōu)化該數(shù)據(jù)集上的效果,不得不建立這樣一個含有非常多參數(shù)的深度神經(jīng)網(wǎng)絡(luò),而這樣的網(wǎng)絡(luò)非常容易過擬合。在15年的CVPR會議中,Anh Nguyen提出了一種生成樣本的方法,該方法生成的樣本可以“愚弄” 用于圖像識別的深度神經(jīng)網(wǎng)絡(luò)[4],如下圖所示的8幅圖下面標注的文字分別為ImageNet競賽數(shù)據(jù)集上效果最好的網(wǎng)絡(luò)對該圖的識別結(jié)果(置信度高于99.6%), 該網(wǎng)絡(luò)將我們認為的這些波紋分別識別成了王企鵝、海星、棒球、電吉他、火車車廂、遙控器、孔雀、非洲灰鸚鵡。這種很容易“愚弄”神經(jīng)網(wǎng)絡(luò)的樣本,被稱為對抗樣本。 深度學(xué)習(xí)希望模擬人腦中的神經(jīng)元,通過一個神經(jīng)網(wǎng)絡(luò)進行參數(shù)擬合,但學(xué)習(xí)的過程不盡相同。事實上,當人去學(xué)習(xí)知識的時候,是“哪里不會點哪里”、“哪里錯了改哪里”,即局部調(diào)整,而深度學(xué)習(xí)通常都是通過所有樣本來決定整個網(wǎng)絡(luò)的全部參數(shù),希望在所有樣本上獲得全局最優(yōu)解;當人們學(xué)習(xí)什么是“企鵝”的時候,既不會刻意地通過某幾個的特征(如顏色、體態(tài))去捕捉,也不需要看上千八百張圖片才了解到這樣一種模式,我們就知道如下三幅圖,都是一個物種, 而神經(jīng)網(wǎng)絡(luò)想學(xué)到這樣一個概念并不容易,往往需要企鵝的各個品種、各種pose的圖片。 同樣,當神經(jīng)網(wǎng)絡(luò)的結(jié)果有誤時,我們無法像人腦學(xué)習(xí)一樣局部修改部分參數(shù),即便可以,對于端到端的神經(jīng)網(wǎng)絡(luò),調(diào)整哪一塊參數(shù)、如何調(diào)整也是無從下手。這就是深度學(xué)習(xí)可解釋性方面的局限。 感謝感謝大家訂閱這一期GitChat活動,開篇提到的tutorial作為我們對PaddlePaddle深度學(xué)習(xí)平臺的再一次易用性擴展,歡迎大家關(guān)注學(xué)習(xí)并提出寶貴意見。同樣感謝這份tutorial中諸多志愿者同學(xué)們的共同努力,國內(nèi)做開源不易,做撰寫tutorial&demo的文檔更難,希望有興趣的小伙伴加入我們,共同推動有意思的tutorial能夠在開源社區(qū)進行分享。 參考文獻: 
 Chat實錄分享人簡介:張睿卿,paddle官方開發(fā)組成員,畢業(yè)于浙江大學(xué)計算機學(xué)院。專注于深度學(xué)習(xí)領(lǐng)域,目前研究方向為對話、圖文問答。微博: Rachel____Zhang。 問:深度學(xué)習(xí)看到的案例大部分是在圖像處理上,語音識別等方面的。對普通數(shù)據(jù)類似回歸分析的預(yù)測,用DeepLearning有有優(yōu)勢嗎?比如電商某款商品的銷量預(yù)測? 答: DeepLearning相對于最基礎(chǔ)的線性回歸的優(yōu)勢在于,隨著模型go deeper,會有更多的參數(shù),另外加入了非線性提高模型理解能力。至于是否可以做銷量預(yù)測,其實看你的數(shù)據(jù)了。 
 問:為你寫詩的第一句詩是seq to seq 用一個或者幾個詞生成的么? 答:是的。關(guān)鍵詞(一個或幾個)生成第一句,第i句生成第i 1句(或者前i句生成第i 1句);這是一種普遍的方法。 問:做中文序列標注的時候,使用Bi_LSTM CRF,如何加入已經(jīng)驗證過比較好的人工特征,例如'詞的后綴'? 答:關(guān)于后綴的加入,將輸入設(shè)置成word embedding; suffix embedding就可以了,另外其實不建議你直接加后綴特征。 Learning Character-level Representations for Part-of-Speech Tagging。比如這篇文章,就證明了不需要手工加后綴。word-level embedding可以捕捉語義信息,char-level embedding可以捕捉包含后綴信息在內(nèi)的形態(tài)學(xué)信息,可以直接用char-level embedding的,也方便。 問:我是做Fintech領(lǐng)域的,想請教兩個問題。 一是在DeepLearning這塊,如果只是把TensorFlow PaddlePaddle當做近似黑盒的去用,主要基于現(xiàn)有模型做細微修改,產(chǎn)生的作用大概能有多少的效果。 另一個是在Fintech這塊,目前看到了有人基于dl做對沖基金,那根據(jù)您的判斷,在金融領(lǐng)域是否可能有更多的建樹。在難以解釋性上很多時候很猶豫。 答:關(guān)于基于DeepLearning做對沖基金是否靠譜這個問題,我只能說,從時序信號的角度,這個是可以做成的,也確實有公司說(至少號稱)用了DeepLearning進行投資建模,然而他們也并不會公開其算法。 個人認為,做對沖基金最大的問題是克服數(shù)據(jù)噪聲。以自然信號(真實圖像、語音)來說,其內(nèi)部噪聲是比較小的,甚至我可以精準地給噪聲建模,然而金融數(shù)據(jù),尤其是國內(nèi)的金融數(shù)據(jù),噪聲還是占比挺大的。 我用到過金融數(shù)據(jù)做量化投資者分類,其實已經(jīng)挺難了,不過你這個如果做趨勢預(yù)測啥的更難。也就是說,如果真的想做好,就要考慮很多因素,將全局新聞(降息降準)、人為情緒(年前資金緊張)、個股新聞(兩個大股東離婚分家)還有歷史走勢全都融入模型,倒是可以一試。 問:請問可以將傳統(tǒng)的圖像處理方法與深度學(xué)習(xí)結(jié)合起來使用嗎?如果可以,能不能舉個例子,比如用于圖像分割?謝謝,目前深度學(xué)習(xí)還未入門,所以有此一問,請作者解答。 答:對于結(jié)合,我的理解是,比如對于圖像分類,手工求特征之后可以把SVM替代成其他分類器。比如神經(jīng)網(wǎng)絡(luò)分類器,F(xiàn)CN for segmentation(Fully Convolutional Networks for Semantic Segmentation)這篇文章比較經(jīng)典,輸入為圖像,目標輸出為groundtruth segmentation,用一個全卷積網(wǎng)絡(luò)進行擬合。有個問題是一般圖像識別網(wǎng)絡(luò)輸出為各個類別權(quán)重(無空間信息)。這通過將全連接層視作一個全圖范圍的卷積得到。 問:文章著重于DeepLearning的應(yīng)用及其PaddlePaddle的實現(xiàn),能不能多講些PaddlePaddle這個框架的實現(xiàn)? 答:收到需求,等系列里安排吧,下次專開一個課題。 問:當前很多應(yīng)用都是監(jiān)督學(xué)習(xí),無監(jiān)督學(xué)習(xí)當前有哪些可能的方向取得實質(zhì)性進展? 答:無監(jiān)督學(xué)習(xí)的一大成功應(yīng)用是聚類,或者降維。之前的工作(比如PCA和K-Means)在深度學(xué)習(xí)中可以也有相應(yīng)的competitive 方法,比如基于信號重建的autoencoder。另外已經(jīng)有一些比較成熟的paper都是基于無監(jiān)督學(xué)習(xí)的。我們這里給的例子還都是有監(jiān)督的。Unsupervised Learning of Invariant Feature Hierarchies with Applications to Object Recognition,Unsupervised feature learning for audio classification using convolutional deep belief networks,比如這兩篇,比較老了,現(xiàn)在大部分還是有監(jiān)督學(xué)習(xí)的。 一類無監(jiān)督學(xué)習(xí)是生成模型,包括最近比較火的GAN,還有VAE,可以無監(jiān)督地生成圖片,并訓(xùn)練模型,使其生成的圖片像訓(xùn)練集中的圖片,我們也會在tutorial二期加入該內(nèi)容,敬請留意。tutorial地址:https://github.com/paddlepaddle/book。 問:深度學(xué)習(xí)的基本功都有哪些? 答:不太理解說基本功能的意思,如果要下定義的話,其實就是幫助數(shù)據(jù)更好地表達,比如原本需要手工定義的很多特征,現(xiàn)在輸入原始數(shù)據(jù)即可(文中舉了相應(yīng)的圖像和文本的例子)。基本功其實最最基本的就是編程能力,我覺得其他的都好說。數(shù)學(xué)開始不難的。后續(xù),具體問題具體分析,我的建議是,不用一開始把基本概率論都讀完的。 問:請教一個問題,深度學(xué)習(xí)在寫詩,圖像生成,新聞編寫等領(lǐng)域都有應(yīng)用,是否在音樂創(chuàng)作領(lǐng)域也有相關(guān)應(yīng)用?現(xiàn)在大約到什么水平?能否推薦些相關(guān)論文? 答:在google直接搜索“RNN-RBM”, 第二個結(jié)果是我曾經(jīng)總結(jié)這篇的博客。另外這里有6個例子,做DeepLearning生成音樂的。 問:目前我在做文本中的熱點問題分析,用的是關(guān)聯(lián)分析算法。我們遇到的難點: 1. apriori算法出來的是詞組,如何轉(zhuǎn)換成實際的問題。我們目前都是人去看、去定位問題,人工量很大,有什么機器學(xué)習(xí)的方法嗎? 2. 除了關(guān)聯(lián)分析算法,還是什么算法建議? 3. 我們之后要做長文本,關(guān)聯(lián)分析算法是否合適?有什么算法建議嗎? 答:了解了,那其實可以轉(zhuǎn)換成一個文本分類問題,你的輸入是長文本吧,無監(jiān)督很難,不過還要看你要求的精度吧。直接進行文本分類,詳見GitHub,這個是有監(jiān)督的,無監(jiān)督的,可以試下利用相鄰短句之間的關(guān)系。 問:我有一些宏觀上的問題,諸多機器學(xué)習(xí)算法中,什么場景深度學(xué)習(xí)適用,什么時候不適用,這是一個;第二個什么時候適用現(xiàn)在已有的框架,什么時候自研算法;第三,你們是否基于GPU優(yōu)化算法和程序? 答:是可以用文本相似度做聚類,也可以利用相鄰句語義相關(guān)的假設(shè),如我文中所說,一般情況下深度學(xué)習(xí)只適用于大數(shù)據(jù),如果數(shù)據(jù)量小而由于深度學(xué)習(xí)參數(shù)多會導(dǎo)致overfitting,所以小數(shù)據(jù)建議用規(guī)則,或者想辦法減少參數(shù)。第二個問題,現(xiàn)在框架太多了,建議不重復(fù)造輪子。第三個問題,是的,PaddlePaddle中神經(jīng)網(wǎng)絡(luò)各層分別有CPU和GPU的實現(xiàn)。 問:PaddlePaddle和google 的TensorFlow 比優(yōu)勢有哪些? 答:內(nèi)部人員說了不算,這里是caffe作者jiayangqing對PaddlePaddle的評價??偨Y(jié)一下: 
 問:我在這塊一個完全的新手,現(xiàn)在是前端,目前在看線性代數(shù)和python. 自己是做好花很長時間入門的準備,但是對具體的學(xué)習(xí)路線,不知道有什么好的建議。另外是先學(xué)好python然后就嘗試基于框架來入手,還是打好基礎(chǔ)學(xué)好線代,統(tǒng)計學(xué),然后在看看神經(jīng)網(wǎng)絡(luò)相關(guān)知識。 答:建議邊學(xué)Python邊入手,DeepLearning需要大量實踐經(jīng)驗,建議邊學(xué)邊干,也有助于你對神經(jīng)網(wǎng)絡(luò)的理解。 問:程序員學(xué)習(xí)數(shù)學(xué)從何開始?如何更快應(yīng)用于人工智能? 普通程序員在新一輪的人工智能浪潮里要如何定位? 答:程序員學(xué)習(xí)數(shù)學(xué)從何開始?你是要學(xué)啥?數(shù)學(xué)很泛泛…… 如何更快應(yīng)用于人工智能? 今天晚上就把PaddlePaddle的代碼clone下來,然后明天run起來,然后后天開始把tutorial過一遍,用一個月。(搭建開發(fā)環(huán)境的話,docker秒搭)從源代碼編譯要慢一些可能。。反正還是看工程經(jīng)驗了,總之,編譯的時候沒什么坑,而且有問題可以提issue。 普通程序員在新一輪的人工智能浪潮里要如何定位? 做你擅長的。 問:想請教一下,在現(xiàn)有的網(wǎng)絡(luò)效果不理想的時候,除了改進特征以外,怎么樣可以快速找到其他改進效果的突破口? 答:個人覺得改特征/數(shù)據(jù)是最快的。其他,還是具體問題具體分析,改網(wǎng)絡(luò)的話,需要具體分析是過擬合了、還是前擬合??纯匆灰黾訙p少網(wǎng)絡(luò)層,要不要加trick(比如dropout)什么的。 問:PaddlePaddle中是否有autograd功能,如果沒有的話是否會開發(fā)這個功能?目前PaddlePaddle文檔中寫著如果要增加一個新層需要把前向后向的計算都手工寫出來。而theano/TensorFlow/mxnet有autograd功能就可以只寫前向。 答:我了解到暫時沒有要開發(fā),TensorFlow是有autograd,但是TensorFlow和theano都比較慢,有一張表示PaddlePaddle和其他幾個平臺效率的benchmark。 問:在使用DeepLearning算法的時候,訓(xùn)練數(shù)據(jù)量要求是不是很大,之前在不了解的基礎(chǔ)上做的測試,數(shù)據(jù)量太少效果很差,這個訓(xùn)練數(shù)據(jù)的量要如何把握? 答:看訓(xùn)練曲線,是否過擬合。 問:訓(xùn)練數(shù)據(jù)因為一些原因,不能完全保證特征的一個較為合理的分布比例,在DL使用中人工不參與特征前提下會不會導(dǎo)致效果相對其他機器學(xué)習(xí)算法更差? 答:有可能,所以前面有建議,數(shù)據(jù)量太小的話用規(guī)則。 問:第一個作為入門者,如何去使用TensorFlow等來源人工智能軟件?第二個是在什么場合下用監(jiān)督學(xué)習(xí)?在什么場合下用無監(jiān)督學(xué)習(xí)?還是要混合用? 答:其實上官網(wǎng)都有詳細下載,編譯說明。監(jiān)督學(xué)習(xí)——有l(wèi)abel,且label充足。無監(jiān)督——沒label。混用——有l(wèi)abel的樣本不足,需要先用無監(jiān)督訓(xùn)了feature,初始化模型再用有l(wèi)abel的做監(jiān)督學(xué)習(xí)。 問:如何發(fā)現(xiàn)深度學(xué)習(xí)可以應(yīng)用的領(lǐng)域?或者說:通常的研究者,是如何聊著、聊著,就發(fā)現(xiàn)某個領(lǐng)域的問題,可以用某種DL算法來試試?但是,某一種領(lǐng)域的問題,早早的就能斷定,別試了。 答:多看paper吧,看看conclusion里有啥要解決的問題,還有別的paper是怎么噴其他paper的,就會發(fā)現(xiàn)待解決的問題,或者別人的一些思路。其實最好不建議泛泛地講,還是先有一個目標問題。然后查查paper有沒有解決, 最好的判斷是對應(yīng)該方案的數(shù)據(jù)集是否充足。 問:1)普通的java程序員入門深度學(xué)習(xí)的話需要預(yù)備些什么方面的基礎(chǔ)知識,請推薦幾本薄的入門書籍。2)大數(shù)據(jù)(如mr spark)方面的程序員進入機器學(xué)習(xí)領(lǐng)域的話 需要補充什么方面的知識,比較簡便的發(fā)展路徑是什么。3)深度學(xué)習(xí)的實際應(yīng)用的完整項目結(jié)構(gòu)是什么樣的,需要哪些方面人員? 答:1)基礎(chǔ)知識,其實感覺我們的在線教程真的就可以,很好入手。入門書籍,想了下其實還是國外博士論文最薄最好,可以參考周志華老師的《機器學(xué)習(xí)》西瓜書,對,Andrew Ng的課程也是蠻好的。2)同上。3)1. 處理數(shù)據(jù);2. 設(shè)計網(wǎng)絡(luò);3. 調(diào)參/調(diào)整網(wǎng)絡(luò);4. 如果有功能PaddlePaddle等框架中沒有實現(xiàn),自己開發(fā)?;臼沁@樣的迭代過程。 問:那對于特征分布的問題除了改訓(xùn)練數(shù)據(jù)有沒有好的建議?主要是訓(xùn)練數(shù)據(jù)中對應(yīng)的類別的特征分布是存在問題的,不是理想的狀態(tài),比如對于一些情感分類來說,屬性應(yīng)該在每個類別分布均勻,影響的是情感詞。具體來說,比如對于一些情感分類來說,屬性應(yīng)該在每個類別分布均勻,影響的是情感詞,但是實際的訓(xùn)練數(shù)據(jù)中很多情況下,屬性分布不均勻,相似的特征分布有很多,這樣導(dǎo)致了利用特征結(jié)果會有偏差。 答:就是說特征沒有判別性,比如“這場電影很好看”vs“這場電影不好看”,一字之差,如果不能判別,說明模型沒訓(xùn)好。 這個還是電影的embedding訓(xùn)得不好,比如傳統(tǒng)方法是會有這個問題的,但DL用時序模型,進行語義理解,理論上是不會這樣的,除非說,你的數(shù)據(jù)非常不均衡,比如你收集到的電影評價都為負……那只能造假數(shù)據(jù),即人工造含有“電影”的正樣本。 來一場Chat, 赴一場約會! GitChat閱讀首頁已經(jīng)上線 | 
|  |