IT・技術研修ならCTC教育サービス

サイト内検索 企業情報 サイトマップ

研修コース検索

コラム

グーグルのクラウドを支えるテクノロジー

CTC 教育サービス

 [IT研修]注目キーワード   OpenStack  OpenFlow/SDN  情報セキュリティ  Python  システムトラブルシュート 

第12回 グーグルのシステムにおける数学の活用?! 2017年3月

はじめに

 最近、機械学習やディープラーニングに注目が集まる中で、改めて数学を勉強し直したいというITエンジニアの声を耳にすることがあります。冷静に考えてみると、機械学習にかぎらず、あらゆる情報技術を支える根底にあるのが数学です。数学の知識を抜きにして、インフラ技術、あるいは、ソフトウエア技術を根本から理解することは困難です。これは、逆に言うと、数学の知識が増えれば、それだけさまざまな技術を理解して使いこなす喜びも増えるということかも知れません。

 「Mathematics at Google」というプレゼンテーションスライドでは、Googleのサーチエンジンの出発点となった「PageRank」のアルゴリズムをはじめとして、Gmail、Googleトレンド、音声検索、Google画像検索、YouTube、Google翻訳など、さまざまなGoogleのサービスにおける数学の役割が紹介されています。その中で、参考資料の1つにあるのが「The Learning Behind Gmail Priority Inbox(PDF)」という論文です。今回は、この論文を元にして、Googleのサービスにおける機械学習の活用例を紹介したいと思います。

受信メールの重要性の判定法

 Gmailの機能に重要メールの自動判定があることは、みなさんご存知でしょう。受信メールの中で、重要な内容のものに対して「重要」というラベルが自動で付与されるというものです。それでは、それぞれのメールの重要性は、どのようにして判定されるのでしょうか。先ほどの論文で紹介されているのはロジスティック回帰と呼ばれる手法で、数式で表わすと図1のようになります。

図1 ロジスティック回帰による判別式(論文より抜粋)

 いきなり数式が登場して驚くかも知れませんが、それほど複雑なものではありません。記号 f で表された複数の変数は、メールから抽出したさまざまな「特徴」を表わすもので、これらの特徴に、g と w で表される重みを掛けて足し合わせた合計が s です。この値が大きければ大きいほど、メールの重要性がより高いものと判断します。重要性に大きな影響を持つ特徴ほど、対応する重みの値が大きくなるという仕組みです。図1の右側にある計算式 p は、s の値を0~1の範囲に変換するもので、「重要メールである確率」と解釈することができます。特徴量の1次関数 s をこのような計算式で確率 p に変換する手法が、ロジスティック回帰に他なりません。

 ここで重要になるのは、どのような特徴 f を計算に利用するのか、そして、重要度 s を計算する際の重みをどのように学習するのかという点になります。具体的な特徴の内容は論文には記載されていませんが、全部で数百の特徴量があり、次のようなカテゴリに分類されることが示されています。

  • Social features:メール送信者との関係(頻繁にメールを送受信する相手かどうかなど)
  • Content features:メールのヘッダー情報やメールに含まれる単語など
  • Thread features:該当メールを含むスレッドの情報
  • Label features:ユーザーが定義したフィルターによるラベル付け

 さらに、図2のように、「グローバルモデル」と「ユーザーモデル」を組み合わせるという工夫が紹介されています。

図2 グローバルモデルとユーザーモデルを組み合わせた重要度の判定(論文より抜粋)

 グローバルモデルに含まれる重み係数 g は、すべてのユーザーに共通の値を持っており、どのような特徴が重要性に大きな影響を持つかをユーザーに関わらずに表現します。一方、ユーザーモデルに含まれる重み係数 w は、それぞれのユーザーごとに個別の値を取ります。この組み合わせにより、ユーザーに依存しない大まかな傾向を決めた上で、さらに、ユーザー個別の微調整が行われることになります。

モデルの学習方法

 前述の係数 g と w の値は、教師データを用いた学習処理でチューニングしていきます。はじめに、それぞれの受信メールに対してユーザーがどのような行動を取ったのか(メールを開いたのか、返信を書いたのかなど)によって、それが重要なメールだったのかという情報を付与します。あるいは、自動で「重要」というラベルが付いたメールに対して、ユーザー自身がそのラベルを削除した場合は、これは重要ではなかったという事がわかります。これらの情報に基づいて、係数の値を調整していきます。

 そして、この学習処理は、24時間継続して行われているとの説明があります。メールの受信処理は世界中のデータセンターで行われますので、それぞれのデータセンターで分散処理が行われます。当然ながら、多数のメールを送受信するユーザーと、そうでないユーザーで学習量が変わることになりますが、ここで、先ほどのグローバルモデルとユーザーモデルの組み合わせが効いてきます。メールの送受信量が少ないユーザーの場合でも、全ユーザーに共通となるグローバルモデルの部分は、日々、学習が進んでいきますので、判定精度がまったく向上しないということはありません。そして、メールの送受信量が多いユーザーについては、ユーザーモデルの部分により、さらに、そのユーザーに固有のファインチューニングが行われます。

 また、どの程度重要なメールに対して「重要」というラベルを付けたいのかという嗜好性もユーザーによって異なります。自動で付与された重要ラベルを頻繁に削除するユーザーについては、ラベルを付けるしきい値(確率がいくら以上であればラベルを付けるのか)を自動調整するなどの工夫も紹介されています。論文の中では、ユーザーモデルによるファインチューニングとしきい値の調整により、分類精度が確かに向上しているとの結果も示されています。

次回予告

 今回は、Gmailの重要メール判定機能に関する論文を通して、数学的な理論がサービスの機能実装に利用される例を紹介しました。ロジスティック回帰と呼ばれる、比較的シンプルな機械学習のモデルでしたが、Gmailでやり取りされる膨大なメールに対して、それぞれから数百個の特徴を抽出して、判定処理と学習処理をオンラインで実施するための分散基盤を実現するには、さまざまなチャレンジがあるものと想像されます。論文の中では、Bigtableを用いた基盤実装の方法、あるいは、オンラインでパラメーターを調整するアルゴリズムなどにも触れられていますので、興味のある方は、ぜひ論文も参照してみてください。次回は、ネットワークの話題に触れてみたいと思います。

Disclaimer:この記事は個人的なものです。ここで述べられていることは私の個人的な意見に基づくものであり、私の雇用者には関係はありません。

 


 

 [IT研修]注目キーワード   OpenStack  OpenFlow/SDN  情報セキュリティ  Python  システムトラブルシュート