コンテンツに移動
Google Cloud

公開論文から学ぶ Google のテクノロジー : パート 4:機械学習 / AI 編

2023年9月14日
https://storage.googleapis.com/gweb-cloudblog-publish/images/part04.max-2600x2600.jpg
中井 悦司

ソリューションズ・アーキテクト, Google Cloud Japan

Google Cloud のサービスは、Google が長年にわたって構築してきたグローバルネットワーク、そして、世界各地のデータセンターによって提供されています。これは、Google 検索をはじめとするさまざまな Google のサービスを支えるインフラでもあり、その上では、Google 独自の技術を活用したさまざまなミドルウェアが稼働しています。

Google のエンジニアは、自分たちが開発した技術の詳細を論文として公開しており、これまでに公開された論文は、Google の研究チーム、Google Research の Web サイトにある Publication Database で検索できます。このブログシリーズでは、次の 4 つの分野に分けて、Google Cloud の技術に関連の深い論文を紹介していきます。

  • 分散処理基盤(コンテナ技術)とデータセンター

  • ネットワーク技術

  • データベース技術

  • 機械学習 / AI

このパート 4 では、機械学習と AI に関連した主要な論文を紹介します。なお、それぞれの論文は、公開時点での技術情報を伝えるものですので、今現在、Google のデータセンターで使用されている技術とは異なる場合もあるので、その点は注意してください。

機械学習を支える大規模データ処理基盤

Google では、機械学習、特にディープラーニングの技術をさまざまな自社サービスに活用していることが知られていますが、ディープラーニングを実用レベルで利用するには、大量の学習データが必要となります。本シリーズのこれまでの記事で紹介してきたように、Google のデータセンターには、大規模データを扱うための分散処理基盤が用意されており、これらがディープラーニングの活用を支えています。

特に、機械学習に必要なデータ処理に関わる技術について、代表的なものを時系列で紹介すると、次のようなものがあります。まず、2004 年に公開された次の論文では、MapReduce と呼ばれる独自の分散データ処理技術を用いている事がはじめて公開されました。

この論文に触発された他企業のエンジニアが、これと同じ仕組みをオープンソースの Hadoop MapReduce として再実装したことから、MapReduce は業界標準の技術として広く利用されるようになりました。

ただし、オリジナルの MapReduce では、実行したいデータ処理を Map 処理と Reduce 処理に分解して実装するという手順が必要で、誰もが簡単に使いこなせるものではありませんでした。その後、Google 社内では、MapReduce と同等のデータ処理をより簡単に利用できるツールとして、FlumeJava が開発されました。FlumeJava のアーキテクチャーは、2010 年の次の論文で公開されています。

次の図にあるように、必要なデータ処理をステップごとの手順に分けて、データ処理パイプラインとして定義することができます。

また、このようなデータパイプラインをバッチで実行するだけではなく、ストリーミングデータをリアルタイムに処理し続ける、リアルタイム・データパイプラインの技術も開発されました。2013 年に公開された次の論文では、MillWheel というシステムが紹介されており、Google 検索の利用状況をリアルタイムに分析する Google Trend のバックエンドとしての利用例が紹介されています。

FlumeJava と MillWheel は、いずれも Google 社内で使用されているシステムですが、これらの技術をベースとして生まれたのが、バッチデータ処理とストリームデータ処理を統合した Dataflow です。Dataflow は、Google Cloud のサービスとして提供されており、実業務で活用している方も多いと思いますが、Dataflow のデータ処理方式については、2015 年に公開された次の論文に詳しい解説があります。

次の図は、ウォーターマークを用いた遅延データへの対応を説明したものですが、この他にもスライディングウィンドウによるデータの分割など、Dataflow を使いこなすための参考となる情報が詰まった論文です。

実プロダクトでの機械学習の活用例

前述のように、Google が提供するサービスの多くが機械学習の技術を活用していますが、実際の活用例を紹介した論文も多数公開されています。こちらも時系列で紹介すると、次のようなものがあります。

まず、次の論文では、Gmail の「重要マーク」機能での利用例が紹介されています。受信メールの中で、特に重要度が高いと思われるものを機械学習で判別して、「重要マーク」を付けるというものです。

この論文は、2010 年に公開されたもので、当時はまだディープラーニングの技術は実用化されておらず、次の図に示すような非常にシンプルなモデルが使用されています。

ここでは、全ユーザーに共通の傾向を捉える「Global model」とユーザーごとの傾向を捉える「User model」を組み合わせて判別する仕組みが解説されており、これにより、Gmail の使用頻度が少ないユーザーに対しても信頼性の高い判定ができることが説明されています。

そして、ディープラーニングの本格的な活用を象徴するのが、2016 年に公開された次の論文です。この論文では、YouTube の「お勧め動画」の機能における、ディープラーニングの活用例が詳しく解説されています。

YouTube には膨大な数のコンテンツがありますので、ここからお勧め動画を高速に発見するには、少し工夫が必要です。次の図のように、膨大な動画コンテンツの中から、お勧め動画の候補を荒く数百本に絞り込む「candidate generation モデル」と選ばれた候補を精密に順位づけする「ranking モデル」を組み合わせたアーキテクチャーが紹介されています。

その他にも、「動画を開く確率」ではなく、「動画の視聴時間」を予測することで、タイトルだけが面白そうな動画ではなく、ユーザーが本当に興味を持つコンテンツを発見するなどの工夫も紹介されています。

さらに、2017 年に公開された次の論文では、Google ドライブの「クイックアクセス機能」(ユーザーが必要とするファイルの候補リストを表示する機能)における機械学習の活用例が紹介されています。

特にこの論文で強調されているのが、ユーザーのプライバシー保護です。ユーザーのプライバシー保護の観点から、ユーザーが所有するファイルの内容をモデルが参照することはできません。ここでは、ファイルのオープン回数など、匿名化された統計データのみから予測する難しさが説明されています。

これらの例から分かるように、Gmail や YouTube など、実際のプロダクトで機械学習を活用する上では、とにかく予測ができればよいわけではなく、利用目的に応じてモデルの構造や予測内容を深く考える必要があり、さらには、ユーザーのプライバシー保護への対応も必要です。これらの論文からは、機械学習を実プロダクトで利用するための数多くのヒントが発見できるでしょう。

Google Cloud ユーザーへの技術提供

ここまでは、Google の自社サービスにおける機械学習の活用例でしたが、ここで培われたさまざまな技術は、Google Cloud でも利用することができます。データの特性に応じて適切なモデルを自動構築する AutoML は、その一例ですが、2019 年に公開された次の論文では、AutoML Table(現在の AutoML Tabular)が Contextual Bandits と呼ばれるユースケースのベンチマークで高い性能を発揮することが報告されています。

また、最近話題の大規模言語モデルに関する論文もあります。2022 年に公開された次の論文では、PaLM と呼ばれる大規模言語モデルが算数の問題に回答したり、プログラムコードを生成する例が紹介されています。

次の図は、論文内で紹介されている、PaLM が Python のコードを生成する例です。

Google Cloud では、PaLM の最新モデルである PaLM 2 を利用することができます。PaLM 2 については、次のブログ記事も参考にしてください。

その他の論文

機械学習 / AIは、Google の中でも特に重要な研究テーマですので、機械学習 / AIに関する公開論文は膨大な数にのぼります。少し変わったトピックの論文を追加で紹介すると、次のようなものがあります。

2018 年に公開された次の論文では、スマートフォンで検索テキストを入力する際の入力候補予測に Federated Learning の技術が応用されている事が紹介されています。

Federated Learning は、次の図のように、データセンターのコンピューティングリソースで学習した全ユーザーに共通の予測モデル(Baseline Model)と、個々のユーザーが利用する端末上で学習した、そのユーザーに固有の予測モデル(Triggering Model)を組み合わせるというアプローチです。先ほどの YouTube のお勧め動画機能と類似した考え方ですが、Baseline Model で候補を生成した後に、Traiggering Model でユーザーごとのランキングを行うという仕組みになります。

そして、2022 年に公開された次の論文では、「ディープラーニングのモデルは何を学んでいるのか」という興味深いテーマが取り上げられています。

この論文では、AlphaZero と呼ばれる強化学習のフレームワークで、チェスを自動プレイするエージェントを学習した後、このエージェントが盤面のどのような特徴に注目しているのか、人間のプロのプレーヤーと同じ考え方をしているのか、そしてまた、学習の過程で打ち筋がどのように変化するのかなどを分析しています。

この最後の例は、Google のサービスに直接関係するものでありませんが、テーマととしては、学習済みのモデルを分析して、何を根拠に予測しているのかを理解する「説明可能な AI」につながるものです。Google Cloud でも「説明可能な AI」に関連した機能が提供されていますが、このような基礎研究がベースになっているものと考えられます。

さいごに

今回のブログ記事のシリーズを通して、Google のエンジニアが自社サービスのために研究・開発してきたさまざまな技術が、Google Cloud を通してみなさんにも利用可能な形で提供されていることがお伝えできたと思います。英語で書かれた学術論文となると、読み通すのはなかなか大変ですが、興味を持った論文があれば、まずは、一度、目を通してみてください。Google Cloud をより深く理解して、より楽しく使いこなす、「一歩先を行くクラウドエンジニア」になるためのヒントをぜひ発見してください。

投稿先