この記事は Google Expander チーム科学研究者、Sujith Ravi による Google Research Blog の記事 "On-Device Conversational Modeling with TensorFlow Lite" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

今年初め、スマート メッセージング向けの「端末上」の機械学習テクノロジーを搭載した Android Wear 2.0 がリリースされました。これによって以前から GmailInboxAllo で利用できた Smart Reply などのクラウドベースのテクノロジーが、初めて任意のアプリから直接利用できるようになります。これは、サードパーティー製のメッセージング アプリでも利用でき、クラウドに接続する必要もありません。そのため、外出中に着信したチャット メッセージに直接スマートウォッチから応答することができます。

本日は、モバイルおよび埋め込み端末向けの TensorFlow の軽量ソリューションである TensorFlow Lite についてお知らせします。このフレームワークは、少ないメモリ、高パフォーマンス、低レイテンシで機械学習モデルの推論を行えるように最適化されています。ライブラリの一部として、TensorFlow Lite を活用した自然言語アプリの例となる端末上会話モデルデモアプリもリリースしています。その目的は、デベロッパーやリサーチャーが端末での推論を活用して簡単に新しい人工知能機能を構築できるようにすることです。このモデルは、効率的な推論によって、入力される会話のチャット メッセージに対して応答を提案するもので、チャットアプリに簡単に組み込んで端末上での会話体験を改善できるようにするものです。

今回リリースした端末上会話モデルは、ジョイント最適化フレームワークに基づいてコンパクトなニューラル ネットワーク(やその他の機械学習モデル)をトレーニングする新しい ML アーキテクチャを利用しています。これは、当初 ProjectionNet: Learning Efficient On-Device Deep Networks Using Neural Projections として発表されたものです。このアーキテクチャは、任意の入力をコンパクトなビットベクター表現に変換する効率的な「プロジェクション」処理を行ない、計算能力やメモリが限られたモバイル端末でも効率的に実行できます。この操作では、似たような入力が近傍のベクターにプロジェクションされ、プロジェクション処理によって密にも疎にもなります。たとえば、「やあ、調子はどう?」「調子はどうだい、相棒?」という 2 つのメッセージは、同じようなベクター表現に投影される可能性があります。

この考え方を使うと、計算能力やメモリをあまり使わずに、会話モデルでこういった効率的な操作を組み合わせることができます。私たちは、コンパクトなプロジェクション・モデル(前述)とトレーナー モデルという 2 種類のモデルを同時にトレーニングする ML フレームワークを使い、エンドツーエンドで端末上モデルをトレーニングしました。この 2 つのモデルは、同時にトレーニングが行われます。その際に、プロジェクションモデルはトレーナー モデルから学習します。トレーナーは、大きく複雑な ML アーキテクチャでモデリングされているいわばエキスパートです。一方のプロジェクションモデルは、エキスパートから学習する学生のようなものです。トレーニングの際には、量子化蒸留処理などのテクニックも利用して、対象機能の圧縮や一部の選択的最適化を行うこともできます。トレーニングが終われば、端末で直接小さなプロジェクションモデルを使って推論を行うことができます。
トレーニング済みのプロジェクションモデルは、モバイル プラットフォームで高速に推論を行えるように最適化された一連の TensorFlow Lite 命令にコンパイルされ、端末で直接実行されます。TensorFlow Lite の端末上会話モデルの推論グラフを以下に示します。
TensorFlow Lite を使った端末上会話モデルの実行
今回リリースされたオープンソースの会話モデルコードも公開されています)は、前述の結合 ML アーキテクチャを使ってエンドツーエンドでトレーニングしたものです。また、今回のリリースにはデモアプリも含まれているので、モバイル端末でのワンタッチ スマート応答を簡単にダウンロードして試してみることができます。このアーキテクチャでは、アプリのニーズに応じて、モデルのサイズや予測品質を簡単に設定できます。このモデルがうまく対応できるサンプル メッセージの一覧は、こちらから参照してください。このシステムは、一定の応答を提案するようにフォールバックすることもできます。その場合、チャットの会話でよく見られる一般的な応答目的から学習し、その結果をコンパイルした一定のセットが使われます。なお、ベースとなるモデルは、Google のアプリで Smart Reply の応答に使われているものとは異なります1

会話モデルの先へ
興味深いことに、前述の ML アーキテクチャでは、ベースとなるモデルを柔軟に選択できます。私たちは、異なる機械学習アプローチと互換性のあるアーキテクチャも設計しています。たとえば、TensorFlow のディープ ラーニングと組み合わせて使う場合であれば、ベースとなるモデルとして軽量ニューラル ネットワーク(ProjectionNet)を学習させつつ、ニューラル ネットワークではなくグラフ フレームワークを使って別のアーキテクチャ(ProjectionGraph)のモデルを表現することができます。

結合フレームワークは、別の ML モデリング アーキテクチャで他のタスクの端末上軽量モデルをトレーニングする際に使うこともできます。たとえば、私たちは、ある ProjectionNet アーキテクチャを派生させています。これは、トレーナー モデルとして複雑なフィードフォワードや再帰アーキテクチャ(LSTM など)を使い、動的プロジェクション操作やいくつかの狭い完全結合レイヤーで構成される単純なプロジェクションアーキテクチャを組み合わせたものです。アーキテクチャ全体は、TensorFlow の誤差逆伝播を使ってエンドツーエンドでトレーニングします。それが完了すると、コンパクトな ProjectionNet を直接推論に利用できるようになります。この手法を使って、モデルのサイズを大幅に削減した(最大で数桁の削減)小さな ProjectionNet モデルをうまくトレーニングすることができました。また、複数の画像や言語の分類タスクにおける精度に関するパフォーマンスも高いものでした(いくつかの例をこちらに示します)。同じように、半教師付きの設定で、グラフ学習フレームワークを使って別の軽量モデルをトレーニングしました。
端末上モデルのトレーニングに使った ML アーキテクチャ: ディープ ラーニングを使ってトレーニングした ProjectionNet(左)と、グラフ学習を使ってトレーニングした ProjectionGraph(右)
今後も、アップデートされたオープンソースの TensorFlow Lite モデルの改善とリリースを継続する予定です。今回リリースされたモデル(今後のモデルも同様)は、以上のような ML アーキテクチャを使って学習したものです。このようなモデルは、多くの自然言語やコンピュータ ビジョンのアプリに再利用されたり、人工知能を活用するために既存のアプリに組み込まれるものと考えています。機械学習や自然言語処理のコミュニティがこういった機能を使って開発を行い、まだ私たちが認識していない新しい問題やユースケースに対応できることを期待しています。

謝辞
この作業には、Yicheng Fan と Gaurav Nemade が大きく貢献してくれました。TensorFlow チームの Rajat Monga、Andre Hentz、Andrew Selle、Sarah Sirajuddin、Anitha Vijayakumar に感謝を捧げます。また、Robin Dua、Patrick McGregor、Andrei Broder、Andrew Tomkins および Google Expander チームにも感謝いたします。



1 リリースされた端末上モデルは、スマートフォンやウェアラブルでの小規模かつ低レイテンシな用途に最適となるようにトレーニングされています。一方、Google アプリの Smart Reply 予測は、規模が大きい複雑なモデルで生成されています。実稼働しているシステムでは、不適切なコンテンツを検知するようにトレーニングされた複数の分類器を使っており、ユーザー エクスペリエンスや品質レベルが最適になるようなフィルタリングやチューニングが適用されています。オープンソースの TensorFlow Lite 版を使っているデベロッパーも、末端のアプリではこのような慣習に従うことをお勧めします。



Reviewed by Hak Matsuda - Developer Relations Team