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