《深度學(xué)習(xí)算法實踐》讀書筆記

開篇問:從word復(fù)制筆記上傳格式老是出問題,求教


1.開始

如何由工程思維轉(zhuǎn)化到算法思維

算法的開發(fā)流程:

開始-觀察-實驗-模型-觀察-更新模型-結(jié)果輸出

具體來說:

1.??明確需求

2.??觀察需求所涉及的問題

“三個重要概念:準確率(Accuracy)、召回率(Recall)、精確率(Precision),例如1000封正常郵件,500封垃圾郵件,100封重要郵件,模型一共找出100封正常郵件、400封垃圾郵件、5封重要郵件

準確率(垃圾郵件)=提取出的正確信息條數(shù)/總樣本數(shù)=400/1600

精確率(垃圾郵件)=提取出的正確信息條數(shù)/提取的信息條數(shù)=400/(400+5+100)

召回率=提取出的正確信息條數(shù)/樣本中的信息條數(shù)=400/500”

是希望召回率高還是精確率高呢,可以做一個Precision-Recall曲線來分析

3.??算法工程實踐

原則:算法為業(yè)務(wù)服務(wù),不要為了算法而算法

4.??測試

如何評價一個模型,除了3個主要指標,還有F1-Measure,表示召回率和準確率的調(diào)和均值,F(xiàn)1=2PR/(P+R)

算法研發(fā)的方法論:CRISP-DM、SEMMA

以SEMMA為例:流程圖(省略)

分為數(shù)據(jù)取樣-數(shù)據(jù)特征探索、分析和預(yù)處理-問題明確化、數(shù)據(jù)調(diào)整和計算選擇-模型的研發(fā)、知識的發(fā)現(xiàn)-模型和知識的解釋和評價

“需要注意模型衰退的問題,也就是隨著數(shù)據(jù)更新,模型準確率下降。算法要不斷更新“

觀察變化和不變是最重要的

2.文本分析實踐

·??????關(guān)于郵件分類問題的復(fù)盤

特征提取是第一步

垃圾郵件的標題一般是什么樣的

先用jieba分詞包做斷句,并進行去除非法字符等預(yù)處理

然后選用特征提取的算法

我們首先想到的是貝葉斯、SVM、決策樹等,但準確率不高,于是考慮CNN做文本分類,步驟如下:

第一步選取最長的句子作為向量長度,其他句子長度

第二步將訓(xùn)練集和測試集分開訓(xùn)練

·??????關(guān)于文本情感分類

如何用算法思維解決問題

分析需求,情感傾向可以暫考慮三類:支持、反對、中性。情感分類方法主要兩類:基于情感詞典的方法和基于機器學(xué)習(xí)的方法,對比兩種方法的優(yōu)劣,發(fā)現(xiàn)綜合判斷是必要的,機器學(xué)習(xí)的數(shù)據(jù)集要根據(jù)不同行業(yè)確定,這樣可以提高準確率

·??????關(guān)于文本深度特征提取

自然語言數(shù)學(xué)化是第一步

文本的深度特征表示方法:

詞典法將所需處理的文檔所有詞進行剔重、排序,形成一個詞典,這樣可以用集合表示一句話

One-HOt把每個詞表示成一個向量,向量長度為句子長度,在向量中該詞出現(xiàn)的位置填1,其他位置填0

n-gram組的思想,1gram表示一個單詞,n-gram表示按長度n切分原詞得到的詞段

分布表示和詞嵌入特征表示將所有詞分散在一個平面中,詞的坐標已知,依靠平面位置可以得到詞和詞的關(guān)系;

在詞特征表示之后研究句子特征表示

有兩種方法:傳統(tǒng)的VSM方法以及基于神經(jīng)網(wǎng)絡(luò)表示法

主要研究神經(jīng)網(wǎng)絡(luò)表示

基于RNN的方法是將句子中的詞逐個輸入到模型中,結(jié)束時取隱藏層的輸出即可。

基于CNN的方法是將句子中的詞的向量表示拼接成一個矩陣,然后進行卷積,最后得到一個向量表示。深層CNN讓深度語義特征提取取得進步。

3.對話機器人

觀察并理解人類對話

如何建立龐大的QA(問答組)

爬取網(wǎng)上的數(shù)據(jù)(1.定義一個爬蟲;2.抽取答案;3.選取答案)

如何讓機器回答一個具體的問題:

1.??問題分類、問題理解

2.??求問題和檢索答案段落的文本相似性,答案搜索和答案提取

3.??判斷答案是否由一個段落蘊含(蘊含關(guān)系,為了評價從一段文字中得到的推論是否符合原文的本意),選擇合適的答案

檢索式模型(采用人工制作的回復(fù)庫)

生成式模型(可以重新提及輸入中的實體并帶給你對話的感覺)


如何判斷對話準確性

BLEU評測方法

4.? 視覺識別

表情識別流程圖

Dlib中包含CNN

Openface庫專門針對人臉檢測和分類

深度卷積網(wǎng)絡(luò)(CNN)

演變路徑為(1)更深的網(wǎng)絡(luò);(2)增強卷積的功能;(3)目標檢測;(4)反卷積

反卷積主要用來還原卷積過程中的某一層的過程,將卷積過程可視化

生成式對抗網(wǎng)絡(luò)(GAN):建立一個學(xué)習(xí)模型,模擬生成模型和判別模型,兩者不斷競爭提高兩個模型的能力,LeCun評價GAN是20年來機器學(xué)習(xí)領(lǐng)域最酷的想法)

更深的網(wǎng)絡(luò)——>深度太深帶來網(wǎng)絡(luò)的退化,性能也逐步降低——>加入殘差

通過的提高精度的方法:

1.聯(lián)合模型:(1)將深度網(wǎng)絡(luò)視為單一基類分類器;(2)使用深度網(wǎng)絡(luò)來提取特征,并用n-1層的輸出作為分類器的輸入

對于第二種方法:嘗試以ReNet50、Inception v3、Xception三個模型為基礎(chǔ)模型,在n-1層做特征合并,最后輸出表情分類,網(wǎng)絡(luò)結(jié)構(gòu)如下:

2.DSD(Dense Sparse Dense)訓(xùn)練方法

具體步驟如下:

(1)? 初始的完整網(wǎng)絡(luò)訓(xùn)練(Dense):目的是找到需要剪枝的單元或權(quán)重;

(2)? 剪枝后網(wǎng)絡(luò)訓(xùn)練:也就是稀疏結(jié)構(gòu)(Sparse)訓(xùn)練根據(jù)第一步的結(jié)果,選擇需要剪枝的單元或者權(quán)重去除,剪枝后再次進行網(wǎng)絡(luò)訓(xùn)練

(3)? 再恢復(fù)到完整網(wǎng)絡(luò)訓(xùn)練(Dense):將所有剪枝的單元權(quán)重恢復(fù),初始賦值為0,再次進行訓(xùn)練


如何增加訓(xùn)練數(shù)據(jù)?

通過隨機變換圖像的大小、顏色、主體的位置等來將一幅圖像增加到多幅圖像,相當(dāng)于將數(shù)據(jù)擴展了n倍。

如何防止過擬合?

Dropout:在模型訓(xùn)練時隨機讓網(wǎng)絡(luò)的某些隱含層節(jié)點的權(quán)重不工作,人為得隨機讓幾個神經(jīng)元失效

其他經(jīng)驗

l? 轉(zhuǎn)化為RGB的色彩空間更利于學(xué)習(xí)

l? 一般使用全連接層用于最后輸出

l? 訓(xùn)練數(shù)據(jù)的干凈程度比數(shù)據(jù)大小更重要

l? 如果不能增加圖像尺寸,減少卷積層的stride也可以達到同樣的提取特征的效果



目標檢測

第一階段:傳統(tǒng)思路

區(qū)域選擇-特征提取-分類器

第二階段:基于R-CNN的深度學(xué)習(xí)目標檢測算法

R-CNN算法流程:

1.??利用Selective Search算法輸入圖像中提取200個左右的區(qū)域作為CNN的輸入

2.??將每個Region Proposal縮放為227*227的大小并輸入到CNN

3.??將每個Region Proposal 提取到的CNN特征輸入到SVM進行分類


該方法缺點是算法步驟繁瑣,耗時

SPP-NET算法:

只對圖像提取一次卷積層特征,然后將Region Proposal提取的候選區(qū)域在原圖的位置映射到卷積層特征上,從而節(jié)省時間


Fast R-CNN(ICCV2015)


FaseterR-CNN(NIPS2015)

其核心是RPN和權(quán)值共享

權(quán)值共享(RPN和Fast R-CNN共享卷積層的特征)

第三階段:基于回歸方法的深度學(xué)習(xí)目標檢測算法

回歸:給定輸入圖像,直接在卷積層的多個位置回歸出這個位置的類別,目標邊框和置信度

YOLO算法:

端到端的訓(xùn)練過程,直接在卷積層的多個位置回歸出這個位置的類別,目標邊框,從而節(jié)省了大量提取邊框的時間,速度達到實時監(jiān)測的條件。

缺點在于檢測精度不高

SSD算法:

SSD結(jié)合了YOLO的回歸思想和Faster R-CNN的anchor機制,從而解決Faster R-CNN速度慢和YOLO精度不準的問題


算法應(yīng)用:

>藝術(shù)風(fēng)格畫

(2016這個算法剛出來的時候,一個年輕人推出一個叫Prisma的APP)

>看圖說話:用文字描述圖像

(BiRNN+CNN)

>語音識別

(RNN+CNN)


5.? 強化學(xué)習(xí)實踐

強化學(xué)習(xí)幾個概念:

以吃豆子游戲為例

環(huán)境( environment ):邊界或者說移動范圍,還有一些規(guī)則,比如規(guī)定吃到東西單細胞生物就可以長大,吃到病毒就掛掉重新開始

獎勵( rewards ):獎勵有兩個,一個是吃到微生物就可以成長,定義該獎勵是正值;另一個是吃到病毒就減分或掛掉,定義該獎勵為負值

動作( actions ):允許的單細胞生物的動作

MDP過程(馬爾科夫過程)


狀態(tài)(states)

動作集(actions)

狀態(tài)轉(zhuǎn)移概率(Psa)

獎勵函數(shù)(reward)

折扣因子(discount

factor,gamma):對未來獎勵的不確定的表示

強化學(xué)習(xí)和最優(yōu)路徑選擇的不同在于

強化學(xué)習(xí)不能窮盡所有的路徑,因為根本看不到最終的狀態(tài)


理解Q網(wǎng)路

Q學(xué)習(xí)過程:

def learnQ(self,

state, action, reward,value)

oldv=self.q.get((state,action),None)

if old is None:

self.q[(state,action)]=reward

else:

self.q[(state,action)]=oldv+self.alpha*(value-oldv)


模擬物理世界:OpenAI

openAI是為強化學(xué)習(xí)創(chuàng)造了一個虛擬的世界,這個世界模擬了現(xiàn)實生活中的各種物理規(guī)律,在這里智能體才能很好完成交互。

如何用openAI實現(xiàn)一個DQN:

「DQN非常有用,這個也許是可以應(yīng)用在笑臉識別中的,通過不斷識別笑臉強化學(xué)習(xí)過程,具體怎么實現(xiàn)呢?」

DQN過程的圖表化

使用TensorBoard進行可視化


關(guān)于強化學(xué)習(xí)的思考

1.?? 訓(xùn)練數(shù)據(jù)的獲取方式:強化學(xué)習(xí)的任務(wù)是學(xué)習(xí)一個新的目標函數(shù),其訓(xùn)練信息是從跟環(huán)境的互動而得到

2.?? 探索:學(xué)習(xí)器面臨一個權(quán)衡過程,是選擇新數(shù)據(jù)還是選擇已經(jīng)學(xué)習(xí)過了

3.?? 目標:強化學(xué)習(xí)的數(shù)據(jù)是序列的交互的,并且有反饋,本質(zhì)是一個決策模型,監(jiān)督學(xué)習(xí)更偏向于在固定數(shù)據(jù)中尋找答案

4.?? 長期學(xué)習(xí):強化學(xué)習(xí)需要使用先前獲得經(jīng)驗和知識在學(xué)習(xí)新任務(wù)時減少樣本復(fù)雜度,并且整個過程是不停迭代的

5.?? 強化學(xué)習(xí)具有自我進化能力


知識的形成要素:

記憶網(wǎng)絡(luò)的發(fā)展

LSTM(長短時模型)通過隱行的共享記憶結(jié)構(gòu),不完全得實現(xiàn)知識存儲

NTM(神經(jīng)圖靈機)包含神經(jīng)網(wǎng)絡(luò)控制器和存儲器組,模擬大腦皮層的記憶功能,但是只能接受少量新任務(wù)觀測

「仿生學(xué)非常值得研究,里面有促進應(yīng)用學(xué)科發(fā)展的力量」

MANN相比于NTM在每次讀寫存儲過程會選擇最近利用的存儲位置


終極理想:終身學(xué)習(xí)

讓機器能夠自主得終身學(xué)習(xí)

一個終身學(xué)習(xí)系統(tǒng)包含四個基礎(chǔ)部分:

知識庫(Memory)

控制器(Controller)

知識轉(zhuǎn)移或知識應(yīng)用(Read)

知識歸納(Write)

6.? 預(yù)測和推薦

股票預(yù)測應(yīng)用

「有空務(wù)必嘗試」

1.?? 先提取個股數(shù)據(jù)

(1)? 股票的日線和30日線

(2)? 輿論數(shù)據(jù):論壇發(fā)帖數(shù)據(jù)

(3)? 經(jīng)濟環(huán)境數(shù)據(jù)

預(yù)測第二天漲跌用[0,1]表示漲,[1,0]表示跌

2.?dāng)?shù)據(jù)處理

Csv格式保存數(shù)據(jù)

2.?? 模型搭建:圈定MLP、LSTM、xgboost、多層卷積、

【按照作者改進的量化投資模型實際測試產(chǎn)生6%以上的盈利】


思考

至此完成本書的閱讀

這本書應(yīng)該是我目前讀過實用性最強、最清晰的介紹類書籍

但是目前只是形成了完整的知識架構(gòu),對具體算法缺少程序級的理解

需要認真讀程序,逐個理論攻破

越學(xué)習(xí)越覺得自己無知

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容