Aidemy Tech Blog

機械学習・ディープラーニング関連技術の活用事例や実装方法をまとめる、株式会社アイデミーの技術ブログです。

iOS11の新機能。機械学習フレームワークの「Core ML」とは?[WWDC17]

f:id:tarisaa:20170609001502p:plain

Appleの開発者向けカンファレンスで紹介された機械学習フレームワークの「Core ML」

 "WWDC"は毎年6月にApple社で行われている開発者向けカンファレンスであり、2017年は6月5日-9日に渡ってサンノゼで行われた。今回の注目発表は「新MacBook」「新iMac」「新iPad Pro」そして「Siri搭載のホームスピーカー」など、新プロダクトの発表が目白押しであった。

 さらに、ソフトウェア面では、iOS11、MacOS High Sierraなど新しいOSが披露された。その中でも、iOS11では、アプリケーションにARを組み込むためのフレームワーク「ARkit」や、機械学習を組み込むためのフレームワーク「Core ML」などが特に大きく取り上げられていた部分である。

 今回は、その中でCore MLの概要に関して紹介する。詳細は、以下のプレゼンテーションビデオや公式リファレンスを参照されたい。

developer.apple.com

公式リファレンス:Core ML | Apple Developer Documentation

 

Core MLの概要とは?

  Core MLはiOS11以降にサポートされる予定の機械学習フレームワークである。機械学習は大きく分けて「モデルの学習」フェーズと、「モデルの推論」フェーズがあるが、今回のCore MLはiPhoneアプリ上での「モデルの推論」フェーズに特化したフレームワークである。「学習」と「推論」の関係は、以下の画像が分かりやすい。

f:id:tarisaa:20170609015235p:plain*1

 今回のCore MLでは、Pythonのライブラリを用いて大量のデータを学習させ、構築したモデルを用いて、IPhoneアプリ上でデータの推論を行うためのフレームワークである。たしかに、モデルの構築には大きなマシンパワーが必要となり、構築完了まで数日かかることも多い。そのため、iPhoneアプリ上では通常行われないため、妥当な判断だと言えよう。

 Pythonのライブラリでは、CaffeやKerasなどの主力な6つのライブラリをサポートしている。こうしたライブラリを用いて生成されたモデルを、Core ML ToolsというApple社が開発したオープンソースの変換ツールを用いて、Core MLで利用できるモデルに変換できるのである。

f:id:tarisaa:20170609005225p:plain

 

 しかし、こうした機械学習で学習されたモデルを用いた推論行為は、アプリ内部で行うだけでなくAPI化してサーバーで行うことも可能である。今回のセッションでは、アプリ内部で推論を行う利点として、以下の4点が触れられていた。 

f:id:tarisaa:20170609005206p:plain

  「User Privacy」とは、写真などのデータをサーバーに送信せず、端末内だけで用いれるので、データが外部に送信されないこと、「Data Cost」とは、データを送受信するコストが無いこと、「Server Cost」とは、サーバーを動かして推論する必要が無いこと、「24/7」とは、圏外の環境やサーバーのメンテナンス状況に関係なく、いつでも使えることを指している。

 他にも、サーバーとの通信が無いので、リアルタイムに画像などを認識することができることも特徴だと言えよう。

 以上のように、今回はあくまで、「学習済みモデルのiOSアプリ上での適応」に絞ったところが、今回の注目すべきポイントだと言えよう。

 

Core MLの活用方法

 こうしたCoreMLの活用方法は、大きく分けて2つ考えられる。

活用方法1:インターネット上の学習済みモデルの利用

 まず1つ目は、学習済みモデルを利用することである。例えば、Apple公式のDeveloperサイトで、Core ML形式(.mlmodel)で4つ掲載されている。それだけでなく、Pythonライブラリベースの学習済みモデルは有償・無償問わずにインターネット上に広く公開されており、Core ML Toolsを用いることで、Core ML形式(.mlmodel)に変換できる。インターネット上で公開されているモデルは「画像の動物の識別」 「画像の花の名前の識別」などが多いものの、今回の取り組みによって、こうしたモデルをiOSアプリ上で利用しやすくなったと言える。

活用方法2:自社データを活用してモデルを生成し、アプリ内で利用

  さらに、2つ目の活用方法として、学習モデルを開発者自身で生成することが考えられる。例えば、自社の持つ顧客データを用いたシミュレーションなどを行う場合、データセットが独特であるため、開発者自分自身でモデルを構築する必要があるだろう。

 この場合、Caffe、Kerasを始めとするPythonライブラリを用いてモデルを構築し、Core ML Toolsを用いてCore ML形式(.mlmodel)に変換、iOSアプリに組み込むという方法が今回のCore MLによって可能になったと言えよう。

 

正直、内容は「普通」では...?

 今回のCore MLだが、学習部分はPythonのライブラリを活用しているあたり、Apple 社は「守り」に入っており、目新しさがないな、と思えることが率直な感想である。

 Google社のTensorflowでは既にiOSサポートが開始されたりしている。ここから考えるに、Tensorflwでモデル構築を行い、Android/iOS両対応のモデルをエクスポートする手法もスマートな方法の一つだと言えよう。

 Core MLの導入によって劇的にエンドユーザーの体験が変化するでもない。確かに、開発者にとっては、開発コストが下がりコードの可読性も上がる可能性もあるが、大きな変化とは言い難い。

 実際、とある記事には以下のように指摘されている。

アップルとしては「個人の情報は端末内で完結させる」という徹底した個人情報保護主義を貫いているのだが、一方でグーグルは「便利ならいいじゃん」というスタンスで突き進んでいる。このあたりは「ハードウェアのメーカーとしてスタートしているアップル」と「ネット検索が起源のグーグル」という出身の違いが大きく影響しているのだろう。

*2

 今回の取り組みは、1〜2年前に発表されても全く不自然ではない。AIやソフトウェアの最先端の取り組みをベンチマークすべきは、AppleではなくFacebookGoogleでは無いだろうか。