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

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

研修コース検索

コラム

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

CTC 教育サービス

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes 

第100回 AutoML TablesによるContextual Banditsモデルの自動構築(パート2) (中井悦司) 2021年3月

はじめに

 前回に続いて、2019年に公開された論文「AutoML for Contextual Bandits」を紹介します。Contextual Banditsは、レコメンデーションに用いられる機械学習アルゴリズムの一種ですが、この論文では、Contextual Banditsに必要な回帰モデルの構築にAutoML Tablesを用いた実験結果が示されています。

Contextual Banditsの考え方

 前回の記事では、レコメンデーション機能を持ったオンラインショップにおける、AutoML Tablesの利用例を紹介しました。前回の図1に示したデータがあれば、「コンテキストとおすすめ商品」から「販売結果」を予測する回帰モデルをAutoML Tablesで構築して、これをレコメンデーション機能に利用することができます。しかしながら、これだけでは、「レコメンデーション機能を作るために、レコメンデーション機能が必要になる」という「鶏と卵」の問題が発生しました。そこで、Contextual Banditsでは、データ収集とモデルの再学習を繰り返すことで、徐々に機械学習モデルの精度を高めていくアプローチを取ります(図1)。

fig01

図1 Contextual Banditsの「データ収集+モデル学習」ループ

 詳しく説明すると次の様になります。まずはじめは、販売数が多い商品をおすすめ商品に選ぶなど、ルールベースの単純なレコメンデーションエンジンを用いて、オンラインショップのWebサイトを立ち上げます。このWebサイトを運営することで、前回の図1に相当するデータを収集することができます。このデータを用いて機械学習モデルの学習を行い、初期バージョンの(機械学習モデルを用いた)レコメンデーションエンジンを構築します。ただし、単純にこのような方法で学習データを集めると、学習データに対する品質上の問題が発生します。前述のルールベースのレコメンデーションエンジンでは、販売数が少ない商品がおすすめ商品に選ばれることがないため、こういった潜在的なおすすめ商品に対するデータが得られません。機械学習は、あくまでも、学習データに含まれる情報を元にして予測モデルを構築します。もしかしたら、今は販売数が少なくても、レコメンデーションすることで販売数が増加する商品があるかもしれません。このデータで学習したモデルでは、そのような予測を行うことができないのです。
 このような「学習データの偏り」の問題を軽減するために、図1のループでは、一定の割合(確率ε:イプシロン)でおすすめ商品をランダムに選びます。これだけで問題がなくなるわけではありませんが、少なくとも既存のレコメンデーションエンジンだけで集めたデータよりは、よい学習結果が得られると期待できます。そして、このようにして構築した初期バージョンのレコメンデーションエンジンで、最初のルールベースのレコメンデーションエンジンを置き換えます。この後は、置き換えたレコメンデーションエンジンを用いながら、確率εでランダムなおすすめ商品を混ぜるという同じ方法で学習データを収集して、再度、機械学習モデルの学習処理を行います。この作業を何度も繰り返すと、レコメンデーションエンジンの予測精度が徐々に向上していき、その結果、適切なおすすめ商品の情報含む、よりよい学習データが得られるようになります。このようにして、モデルの予測精度向上と学習データの品質向上を並行して行います。
 なお、初期の機械学習モデルは予測精度が悪いので、より多くのランダムなデータを混ぜる必要がありますが、予測精度が上がれば、ランダムなデータの必要性は下がります。そこで、ランダムなおすすめ商品をまぜる割合εは、最初は大きな値を設定しておき、図1のループを繰り返す中で徐々に値を小さくしていきます。

AutoML Tablesを用いた実験結果

 冒頭の論文では、このような手法で実際に予測精度が上げられることを人工的に用意したデータ、および、いくつかのパブリックデータを用いて検証しています。前回説明したように、一般的には、状態とアクションのペア(s,a)から報酬rを予測する関数「r=Q(s,a)」を作ることがゴールになります。人工的に用意したデータを使用する場合は、(s,a,r)の三つ組のデータを特定の分布に従う乱数で事前に大量に生成しておきます。これを用いて、ランダムに与えられた状態sに対して、対応する報酬rができるだけ大きくなるアクションaを選択するモデルを学習していきます。この場合、事前に生成したデータ全体を眺めれば、理論上の「満点」、すなわち、常にベストなアクションaを選択した場合の報酬rの合計値を計算することができます。そして、機械学習モデルが予測したアクションによる結果が、この「満点」からどれだけ離れているかを「Regret」と呼びます。Regretが小さいほど(0に近いほど)、より精度の高いモデルと言えます。論文に示された実際の実験結果は、図2のようになります。

fig02

図2 Contextual Banditsによる予測の実験結果(論文より抜粋)

 ここでは、データ全体をいくつかのブロックに分割して、1ブロック分のデータに対する予測結果を学習データとして、機械学習モデルの再学習処理を行います。横軸は、使用したブロック数(つまり、再学習の回数)で、縦軸は、それぞれのブロックに対する予測結果から計算したRegretの値です。オレンジ色のラインがAutoML Tablesを用いた場合の結果ですが、学習を繰り返すにつれて、Regretの値が減少していることがわかります。つまり、機械学習モデルによる予測の精度は確かに向上しています。もうひとつの青色のラインは、「online gradient descent」と呼ばれる既存の手法、すなわち、AutoML Tablesを用いずに、人間の研究者が考え出した機械学習モデルを用いた場合の結果です。この結果を見ると、AutoML Tablesを用いた場合の方がより高い精度を達成していることがわかります。

次回予告

 今回は、2019年に公開された論文「AutoML for Contextual Bandits」に基づいて、Contextual Banditsの考え方、そして、Contextual BanditsにAutoML Talblesを適用した際の実験結果を紹介しました。論文の中では、チェスの棋譜データなど、現実世界で収集したデータを用いた結果も紹介されていますので、興味のある方は、ぜひ参照してみてください。
 次回は、新しい話題として、Google社内で用いられる「分散ビルドシステム」のアーキテクチャーを解説した論文を紹介したいと思います。

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

 


 

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes