不知不覺,鐵人賽的賽程已經來進行了一半,每天發文使得生活過得非常充實。也感謝這裡的許多高手發表優質文章,讓第一次參賽又是跨IT領域的自己感到無比熱血。大家都辛苦了,一起撐過這三十天吧!回歸正題,在前十五天我們將焦點圍繞在自然語言處理的基礎上,從 rule-based 的前處理,到 statistical approach 的語言模型,接著使用類神經網絡架構來建造 word embedding 賦予降低詞彙維度編碼的同時又能記錄語意距離的資訊。由於比賽後半部分的規劃著重在基於神經網絡架構機器翻譯系統的開發實務,因此在比賽進行到中點時,花一天的時間來回顧深度學習的概念以及整理在自然語言處理任務中經常被使用的深度學習網絡。
深度學習( deep learning )與機器學習( machine learning )同屬人工智慧( artificial intelligence, AI )的範疇,機器學習的概念涵蓋了深度學習。兩者的差別在於傳統的機器學習必須仰賴人工進行降低資料維度(例如非結構化的影像或聲音訊號原始資料維度非常高)的特徵篩選,使用例如 PCA、ICA、LDA 等技術;而深度學習則是藉由一層又一層的神經網絡擷取出關鍵資料特徵,實現特徵提取( feature extraction )自動化。
Feature engineering is the process of transforming raw data into features that better represent the underlying problem to the predictive models, resulting in improved model accuracy on unseen data.
人類的大腦中互相連結的神經元,接收到輸入訊號的刺激,並在刺激跨越閾值之後做出反應。類神經網絡( artificial neural networks, ANN )由多層神經元( neuron )所構成,接收資料特徵的稱為輸入層,位於網絡最末端輸出向量直的稱為輸出層,而中間的單層或多層神經元是為隱藏層。每個神經元會接收前一層神經元傳來的訊號,經過加權( weight )再加上偏置向量( bias)將各個訊號彙總起來,再經由激活函數( activation function )決定是否要做出反應,也就是將訊號繼續往下一層神經元傳播。一般來說,當隱層藏的層數僅有一至兩層,該類神經網絡被認為是淺層網絡,而當隱藏層更多時,則是為深度神經網絡,深度學習正是得名於之。
習慣上我們將資料的特徵記為 X ,標籤則為 y 。機器學習的目標乃是找出自變數 X 與應變數 y 之間的函數 f 關係,只是這個函數關係 f 可能極其複雜,甚至無法直接以封閉形式被寫出來。因此找尋函數 f 的其手法為最小化訓練資料標籤 ground truth label y 減去預測標籤 predictive label y之間的誤差( error )所定義的損失函數( loss function )。在藉由梯度遞減( gradient descent )演算法求出損失函數的最小值的同時,會不斷修正構成函數 f 的參數。而對於神經網絡來說,模型的學習也是尋找特徵向量 X 與標籤 y 的過程,在訓練的過程中神經元上的weight以及bias會藉由反向傳播( backpropagation )會不斷被調整,直到損失函數足夠小或是精確度夠高。
圖片來源:Prediction of wind pressure coefficients on building surfaces using Artificial Neural Networks
相較於傳統的機器學習,深度學習藉由神經網提取出資料的特徵:
靜態的圖像資料為一種分別由長、寬及通道數所構成的三階張量( rank-3 tensor ),其原始資料特徵眾多,藉由過濾器神經元與圖像進行捲積運算( convolution ),萃取出圖像特徵的同時也降低圖像的維度,達到 feature extraction 。隨著圖像經過愈多捲積層,愈細微的特徵會被抽取出來(通常該特徵人類已經無法辨識),傳入全連接層彙整起來後再經過分類器激活函數 softmax 輸出屬於各個類別的機率值。
CNN的一般架構:
圖片來源:A Deep Similarity Metric Method Based on Incomplete Data for Traffic Anomaly Detection in IoT
CNN中一層又一層的捲積層將數字圖像的特徵由粗略到細緻被提取出來:
當今天要處理的資料具有次序性,例如由文字序列組成的句子、由一幀幀圖像形成的影片、或是聲音訊號等,無法借助CNN來提取特徵,這時具有接收序列資料的遞歸神經網絡就展現其威力了。RNN由每個cell所串連起來,每個cell將會依照順序記錄輸入特徵與輸出的標籤的對應關係,記憶在內部狀態( hidden state ),再將內部狀態的權重傳遞至下一個cell。
類神經網絡有效率地處理次序性的資料,在自然語言處理中廣泛被使用來進行建構自動翻譯器、圖像描述( image captioning )或是建構語言模型等任務。
傳統的RNN會有梯度消失( vanishing gradient )的問題,使得反向傳播無法持續學習,因此又誕生了其改良版本的長短期記憶(LSTM)與門控循環單元(GRU)等次序性類神經網絡模型,被廣泛用於解決自然語言處理任務。
今天只針對深度學習的概念進行簡介,由於時間關係並未著墨於細部的運算原理。明天我們將主題鎖定在自然語言處理的翻譯任務,它是運用RNN衍生模型的好實例。期待明天的到來,晚安!