Android Machine Learning

Kayvan Kaseb

Follow

11月26日。 2020 – 9 min read

The picture is provided by Unsplash

Asia you know, 機械学習への関心が高まるにつれ、企業は機械学習に焦点を当て、投資することを余儀なくされています。 機械学習(ML)は計算科学の一分野であり、データ中のパターンや構造を分析・解釈し、人間の手を借りずに学習・推論・意思決定を行うことに重点を置いています。 さらに、機械学習は、Androidアプリに過去の経験から自動的に学習し、改善する機能を提供するプログラミング手法です。 その結果、GoogleはAndroidの機械学習のために多くの高度な機能とツールを設計し、実装してきました。 この記事では、Android 開発者に推奨されるいくつかの主要な概念と高度な機能について説明します。

導入と概要

基本的に、機械学習 (ML) は、明示的にプログラムされることなく経験から自動的に学習し向上する能力を Android アプリに提供するプログラミング アプローチです。 最近、Android にはさまざまな機械学習ツールがあり、デザイナー、プロダクト マネージャーからエンジニア、モバイル開発者、機械学習の専門家など、誰でも利用できるようになっています。 Androidはプラットフォームであり、プラットフォームの成功を測る方法のひとつは、その上に構築された素晴らしい成果物によって測られます。 現在、Androidは25億台のデバイスで動作しており、そのうちの多くがすでにオンデバイスMLを使用しています。 また、オンデバイスMLは、今すぐにでも利用できるため、もはや未来の技術ではありません。 たとえば、Android と iOS 上の 25,000 以上のアプリケーションが ML キットの機能を利用していると言及されています。

言い換えれば、現代の携帯電話は従来のコンピューターと同等の処理能力を持ち、携帯電話とタブレットは、リアルタイムで学習し対話できるアプリケーションを実行できるほど強力なのです。 機械学習(ML)は、スマートなアプリケーションの構築に役立っています。 例えば、あなたが次に使うであろうアプリを予測するGoogle Appsや、完璧な絵文字を見つけるという世界最大の問題を解決するモバイル・アプリなどがそうです。 その他、スマートアシスタント、Snapchatフィルター、スマートリプライ、Googleレンズなども、デバイス上で機械学習を活用した成果物である。 携帯電話には、モバイルデバイス上で機械学習を実行するためのSDKが数多く存在する。 その中には、Amazon、Intel、Microsoftなどの人気企業が開発したソフトウェア開発キットや、Googleが開発したML Kitなどがある。 このエッセイの次のセクションでは、GoogleがAndroidの開発に推奨しているいくつかの主要な概念と新機能を検討します。

機械学習(ML)の定義

実際、機械学習の主要な問題は、経験によって自動的に改善するコンピュータプログラムを構築する方法に関する問題である。 したがって、答えはデータの中にあるのです。 つまり、機械学習はAIのサブセットと考えられており、統計的な手法を使って、機械が経験によって向上することを可能にするものです。 機械学習は、コンピュータ・システムがあるタスクを実行するための意思決定を行うことを可能にします。 これらのプログラムやアルゴリズムは、新しいデータを観察することで、時間の経過とともに学習・強化されるように設計されています。 機械学習の主な目的は、データから意味を導き出すことである。 したがって、データは機械学習を解く鍵である。

機械学習(ML)は、過去の経験を通じて自動的に改善するコンピュータアルゴリズムの科学である。

明示的にプログラムされることなく予測または決定を行うために、機械学習アルゴリズムは、学習データと呼ばれる例に基づいてモデルを構築します。

機械学習は、データからの知識の抽出です。

さらに、人工知能と機械学習にはいくつかの相違点があります。 人工知能の目的は、人間の心を模倣できる機械を作ることであり、学習能力も必要です。 ただし、単に学習するだけでなく、知識表現、推論、抽象的思考なども含まれる。 それに対して、機械学習は、過去の経験から学習できるソフトウェアを書くことだけに焦点をあてている。 また、機械学習は、人工知能よりもデータマイニングや統計学と密接な関係があります。

機械学習により、ある種の問題を非常にエレガントな方法で解決することができます。 重要なのは、「なぜ機械学習を実際に使うのか」という点です。 例えば、誰かが歩いているかどうかを検出するためにコードを書かなければなりませんでした。 その上、もし彼の速度にアクセスできるのであれば、現実に歩いていることを示す速度のメトリックを指定するために、かなり簡単なコードを書かなければならない。 この状況を走ることに拡張するのは、十分に簡単だと思われる。 さらに、自転車をカバーしようと思えば、コードに別の境界条件を追加するだけでよい。 現時点での問題は、他の種類の活動、たとえば、ゴルフはどうなのかということです。

実際、ゴルフは多くの歩行を含みますが、たくさんのクラブを運んだり振ったりすることもあります。 では、この状態をどのように説明すればよいのでしょうか。 ここで、機械学習が効果的に役立つのです。 従来のプログラミングでは、KotlinやJavaなどの言語でルールを表現していました。 そして、そのルールを対象問題に適用していく。 機械学習では、パラダイムが少し異なります。 例えば、様々な種類の活動をしている人の写真と、その活動に対応するラベルをたくさん用意します。 さらに、このデータをニューラルネットワークに与えれば、ビジネスルールを定義することなく、ニューラルネットワークが学習してくれるのです。 つまり、機械学習は、活動検知のようなさまざまな種類の問題を解決するのに非常に効果的であることが証明されています。

Machine Learning in Android Development

ご存知のように、機械学習は、明示的にプログラムされていなくても経験から自動的に学習し改善する機能を Android アプリに提供するプログラミング手法です。 さらに、画像やテキストなどの非構造化データを使用する Android アプリや、スポーツの優勝チームを予測するような多数のパラメータを持つ問題に適しています。 現在、Androidでは様々な機械学習ツールや手法が提供されている。 MLデザインガイド、Googleのターンキー機械学習SDK ML Kit、構築済みの最先端のモデルを見つけるためのTF Hub、自分のデータで既存のモデルを訓練するTF Lite Model Maker、ML KitカスタムモデルとこれらのモデルをAndroidアプリに適切に統合するAndroid Studioなどです。

Android 用の ML アプリを開発するには、次のような 4 つの主要なタスクに直面します。

  1. Design: 製品目標を特定し、それを達成するための ML デザイン パターンを提供します。
  2. Build and Train: ML モデルの構築、または Google から事前に学習したモデルのトレーニング。
  3. Inference: 特定のタスクを達成するためにすでに学習した機械学習モデルの使用プロセス。 Android アプリに ML モデルをインストールして更新すること。

Guidelines for Designing Android apps

当初は、他の先進技術と比較して違いはありません。 製品デザイナーやエンジニアが、自分たちの製品でどのような問題を解決しようとしているのか、すべて一緒に考えます。 ですから、一気呵成にはいかないのです。 新しい技術というのは、極めて反復的なプロセスなのです。 境界線を試したいし、コラボレーションもしたい。 さらに、ユーザーが実際に製品をどのように使っているかを観察することも必要です。 つまり、デザイン、プロダクトマネジメント、ソフトウェアエンジニアリングが、このプロセスで重要な役割を果たすのです。 Google は、この分野の研究において、次の 2 つのガイドを作成しました。

  1. The People + AI Guidebook : このガイドブックでは、デザイナーやプロダクト マネージャーとの会話を構成するのに役立つ 6 つの異なるセクションが用意されています。 全体として、チームが人間中心の AI 製品の決定を下すのに役立つベスト プラクティスを提供します。 機械学習のためのマテリアル デザイン仕様 : このガイドラインには、次のセクションが含まれます:

    1 つ目は、モバイルでの MLS 使用例に対する新しいマテリアル デザイン ガイドラインです。

    3 番目に、オブジェクト検出と追跡およびバーコード スキャンのソース コードが利用可能になりました。

    Android 開発における重要な決定

    実のところ、Android 開発で取り組むべき重要な決定は、推論をデバイス上で実行するか、リモートでアクセスされるクラウド サービスを使用するかです。 この決定を正確に行うには、いくつかのパラメーターを利点または欠点として考慮する必要があります。 たとえば、デバイス上でのアプローチでは、次のような利点があります:

    1. プライバシー。 多くの場合、すべてをデバイスに保存する方が適切です。 そのため、データがクラウドでどのように処理されるかを心配する必要はありません。

    2. オフライン:オンデバイス機械学習は、接続がない場合、またはネットワークが不安定な場合に機能します。 たとえば、電車の中で過ごすことがあれば、これが有用であることがわかるでしょう。

    3 低遅延:デバイス上で処理を実行することにより、方程式の中からネットワークの遅延を完全に取り除くことが可能です。 また、これをハードウェアアクセラレーションの最新の進歩と組み合わせることで、さまざまなAndroidデバイスでユーザーに真のリアルタイム体験を提供できます。

    ML Kit for app developers

    実のところ、ML Kit SDKは2018年に発表されたGoogleの新しい製品なんです。 ML Kitは、開発者がモバイルアプリへの機械学習モデルの統合を簡略化することを可能にするソフトウェア開発キットです。 また、ジュニアデベロッパーでもこのタスクに簡単に取り組むことができます。 もう一つのポイントは、デバイス上で動作するように最適化されたソリューションにより、iOSやAndroidのアプリをより魅力的に、パーソナライズされた、そして有用なものにするということです。 前述のとおり、Android および iOS 上の 25,000 以上のアプリが ML Kit の機能を利用しています。

    Google の機械学習の経験をモバイル開発者にもたらす新しい SDK で、Firebase 上の強力で使いやすいパッケージです。

    ML Kit には 3 つのセクションに分類される機能があります:

    1. Vision: ビデオおよび画像解析 API は、画像にラベルを付け、バーコード、テキスト、顔、およびオブジェクトを検出します。 自然言語処理 API により、58 の言語間を識別および翻訳し、返信の提案を行います。
    2. カスタム。 AutoML Vision Edge を使用して独自のモデルを構築するか、独自の TensorFlow Lite モデルを持ち込んで実験を行い、ML Kit を使用して本番環境に導入します。

    写真は Google Documents

    それぞれのカテゴリにいくつかの特徴があります。 たとえば、Vision は Base API としていくつかの機能を持っています。

    TensorFlow Lite

    基本的に、TensorFlow Lite は、プログラマがモバイル、組み込み、および IoT デバイス上で TensorFlow モデルを適切に実行するためのツール セットです。 実際、低レイテンシーと小さなバイナリサイズでオンデバイスの機械学習推論を提供します。 言い換えれば、TensorFlow Liteは、サーバーからデータを送り返すのではなく、ネットワークのエッジで、デバイス上で機械学習を簡単に実行できるように設計されているのです。 TensorFlow Lite には 2 つの主要コンポーネントがあります。

    1. TensorFlow Lite インタープリタ : 携帯電話やマイクロコントローラなど、さまざまな種類のハードウェアで (最適化されたモデルを) 実行します。 TensorFlow Lite コンバータ : TensorFlow モデルをインタープリタで使用できるような形式に変換し、最適化を導入してバイナリサイズと性能を向上させることが可能です。

      最終的に、TensorFlow Liteを使用するための手順は、以下のステップで簡単に構成されています。

      1. モデルを選択する
      2. モデルを変換する
      3. デバイスに展開する
      4. モデルを最適化する

      AutoML Vision Edge

      この Google の新しい機能では、自分の学習データからカスタム画像分類モデルを構築することが可能です。 実際、画像の内容を認識するのであれば、ML Kit のデバイス上の画像ラベリング API を使用するのも 1 つの方法でしょう。 しかし、より専門的な画像ラベリングモデルが必要な場合は、Firebase MLとAutoML Vision Edgeを利用して、独自の画像とカテゴリでモデルを学習させることができます。 例えば、花の種類や食べ物の種類を区別するモデルなどです。 カスタム モデルは Google Cloud で学習され、デバイスで完全に使用できます。

      最後に

      一見すると、機械学習は、Android アプリに以前の経験から自動的に学習し強化する機能を提供するプログラミング アプローチです。 その結果、Google は Android 開発のために多くの高度な機能とツールを設計し、実装してきました。 この記事では、GoogleがAndroid開発者に提案しているいくつかの主要な概念と高度な機能について考察しました。