第二章、 文獻回顧
第三節、 深度學習簡介
定性。Bagging 可與其他分類、回歸算法結合,提高其準確率、穩定性的同 時,通過降低結果的方差,避免過擬合的發生。
第三節、 深度學習簡介
深度學習乃是機器學習的一門分支,也是目前機器學習發展方向之主流並且 成長最快之領域,其概念乃是運用了 McCulloch& Pitts(1943)提出之人工神經網 路(Artificial Neural Networks)之技術,透過模擬人類神經網路的運作方式,但一 直受限於技術與硬體設備遲遲無法廣泛被使用,直到 2006 年 Hilton 提出了限制 玻爾茲曼機 (Restricted Boltzmann Machines, RBM)及深度信念網路 (Deep Belief Network)的概念後,也就是深度學習的前身,才被廣泛使用。
下面將舉一個例子來介紹深度學習。假設你有兩組神經元,一個乃是用來接 Neural Network)、卷積神經網路 CNN(Convolutional Neural Network)、遞迴神經 網路 RNN(Recurrent Neural Network) 、長短期記憶 LSTM(Long short-term memory)……等方法。而深度學習應用於視覺辨識、語音識別、自然語言處理、
生物醫學等領域,取得非常好的效果。而下面則將分別介紹常用之深度學習之各
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
一、 深度學習模型介紹
(一) 卷積神經網路 CNN(Convolutional Neural Network)
傳統的 DNN 於輸入資料時會忽略資料的形狀。例如:輸入影像資料時,其 通常包含水帄、垂直、顏色之三維資訊,但傳統 DNN 於輸入時乃是帄面的,也 就是一維的資料。舉例來說:如使用 DNN 來分類 MNIST 手寫數字集,其影像 乃是是水帄垂直各為 28 pixels、顏色為 1,意即(1, 28, 28)的形狀,而將此資料輸 入 DNN 時,其資料需轉為一維也就是會轉化為 784 的數據,而失去了資料原有 的形狀。
因此,如將此資料輸入 DNN 則會失去形狀之資訊,就代表失去了維度資料,
如不同影像但擁有相似的維度及像素值,且 RGB 不同的 channel 之間也可能具 有某些關連性、而遠近不同的像素彼此也應具有不同的關聯性,而這些資訊只有 在三維形狀中才能保留下來。
而,Deep learning 中的 CNN 較傳統的 DNN 多了 Convolutional(卷積)及 池化(Pooling)兩層 layer,其功用乃是用以維持形狀資訊並且避免資料量大幅 增加。在加入此兩層後,我們所看到的架構就如下圖分別有兩層的卷積和池化層,
以及一個全連結層(即傳統的 DNN),最後再使用 Softmax activation function 來輸出分類結果。
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
圖 2-3 深度神經網絡架構
(二) 長短期記憶法(Long short-term memory)
長短期記憶法乃是遞迴神經網路 RNN 的一種,乃是(Hochreiter & Schmidhuber, 1997)所提出之方法。其模型有效解決 RNN 之梯度消失及爆炸之問題,以及解決 長期依賴(Long-Term dependencies)的文題,因此在較長的數據數列上有較好的表 現。
LSTM 之架構如同錯誤! 找不到參照來源。,神經元最上面之直線串連每一 個神經元,紀錄每一個神經元的狀態,而 Sigmoid 的作用則是用來使 LSTM 有能 力刪除神經元狀態中的訊息,Sigmoid 層會輸出 0~1 的數字,使其決定有多少訊 息應該被通過,0 則表示該訊息完全不通過,1 則表示完全通過。
第一個 Sigmoid 層被稱作遺忘門(Forget Gate Layer),透過此層將決定怎樣的 訊息會被遺忘,如 Sigmoid 為 1 則表示完全保留,0 則表示完全遺忘。第二步則 分為兩部份,Sigmoid 將決定要更新的數值,然後 tanh 層則會生成一個新的數值 使其被加入該神經元中,並將其組合成新的狀態值被稱為輸入門(Input Gate
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
Layer),透過此層決定在此神經元該保存之訊息。最後,則是透過 Sigmoid 層及 tanh 相乘後決定輸出的數據。
圖 2-4 LSTM 之架構
(圖片來源:http://colah.github.io/posts/2015-08-Understanding-LSTMs/)
二、 TensorFlow 介紹
Tensorflow 乃是 Google Brain Team 所開發之深度學習 API,並且至 2015 年 11 月時開放源代碼,使所有人都可以使用 Tensorflow 的深度學習 API。Tensorflow 因乃係較為低階的深度學習 API,因此許多底層運算如:張量乘積、卷積等底層 的操作乃需自行建構。也因此,Tensorflow 之好處乃是可以自行建構各式各樣之 深度學習模型;但缺點則是需要花費許多時間編寫更多程式碼。因此許多人便以 Tensorflow 為基底開發了許多高階之深度學習 API,下面將簡述 Tensorflow 的功 能。
Tensorflow 的概念正係使用數據流圖(dataflow graph)來表示算法,因此在使 用 Tensorflow 之前,須建立一個數據流程再將數據(數據乃是以張量(Tensor)的形
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
表示 Nodes 相互連結的數據(即張量),因此進行訓練時,張量會不斷從數據流程 中的一個節點 Flow 到另一個節點,也是 Tensorflow 名字的由來。
而上文所提到之 Tensor 乃是一種幾何實體又稱為張量,0 維的張量為純量;
1 維的則為向量;2 維的則為矩陣。Flow 則是一種資料流程。
下面將對以 Tensorflow 為基礎建構之高階 API-Keras 進行介紹。
三、 Keras 介紹
Keras 乃是用於建構及訓練深度學習模型的高階 API 之一,Keras 的好處在 於使用者只需處理模型的建立、訓練及預測,許多底層的運算則是由 tensorflow 或 theano 等較為初階之 API 完成。
圖 2-5 Keras 深度學習模型
(圖片來源:Tensorflow+keras 深度學習人工智慧實務應用)
也因此 Keras 在設計模型、高級研究上具有以下優勢:
1. 方便用戶使用:Keras 乃是針對人類設計之 API,因此具有針對常見之
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
2. 模組化:將可組合再一起的模組連接在一起而建構 Keras 之模型,並且 幾乎不受限制,如:損失函數、優化器、繳活函數…等。
3. 易於擴展:可以編寫自定義之模組,並且可以創建新層及損失函數並開 發先進之模型。