開篇問:從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í)越覺得自己無知