FRMSKI開発ブログ

AWS、iOS、AR/VRなど開発メモ

【CoreML入門】機械学習をiOSで

目次

はじめに

 機械学習モデルを簡易的にiOSアプリ内に組み込むことができるCoreMLについてまとめます。

CoreML

 Core ML 2を使用すると、幅広い種類の機械学習モデルをAppに組み込むことができます。30種類以上のレイヤを持つ大規模なディープラーニングに加えて、ツリーアンサンブル、SVM、一般化線形モデルなどの標準的なモデルにも対応しています。

  • ツリー・アンサンブル
     予測モデルである決定木を用いた機械学習の手法の一つ

  • SVM(サポート・ベクター・マシン)』
     サポートベクトルとは、「予測に必要となる一部のデータ」です。「マージン最大化」と呼ばれる考え方を用いて「判別する境界とデータとの距離」を決めます。

  • 一般化線形モデル
     残差を任意の分布とした線形モデル。線形回帰、ポアソン回帰、ロジスティック回帰などが含まれる。1972年にネルダーとウェダーバーンによって提唱された。

 Core MLはMetalやAccelerateといったローレベルのテクノロジー上に築かれているため、CPUとGPUをシームレスに活用し、最大限のパフォーマンスと効率を発揮することができます。機械学習モデルはデバイス上で実行できるため、分析のためにデータを外部に送信する必要がありません。

MLモデル

 CoreMLは下図のようにMLモデルをアプリ内に組み込むことで機械学習を可能にします。 MLモデルはこちらからダウンロードできます→機械学習 - モデルの実行 - Apple Developer

f:id:frmski:20181023154242p:plain:w300

CoreMLアーキテクチャ

 CoreMLでは画像解析のためのVision自然言語処理のためのNatural Language、学習された決定木を評価するためのGameplayKitをサポートします。AccelerateやBNNS、Metal Performance Shadersなどの低レベルのプリミティブの上に構築されています。

f:id:frmski:20181023154351p:plain

  • Metal
     アップルのオペレーティングシステム上でサポートされる、オーバーヘッドの小さいローレベル (low level) なコンピュータグラフィックスAPI

  • Accerelate
     数学的計算や画像計算を簡単に扱えるフレームワーク

  • BNNS(ベーシック・ニューラル・ネットワーク・サブルーチン)
     Accerelateに追加されたニューラルネットワークのためのサブルーチン

Vision

 コンピュータビジョンの機械学習機能を容易にAppに組み込むことができます。フェイストラッキング、顔検出、ランドマーク、テキスト検出、矩形検出、バーコード検出、オブジェクトトラッキング、画像レジストレーションなどの機能に対応しています。

Natural Language

 Natural Languageフレームワークは、自然言語のテキストを分析し、その言語特有のメタデータを推定するために使用する新しいフレームワークです。このフレームワークをCreate MLと組み合わせることで、カスタムのNLPモデルをトレーニングしてデプロイすることができます。

まとめ

 以上がCoreMLについての概要です。一般化線形モデルやSVMなど突っ込んだところは相当難解ですが、CoreML自体は簡易的に実装できるのが現状です。次回はCreateMLについてまとめたいと思います。