機器的深度學習究竟有多“深”?
每次提起深度學習,沒有接觸過的人會處于一種模糊臆想狀態,認為其遙不可及。本文旨在摘下深度學習“高大上”的面紗,用一些簡化的模型和通俗的比喻闡述其中的概念。
深度學習由來
1980年福島邦彥提出的感知機,但由于計算代價過大,,并且“神經網絡”這個名詞聽起來和生物相關,投資者們紛紛拒絕,導致未能進行實際的應用。
經過一段漫長的沉寂與暗中生長,2006年Geoffrey Hinton等人在Science雜志上發表Deep Belief Networks的文章。為了能更好地騙經忽悠信徒,率先使用了“深度”這個詞,從此開啟了深度神經網絡的新時代。
深度學習的本源其實就是神經網絡的在機器學習中的應用,它是機器學習的子集,如下圖:
機器學習
我們日常做數學題,是已知公式(規則),拿到題目(數據)去求答案;機器學習正好相反,它是給出數據和答案,需要機器去學習規則。
機器學習,尤其是深度學習,呈現出相對較少的數學理論,并且是以工程為向導的。
這是一門需要上手實踐的科學,想法更多地是靠實踐來證明,而不是靠理論推導。
機器學習分類:
- 無監督式學習(回歸、分類)
- 有監督式學習(回歸、分類)
- 半監督式學習(聚簇)
我們用養孩子的比喻來理解機器學習。
無監督式學習:孩子生出來直接散養,讓孩子自己去面對世界建立禮義廉恥的價值觀。把小孩和貓咪狗狗放在一塊,經過一段時間,他會知道貓和狗是不同類型的東西,但沒有人為引導,他不知道“貓”“狗”這樣明確的定義。
由于事物具有多面性和復雜性的特點,僅通過有限的特征進行無監督式學習,容易出現與人類期望不符的結果,例如“長頭發的人和長頭發的狗”,如下圖。這種方式是把具有相似性的事物歸為一類(聚簇),分離結果只能通過特征的表象,缺點是結果容易跑偏,不符合期望。
(圖片來源于網絡)
有監督式學習:和無監督式學習相反,孩子出生后,虎爸虎媽手把手教學,興趣班疊加補習班,任何事情都直接給出正確答案。
經過一系列應試教育,孩子成績非常優秀(有監督學習的識別率普遍比無監督高許多)。但一旦遇到稍微超綱的問題,立馬懵逼,這就是“過擬合”。而且,標簽的獲取常常需要極大的人工工作量,所以這種方式多用于有明確結果的數據有限的集合。
半監督式學習介于以上兩者之間,小時候親力親為教導小孩,長大后讓他基于已有的基本倫理和社會道德去接觸大千世界。
所以,半監督式學習會有小部分已標注的訓練集用于初始化學習,而留下一大部分未標注的訓練數據讓其自我學習。
深度學習
先回憶下中學的生物知識,神經反射接受信息的過程:感受器(肌肉)->反射弧->中樞神經系統。
我們識別一個人通過模糊到具體的特征,如衣著、頭發、臉、眼睛、眉毛等特征,每個特征由一個神經元判斷,深度學習就是通過一個個特征組不斷學習識別出事物。
深度學習的“深”相對“淺”而言,優點是慢慢深入,前期容易篩選出有用的數據集,結果較準確。
如文章開頭所說,深度學習是神經網絡的在機器學習中的應用,其技術定義:學習數據表示的多級方法。也可以把深度網絡看做多級信息蒸餾操作:信息穿過連續的過濾器,其純度越來越高(即對任務的幫助越來越大),即權重越高。
權重怎么理解?
假設我們通過衣著判斷性別,分為四類:穿褲子的女生、穿裙子的女生、穿褲子的男生、穿裙子的男生。通過日常經驗知道,穿裙子較大概率是女生,所以資源不應該平均分配,也就是權重不同。
深度網絡可以先提取“衣著”作為一層神經元的篩選,如果恰好篩選出為裙子,那么在篩選出來的集合里,我們已經可以大概率的認為這個樣本90%的概率是女性了。
人會根據外界反饋調節自身的狀態,深度學習也是。在深度學習中,衡量實際與期望誤差的函數稱為損失函數,根據損失函數的損失值反過來優化調整權重,以達到局部最優解。
(深度學習的“學習”方式)
常見的深度學習模型:
- 有監督的神經網絡
- 神經網絡(Artificial Neural Networks)和深度神經網絡(Deep Neural Networks),ANN&DNN
- 循環神經網絡(Recurrent Neural Networks)和遞歸神經網絡(Recursive Neural Networks),RNN
- 卷積網絡(Convolutional Neural Networks),CNN
- 無監督的神經網絡
- 深度生成模型(Deep Generative Models),DGM
- 玻爾茲曼機(Boltzmann Machines)和受限玻爾茲曼機(Restricted Boltzmann Machines),BM&RBM
- 深度信念網絡(Deep Belief Neural Networks),DBNN
- 生成式對抗網絡(Generative Adversarial Networks),GAN
不同的深度學習模型有自身的優缺點,有的擅長處理分類任務,有的擅長處理存在前后依賴關系、有序列關系的數據,有的擅長處理格狀結構化的數據等等,開發會按需選擇。
對常見的損失函數“平方誤差函數”、權重的自我學習“梯度下降法”(尋找局部最優解)、不同類型的深度學習感興趣的朋友可以在知乎找資料或閱讀一些相關書籍。
深度學習應用舉例
刷資訊APP時,低俗、標題黨等文章易吸引眼球但體驗差,這類內容若泛濫會嚴重傷害用戶體驗,所以對這類內容應該進行打壓,深度學習可以幫上忙。
以低俗識別為例,俗即“庸俗、低俗、媚俗”,指某人某事不入流、情趣低下或微色情、low等,社會、情感、搞笑、娛樂等類別特別容易出現,低俗內容過多會影響閱讀體驗和流量生態的良性循環。
如何應用深度學習找出低俗內容呢?
第一步:定義低俗和制定標準(case輔助)
第二步:給機器提供種子詞(具有分值的關鍵詞)+分類等特征+部分人為規則+訓練集(標題+摘要+正文等文本)
(種子詞示例)
(訓練集正樣本示例)
第三步:機器深度學習和調參
例如采用CNN(卷積神經網絡),深度學習中根據損失函數調整特征權重或訓練樣本。
第四步:驗證集的效果測評
低俗文章的識別屬于二分類評估,每個評估對象有唯一的結果,YES或NO。評估留意三大指標:準確率,精確率,召回率。
- 準確率:機器識別正確的樣本數/樣本總數(備注:正確識別包含把低俗樣本識別為色情,把非低俗樣本識別為非低俗兩種情況);
- 精確率:機器正確識別出的低俗樣本數總和/機器識別出的低俗樣本總;
- 召回率:機器正確識別出的低俗樣本數總和/低俗樣本總數。
(以上數據僅做理論說明,不做實際參考)
- 準確率=(5000-40-11)/5000=98.98%
- 精確率=140/180=77.78%
- 召回率=140/151=92.72%
低俗樣本對于大盤來說,濃度很低,所以,評估準確率沒有多大意義,更主要是看精確率和召回率。更多經典例子來自疾病試紙和驗孕試紙(有興趣的朋友可以查閱一下),所以統計的時候需要注意本體的對象。
第五步:上線或反饋badcase
當模型效果達預期(召回率和精確率呈現負相關,最佳組合可用 F Score求得,見文末)即可上線做“苦工”,若不達預期,根據badcase繼續優化。
附:F Score,[0,1],值越大表示效果越好
F1 Score:召回率和精確率同等重要
Fβ Score:召回率和精確率不同等重要
- F2:召回率的重要程度是準確率的2倍
- F0.5:召回率的重要程度是準確率的一半
(β大于0)
關于F Score,詳細可查閱:https://stats.stackexchange.com/questions/221997/why-f-beta-score-define-beta-like-that/221999#221999
參考文獻:《Deep Learning with Python》[美]弗朗索瓦·肖萊 著;張亮 譯
本文由 @張小喵Miu 原創發布于人人都是產品經理,未經作者許可,禁止轉載。
題圖來自Unsplash,基于CC0協議。
666