WWDC18 - Session 703 - Create ML in Playground
WWDC18 — Session 703 — Create ML, 用 Playground 做出 ML model
WWDC17 Apple 推出了 CoreML 模組,同時也推出了對應 ML 社群的 model 轉換模組。當你使用其他 ML 工具做出訓練模型後,可以使用轉換模組轉成 mlmodel 讓 CoreML 應用。
今年的 WWDC18, Apple 釋出了 CreateML 這個 framework,讓 Swift 開發者可以直接使用 Swift 來訓練模型。在 WWDC18 - Session 703 , Apple 介紹了 CreateML 模組。如果要訓練一些基本模型,只要使用 Playground 就可以做到了,而且 Playground 也導入了 GUI 的訓練方式,寫出三行程式碼之後,你就可以用拖拉的方式來訓練模型。
如上圖所示,現在的 Core ML 能做到一個 App 常用的基本 ML 任務。下列詳述這三種任務類別。
- 如果輸入一張圖案,會輸出 model 中每一項分類的判斷百分比。
- 如果是給一篇文章或一段文字,那他會輸出 model 中分類的判斷百分比。
- 如果是給表格型數據或是結構化數據,他會輸出數字結果。
要開始使用 ML 任務前,你需要了解 ML 任務的五個步驟。
- Problem - 定義問題: 你需要了解這個問題的本質,他想解決的是什麼問題
- Data - 準備對應這個問題的訓練資料
- Train - 對模型做訓練
- Evaluate - 驗證這個模型的正確率
- 輸出 Model
介紹的第一個項目就是圖片分類器,分類的方法也很簡單,就是先開一個資料夾,再開各項分類出來, WWDC 中以各種水果為例子,在該種水果資料夾下面放上訓練資料即可。
Create MLUI 讓你簡化到只要三行程式碼就可以訓練模型了。打上這三行按下 run 之後,右方就會跳出 image classifer。
然後,只要把資料集拖進 XCode ,Playground 就會開始訓練模型。
當你完成訓練之後,你還可以放入再放入驗證用的資料,去看這次的 model 有沒有達到你的要求。如果是的話,就可以直接輸出,然後放到 XCode 裡面使用。
如果你比較喜歡用程式碼做 model 的話,你當然也可以用程式碼來做。你只要宣告訓練資料和測試資料的指定位置,就可以訓練模型了。
Text Classifier
第二部分,是文字判讀,從他 demo 的影片來看,「應該」可以判別不同語言,但這部分我還沒去找中文語系的資料,等找到之後我會再寫一篇文章說明這部分的。
使用的方法也是簡化很多了,和前面的圖片分類一樣,先把訓練的資料放到對應的資料夾,就可以開始訓練了。但 WWDC 也有說,他有支援 JSON 格式的輸入,所以你也可以用 {"label": "positive", "text": "Good news" , .......} 這樣的方式來訓練模型。
在 WWDC 上的 Demo App 是一個發文情感分析的 ML App,如果使用者發的的是負面情緒的文,那 Send 這個按鈕就會鎖住,使用者是沒辦法發文的。但如果是正面情緒的文,那使用者就可以把這一則訊息 po 在網路上。
正負面情緒分析在 ML 的專有名詞是 "Sentiment Analysis" (情感分析)。除了情感分析以外, WWDC 上也介紹了各種用途。
因為 NLP 分析本身可以丟入各種主題和類型,而且你也可以在 Kaggle 等地方拿到已經分析好的資料。比如說分析一封電子郵件是不是垃圾郵件,有可能從 Email title 就能看出來。或是某些特定名詞配上動詞出現的時候,你可以確定這個句子的主題是哪一類的。而句子主題分析這裡,還可以再細分。如下,以第一句為例,整個句子中沒有提到旅館,但文句內句是「找個地方待」,在 Text Classifier 中會被判成是你要找旅館。
Tabular Data
前面的 Image 和 Text 是屬於非結構型資料,如果是表格型資料,事實上在統計領域已經有很多方法做預測,像是生產線上常用的 D.O.E 、田口法等等。
在 WWDC 例舉的題目有三個,房價預測、紅酒風味預測、Bar 或餐廳的預測。你只要能取得相對的資料,並做成表格,輸出成 csv 或 JSON,再選擇你要預測的目標欄位,你就可以訓練出對應的 Model 了。
結構化資料在 ML 領域上有很多演算法可以針對不同型態的資料做預測,如隨機森林、決策樹等等。 Create ML 並不需要讓 iOS 的開發者了解所有的演算法之後選一個,他把表格化資料預測簡化到只需要一行。
let classifier = try MLRegressor(trainingData:houseData, targetColumn:"price")
讀取的檔案種類可以是 csv 也可以是 json。
WWDC 介紹的,是 Udemy 等線上資料科學訓練課程中常出現的題目,房價預測。因為你可以輕易的拿到波士頓的房價和該區域的各項數據,然後把目標設定成房價,你就可以訓練出房價的模型了。
我有試著做出一些題目,如果你想試著做做看,你可以下載下面這個 Repo,裡面有對應的 Playground 檔案和訓練資料。
一起來玩資料吧