WWDC18 - Session 703 - Create ML in Playground

Marvin Lin
7 min readSep 22, 2018

--

“white robot action toy” by Franck V. on Unsplash

WWDC18 — Session 703 — Create ML, 用 Playground 做出 ML model

WWDC17 Apple 推出了 CoreML 模組,同時也推出了對應 ML 社群的 model 轉換模組。當你使用其他 ML 工具做出訓練模型後,可以使用轉換模組轉成 mlmodel 讓 CoreML 應用。

這些ML框架訓練出來的模型都可以轉換成CoreML可以使用的 model

今年的 WWDC18, Apple 釋出了 CreateML 這個 framework,讓 Swift 開發者可以直接使用 Swift 來訓練模型。在 WWDC18 - Session 703 , Apple 介紹了 CreateML 模組。如果要訓練一些基本模型,只要使用 Playground 就可以做到了,而且 Playground 也導入了 GUI 的訓練方式,寫出三行程式碼之後,你就可以用拖拉的方式來訓練模型。

Create ML 可以做到的 ML 領域

如上圖所示,現在的 Core ML 能做到一個 App 常用的基本 ML 任務。下列詳述這三種任務類別。

  1. 如果輸入一張圖案,會輸出 model 中每一項分類的判斷百分比。
  2. 如果是給一篇文章或一段文字,那他會輸出 model 中分類的判斷百分比。
  3. 如果是給表格型數據或是結構化數據,他會輸出數字結果。
使用 ML的五個基本步驟

要開始使用 ML 任務前,你需要了解 ML 任務的五個步驟。

  1. Problem - 定義問題: 你需要了解這個問題的本質,他想解決的是什麼問題
  2. Data - 準備對應這個問題的訓練資料
  3. Train - 對模型做訓練
  4. Evaluate - 驗證這個模型的正確率
  5. 輸出 Model

介紹的第一個項目就是圖片分類器,分類的方法也很簡單,就是先開一個資料夾,再開各項分類出來, WWDC 中以各種水果為例子,在該種水果資料夾下面放上訓練資料即可。

Create MLUI 讓你簡化到只要三行程式碼就可以訓練模型了。打上這三行按下 run 之後,右方就會跳出 image classifer。

然後,只要把資料集拖進 XCode ,Playground 就會開始訓練模型。

當你完成訓練之後,你還可以放入再放入驗證用的資料,去看這次的 model 有沒有達到你的要求。如果是的話,就可以直接輸出,然後放到 XCode 裡面使用。

你還可以加上註解和說明

如果你比較喜歡用程式碼做 model 的話,你當然也可以用程式碼來做。你只要宣告訓練資料和測試資料的指定位置,就可以訓練模型了。

使用 URL 指定訓練資料的位置,你也可以用程式碼訓練模型

Text Classifier

第二部分,是文字判讀,從他 demo 的影片來看,「應該」可以判別不同語言,但這部分我還沒去找中文語系的資料,等找到之後我會再寫一篇文章說明這部分的。

Text Classification 在分類的時候直接倒進資料就行了

使用的方法也是簡化很多了,和前面的圖片分類一樣,先把訓練的資料放到對應的資料夾,就可以開始訓練了。但 WWDC 也有說,他有支援 JSON 格式的輸入,所以你也可以用 {"label": "positive", "text": "Good news" , .......} 這樣的方式來訓練模型。

在 WWDC 上的 Demo App 是一個發文情感分析的 ML App,如果使用者發的的是負面情緒的文,那 Send 這個按鈕就會鎖住,使用者是沒辦法發文的。但如果是正面情緒的文,那使用者就可以把這一則訊息 po 在網路上。

程式碼和前面的圖片分類器是大同小異

正負面情緒分析在 ML 的專有名詞是 "Sentiment Analysis" (情感分析)。除了情感分析以外, WWDC 上也介紹了各種用途。

NLP Classifier的其他用途

因為 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")
有多種 Regressor 可以選,但你也可以讓 framework 自動幫你調

讀取的檔案種類可以是 csv 也可以是 json。

WWDC 介紹的,是 Udemy 等線上資料科學訓練課程中常出現的題目,房價預測。因為你可以輕易的拿到波士頓的房價和該區域的各項數據,然後把目標設定成房價,你就可以訓練出房價的模型了。

我有試著做出一些題目,如果你想試著做做看,你可以下載下面這個 Repo,裡面有對應的 Playground 檔案和訓練資料。

一起來玩資料吧

--

--

Marvin Lin

突然有天對程式開始產生興趣,先從 Python 開始,然後轉入 Swift 。因為這個世界很有趣,所以我會不斷的推展我所接觸的領域。