人工智慧(AI)認識入門篇-使用AI辨識人類、貓、狗

姜志民 2017/05/22 19:25:59
4298






主題

人工智慧(AI)認識入門篇-使用AI辨識人類、貓、狗

介紹

人工智慧(AI)這個名詞常常會聽到,但大部分的人卻對AI的運作非常陌生,本文章將會藉由簡單例子來解說,不會涉及數學公式與太深奧的理論,會以淺顯易懂方式讓各位讀者都能了解。


作者

姜志民

版本

1.0

產出日期

2017 / 05/ 20





1 目的

人工智慧(AI)這個名詞常常會聽到,但大部分的人卻對AI的運作非常陌生,本文章將會藉由簡單例子來解說,不會涉及數學公式與太深奧的理論,會以淺顯易懂方式讓各位讀者都能了解。




2 機器學習運作 VS 人腦運作

本文章將介紹機器學習(Machine Learning,縮寫ML),而機器學習是AI的一個分支,下圖表是「機器學習」與「人腦」運作的比較。



類型

運作說明

機器學習

1.收集大量歷史資料。

2.使用演算法(神經網路、決策樹、...等),並搭配歷史資料進行訓練。

3.在進行訓練後,會得到一個模型(model)。

4.將新的資料輸入後並利用訓練過後的模型(model)進行預測。

5.預測後會得到最有可能的結果。

人腦

1.人類在生活上得到大量經驗。

2.人類將經驗進行分析歸納。

3.在進行分析歸納後,會得到規則。

4.遇到新的問題,會利用已學得規則進行預測。

5.預測後會得到最有可能的結果。




3 Deeplearning4j

目前市面有許多專門在做AI的Open Source,有Deeplearning4j、Apache OpenNLP、TensorFlow …等,在後續將會使用Deeplearning4j來做實際操作。


Deeplearning4j (https://deeplearning4j.org/ )是一套Java Open Source,可以建構、訓練與部署神經網路(Neural Network,縮寫NN),而神經網路是機器學習其中演算法之一。




4 監督式學習 VS 非監督式學習

「機器學習」的學習訓練方式可以分為「監督式學習」與「非監督式學習」兩種,下表是兩者的說明。


類型

說明

例子

監督式學習

先將大量歷史資料,進行分類並標上「標籤(lable)」,然後再使用演算法,進行模型(model)的訓練。

收集動物的特徵後,並明確標示出人類、貓、狗的特徵後,在使用演算法進行模型(model)的訓練。

將已經訓練過的模型(model),輸入「四條腿」、「喵喵聲」等特徵,模型(model)就會分辨出是貓。

非監督式學習

大量歷史資料直接使用演算法進行模型(model)的訓練,演算法自己找出資料之間的關聯性。

收集網路上大量的文章與新聞歷史資料後,直接使用演算法進行模型(model)的訓練。

將已經訓練過的模型(model),輸入之前很熱門的「寶可夢」關鍵字,模型(model)找出「Pokémon」「GO」「精靈」這些最有關聯性的字。




5 Deeplearning4j官方範例-辨識人類、貓、狗

筆者使用官方提供的範例「使用特徵辨識人類、貓、狗」,它是屬於「監督式學習」,所以在訓練資料中會標示出人類、貓、狗的特徵,在後續會跟各位介紹是如何標示出特徵的資料格式。

請先到https://github.com/deeplearning4j/dl4j-examples下載官方範例。




6 辨識人類、貓、狗-CSV資料說明

在官方範例的資料夾路徑dl4j-examples-master/dl4j-examples/src/main/resources/DataExamples/animals/下,可以看到有下列表的CSV資料檔。


檔名

說明

eats.csv

存放飲食相關的特徵。

sounds.csv

存放聲音相關的特徵。

classifiers.csv

存放動物種類。

animals_train.csv

存放動物的飲食、聲音、年齡、重量等特徵並標示出屬於那一個動物,此資料是演算法用來訓練出模型(model)。

animals.csv

存放飲食、聲音、年齡、重量等特徵,此資料檔要用來驗證訓練過的模型(model),只給予飲食、聲音、年齡、重量等特徵,來分辨出是屬於那一個動物


各位讀者可能會好奇為什麼需要這麼多CSV資料檔,這是因為最終送進Neural Network演算法進行訓練的animals_train.csv資料檔需要全部為「數值」,不可以有文字,所以需要先將動物種類、飲食與聲音特徵各別存放在CSV資料檔內,並將特徵對應到一個數值作為代表。

而在animals_train.csv資料檔內的動物特徵都以數值作為表示。




7 eats.csv資料

下圖是eats.csv資料檔內容,飲食特徵與數值的對應。




8 sounds.csv資料

下圖是sounds.csv資料檔內容,聲音特徵與數值的對應。




9 classifiers.csv資料

下圖是classifiers.csv資料檔內容,動物種類與數值的對應。




10 animals_train.csv資料

下圖是animals_train.csv資料檔內容,各欄位的定義如下表:

A欄位

B欄位

C欄位

D欄位

E欄位

年齡

飲食特徵,數值對應到eats.csv

聲音特徵,數值對應到sounds.csv

重量

動物種類


數值資料解說:

第一筆數值資料轉換成文字意思是「年齡19、飲食是吃Mice、聲音是Meow、重量是10,給予動物種類label為Cat」。


第二筆數值資料轉換成文字意思是「年齡9、飲食是吃Cats、聲音是Bark、重量是60,給予動物種類label為Dog」。




11 animals.csv資料

下圖是animals.csv資料檔內容,各欄位的定義如下表,這份CSV資料檔是要用來測試,只會存放動物的特徵:

A欄位

B欄位

C欄位

D欄位

E欄位

年齡

飲食特徵,數值對應到eats.csv

聲音特徵,數值對應到sounds.csv

重量

無意義




12 官方範例主程式-辨識人類、貓、狗

下列網址是官方範例-辨識人類、貓、狗的主程式,BasicCSVClassifier.java主程式內已經有詳細註解說明,請各位讀者自行詳讀。


https://github.com/deeplearning4j/dl4j-examples/blob/master/dl4j-examples/src/main/java/org/deeplearning4j/examples/dataexamples/BasicCSVClassifier.java




13 執行結果

下圖是BasicCSVClassifier.java主程式利用已經訓練過的模型(model),對animals.csv資料檔進行特徵辨識,分辨出動物種類的結果。



姜志民