壹.人工智慧模型介紹
一、 多層感知器(Multilayer Perceptron, MLP)
感知器可以相互連接在一起構成多層感知器(Multi-Layer Perception,簡稱MLP)。多層感知器一般有很多個層次,可看成是人工神經網絡的基本形式。單個感知器具有一定的擬合能力,因而多層感知器有更為強大的擬合能力,為複雜的問題
感知器可以相互連接在一起構成多層感知器(Multi-Layer Perception,簡稱MLP)。多層感知器一般有很多個層次,可看成是人工神經網絡的基本形式。單個感知器具有一定的擬合能力,因而多層感知器有更為強大的擬合能力,為複雜的問題
1 .多層感知器結構
多層感知器的輸入也是一個向量,即( 1,x1,…xn ),這跟單個感知器的輸入是一樣的。
在隱藏層,每一個節點都相當於一個感知器。因為每一個感知器都有一些參數,所以整個多層感知器的參數數量是比較多的,相當於感知器的很多倍。在這裡需要說明的是多層感知器的隱含層數量是可以調整的,當隱含層數量很多時,就是深度的神經網絡
輸出層的節點也可以是感知器,還可以根據實際的應用做出調整。比如在分類任務中,多層感知器的輸出層經常是一個softmax函數。
多層感知器的輸入也是一個向量,即( 1,x1,…xn ),這跟單個感知器的輸入是一樣的。
在隱藏層,每一個節點都相當於一個感知器。因為每一個感知器都有一些參數,所以整個多層感知器的參數數量是比較多的,相當於感知器的很多倍。在這裡需要說明的是多層感知器的隱含層數量是可以調整的,當隱含層數量很多時,就是深度的神經網絡
輸出層的節點也可以是感知器,還可以根據實際的應用做出調整。比如在分類任務中,多層感知器的輸出層經常是一個softmax函數。
【圖四】三個隱藏層的多層感知器示意圖
2 .全連接
多層感知器的隱藏層節點的連接經常是「全連接」的,即把上一層節點的輸出全部連接在一起,作為下一層節點的輸入部分。「全連接」雖然比較簡單,但是在神經網絡中經常用到這個感念,因此還需要注意。
多層感知器的隱藏層節點的連接經常是「全連接」的,即把上一層節點的輸出全部連接在一起,作為下一層節點的輸入部分。「全連接」雖然比較簡單,但是在神經網絡中經常用到這個感念,因此還需要注意。
【圖四】全連接示意圖
3. drop out
多層感知器具有較強的擬合能力,但是在多次訓練之後可能會出現「過擬合」的現象。為了應對多層感知器的「過擬合」,可以對其進行drop out處理。所謂的drop out指的是用人為的方式,故意關閉掉多層感知器的一些節點,也就是使得這些節點失效。Drop out處理如下圖所示:
多層感知器具有較強的擬合能力,但是在多次訓練之後可能會出現「過擬合」的現象。為了應對多層感知器的「過擬合」,可以對其進行drop out處理。所謂的drop out指的是用人為的方式,故意關閉掉多層感知器的一些節點,也就是使得這些節點失效。Drop out處理如下圖所示:
【圖六】多層感知器示意圖
4 .神經網絡的訓練
多層感知器是最基礎的神經網絡模型,在使用之前需要先對它進行訓練,也就是利用數據樣本去調節其參數。當多層感知器的輸出和數據樣本的標記值差異非常小的時候,可以認為這個多層感知器訓練好了。神經網絡的訓練一般要經過很多的輪次,每個輪次都有前向傳播和反向傳播的過程,並且結合梯度下降的方式來調節參數。
多層感知器是最基礎的神經網絡模型,在使用之前需要先對它進行訓練,也就是利用數據樣本去調節其參數。當多層感知器的輸出和數據樣本的標記值差異非常小的時候,可以認為這個多層感知器訓練好了。神經網絡的訓練一般要經過很多的輪次,每個輪次都有前向傳播和反向傳播的過程,並且結合梯度下降的方式來調節參數。
【圖七】神經網路的訓練主藥包括前向傳播與反向傳播兩個過程
二、 卷積神經網絡(Convolutional Neural Network, CNN)
卷積神經網絡(Convolutional Neural Network)簡稱CNN,CNN是所有深度學習課程、書籍必教的模型(Model),CNN在影像識別方面的威力非常強大,許多影樣辨識的模型也都是以CNN的架構為基礎去做延伸。另外值得一提的是CNN模型也是少數參考人的大腦視覺組織來建立的深度學習模型,學會CNN之後,對於學習其他深度學習的模型也會很有幫助,本文將為示範如何使用CNN來達成99%正確度的手寫數字辨識。
卷積神經網絡(Convolutional Neural Network)簡稱CNN,CNN是所有深度學習課程、書籍必教的模型(Model),CNN在影像識別方面的威力非常強大,許多影樣辨識的模型也都是以CNN的架構為基礎去做延伸。另外值得一提的是CNN模型也是少數參考人的大腦視覺組織來建立的深度學習模型,學會CNN之後,對於學習其他深度學習的模型也會很有幫助,本文將為示範如何使用CNN來達成99%正確度的手寫數字辨識。
【圖八】皆為CNN架構範例
1.Convolution Layer卷積層
卷積運算就是將原始圖片的與特定的Feature Detector(filter)做卷積運算(符號⊗),卷積運算就是將下圖兩個3x3的矩陣作相乘後再相加,以下圖為例 0*0 + 0*0 + 0*1+ 0*1 + 1 *0 + 0*0 + 0*0 + 0*1 + 0*1 =0
卷積運算就是將原始圖片的與特定的Feature Detector(filter)做卷積運算(符號⊗),卷積運算就是將下圖兩個3x3的矩陣作相乘後再相加,以下圖為例 0*0 + 0*0 + 0*1+ 0*1 + 1 *0 + 0*0 + 0*0 + 0*1 + 0*1 =0
貳.使用軟體介紹: Keras
一、Keras的運作方式
Keras是一個(model-level)模型級的深度學習程式庫, Keras只處理模型的建立,訓練,預測…等功能。深度學習底層的運作。例如:張量(矩陣)運算, Keras必須配合使後端引擎進行運算。目前Keras提供支援多種後端引擎:Theano ,tensorflow與CNTK指令
Keras是一個(model-level)模型級的深度學習程式庫, Keras只處理模型的建立,訓練,預測…等功能。深度學習底層的運作。例如:張量(矩陣)運算, Keras必須配合使後端引擎進行運算。目前Keras提供支援多種後端引擎:Theano ,tensorflow與CNTK指令
二、 Keras深度學習程式庫特色
簡單快速的建立原型prototyping: Keras具備友善的使用者見面,模組化設計,可擴充性。已經內建各式類神經網路層級,例如卷積CNN,RNN,可以幫助快速建立神經網路模型。透過後端引擎:Theano與Tensorflow,可以在CPU與GPU運行。以Keras開發的程式碼,更簡潔,更可讀性,更容易維護,更具生產力Keras的說明文件非常齊全,官網上提供的範例,也非常淺顯易懂。
簡單快速的建立原型prototyping: Keras具備友善的使用者見面,模組化設計,可擴充性。已經內建各式類神經網路層級,例如卷積CNN,RNN,可以幫助快速建立神經網路模型。透過後端引擎:Theano與Tensorflow,可以在CPU與GPU運行。以Keras開發的程式碼,更簡潔,更可讀性,更容易維護,更具生產力Keras的說明文件非常齊全,官網上提供的範例,也非常淺顯易懂。
Keras深度學習簡介
Keras是一個開放原始碼,高階深度學習程式庫,使用Python編寫
1.為何要用Keras? Keras可以用最少的程式碼,花費最少的時間,就可以建立深度學習的模型,並進行訓練,評估準確率,進行預測。相對的如果使用Tensorflow這樣的程式庫,雖然可以控制各種深度學習模型的細節,但需要更多的程式碼,花費更多的時間開發,才能達成。
2.Keras的運作方式 Keras是一個(model-level)模型級的深度學習程式庫, Keras只處理模型的建立,訓練,預測…等功能。深度學習底層的運作。例如:張量(矩陣)運算, Keras必須配合使後端引擎進行運算。目前Keras提供支援多種後端引擎:Theano ,tensorflow與CNTK相對指令。
Keras是一個開放原始碼,高階深度學習程式庫,使用Python編寫
1.為何要用Keras? Keras可以用最少的程式碼,花費最少的時間,就可以建立深度學習的模型,並進行訓練,評估準確率,進行預測。相對的如果使用Tensorflow這樣的程式庫,雖然可以控制各種深度學習模型的細節,但需要更多的程式碼,花費更多的時間開發,才能達成。
2.Keras的運作方式 Keras是一個(model-level)模型級的深度學習程式庫, Keras只處理模型的建立,訓練,預測…等功能。深度學習底層的運作。例如:張量(矩陣)運算, Keras必須配合使後端引擎進行運算。目前Keras提供支援多種後端引擎:Theano ,tensorflow與CNTK相對指令。
【圖十三】常用的三種後端引擎