[CoreML] CoreML 最初の一歩

CoreMLを解説していきます。

100DaysOfSwiftUIでも使っていたので、その部分を深掘りするところから

Create MLで解きたい問題/モデル

100DaysOfSwiftUIでは、CSVを入力としてモデルを作成します。(ファイル自体は、GitHubで公開されています)

入力とするBetterRest.csvは、以下のデータで構成されています。(1000件分のデータが記録されています)

wake(起床時間),estimatedSleep(期待睡眠時間),摂取コーヒー(coffee),actualSleep(実睡眠時間)

解きたい問題は、「コーヒーをX杯飲んだ人が、Y時に起きたくて、Z時間の睡眠を取りたいとすると、何時に寝れば良い?」です。

数式化するときにすこし問題を変形して、「コーヒーをX杯飲んだ人が、Y時に起きたくて、Z時間の睡眠を取りたいとすると、起床時間の何時間前に寝れば良い?」としています。

実際の Create ML での操作

1. 新しいProjectを作成し、その際にテンプレートとして、Tabular Regressor を選択します。

2. ダウンロードしてきたBetterRest.csvを読み込ませます。

3. 何を計算させたいか選びます。この場合は、actualSleepを選択します。

4. どの情報をベースに計算させたいか選びます。この場合は、wake, estimatedSleep, coffee の3つ(actualSleep以外全て)を選びます。

こうすることで、wake, estimatedSleep, coffee を入力として、actualSleepを推測するための式を考えることになります。

5. どのようなアルゴリズムで式を考えるかも、Create MLでは選択できます。Automatic, Random Forest, Boosted Tree, Decision Tree, Linear Regressionから選択できます。

# 違いが正確にわかっているわけではないので、とりあえず、Automaticにして様子見です。

6. “Train” ボタンを押すと、学習します。

学習結果としてのエラー値(二乗値)と最大エラー値を表示してくれます。また、推測値が最大どれくらいずれていたかも表示されます。

7. Outputにあるファイル(XX.mlmodel)をドラッグ&ドロップして、学習結果を保存します。

8. Xcodeのプロジェクトに、ファイルをドロップすると、この機械学習結果を使うためのクラスが生成されるようになります。

詳細は、Xcodeの画面でmlmodelファイルを選択すると表示されます。自動生成されるクラスの矢印をクリックすると、生成されるクラスのコードを見ることもできます。

9. 上記で生成されるクラスに、学習で入力と設定した値を入れることで、推測して欲しい値を計算させることができます。

まとめ:CoreMLを使うこと自体は難しくない

上記は、「学習」→ 「学習結果を使った推測」の順番そのままになっています。

ですので、学習させるためのデータがあるならば、機械学習させたアルゴリズムをアプリに組み込むことは、恐ろしいくらい簡単になっていました。

「学習」は、入力データと学習するためのアルゴリズムの選択によってその精度が変わるでしょうから、アプリケーションの設計というよりは、学習計画に大きく依存しそうです。

「学習結果を使った推測」は、学習結果が固定であればただ計算するだけなので、手を入れる余地はなさそうです。
ただ、Appleの資料を斜め読みしたところ、追加で学習させることもできそうな感じでした。もう少し理解できたらやってみたいことの一つです。

100DyasOfSwiftUIでやったことがあるはずなのですが、改めて、使ってみて、その意味がよくわかりました。

説明は以上です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です