一目で:AndroidEnv
AndroidEnvは、強化学習エージェントをAndroid OSでトレーニングできるようにする新しいレイヤーであり、Alphabetの非常に有名なAIブランチであるDeepmindによって開発されました。一方はAndroidとADBの間にあり、もう一方はトレーニングを受けているエージェントです。わからない場合、「エージェント」とは、コーディングして実行できる機械学習アプリケーションを指します。 AndroidEnvは、Githubのオープンソースリポジトリとして利用できます。
Androidへの現実的なアクセス
AndroidEnvは、トレーニングに可能な限り現実的な環境を提供することを目的としているため、適用される制約は、Androidとやり取りする人間に期待できる制約と一致します。
- エージェントは主にAndroidがレンダリングするピクセルを読み取ることができます。この機能では、タッチスクリーンをシミュレートするインターフェイスが次の目的で使用されます。
- アクションスペース(環境と対話するために利用可能なオプションのセット)は、タッチ、リフト、削除などのいくつかの単純なアクションで構成されています
AndroidEnvの目標は、強化学習の限界を押し上げることです。エージェントがマウスとキーボードのインターフェースを介してシーンと対話できるようにしたOpenAIの「ユニバース」プラットフォームと同様に、Deepmindの最新の作成により、開発者は想像できる最も困難な環境の1つでモデルをトレーニングできます。
つまり、以前のモデルは、対話を大幅に簡素化する特別なインターフェイスを介してターゲットにアクセスできました。また、AndroidEnvは、画面のピクセル以外に多くの追加情報を提供しないため(詳細は後で説明します)、その使用が非常に現実的になります。
相互作用の詳細
前述のように、AndroidEnvは、タッチスクリーンを操作するときに人間が使用する基本的な動きをすべてシミュレートする一連の生のアクションを提供します。これらの生のアクションは、スワイプやスクロールなど、エージェントによる効果的な制御を可能にする一連のジェスチャによって補完されます。
AndroidEnvとのやり取りでも、このプラットフォームの大きな課題の1つが概説されています。開いているアプリ(または一般的なタスク)によっては、意味が大幅に異なる場合があります。あるアプリでのスワイプは、別のアプリ内のまったく異なるコンテキストで使用される場合があります。
また重要なのは、AndroidEnvのエージェントは、AndroidなどのリアルタイムOSのリアルタイム性に対処する必要があるということです。これは、エージェントが次のアクションを設定するまで、アプリケーションから待機する必要がないことを意味します。OSは単に続行します。これは、エージェントが克服するのが特に難しい課題です。 AndroidEnvは、エージェントが反応するのに時間がかかりすぎる場合に誤検知を回避するための小さな互換性ツールを提供します(処理中にタップを残すなど、Androidによって長押しが解釈される)。
達成する必要のあるタスクの定義
タスクは、RLエージェントが解決する必要のある特定の問題を定義します。エージェントの適切なトレーニングを可能にするために、タスクは関連する特定のデータの側面をキャプチャします。
- 「エピソード終了条件」:タスクが完了したのはいつか、またはタスクが確実に失敗したのはいつか
- 「報酬」:達成された目標に対する数値フィードバックの提供
- タスクのために対話できる他のアプリケーション
意味のある関連性のあるフィードバックを可能にするために、AndroidEnvはADB、「Androidデバイスブリッジ」にアクセスできます。これはデバイスからのログのストリームであるため、タスクはそれを監視し、必要に応じて事前定義された信号をトリガーできます。
可能性の海
AndroidEnvがAIと強化学習の全体的な開発に与える可能性のある影響は、特に誇張することはできません。これにより、エージェントはAndroidの操作方法(「マップを開いて近くの寿司レストランを検索する」)を学習できるだけでなく、アプリに応じて、問題解決のために他のさまざまな手法を適用することもできます。たとえば、エージェントは、長期的な勝利戦略を開発するためのゲームのプレイについてトレーニングを受けることができます(Android上のすべてのゲームが利用可能です!)。
AndroidEnvは、実質的にすべての可能なタスクでトレーニングできるMLモデルを作成するために誰でも開くことができるゲートとして機能します。気が遠くなる!
出航
私は機械学習エンジニアではないので、私の知識は表面レベルにすぎません。この記事はAndroidEnvの紹介として機能しますが、詳細については、Githubリポジトリを含むすべての関連リンクを含む補遺を確認してください。