機械学習 | AI tech studio https://cyberagent.ai AI事業本部は、サイバーエージェントグループのデジタルマーケティング分野におけるサービス開発を行う組織です。 Wed, 08 Jan 2025 13:53:18 +0000 ja hourly 1 https://wordpress.org/?v=5.3.26 【採択論文紹介】短絡的な予測の抑制手法 (TACL) https://cyberagent.ai/blog/research/%e6%8e%a1%e6%8a%9e%e8%ab%96%e6%96%87%e7%b4%b9%e4%bb%8b/20081/ Thu, 07 Nov 2024 06:21:19 +0000 https://ai-blog-admin.cyberagent.ai/?post_type=blog&p=20081 AI Lab NLPチームの本多です。この記事では、モデルが陥りがちな短絡的な予測を抑制し、頑健な予測を可能にする手法を紹介します。本研究の成果は Transactions of the Association for Computational Linguistics (TACL) に採択されています。

Not Eliminate but Aggregate: Post-Hoc Control over Mixture-of-Experts to Address Shortcut Shifts in Natural Language Understanding [Code]
Ukyo Honda, Tatsushi Oka, Peinan Zhang, Masato Mita

はじめに

自然言語理解タスクの主要なデータセットでは、アノテータの偏好や経験則、あるいは自然言語の構成的な特性などの影響により、ラベルと相関する単純な特徴量が存在していることが知られています。図1で例を見てみましょう。

図1:ショートカットの例。

図1では含意関係認識を例にとっています。含意関係認識は、前提文Pに対して仮説文Hの内容が含意(entailment)、矛盾、無関係(図1ではまとめてnon-entailmentと表記)のどの関係(ラベル)であるかを判別するタスクです。図1上部は、学習データにおいてPとHの単語の一致率(a1, a2)やHの文長(a3, a4)がラベルと相関している様子を表しています。これらの特徴量は、学習データとそれと同一の分布から得られたデータにおいてはラベルに対する予測力を持つことになります。しかし、当然これらはラベルを決定する本質的な情報ではありません。図1下部のように、学習データと異なる分布から得られたデータにおいては、これらの特徴量とラベルとが同様には対応しない事例が容易に見つけられます。

このような単純な特徴量はショートカットと呼ばれ、機械学習における問題のひとつとなっています [1, 2]。これが問題であるのは、上で見たようにショートカットとラベルとの相関は簡単に変動してしまい、モデルがこれに依存すると予測の頑健性が損なわれるためです。加えて、単純であるがゆえにモデルにとって捉えやすく、学習・予測時に依存しやすいということが問題を深刻にしています。また、ショートカットは意図的にデータに混入されたものではないため、何がショートカットになっているのかわからないという問題もあります。

そこで、ショートカットへの依存を抑制して頑健な予測を行おうという研究がなされてきました [3, 4]。

提案手法

本研究では、この分布外データにおける予測の問題を、不確実性下の意思決定の問題と考えます。ショートカットを含む自然言語理解データでは、ラベル予測に本質的な特徴量に加えていくつかの特徴量がラベルと相関しています。ただし、それらの詳細は通常わかりません。今回対象とする分布外データで問題となるのは、いずれかの特徴量についてラベルとの相関が変動するがどの特徴量について変動するのかはわからない、ということです。そこで、どの特徴量に依拠して予測すればいいのかわからない不確実性のもとで最適な意思決定を行おうということを考えます。この目的のために提案する手法は、学習時と推論時の2つのパートから成っています。

図2:提案手法概要。

学習時は、複数の特徴量がラベルと相関するというデータ構造をモデル化するため、mixture-of-experts (MoE) モデル、特にmixture-of-softmax (MoS) モデル [5] を用います 。それぞれ異なるパラメータを持つexpert (\(E^k\)) が入力事例\(x\)のラベルを予測し、router (\(\pi\)) が事例ごとにどのexpertの予測を用いるかの重みを決めます。また、各expertがそれぞれ異なる特徴量に基づいて予測するよう促進するため、自己注意機構 [6] にヒントを得たペナルティ項を提案しました。ここでは詳細は省きますが、異なる事例は異なる特徴を持つと仮定し、事例ごとに異なるexpertに割当てられるよう促進します(図3)。

図3:理想的な事例割当ての例。

推論時は、どのexpertの予測を用いるべきかわからないという想定のもとで、最適な意思決定を行います。決定理論に基づいた2つの手法を提案しており、いずれもexpertの割当てを決定する\(\pi\)を、ルールベースの重み\(\pi^*\)に置き換えてexpertの予測の統合します(図2右)。1つ目のuniform weightingでは、どのexpertに依拠すべきかわからないが、どのexpertも同等によく予測できると仮定して、expertの予測の平均をとります。2つ目のargmin weightingでは、より悲観的な状況を考えます。各選択肢について不正解となるリスクが最も高い状況を想定し、そのような最悪の場合でも最も良い結果が得られる選択肢を選びます(図4)。直感的には、各ラベルで最も慎重なexpertの意見を聞いて判断するような選択となります。

図4:Argmin weightingの例。

提案手法の詳細や既存手法との違いについてはぜひ論文をご覧ください。

実験

実験では、含意関係認識(MNLI)、言い換え同定(QQP)、事実性検証(FEVER)の3つの自然言語理解タスクにおいて、提案手法を適用することで分布外データ(OOD)において頑健な予測が可能になることを示しました(表1)。実験設定や比較手法の詳細は論文をご覧ください。また、論文では推論時操作の適応的な使い分けの可能性や、expertが捉えた特徴量の解釈性、要素技術ごとの影響などについても実験・議論しています。

表1:主な実験結果。

おわりに

本研究では、MoEモデルと決定理論を用いることで頑健な予測を可能にする手法を提案しました。このような決定理論を用いた予測の後処理には、今後さらなる発展の可能性があると考えています。今回の研究は、NLPチームと、研究開始当時にAI Lab経済学チーム所属であった岡達志教授(慶應大)との研究議論から始まったものです。NLPチームでは、今回の研究や強化学習チームとの共同研究などのように、異なる専門領域との共同研究を進めてきました。今後も連携を深めつつ、広告文生成や関連する基礎研究について幅広く取り組んでいきます。毎年、博士課程の学生を対象にリサーチインターンシップを募集していますので、興味を持たれた方はぜひお声がけください。

参考文献

[1] Causally Motivated Shortcut Removal Using Auxiliary Labels (Makar et al., AISTATS 2022)
[2] Causal Inference in Natural Language Processing: Estimation, Prediction, Interpretation and Beyond (Feder et al., TACL 2022)
[3] Don’t Take the Easy Way Out: Ensemble Based Methods for Avoiding Known Dataset Biases (Clark et al., EMNLP-IJCNLP 2019)
[4] Unlearn Dataset Bias in Natural Language Inference by Fitting the Residual (He et al., 2019)
[5] Breaking the Softmax Bottleneck: A High-Rank RNN Language Model (Yang et al., ICLR 2018)
[6] A Structured Self-attentive Sentence Embedding (Lin et al., ICLR 2017)

]]>
Google® Coral Edge TPUを16個搭載したPCIeボードの実力検証(1)環境構築と簡易動作検証 https://cyberagent.ai/blog/research/edgetpu16_verify_jp Wed, 30 Jun 2021 22:30:18 +0000 https://ai-blog-admin.cyberagent.ai/?post_type=blog&p=14996 Japanese / English

サイバーエージェント AI Lab HCI (Human Computer Interaction) チームの 兵頭 です。2021年4月から大阪大学の研究チームでリサーチエンジニアとしてお世話になっています。HCIというと少し聞きなれないワードですが、接客対話エージェントを研究・開発 しているチームです。前職は SIer の R&Dチーム のマネージメントをしていましたが、いきなりエンジニア職へ転向した、というちょっとした変わり者です。周りはものすごい経歴の方々に囲まれておりとても恐縮していますが、伸び伸びと活動させていただけています。

さて、本記事をご覧いただいている方の中には私の プライベートの活動 をご存じの方がいらっしゃるかもしれませんが、今回はちょっと普段とは色味の異なることを記事にしてみようと思います。好きなことを書いていいんですって。ワクワクしますね。

Google® Coral Edge TPU CRL-G116U-P3DF

図1 CRL-G116U-P3DF (参考文献 [1] より引用)

1. Google® Coral Edge TPU CRL-G116U-P3DF

初のブログですが、今回はこのデバイスの性能検証や現実的な使い道を模索します。2020年12月に ASUS から発売された、TPUが16個も搭載されたハイパフォーマンスアクセラレータカードです。2021年6月8日時点のAmazonでの販売価格は ¥291,103- です。まずはこのいかにもなデバイスがどのような仕様なのかを見てみましょう。右側の列が今回検証する   CRL-G116U-P3DF  のスペックです。 仕様上で注目すべき点は PCI Express 3.0 x16 のスロットを専有することでGPUのスロットと競合する点です。そしてGPU並に大きい、高価。とても悩ましいですね。いったいどのような用途で稼働させればペイできるのでしょうか。

表1 CRL-G18U-P3DF / CRL-G116U-P3DF 仕様 (参考文献 [2] より引用)

また、公式サポートOSが Ubuntu18.04 あるいは Deian 10 と、かなり古いものになっています。必要なリソースが全てOSSとして公開されていてビルド可能な状態であれば、最新の Ubuntu 21.04 や Debian 11 などのOSへも頑張れば導入できるかもしれませんが、コンパイラのバージョン齟齬などによって動作に支障をきたして本来実施したい検証が滞ることを避けるため、今回は公式のチュートリアルどおりにセッティングを行っていきたいと思います。

ハードウェアのブロックダイアグラムです。16個の TPU が PCIe Gen3 で2個ずつ接続されていますね。過去に3個を並列で長時間使用してみた体感として、連続利用をするとかなりの高温になることがありました。16個のTPUの作動温度上限の 55 ℃ 以下を保つために冷却用FANが2個も付属しているのはなんとなく納得感があります。

図2 ブロックダイアグラム (参考文献 [3] より引用)

 

セッティングの前に、念の為  EdgeTPU USB Accelerator  のスペックと比較してみましょう。正確な数値が公称されているとすれば、WATTあたりの処理性能は USB Accelerator のほうが 1.6 倍高いことになっています。また、一見すると一般的な RTX30xx 系のGPUと比べてWATTあたりの処理性能は高く見えますが、 EdgeTPU は INT8 の整数演算に特化したデバイスであることから単純比較はできないと考えます。のちに動作検証を行いますが、INT8量子化によるモデルの精度劣化を一切加味しない場合は十分に高性能であると言えそうです。問題は 16個 ものTPUをいかにうまく活用・運用するかに尽きそうです。

表2 EdgeTPU USB Accelerator 仕様 (参考文献 [4] より引用)

2. Google® Coral Edge TPU CRL-G116U-P3DF のキッティング

では早速ですが、アクセラレータカードをキッティングします。PC筐体への物理的な取り付けの手順は省略し、ソフトウェアの導入部分からの手順を順次記載します。OSのバージョンが Ubuntu 18.04 である場合は、公式のユーザーズマニュアルの通りに作業を実施することで、おおむね1時間ほどで初回動作確認までたどり着くことができます。公式のドキュメントは こちら です。

2-1. Edge TPU driver のインストール

2-1-1. Kernel のバージョン確認

下記のコマンドを実行した結果表示されたバージョン番号が 4.18 以下なら 2-1-4 へ。 4.19 以上なら 2-1-2 へ

$ uname -r

2-1-2. Apex ドライバの存在確認

下記のコマンドを実行した結果、何も表示されなければ 2-1-4 へ。 apex  という文字が含まれた出力が表示された場合は 2-1-3 へ

$ lsmod | grep apex

2-1-3. Apex および Gasket の無効化

下記のコマンドを実行して端末を再起動

$ echo "blacklist gasket" >> /etc/modprobe.d/blacklist-apex.conf
 $ echo "blacklist apex" >> /etc/modprobe.d/blacklist-apex.conf
 $ sudo reboot

2-1-4. ドライバインストール

下記のコマンドを実行して端末を再起動

$ echo "deb https://packages.cloud.google.com/apt coral-edgetpu-stable main" | sudo tee /etc/apt/sources.list.d/coral-edgetpu.list
 $ curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
 $ sudo apt update && sudo apt install -y gasket-dkms libedgetpu1-std
 $ sudo sh -c "echo 'SUBSYSTEM==\"apex\", MODE=\"0660\", GROUP=\"apex\"' >> /etc/udev/rules.d/65-apex.rules"
 $ sudo groupadd apex && sudo adduser $USER apex
 $ sudo rm /etc/modprobe.d/blacklist-apex.conf
 $ sudo reboot

2-2. Edge TPU runtime のインストール

2-2-1. Pythonライブラリ (PyCoral) のインストール

下記コマンドを実行

$ sudo apt install python3-pycoral

2-3. Edge TPU の動作確認

恒例の 「オウムの画像認識」 が正常に行われるかどうかを確認します。下記のとおり実行します。

$ mkdir coral && cd coral
 $ git clone https://github.com/google-coral/pycoral.git && cd pycoral
 $ bash examples/install_requirements.sh classify_image.py
 $ python3 examples/classify_image.py \
     --model test_data/mobilenet_v2_1.0_224_inat_bird_quant_edgetpu.tflite \
     --labels test_data/inat_bird_labels.txt \
     --input test_data/parrot.jpg

下記のように結果が表示されれば導入成功です。

Initializing TF Lite interpreter...
INFO: Initialized TensorFlow Lite runtime.
----INFERENCE TIME----
Note: The first inference on Edge TPU is slow because it includes loading the model into Edge TPU memory.
11.8ms
3.0ms
2.8ms
2.9ms
2.9ms
-------RESULTS--------
Ara macao (Scarlet Macaw): 0.76562

認識対象の画像は下図のオウム (コンゴウインコ = Ara macao) の画像です。ここまでは何も躓くことなく EdgeTPU USB Accelerator を使用するときと同じ使用感で動作させることができました。とても簡単ですね。これだけの検証では意味がありませんので、特有のAPIなどを利用してマルチTPUの利点を最大限に活かしてどのようなことができるか、を模索していきたいと思います。

図3 Ara macao (参考文献 [5] より引用)

3. 初回記事はここまで

少々物足りないのは承知の上ですが、初回の記事は環境構築と簡易的な動作確認までとします。次回以降は概ね下記のようなトピックであまり期間を空けずに記事を連載していく予定です。ただし、詳細や公開の順序は検証結果に応じて柔軟に変更させていただくスタイルとするつもりです。私がいつも他のスペースで書いている記事はとてもボリュームのあるものが多いですが、本記事を書くツールの制約上、大きなボリュームの記事を一気に書き切ることがとても大変でしたので分割させていだく次第です。

  1. 量子化モデルの分割・マルチTPU推論
  2. 入力データの分割推論
  3. 異なるタスクのモデルの直列推論
  4. 異なるタスクのモデルの並列推論
  5. 連続稼働耐性の検証
  6. TPUごとのコンテナ化駆動は可能?
  7. 推論Pipelineの構築

では、次回をお楽しみに。

4. 参考文献

[1] ASUS, AI-Accelerator-PCIe-Card, 概要, https://www.asus.com/jp/Networking-IoT-Servers/AIoT-Industrial-Solution/AI-Accelerator/AI-Accelerator-PCIe-Card/

[2] ASUS, AI Accelerator Card CRL-G18U-P3DF/CRL-G116U-P3DF Hardware User Manual, 1.3 Product specification

[3] ASUS, AI Accelerator Card CRL-G18U-P3DF/CRL-G116U-P3DF Hardware User Manual, 1.7 Block diagram

[4] Google Coral, USB Accelerator Tech specs, https://coral.ai/products/accelerator/

[5] Google Coral, Get started with the USB Accelerator, https://coral.ai/docs/accelerator/get-started/#3-run-a-model-on-the-edge-tpu

]]>
Gradient Reversal LayerではじめるPyTorchカスタム関数 https://cyberagent.ai/blog/research/11863/ Tue, 28 Jan 2020 10:08:58 +0000 https://ai-blog-admin.cyberagent.ai/?post_type=blog&p=11863 Gradient Reversal Layer

AI Labの大田(@ciela)です。近頃の機械学習モデルにおいて、敵対的な学習を行うことで有名なのは生成器ネットワークと識別器ネットワークが互いに競い合うように学習するGenerative Adversarial Networks (GAN) かと思いますが、転移学習の一種であるドメイン適応においても敵対的な学習を行うモデルが提案されています。ドメイン適応の目的は、学習データ(ソースドメイン)とテストデータ(ターゲットドメイン)におけるデータ分布が異なるような状況においてもうまく機能するようなモデルを学習することです。ターゲットドメインのデータ分布をソースドメインのデータ分布に近づけるように学習するのですが、これを敵対的なやり方で行うというわけです。ドメイン適応自体についてはAI Labの安井もブログ記事を書いていますのでこちらも併せてお読みいただければ幸いです。

Ganinらは教師なしドメイン適応モデルであるDomain-Adversarial Neural Network (DANN)を提案しており、異なる画像表現を持つ画像データセットでの有効性を示しています。

Domain-Adversarial Training of Neural Networks [Ganin, JMLR2016]

DANN

論文よりDANNのアーキテクチャ図

上図を参照してみると特徴抽出CNNを経たあとクラス分類とドメイン分類の2つのサブネットワークに分岐していますが、ドメイン分類のサブネットワークにおいてはGradient Reversal Layer (GRL)という層を通していることが分かります。この層は誤差逆伝搬時にのみ前段の層へ伝わる勾配の符号を反転させるのですが、これによってクラス分類能力を高めつつもドメイン分類能力は落とすという敵対的な学習が行われます。その結果、前段の特徴抽出層においてドメイン不変性のある特徴獲得能力が向上するという仕組みになっています。

このGRLはGANの学習にも利用できます。生成器と識別器を交互に学習させる実装が主流かと思いますが、下記の記事においてはGRLを利用して生成器へ伝搬される勾配を反転するだけで目的関数がシンプルになり実装が簡単になるという利点が紹介されています。

Gradient reversal layerを使うとGANの実装が簡単になる – Qiita

さて、今回は私もドメイン適応モデルを構築する機会があり、ベースモデルとしてDANNを実装する上でGRLについても理解・利用する必要性が出てきました。普段使いしているDNNフレームワークはPyTorchなのですが、2020年1月現在の最新版である1.4.0にはこのGRLの実装は含まれていないようです。これまで活性化関数などを独自実装した経験がなかったこともあり、本記事ではPyTorchでGRLの実装を行い実際に簡単なモデルに組み込んで挙動を確認してみたいと思います。

PyTorchでのGRL実装

PyTorch において、誤差逆伝播時に勾配情報を制御するためには

torch.autograd.Function
 クラスを利用して独自関数を定義することになるかと思います。

PyTorch: Defining New autograd Functions — PyTorch Tutorials 1.4.0 documentation

上記ページを参考にして定義してみた場合、下記のようになります。

class GradientReversalFunction(torch.autograd.Function):
    
    @staticmethod
    def forward(ctx, input_forward: torch.Tensor, scale: torch.Tensor) -> torch.Tensor:
        ctx.save_for_backward(scale)
        return input_forward

    @staticmethod
    def backward(ctx, grad_backward: torch.Tensor) -> Tuple[torch.Tensor, torch.Tensor]:
        scale, = ctx.saved_tensors
        return scale * -grad_backward, None

順伝播時の挙動を

forward
 関数内に、誤差逆伝播時の挙動を
backward
関数内にそれぞれ記述します。先述した通り、GRLはニューラルネットワークにおける誤差逆伝播時に勾配の符号を反転させる層です。基本的に必要なことはそれだけなのですが、DANNアーキテクチャ図における偏微分式を素直に実装するのであれば、勾配の符号反転と同時に行うスケーリング用の係数\(\lambda\)も指定できるようにしておくことが望ましいでしょう。このスケーリング係数は
forward
 関数の2つ目の引数として指定し、順伝播時にコンテキストオブジェクトに保存しておきます。そうしておくことで逆伝播時にコンテキストオブジェクトから参照でき、勾配のスケーリングを行うことが可能となります。
forward
 関数の入力が2つとなったため、
backward
 関数の戻り値も2つとなりますが、スケーリング係数に対して逆伝播させる勾配はないため
None
 を返しておきます。

GRLの関数実装自体は以上で完了です。簡単ですね。PyTorchでの独自関数実装の入門に最適な題材かと思います。あとはお作法的な問題ではあるのですが、次に行うネットワーク実装の見通しを良くするために

torch.nn.Module
でラップして利用しやすくしておきます。

class GradientReversal(nn.Module):

    def __init__(self, scale: float):
        super(GradientReversal, self).__init__()
        self.scale = torch.tensor(scale)

    def forward(self, x: torch.Tensor) -> torch.Tensor:
        return GradientReversalFunction.apply(x, self.scale)

これでPyTorchでのニューラルネットワークからGRLを利用する準備が整いました。次は実際にGRLの有無での挙動の違いを確認してみましょう。

GRLの挙動確認

ここではDANNモデルのネットワークアーキテクチャを抽象化した下記のようなシンプルなニューラルネットワークを考えます。

BranchReversalSiameseNet

入力として任意のベクトルを受け取り共通層を経たあとTrunk層とBranch層へと分岐するのですが、Branch層のみ直前にGRLを配置することでBranch側から逆伝搬された勾配のみ符号反転を行うアーキテクチャです。また、GRLの有無に伴う逆伝播の確認を簡単にするため、Trunk層とBranch層における出力値への影響が等しくなるように両者間での重みを共有するSiamese構造にしています。GRL以外の隠れ層は入力・出力テンソルの次元が全て1次元でバイアス項なしの全結合層とし、GRLのスケーリング係数は1.0を設定しておきます。GRLが正しく機能していれば、Trunk側から逆伝搬されてくる勾配が相殺され、共通層に届く勾配値が0となるはずです。

このアーキテクチャの実装コードは下記になります。

class BranchReversalSiameseNet(nn.Module):

    def __init__(self, use_grl: bool = True):
        super(BranchReversalSiameseNet, self).__init__()
        self.use_grl = use_grl
        self.shared = nn.Linear(1, 1, bias=False)
        self.trunk_branch = nn.Linear(1, 1, bias=False)
        self.grl = GradientReversal(scale=1.0)

    def forward(self, x: torch.Tensor) -> Tuple[torch.Tensor, torch.Tensor]:
        y_shared = self.shared(x)
        y_trunk = self.trunk_branch(y_shared)
        if self.use_grl:
            y_shared = self.grl(y_shared)
        y_branch = self.trunk_branch(y_shared)
        return y_trunk, y_branch

それではGRLの有無による誤差逆伝播を実際に確かめて行きたいと思います。上記クラスをインスタンス化し、ランダム値を入力してTrunk層とBranch層からの出力を合算した値から誤差逆伝播を行い、共通層へ届いた勾配情報を表示するようなスクリプトを記述してみました。最初にネットワーク初期化時の各層の重みも確認のために表示しています。

print('===== BranchReversalSiameseNet Parameters ======')
torch.manual_seed(0)
model = BranchReversalSiameseNet()
print(f'Shared Weight: {list(model.shared.parameters())[0].data}')
print(f'Trunk/Branch Weight: {list(model.trunk_branch.parameters())[0].data}')
print()

print('===== BranchReversalSiameseNet w/o GRL =========')
torch.manual_seed(0)
model = BranchReversalSiameseNet(use_grl=False)
x = torch.randn(1)
print(f'Input: x={x.data}')
y_trunk, y_branch = model(x)
y_out = y_trunk + y_branch
print(f'Output: y_trunk={y_trunk.data}, y_branch={y_branch.data}, y_out={y_out.data}')
y_out.backward()
print(f'Shared Gradient: {list(model.shared.parameters())[0].grad}')
print()

print('===== BranchReversalSiameseNet w/ GRL =========')
torch.manual_seed(0)
model = BranchReversalSiameseNet()
x = torch.randn(1)
print(f'Input: x={x.data}')
y_trunk, y_branch = model(x)
y_out = y_trunk + y_branch
print(f'Output: y_trunk={y_trunk.data}, y_branch={y_branch.data}, y_out={y_out.data}')
y_out.backward()
print(f'Shared Gradient: {list(model.shared.parameters())[0].grad}')
print()

自分の環境において、上記スクリプトの実行結果は下記になりました。いずれも順伝播時の出力自体は等しいものの、GRLありの場合は誤差逆伝播後に共通層へ伝搬されてきた値は0になっており、GRLを利用していない場合とで違いが現れたことが確認できました。

===== BranchReversalSiameseNet Parameters ======
Shared Weight: tensor([[-0.0075]])
Trunk/Branch Weight: tensor([[0.5364]])

===== BranchReversalSiameseNet w/o GRL =========
Input: x=tensor([-0.2905])
Output: y_trunk=tensor([0.0012]), y_branch=tensor([0.0012]), y_out=tensor([0.0023])
Shared Gradient: tensor([[-0.3117]])

===== BranchReversalSiameseNet w/ GRL ==========
Input: x=tensor([-0.2905])
Output: y_trunk=tensor([0.0012]), y_branch=tensor([0.0012]), y_out=tensor([0.0023])
Shared Gradient: tensor([[0.]])

共通層に逆伝播されてくる勾配の値を手計算でも求めてみたいと思います。出力\(y_{\mathrm{out}}\)に対する共通層の重み\(w_{\mathrm{shared}}\)での偏微分\(\frac{\partial y_{\mathrm{out}}}{\partial w_{\mathrm{shared}}}\)を連鎖律を使って展開し、実行時に表示されていた入力値と各層の重みを代入してみましょう。

GRLなし

$$
\begin{eqnarray}
\frac{\partial y_{\mathrm{out}}}{\partial w_{\mathrm{shared}}}
&=& \frac{\partial y_{\mathrm{out}}}{\partial y_{\mathrm{trunk}}} \cdot \frac{\partial y_{\mathrm{trunk}}}{\partial w_{\mathrm{shared}}}
+ \frac{\partial y_{\mathrm{out}}}{\partial y_{\mathrm{branch}}} \cdot \frac{\partial y_{\mathrm{branch}}}{\partial w_{\mathrm{shared}}}\nonumber \\
&=& \frac{\partial y_{\mathrm{out}}}{\partial y_{\mathrm{trunk}}} \cdot \frac{\partial y_{\mathrm{trunk}}}{\partial y_{\mathrm{shared}}} \cdot \frac{\partial y_{\mathrm{shared}}}{\partial w_{\mathrm{shared}}}
+ \frac{\partial y_{\mathrm{out}}}{\partial y_{\mathrm{branch}}} \cdot \frac{\partial y_{\mathrm{branch}}}{\partial y_{\mathrm{shared}}} \cdot \frac{\partial y_{\mathrm{shared}}}{\partial w_{\mathrm{shared}}}\nonumber \\
&=& 1 \cdot w_{\mathrm{trunk}} \cdot x + 1 \cdot w_{\mathrm{branch}} \cdot x\nonumber \\
&=& 0.5364 \cdot (-0.2905) + 0.5364 \cdot (-0.2905)\nonumber \\
&=& -0.3116
\end{eqnarray}
$$

GRLあり

$$
\begin{eqnarray}
  \frac{\partial y_{\mathrm{out}}}{\partial w_{\mathrm{shared}}}
&=& \frac{\partial y_{\mathrm{out}}}{\partial y_{\mathrm{trunk}}} \cdot \frac{\partial y_{\mathrm{trunk}}}{\partial w_{\mathrm{shared}}}
+ \frac{\partial y_{\mathrm{out}}}{\partial y_{\mathrm{branch}}} \cdot \frac{\partial y_{\mathrm{branch}}}{\partial w_{\mathrm{shared}}}\nonumber \\
&=& \frac{\partial y_{\mathrm{out}}}{\partial y_{\mathrm{trunk}}} \cdot \frac{\partial y_{\mathrm{trunk}}}{\partial y_{\mathrm{shared}}} \cdot \frac{\partial y_{\mathrm{shared}}}{\partial w_{\mathrm{shared}}}
+ \frac{\partial y_{\mathrm{out}}}{\partial y_{\mathrm{branch}}} \cdot \frac{\partial y_{\mathrm{branch}}}{\partial y_{\mathrm{GRL}}} \cdot \frac{\partial y_{\mathrm{GRL}}}{\partial y_{\mathrm{shared}}} \cdot \frac{\partial y_{\mathrm{shared}}}{\partial w_{\mathrm{shared}}}\nonumber \\
&=& 1 \cdot w_{\mathrm{trunk}} \cdot x + 1 \cdot w_{\mathrm{branch}} \cdot (-\lambda) \cdot x\nonumber \\
&=& 0.5364 \cdot (-0.2905) + 0.5364 \cdot (-1) \cdot (-0.2905)\nonumber \\
&=& 0
\end{eqnarray}
$$

ちゃんとコード実行時に表示された勾配値が得られました。GRLありの途中式2項目、Branch側の逆伝播に含まれている符号反転スケーリング係数\(-\lambda\)がポイントですね。

おわりに

本記事ではPyTorchでGRLの実装を行い、実際にモデルに組み込んで誤差逆伝播時の挙動を確認しました。これで無事DANNの実装へ進むことができそうで一安心です。今回のコードの全体については下記のGistにまとめてありますので、よろしければこちらもご参照ください。

https://gist.github.com/ciela/2656510f15d2a1e7c5cef206f8328cb2

ちなみに今回の件はサイバーエージェントAI事業本部にて本業の20%の時間を自分の好きな研究活動に費やすことができるゼミ制度での取り組みに端を発するものです。半期ごとに成果目標を掲げて活動計画を提出することで運営から予算を取得し、本業ではなかなか触れることの出来ないデータやモデル検証に挑戦する時間を業務中に得ることが出来る貴重な制度となっています。

]]>
Synthetic Difference In Differenceの紹介 https://cyberagent.ai/blog/research/10840/ Mon, 18 Nov 2019 01:21:29 +0000 https://cyberagent.ai/?post_type=blog&p=10840 こんにちは、経済学チームの安井(@housecat442)です。

今日は最近気になっていた論文の一つであるSynthetic Difference In Differenceの内容を簡単に紹介します。

この論文は近年CS系のトップカンファレンスでも大活躍のSusan Atheyとその一派によって書かれており、タイトルもSynthetic ControlとDifference in Differenceの合わせ技を匂わせる非常に興味深いものです。

Synthetic Control(SC)は近年経済学において利用される事が増えてきた、因果効果を推定するための手法です。ちなみに今年のNeurIPSではこのSCを提案したAlberto AbadieによってSCのtutorialが行われます。

そんなSCを拡張した方法であるSynthetic Difference In Difference(SDID)をこの記事では簡単に紹介します。

ざっくりまとめると、この論文はSynthetic ControlとDifference in Differenceの合わせ技をDoubly Robust Estimatorのアイデアで実現し、さらに中で機械学習を使うという楽しい内容でした。

 

この記事では前提であるDifference In Difference(DID)とSynthetic Control(SC)の知識があるという想定で話を進めます。もしこれらの知識がない場合には、こちらの資料などを参考にされると良いと思います。

DIDとSCについて

まずDIDにおける因果効果の推定を思い出します。

i: 観測対象
t: 時間
Y: outcome
α: 個人効果
β: 時間効果
μ: constant
W: 介入
τ: 因果効果

これは各観測対象の各時点での回帰モデルの二乗誤差を最小にしているということになります。

 

一方でSCは以下のような分析を行います。

まずある対象Nがある期間Tにおいて介入を受けるものとします。

そこでN以外で期間Tより前のYを使い、Nの期間Tより前のYをうまく予測できる方法を考えます。

これは以下のような重み付きの和で表す事が可能です。

そして期間Tにおいてこの重みを使って、N以外のデータからNのYを予測します。

Tより前の期間において、介入が行われていない時のNのYを予測する重みなので、期間Tで介入が行われない場合のNのYを予測している事になります。

よって、この予測値と実際に介入による影響を受けている結果の差を介入の因果効果と考える事ができます。

 

SDIDについて

SDIDはこれに対して以下のような形になります。

これは一見DIDとほぼ同じに見えますが、実際にはSCで見たような重みに加えてλという新しい重みがかけられています。

つまり、これら二つの重みを掛けた何かしらの新しい重みを使って、重み付きの二乗誤差の最小化を行う事で介入の因果効果を推定しているという事になります。

この時λはNを除く観測対象のT以外のサンプルから、Tのサンプルを予測できるような重みとして得られたものになります。

また、これらの重みを得る際にL2(ridge)正則化を用いる事も可能となっているそうです。

 

さて、SDIDの重み付きの誤差を見てDoubly Robust Estimator(DR)を思い出した人もいるかと思います。

実はこのSDIDもDRと同様にdouble robustnessと呼ばれるメリットを享受する事が可能です。つまり、回帰モデルか重みのどちらか一方のみが間違っているような場合でも因果効果に関しては一致性が担保されます。

 

SDIDの実験

この論文ではSCの紹介論文で使われたデータを利用してSDIDの性能を検証しています。

SCおよびSDIDは”介入を受けたサンプルの介入を受けなかった結果を正しく予測できるか?”が非常に重要となります。

よって、ここでは介入を受けてない期間のデータのみを使い、その最後の期間をTとし、任意の観測対象をNとして扱います。

こうする事で、実際に予測する対象が介入を受けない対象となるために、実際の正解データを得る事が可能になります。

この図がSCとSDIDの予測誤差(RMSE)をプロットした図です。

点線が傾きが1の線なので、線よりも上側にある点はSCの方が誤差が大きいという事になります。

これを見るとほぼ全ての点が線より上側にあるため、SDIDの性能がかなり高いであろう事がわかります。

また、このデータではカリフォルニア州が介入(禁煙キャンペーン)を受ける州で、青くハイライトされています。よって効果の推定において重要になるカリフォルニア州においても誤差が小さくなる事がわかります。

 

また、複数の年にまたがって予測と実際の値をプロットした図も乗っています。

黒い線が実際の値で、赤の点線がSDID、青い点線がSC、水色の点線がDIDです。

これを見てもやはりSDIDが良さそうな結果となっています。

 

感想とか

試す事自体はかなり簡単な手法なので、とりあえず使ってみようと思いました。

また、共編量が高次元の設定であれば、回帰の部分でDouble Machine Learningを導入する事が可能な気もしたのですがどうなのでしょうか?

]]>
YANS 2019 参加報告② 〜デジタル広告における商品特徴を考慮した広告文の自動生成〜 https://cyberagent.ai/blog/research/10264/ Tue, 03 Sep 2019 05:36:01 +0000 https://cyberagent.ai/research/?p=2729 AI tech studio AIクリエイティブDivisionの脇本、AI Lab内定者バイトの川本です。
この度、8/26-28に札幌で開催されたNLP若手の会(YANS)第14回シンポジウム(2019)に、我々を含めAI tech studio所属の9人が参加・発表してきました。本記事ではその報告を簡単にさせていただきます。

YANSについて

YANSはNLP分野の若手研究者、技術者の成長や交流の促進を目的として、年に一度開催される研究シンポジウムです。今年は二泊三日の合宿形式で開催され、参加人数は昨年の150名を大きく上回る202名(過去最多)となりました。
今回弊社からはスポンサー発表、共同研究を含む4件の発表を行いました。

  • スポンサー・ポスター発表S03:サイバーエージェントにおける自然言語処理の取り組み
    • ○張培楠(株式会社サイバーエージェント)
  • [学生]ポスター発表 P63:修辞技法を考慮したキャッチコピー自動生成に向けた研究
    • ○丹羽彩奈, 岡崎直観(東工大), 西口佳佑, 亀山千尋, 毛利真崇(サイバーエージェント)
  • ポスター発表 P83:デジタル広告における商品特徴を考慮した広告文の自動生成
    • ○脇本宏平(サイバーエージェント), ○川本峻頌(明大), 張培楠(サイバーエージェント)
  • ポスター発表 P84:チャットボットの運用における自然言語処理の活用
    • ○戸田隆道, 杉山雅和, 友松祐太(サイバーエージェント)

本ブログでは我々コピー生成チームが発表した、P83「デジタル広告における商品特徴を考慮した広告文の自動生成」について報告します。 ブースターセッション, ポスター
P84「チャットボットの運用における自然言語処理の活用」の報告ブログはこちら。

AIクリエイティブとAI Labの取り組みについて

AIクリエイティブはAI Labと連携し、広告クリエイティブの自動生成の研究、開発を行っています。コピー生成チームは、Twitterやニュースアプリなどでみられる広告クリエイティブのテキスト部分の生成について研究しています。このテキスト部分は、広告としてキャッチーな文である、文法的に正しく自然な文である、といったことに加えて、商品名や商品の特徴、セールスポイントを適切に反映していることが重要になります。

今回我々は、コスメ商品のカテゴリと説明文を入力として、広告文を生成する手法について、文生成タスクで一般的に用いられる4つのモデルで実験を行いました。

  • Bidirectional LSTM Encoder-Decoder1
  • Bidirectional LSTM Encoder-Decoder + Global Attention2
  • Pointer-Generator Networks3
  • Transformer4

それぞれのモデルが生成した広告文に対してRelative Ranking Aproach5 による評価を行い、その結果元にTrueSkill6という手法でスコアリングしました。スコアが高いモデルほど、その項目において優れているといえます。Pointer-Generatorは入力文の単語を生成に利用する機構により、説明文の内容を反映した文を生成しやすい一方で文法的に崩れやすい傾向がありました。Transformerは文法的に自然で、キャッチーな文を生成しましたが、説明文をあまり考慮しない傾向がありました。
実験により、説明文に基づく広告文生成におけるモデルごとの傾向を掴むことができました。今後はより広範囲のドメインで実験を行うとともに、より高性能な広告文生成を目指して異なるアプローチも試していきます。

参加報告まとめ

以上、コピー生成チームからの参加報告でした。NLP界隈の盛り上がりを感じた3日間でした。ポスターセッションでは、予想していた以上に多くの学生や研究者の方々に興味を持っていただき、我々としては非常に励みになりました。非常にためになるご意見やご指摘をたくさんいただいたので、それらを整理して、今後の研究・プロダクト開発に反映したいと思います。


  1. Ilya Sutskever, Oriol Vinyals and Quoc V. Le “Sequence to sequence learning with neural networks” Advances in neural information processing systems, 3104-3112, 2014. ↩
  2. Minh-Thang Luong, Hieu Pham and Christopher D. Manning “Effective approaches to attention-based neural machine translation” arXiv preprint arXiv:1508.04025, 2015. ↩
  3. Abigail See, Peter J. Liu and Christopher D. Manning “Get To The Point: Summarization with Pointer-Generator Networks” Proceedings of the 55th Annual Meeting of the Association for Computational Linguistics, Volume 1, 1073-1083, 2017. ↩
  4. Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Lukasz Kaiser and Illia Polosukhin “Attention is all you need” Advances in neural information processing systems, 5998-6008, 2017. ↩
  5. Ondřej Bojar, Rajen Chatterjee, Christian Federmann, Yvette Graham, Barry Haddow, Matthias Huck, Antonio Jimeno Yepes, Philipp Koehn, Varvara Logacheva, Christof Monz, Matteo Negri, Aurélie Névéol, Mariana Neves, Martin Popel, Matt Post, Raphael Rubino, Carolina Scarton, Lucia Specia, Marco Turchi, Karin Verspoor and Marcos Zampieri “Findings of the 2016 conference on machine translation” Proceedings of the First Conference on Machine Translation, Volume 2, 131-198, 2016. ↩
  6. Ralf Herbrich, Minka Tom and Graepel Thore “TrueSkill™ : A Bayesian Skill Rating System” Advances in neural information processing systems, 569-576, 2007. ↩
]]>
YANS 2019 参加報告① 〜チャットボットの運用における自然言語処理の活用〜 https://cyberagent.ai/blog/research/2675/ Fri, 30 Aug 2019 03:13:57 +0000 https://cyberagent.ai/research/?p=2675 アドテクスタジオAIメッセンジャーの友松、杉山、戸田です。
8/26-8/28にホテルエミシア札幌で行われたNLP若手の会(YANS)2019にて発表を行いました。今回弊社からは9名が参加し、スポンサー発表1件, ポスター発表3件(共同研究を含む)を行いました。

  • スポンサー・ポスター発表S03:サイバーエージェントにおける自然言語処理の取り組み
    • ○張培楠(株式会社サイバーエージェント)
  • [学生]ポスター発表 P63:修辞技法を考慮したキャッチコピー自動生成に向けた研究
    • ○丹羽彩奈, 岡崎直観(東工大), 西口佳佑, 亀山千尋, 毛利真崇(サイバーエージェント)
  • ポスター発表 P83:デジタル広告における商品特徴を考慮した広告文の自動生成
    • ○脇本宏平(サイバーエージェント), ○川本峻頌(明大), 張培楠(サイバーエージェント)
  • ポスター発表 P84:チャットボットの運用における自然言語処理の活用
    • ○戸田隆道, 杉山雅和, 友松祐太(サイバーエージェント)

本ブログではP84の「チャットボットの運用における自然言語処理の活用」についての発表報告をさせていただきます。ブースターセッション, ポスター

P83「デジタル広告における商品特徴を考慮した広告文の自動生成」の発表報告については、後日こちらのブログにアップ予定です。

AIメッセンジャーについて

AIメッセンジャー(以下AIM)は自動応答のチャットボットと有人対応が切り替え可能な対話接客プラットフォームです。主に企業様のお問い合わせページなどで提供されカスタマーからの質問に自動で応答を行います。自動応答のチャットボットはFAQに基づく用例ベースの対話システムとシナリオによるルールベースの対話システムのハイブリッドです。

用例ベースの対話システムの回答精度を高めるためには大きく分けて2つの要素が挙げられます。
* ・モデルの賢さ
* ・モデルが参照するデータ(FAQ)の網羅性およびクオリティ

一見、1つ目のモデルの賢さの方に目がいきがちですが、FAQの網羅性およびクオリティを高めることは同等かそれ以上に重要になります。どんなにモデルが賢くても、用意されたFAQが貧弱だとチャットボットはユーザの質問に答えることができません。

FAQの網羅性およびクオリティを高めるために、日々運用が人手によって行われています。以下はその運用プロセスになります。

AIMでは、この人手による運用をできるだけ効率的に行うために自然言語処理の技術を活用しています。今回のYANS2019ではその取り組みの一部について発表を行いました。

  1. チャットボットの機能と関係のない問い合わせのフィルタリング
  2. 表記揺れ辞書の自動構築
  3. 利用ログからの新たな回答候補の生成
  4. リグレッションテスト

チャットボットの機能と関係のない問い合わせのフィルタリング

実環境に導入されたチャットボットは導入時には想定しなかったような問い合わせを行われることが少なくありません。その一つがチャットボットの機能と関係のない問い合わせです。例えば下記のようなゲーム広告や不幸の手紙(チェーンメール)です。

6割以上がこういった問い合わせで占められてしまった導入先環境もあり、チャットボット改善のためのログ分析の際に視認性が悪くなってしまうため、事前にフィルタリングが必要です。

今回の取り組みではルールベースで抜き出した、チャットボットの機能と関係のない問い合わせを正例、チャットボットの回答候補であるFAQ文章を負例として分類器を作成しました。手動ラベリングしたテストデータで評価を行ったところ、ROC AUC=0.812となり、完全に自動でフィルタリングを行うには少し心もとないため、閾値を調整することでフィルタリングを行える機能をログ分析のビューに追加しました。現在運用チームで重宝される機能の一つとなっています。

表記揺れ辞書の自動構築

AIMのチャットボットではユーザの自由な入力を許可しています。
iPhoneという単語一つとってみても「iPhone」, 「iphone」, 「アイホン」, 「iphone7」, 「アイフォーン」など様々な言い回しで問い合わせが来ます。

また、iPhoneとAndroidを区別したほうがいい場合(iPhoneとAndroidで解決法が異なる場合)と区別しなくてもいい場合(スマホとして認識されれば良い場合)などドメインによって表記揺れの要件が変わって来ます。

ドメインごとに表記揺れ辞書を網羅的に構築するのは非常に困難です。
そこで、ユーザの発話データやFAQデータから教師なしで表記揺れ辞書を作成するのが本研究のモチベーションになります。

表記揺れ語を抽出するにあたって、単語の分割を行いたいところですが、サービス固有の単語やチャットならではの言い回しによってうまく単語の分割ができないことがあります。そこでSentence Pieceを用いた分割を行います。Sentence Pieceはコーパス中の文字の並びから意味のある分割を学習します。

表記揺れ辞書構築の手順は上記フローの通りです。

対象データ
* ・AIMが保持するFAQデータ
* ・AIMの配信ログのユーザ発話

フロー
1. 小文字化など正規化を行う前処理
2. Sentence Pieceによりトークンで分かち書きを行う
3. Word2Vecにより分散表現を学習
4. 表記揺れ対象語を入力として近いトークンを抽出

上記の表は想定される表記揺れ語と抽出された候補です。
「iphone」にたいしてはカタカナ表記の「アイフォン」や各機種をあらわす「iphonexr」、「iphonese」、「plus」などが抽出することができました。

また、「アメンバー」というブログを特定のユーザに配信することができる機能である、サービス特有の単語においては、「読者」や「フォロワー」などのほかに、通常単語分割すると分離されてしまう「限定記事」や「読者登録」なども抽出することができました。

一方で課題として、「です」や「の」など助詞や助動詞にあたる部分がうまく分割されずに現れているという点が挙げられます。

今後の取り組みとして次のようなことを考えています。
1. 各ハイパーパラメータ(特にSentence Piece)のチューニング
2. 「です」や「の」などの余計な部分の除去
3. 表記揺れが起こりそうな語の予測(現在は入力に対して表記揺れ候補をサジェスト)
4. FAQ応答のロジックに表記揺れを吸収する機構を追加

利用ログからの新たな回答候補の生成

現在チャットボットの回答候補は、クラスタリングした問い合わせを人間が確認し、その内容をまとめることで作成しています。これは非常に手間のかかる作業で、作業者ごとの表記揺れなどの属人化などの課題があります。理想的には問い合わせログから自動で回答候補を生成したいと考えていますが、今回はその前段階としてクラスタリングされた問い合わせの集合から、そのクラスタを代表する問い合わせを抽出する試みを行いました。

抽出方法はEmbedRank(Kamil Bennani-Smires , Claudiu Musat , Andreaa Hossmann, Michael Baeriswyl, Martin Jaggi “Simple Unsupervised Keyphrase Extraction using Sentence Embeddings”, CONLL 2018)のキーフレーズ抽出手法を参考に、問い合わせの各文章の文書ベクトルをクラスタ内全体のベクトルと比較し、最も近い問い合わせを抽出する、という手法を使用しました。

結果としては長文に引っ張られてしまったり文法的に違和感のある文書が抽出されてしまったりと、まだまだ実用化は難しそうでしたが解決しなければならない課題を認識できました。

リグレッションテスト

これまで紹介した取り組みにより、人手で行なっている運用の支援・自動化が現実的になってきました。しかし、自動で回答候補を追加したり表記揺れを整形することで挙動が変わり、これまで回答できていた質問に回答できなくなる可能性があるため自動生成した文言をそのまま追加することは危険です。
なぜそのようなことが起こるのかについて説明します。AIMではユーザーの質問と、よくある質問として用意している質問群(用例)の類似度を計算することでユーザーの質問内容を推定し回答候補を提示します(図1)。質問間の類似度を計算するための特徴量としてTF-IDFなどの素性を用いているのですが(図2)、これらは類似度の予測モデルを更新せずとも用例を更新するだけで変化するため、それによって類似度が変化しこれまで回答できていた質問に答えることができなくなる可能性があるためです。


図1

図2

そこで用例の変更前後で、過去にユーザーから送られた質問とその時の回答候補、そして提示した回答候補が選ばれたか否かを事前に確認するための環境を作成しました。
例えば図3のように、これまで回答候補の5番目がユーザーに選択されていた質問に対して、用例変更後に類似度が下がりその選択肢が提示できなくなるケースでは、ユーザーの思う正しい回答候補が上位から消えてしまい、選ぶことができなくなってしまいます。


図3

このように過去の質問に対して類似度や順位がどのように変化するか、また新しく追加した用例が期待する動作をしているかを確認することができるようになることで、機械的に用例の変更可否を判断できるようになり運用の支援や自動化に向けた取り組みを安心して行うことができます。
今後はオフラインでのテスト環境だけでなく、オンラインでのA/Bテストを行い評価するための環境も充実させていく予定です。

まとめ

以上、NLP若手の会(YANS)2019での活動報告でした

ポスターセッションでは非常にたくさんの方に来ていただき、ご自身の知見の共有や鋭いご指摘など今後の活動に活かせそうなご意見をたくさんいただきました。ありがとうございました。

今回紹介した取り組みは現在モジュール別に独立して動いていますが、今後はそれらを統合し、より人手による作業の削減に取り組んでいきたいと思います。

最後に、今回発表したように、私たちは実プロダクトとしてリリースされているチャットボットで収集された対話データを使った研究開発を行なっております。
共同研究やインターンに興味がある方はぜひお問い合わせ下さい。

]]>
CVPR 2019 参加報告 https://cyberagent.ai/blog/no_use/participant_report/2396/ Thu, 11 Jul 2019 05:13:10 +0000 https://cyberagent.ai/research/?p=2396 はじめに

AI Lab の大田、大谷です。
6月にアメリカで開かれたコンピュータビジョンの国際会議、CVPR 2019 に参加してきました。
今年も簡単に参加報告をしたいと思います。

CVPR 2019

CVPR は ICCV、ECCV と並ぶコンピュータビジョン分野におけるトップカンファレンスです。AI Labは一昨年、昨年と参加しており、今年で3度目の参加となります。
今年はカリフォルニア州ロングビーチの Long Beach Convention Center にて6月16日〜20日の5日間での開催となりました。15日までは機械学習のトップカンファレンスである ICML 2019 も同会場で開催されており、現地に到着した際にはすでに会場付近が参加者で賑わっていたのが印象的でした。続けて参加された方も多かったのではと思います。その影響もあってか、今年の参加人数は9,227人と前年より2,000人以上増加しています。論文投稿数、採択数も5,160件、1,294件となっており、いずれも過去最高を更新しています。

今年の新しい取り組みとして、本会議でのショートオーラル発表が挙げられます。5分間での研究紹介を3件分行ったあと3件まとめて質疑応答というスタイルとなりました。288件ものオーラル論文を効率良く発表してもらうための工夫でしたが、研究内容の理解が少し難しかったようにも感じました。

併催されている Exhibition では世界各国の大企業や AI スタートアップがこぞってブースを出展。こちらも例年通りの盛況ぶりでしたが、自動運転車両の実車展示が特に目立っており、各社の実用への意気込みの高まりを感じます。

会場周辺はカリフォルニア州最大規模の水族館やアウトレットモールなどが揃う大きな港町です。会議終了後は軽い観光や食事も楽しむことができましたが、アメリカならではの大量で高カロリーな食事には未だに慣れません。

AI Lab からの発表

本会議には大谷による論文 Rethinking the Evaluation of Video Summaries が採択されており、ポスター前では多数の参加者と議論を交わしました。この研究では映像要約手法の評価指標と主要なデータセットを分析しています。より詳しい内容はブログ記事として公開されています。このポスターでは既存の映像要約指標と映像要約手法の一般的なパイプラインに潜在する課題を説明しています。研究者だけでなく映像配信サービスのビジネスサイドの人も議論に参加しており、産業界での関心の高さが伺えました。

本会議論文紹介

注目した論文についていくつか紹介します。

Semantic Image Synthesis With Spatially-Adaptive Normalization

Taesung Park, Ming-Yu Liu, Ting-Chun Wang, Jun-Yan Zhu

プロジェクトサイト
GauGAN

Semantic Map からの画像生成において、Normalization 後のスケーリング係数に Semantic Map から得られる特徴を利用した SPADE という手法を提案しています。画像生成モデル自体への入力は Semantic Map ではなくランダムノイズであり、これを操作することで多彩なスタイルの画像生成を可能としています。GauGAN と名付けられたデモも話題になったため、ご覧になられた方も多いかもしれません。

プロジェクトサイトより “Brief Description of the Method”

論文より Figure 9. 提案モデルによる多様なスタイルの画像生成

Image Generation from Layout

Bo Zhao, Lili Meng, Weidong Yin, Leonid Sigal

Semantic Map から画像を生成する手法はこれまでにも数多く提案されてきていますが、大まかなレイアウトからの画像生成はテキストやシーングラフなども利用した手法が主でした。この論文では Bounding Box のみで物体の大きさと位置を表現するとてもシンプルなレイアウト入力から画像を生成する手法を提案しています。

論文より Figure 1. Image generation from layout

論文より Figure 7. Examples of diverse images generated from same layouts

Homomorphic Latent Space Interpolation for Unpaired Image-To-Image Translation

Ying-Cong Chen, Xiaogang Xu, Zhuotao Tian, Jiaya Jia

画像を特徴ごとにドメイン分けしドメイン間における差異を学習することで画像の変換に用いる Unpaired Image-to-Image 技術は StarGAN や MUNIT などマルチドメイン・マルチモーダルなモデルの提案により、より多彩な振る舞いが可能となってきています。提案手法ではそれらに加え、変換過程の補間についても考慮しています。滑らかで自然な変換アニメーションの生成もできるモデルとなっています。

論文より Figure 2. Illustration of latent space interpolation along different paths

Image Deformation Meta-Networks for One-Shot Learning

Zitian Chen, Yanwei Fu, Yu-Xiong Wang, Lin Ma, Wei Liu, Martial Hebert

今年の本会議では {Zero, One, Few}-shot Learning というワードをよく目にしました。限られた学習データからの学習テクニックの一つにデータの水増しを行う Data-Augmentaiton がありますが、提案モデルはその Data-Augmentation を内包しているようなネットワークとなっており、少量のデータに対して End-to-End な学習を可能としています。

論文より Figure 2. The overall architecture of our image deformation meta-network

Efficient Video Classification using Fewer Frames

Shweta Bhardwaj, Mukundhan Srinivasan, Mitesh M. Khapra

同様に少量データからの学習ですが、こちらは動画分類に対するアプローチです。Distillation の仕組みを利用することで等間隔に間引かれた少数フレームによる学習を可能にし 、リソース消費の激しい動画分類のコスト軽減を図っています。

論文より Figure 1. Architecture of TEACHER-STUDENT network for video classification

GoodNews Everyone! Context driven entity aware captioning for news images

Ali Furkan Biten, Lluis Gomez, Marçal Rusiñol, Dimosthenis Karatzas

画像のキャプション生成の研究です。この手法では入力として画像だけでなく、画像に関連する文書を使って固有名詞などのキーワードを取り入れたキャプションを生成します。広告制作においてはコピー生成などに活用できそうなアプローチです。

論文より Figure 2

Complete the Look: Scene-based Complementary Product Recommendation

Wang-Cheng Kang, Eric Kim, Jure Leskovec, Charles Rosenberg, Julian McAuley

画像全体の雰囲気に合った商品を予測するモデルを提案しています。同様の構造を持ったタスクは広告バナーの制作にもあります。バナー画像の雰囲気に合ったフォントやテクスチャ素材などデザイン要素を提案するシステムなどにも応用できそうです。

論文より Figure 1

Less is More: Learning Highlight Detection from Video Duration

Bo Xiong, Yannis Kalantidis, Deepti Ghadiyaram, Kristen Grauman

映像から重要なシーンを抽出するハイライト検出の研究です。機械学習を用いた映像のハイライト検出では、学習データの収集コストが非常に高いという課題があります。そこでこの研究ではウェブ上の動画の長さを教師信号として活用する方法を提案しています。短い映像はより「ハイライトらしい」シーンで構成されている傾向にある一方で、長い映像はハイライトとしては適していないシーンを多数含んでいることが予想されます。この仮説に基づき、提案手法では短い動画と長い動画からハイライトらしい動画の特徴を学習しています。

論文より Figure 1

まとめ

CVPR は参加者・論文数共に爆発的な増加を続けており、もはや会議全体のトレンドを把握することは困難ですが、個人的には GAN や画像生成に関する研究の発展はやはり興味深く、質の高い研究について生で聴講できる機会はとてもありがたいです。引き続き広告やメディアデータに対するコンピュータビジョン・機械学習技術の応用に向けて今後も研究活動を続けていきます。

]]>
グラフィックスデザインのための機械学習研究動向 https://cyberagent.ai/blog/research/computervision/2167/ Fri, 24 May 2019 10:29:09 +0000 https://cyberagent.ai/research/?p=2167 こんにちは、AI Labの山口です。

以前の記事でもお伝えした通り、AI Labでは広告表現を生成するための技術開発に取り組んでいます。広告表現を直接のターゲットとしてバナー画像や動画を生成するような研究は多くは存在しませんが、それでも最近は深層生成モデルを代表として、広告表現の生成につながりそうな要素技術が見られるようになってきました。

グラフィックスデザインでは一般にベクター形式のデータと解像度の高いラスタ画像を扱います。解像度の高いラスタ画像を生成する試みはこれまでにもいくつか見られてきましたが(Glow、BigGAN、StyleGAN、GauGAN)、これだけではポスターやバナー制作のようなベクター形式の画像編集に用いることができません。幾何変換、ストロークやポリゴンのようなデータ表現、フォントなど、扱うべきデータはピクセル以外にも多く存在します。

そこで、今回の記事ではベクター形式での画像編集や画像生成を念頭に置いた最近の研究事例をいくつか紹介します。

Vectorization

Vector Image Generation by Learning Parametric Layer Decomposition

Othman Sbai, Camille Couprie, Mathieu Aubry
arXiv:1812.05484

figure1

Fig 1 from the paper

与えられた画像を解像度フリーな単色のレイヤー群に分解する手法を提案したもの。座標系からマスクを描く関数のパラメータとそのマスクの色を、入力画像から逐次的に推定しています。全て微分可能なプロセスで記述でき、また座標系の連続値を入力とすることで解像度を問わないレイヤー分解ができます。

かなり実験的な取り組みのようで、実際にはこの手法ではかなりぼやけた画像が生成されるものの、画像のスタイル変換を後処理的に噛ませることで見た目の良い画像に仕上げることができるとのこと。小山らの色分離手法に比べると入力画像の再現性は低そうですが、レイヤーそのものを関数で表現できる点は興味深いです。例えば関数として図形を使ったフィッティング(=完全なベクター化)をかけることも原理的には可能でしょう。

ラスタ画像からレイヤーが一旦分離されてしまえば、例えば色調を変える、といった画像のスタイリング編集は容易にできます。自然画像よりもイラストのような、色分布が偏ったデータで真価を発揮しそうです。画像圧縮手法としての一面もあります。

End-to-End Wireframe Parsing

Yichao Zhou, Haozhi Qi, Yi Ma
arXiv:1905.03246

Fig 1 from the paper

ワイヤーフレームをEnd-to-endで抽出する手法。ワイヤーフレームは線分、交点を抽出し、つなぎ合わせる必要がありますが、この論文では一貫して全てを一つのネットワークで出力するようにモデルを設計しています。モデルはバックボーンCNN、交点のサンプリング、線分のサンプリング、最後に線分の判定をするモジュールをつないでいます。

Semantic Segmentation for Line Drawing Vectorization Using Neural Networks

Byungsoo Kim, Oliver Wang, A. Cengiz Öztireli, Markus Gross
Eurographics 2018
Author website

重なりを考慮してストロークを分割するベクター化の手法。ある点が他の点と同一のパス上に存在するかを判別するPathNetと、ある点がパスの交差上に位置するかを判別するOverlapNetを使い、マルコフ確率場でピクセルのラベリングを行います。これによってパスのインスタンスを分割します。潜在関数としてニューラルネットワークを用いている点がポイントです。一旦パスをそれぞれラベリングができれば、パスのアウトラインを出すことで完全なベクター化ができます。

Learning to Infer Graphics Programs from Hand-Drawn Images

Kevin Ellis, Daniel Ritchie, Armando Solar-Lezama, Joshua B. Tenenbaum
NeurIPS 2018

Figure 1 from the paper

スケッチからこれを生成するプログラムを出力する手法。手法は大きく二つのステップに分かれていて、最初にスケッチから図形要素の抽出、そして図形要素群からプログラムの記述が行われます。スケッチからの図形要素の抽出は畳み込みネットワークにアテンションを組み込んだもので、 circle(x=7, y=12) のような図形プリミティブを認識します。これをプログラム言語の文法に従い最適化問題として定式化し、適切なプログラム記述を探索します。各ステップは認識だけでなく生成もできます。

関連: Yaroslav Ganin, Tejas Kulkarni, Igor Babuschkin, S.M. Ali Eslami, Oriol Vinyals, Synthesizing Programs for Images using Reinforced Adversarial Learning, arXiv:1804.01118

StrokeNet: A Neural Painting Environment

Ningyuan Zheng, Yifan Jiang, Dingjiang Huang
ICLR 2019

Fig 1 from the paper

ストロークを筆の太さ、色、座標・筆圧のシーケンスのタプルとして捉え、ここから画像を生成するMLPと、与えられた画像からストロークを再現するエージェントを強化学習する手法。エージェントは与えられた画像と現在のキャンバスを入力としてVGGベースのCNNを使ってストロークの一点を再帰的にキャンバスに足していきます。描画環境には一般のWebGLレンダリングエンジンを用いていて、微分できない環境でも強化学習を使ってストローク表現を探索できることを示しています。強化学習を用いた描画は最近よく見られるようになり(PaintBot、T Zhou, 2018、Z Huang, 2019、R Nakano, 2019)、今後も目が離せません。

関連: David Ha and Douglas Eck. A neural representation of sketch drawings, arXiv:1704.03477

Image composition

ST-GAN: Spatial Transformer Generative Adversarial Networks for Image Compositing

Chen-Hsuan Lin, Ersin Yumer, Oliver Wang, Eli Shechtman, Simon Lucey
CVPR 2018

ST-GAN

Fig 2 from the paper

Spatial Transformer(M Jaderberg 2015)ではニューラルネットを使って微分可能な画像のワープを実現していました。この仕組みを使い、新しい物体を背景の中に設置するモデルがST-GANです。こちらはアフィン変換のようなワープのパラメータ差分を物体画像と背景画像から逐次的に求め、物体の配置場所を決定します。学習の際により自然な画像になるように敵対的損失関数を含めているため、ST-GANと呼ばれています。逐次的にワープパラメータを推定する理由はおそらく解が一意ではない、大きな幾何変換を一度に推定すると細かい精度が悪い、といった理由があるようです。

よく見る画像生成モデルでは直接ピクセルのパターンを生成していますが、この方法は解像度が固定されるという弱点があります。しかし、ST-GANの利点は解像度に依存しないワープパラメータを求める点にあります。実際、ST-GANの推論は低解像度の画像で行い、求めたワープパラメータを高い解像度の画像に適用するという使い方が想定されています。ベクター画像には非常に相性の良い手法でしょう。

Compositional GAN: Learning Image-Conditional Binary Composition

Samaneh Azadi, Deepak Pathak, Sayna Ebrahimi, Trevor Darrell
arXiv:1807.07560

compositional-gan

Fig 1 from the paper

二枚の画像の関係性を考慮して適切に合成するモデル。二つの物体を置いた時の合成画像の分布が自然画像の分布に近くなるように学習を行います。あらかじめマスキング済みのデータセットに対し、Spatial TransformerまたはRelative Appearance Flow Network(RAFN)と呼ぶencoder-decoderモデルを使い入力画像を相対座標にワープさせたのち、これをcomposition-by-decomposition (CoDe)と呼ぶネットワークに入力して画像を合成します。これは二つの画像を入力して一枚の画像として出力するGANで、合成画像から二つの画像を分離するself consistencyを考慮して学習させています。また、合成画像を入力としてマスクの推定を行うGANも組み合わせて損失関数を構成しています。ペアとなる入力と合成画像がない場合、インペインティングを使って画像を補間したものを使用しています。テーブルと椅子、顔にサングラス、道路に車といったデータで評価実験を行なっています。

Self consistencyが特徴的で多くのGANを組み合わせた手法ですが、ST-GANと同じく解像度に依存しないワープを使っている点、最終的な画像が尤もらしいかどうかを敵対的損失を使って学習させる点など、重要な点では共通するところも見られます。

Fonts

TET-GAN: Text Effects Transfer via Stylization and Destylization

Shuai Yang, Jiaying Liu, Wenjing Wang, Zongming Guo
AAAI 2019

Fig 6 from the paper

フォントのエフェクトを転移するGANの一種。スタイリングと逆方向のでスタイリングを学習します。スタイル変換系でよく見られるモデル構成ですが、フォント効果のデータセットを構築している他、少数のサンプルでも学習できるように一つの画像からのパッチのサンプリングする例も提案しています。

関連: Controllable Artistic Text Style Transfer via Shape-Matching GAN

A Compositional Textual Model for Recognition of Imperfect Word Images

Wei Tang, John Corring, Ying Wu, Gang Hua
arXiv:1811.11239

Fig 1 from the paper

Fig 1 from the paper

テキストのレンダリングは大きく以下のプロセスに分けられます。

  • Skeletonization: 単語を文字列に分割
  • Kerning: 文字間隔を調整
  • Font: 字体を決定
  • Appearance: 色やシャドウなどの効果付け
  • Geometric distortion: 幾何変換

この論文ではそれぞれのステップの逆変換を施すend-to-endなモデルの構築を目指し、各ステップに対応するニューラルネットワークを記述しています。OCRでは単語の認識が最終的な目標になりますが、各ステップを微分可能なレンダリングモジュールで記述することができれば、例えば文字認識以外のパラメータをニューラルネットワークで最適化することも可能になりそうです。

おわりに

ラスタ画像のベクター化、画像合成、フォントに関していくつか論文を見てきました。ニューラルネットワークでend-to-endに扱えるように、微分可能なモジュールを設計する、強化学習で微分不可能なシステムを扱う、ラスタ画像につきものの解像度の問題を回避するデータ構造、といったアイディアが取り入れられていることがわかります。この記事では取り上げませんでしたが三次元グラフィックスでも微分可能なレンダラーが提案されて以降、ライブラリが整備されるなど、コンピュータグラフィックス領域で扱っていたトピックに急速に機械学習が入ってきています。

サイバーエージェントAI Labでは「広告表現のための機械学習」に取り組んでいます。この記事で上げたような研究内容に興味のある方はぜひ学会などで私たちに声をかけてください。

]]>
CA Basecamp 2019解説:クリエイティブのための機械学習 https://cyberagent.ai/blog/research/1714/ Fri, 01 Mar 2019 09:35:52 +0000 https://cyberagent.ai/research/?p=1714 こんにちは、AI Labでデジタル広告の表現に関する研究に取り組む山口です。

この記事では2019年2月22日に行われた、サイバーエージェントグループの開催するエンジニア・クリエイター向けカンファレンスCA Basecamp 2019にてAI Labから発表してきた「クリエイティブのための機械学習」について解説します。この発表はAI Labがデジタル広告の表現分野においてどのような課題に立ち向かい、どのようなプロジェクトを研究開発として取り組んでいるのか、社内のエンジニア、クリエイター、そして招待された学生向けに解説したものです。

当日のスライドはこちら。
https://speakerdeck.com/kyamagu/ca-basecamp-2019-kurieiteibufalsetamefalseji-jie-xue-xi

デジタル広告制作の課題

マス広告とデジタル広告

テレビCMなどのマス広告では同一の内容を配信するが、デジタル広告ではユーザーごとに異なる内容を配信

デジタル広告はインターネット上で見られるバナー、動画、テキストなどの広告のことです。様々な広告表現の形態がありますが、まとめて広告クリエイティブと呼ばれます。デジタル広告では、テレビCMや新聞広告といったいわゆるマス広告とは決定的に違い、一人一人に異なる広告を届けることが可能という特性があります。一人一人に合わせ、対象を限定して広告を配信することはターゲティングと呼ばれ、今日のデジタル広告が高い広告効果を示す原動力となっています。

ターゲティングが行われるようになることで、広告クリエイティブの制作に新たな課題が生じるようになってきました。各種の広告表現は、日本国内の広告市場では一般的に弊社含む広告代理店が制作を担っている場合が多数で、広告表現はデザイナーやプランナーといった、制作に携わる人が一つ一つ丁寧に作ります。従来のマス広告では全ての人に同じ表現が届けられるため、制作者はできるだけ多くの人に視聴されるように一つの広告表現を作り上げていきます。しかし、デジタル広告ではターゲティングが導入され、広告配信がより細分化されたことで、特定の趣向を持ったユーザー層にそれぞれの広告表現を作り分けることが必要になりました。一人一人に異なる広告が表示されるということは、一人一人に合わせてパーソナライズされた広告を作る必要が生じてきたわけです。基本的に広告表現は全て人手で作られてきたため、作るべき広告表現が増えれば増えるほど制作側に負担が生じるようになってきました。例えば10億のユーザーが存在すれば、10億の広告表現があり得るわけですが、これを全てデザイナーやプランナーが手作業で作ることは現実的ではありません。また、デジタル広告では似通った広告表現を見る機会が増え、すぐに飽きられてしまう傾向も近年加速し、一つのクリエイティブの寿命が短くなってきています。広告クリエイティブの制作者は質の高い広告を大量に作り続けるという、これまでにない課題に向き合うこととなりました。

AI Labでは広告クリエイティブを制作・配信する過程で機械学習を用いた技術により、この課題の解決を目指しています。例えばクリエイティブのクリック率を事前に予測することで、配信の効率化、制作者へのフィードバックを行うことが可能となります。制作編集にまつわる作業プロセスを自動化したり、あるいは新たな表現手段を作ることで、より良い広告表現を多く作ることができるようになります。また、データ分析を自動化することで、配信される広告からの知見を素早く制作に活かせるようになります。以下の節で、AI Labの取り組むプロジェクトをいくつか紹介します。

クリック率の予測

クリック率の予測

このバナーはどれだけの人からクリックされますか?クリック率の予測は回帰問題として定式化できます

与えられたバナーやテキストなどのある広告に対し、どれだけクリックがなされるかを機械学習手法により予想します。クリック予測は、一般にクリック率(CTR)やコンバージョン率(CVR)といった指標に関し、回帰分析問題として捉えることができます。回帰分析自体は基本的なロジスティック回帰や決定木といったモデルから、複雑な階層構造のニューラルネットワークまで様々なモデルで取り扱うことが可能です。広告クリエイティブでは画像、テキスト、広告配信設定といった情報が入力として利用可能なため、それらの入力に応じて適切なモデルを選択して予測モデルを構築します。一般的にはスパースな入力には浅い機械学習モデル、画像やテキストなどの次元が大きくなりがちな入力にはディープラーニング系のニューラルネットワークが用いられます。

クリック率予測を広告入稿時の判断に用いることで、実際に広告運用実績を改善した事例も弊社内で見られます。クリック率の予測はデジタル広告を運用する上で欠かせない機械学習技術となっています。

制作編集支援

グラフィックス要素の配置予測

新しく緑色の帯をバナー画像に配置する際、どこに帯を置くべきか予測します

制作編集に関しては、デザイナーやプランナーが行うプロセスの助けとなるような技術を研究開発しています。例えば、新しいバナー画像をデザインする際に、新しいデザイン要素をどこに置くかを予測することで、グラフィックス要素の配置作業を効率化できると期待されます。あるいは、既存のバナー画像から人物写真を自動で差し替えることで、そのバナー画像のバリエーションを自動的に効率よく制作することが可能となります。

実際の制作作業の支援だけでなく、新たな表現を作り出す試みも行なっています。例えば、画像の画風を変換する機械学習モデルを用いることで、これまでにないタッチのイラストを作り出したりできます。これによって、例えば広告配信メディアに合わせた雰囲気のバナー画像を作り出したりできる可能性があります。

画像だけでなく、テキスト広告の運用でも機械学習技術を用いた支援を行なっています。わかりやすい一例として、あるWebページの検索連動広告を自動的にそのページ自身から生成するという試みがあります。検索連動広告は検索サイトのクエリに応じて主にテキストでランキング内に表示される広告ですが、広告内容に掲載する文言は基本的に広告の運用担当者が一つ一つ入稿する必要がありました。自動生成を使うことでより適切な文言を効率的に選択することが可能となります。社内先行テストでは既に広告運用実績が実現できることが示されています。

広告バナーの自動分析

AI Labではバナー広告の内容を自動的に理解する手法を研究開発しています。広告内容を自動的に分析・理解することで、データから統計的な知見を得ることが可能となります。広告の内容は人工的なイラストや複雑なレイアウトといった視覚的要素が含まれ、一般的な自然画像向けの画像認識モデルではうまく取り扱えません。ただし、広告ならではの特徴として、画像の中身を問わず、バナー広告にはほとんど必ず訴求を示すテキストが含まれます。以前の記事で紹介した通り、この広告訴求テキストに関する知見を元に、AI Labでは画像とテキスト検出をうまく組み合わせたモデルを使って2018年に開催された広告画像理解のコンペティションを勝ち抜きました。

バナーに限らずあらゆる広告クリエイティブを自動的に認識することで、テキストによる訴求内容や表示されていた物体に関する統計的なデータ分析が可能となります。これにより、例えば特定のキーワードが最終的なクリック率に影響するといった現象を発見することが容易になります。安定した統計的データ分析のため、AI Labでは広告データに合わせた画像テキスト認識モデルを研究しています。

おわりに

機械学習は既にデジタル広告の運用に欠かせない技術となっています。機械学習による広告クリエイティブの自動生成はまだまだ実現していないことが多くある領域ですが、AI Labではこれからもクリエイターの能力を拡張するような新しい技術、新しい表現技法を実現すべく研究開発に取り組んでいます。

]]>
Successive Halvingの性能解析 https://cyberagent.ai/blog/research/1036/ Fri, 14 Dec 2018 09:55:43 +0000 https://cyberagent.ai/research/?p=1036 AI Labの阿部です.

つい最近Preferred Networks社から機械学習のハイパーパラメータ最適化フレームワークOptunaが公開されたこともあってハイパーパラメータ最適化が注目を集めていますね!

機械学習のハイパーパラメータ最適化の代表的な手法といえば,TPE[Bergstra et al., 2011],SMAC[Hutter et al. 2011],Hyperband[Li et al., 2018]などが挙げられます.

今回は,HyperbandのアルゴリズムのベースとなっているSuccessive Halving[Jamieson et al., 2015]という手法について解説してみたいと思います.

Successive Halving

Successive Halvingはハイパーパラメータ最適化を多腕バンディット問題の最適腕識別として考え,より良いハイパーパラメータほど多くの学習時間を割り当てる手法です.

現在,ハイパーパラメータ最適化では
1. 候補となるハイパーパラメータをサンプルする
2. そのハイパーパラメータを実際に用いて学習をさせてみる
3. 学習後のモデルを評価する1

という流れを繰り返すことが一般的となっています.しかし,モデルを1回学習させるためには多くの時間がかかるため,サンプルしたハイパーパラメータの分だけ学習を実行しなければいけないとなると,非常に多くの実行時間が必要になってしまいます.

そこで,Successive Halvingでは,
1. 候補となるハイパーパラメータに対して学習を途中まで進める
2. その段階で評価値が悪いハイパーパラメータの下位半分を候補から削除する
3. 残ったハイパーパラメータに対して学習を継続する
という流れを繰り返します.これによって,評価値が悪そうなハイパーパラメータに関しては学習を早期で打ち切ることができ,余計な学習を行わないで評価値が良さそうなハイパーパラメータにだけ多くの学習時間を割り当てることができるため,実行時間的に効率が良くなることが期待されます.

アルゴリズム

Successive Halvingの具体的なアルゴリズムは,以下のようになっています.

Budget \(B\)は,総学習時間に当たり,例えば総epoch数やバッチ更新を行う総回数を指定します.つまり,Successive Halvingでは,学習を実行できる総時間が決まっていて,その時間を各ハイパーパラメータに対して割り当てる,ということを行っています.

また,\(l_{i,k}\)は,\(i\)番目のハイパーパラメータに対する学習を\(k\) iteration分だけ進めたときの評価値を表しています.

\(n\)個のハイパーパラメータの候補の生成方法は明確には指定されていませんが,例えば,ハイパーパラメータの空間から一様ランダムに\(n\)個サンプルする,という方法を取ることが多いです.

多くのハイパーパラメータ最適化手法では「評価値が良さそうなところに新たなハイパーパラメータの候補をサンプルする」ということを行いますが,Successive Halvingでは「サンプルされたハイパーパラメータの候補に対してBudgetをいかに割り振るか」ということに焦点を当てているのが特徴的な部分です.

性能解析

Successive Halvingは「Budget \(B\)とサンプルするハイパーパラメータの候補の数\(n\)を増加させると,出力されるハイパーパラメータは最適なハイパーパラメータに漸近的に近づく」ということが理論的に証明されています.

ここからは,その証明の解説を行ってみます.

証明のための準備と仮定

まず,\(\lim_{k\to \infty}l_{i,k}\)が存在して,その値が\(v_i=\lim_{k\to \infty}l_{i,k}\)となるという仮定を起きます.この仮定は,\(l_{i,k}\)が必ず何かしらの値へと収束するということを表しています.証明を簡単に行うために,順序関係を\(v_1\leq \cdots \leq v_n\)としておきましょう.

ハイパーパラメータの空間上で評価値の収束値が最小となるようなハイパーパラメータを\(x_{\ast}\)とし,そのハイパーパラメータに対する評価値の収束値を\(v_{\ast}\)とします.
\(n\)個のハイパーパラメータは確率的にサンプルされるものであるため,この中に最適なハイパーパラメータが含まれていない可能性もあります.ですので,\(v_{\ast}\leq v_1\)となることには注意が必要です.

確率的にサンプルされるハイパーパラメータの候補によって\(v_i\)が決定されるため,\(v_i\)は確率変数となります.ここでは,\(v_i\)が従う累積分布関数を\(F\)とし,以下のように定義します.
$$
P(v_i-v_{\ast}\leq \epsilon)=F(v_{\ast}+\epsilon)
$$また,この逆関数を\(F^{-1}(y)=\sup_x\{x: F(x)\leq y\}\)と定義します.

最適腕識別として証明を行うため,以降では\(n\)個のハイパーパラメータの候補を\(x_i\)とし,\(x_i\)のインデックス\(i\)をアームと呼ぶことにします.したがって,\(l_{i,k}\)や\(v_i\)は\(x_i\)の評価値を表しています.

最後に,\(l_{i,j}\)の値は,単調減少関数\(\gamma:\mathbb{N}\to \mathbb{R}\)を用いて以下のように抑えられると仮定を起きます.
$$
\max_i |l_{i,j}-v_i|\leq \gamma (j), ~\forall j\in \mathbb{N}
$$この仮定は,iterationが増加するにつれて\(l_{i,j}\)が\(v_i\)へと近づいていくことを意味します.この逆関数を\(\gamma^{-1}(y)=\min\{j\in \mathbb{N}: \gamma(j) \leq y\}\)と定義しておきましょう.

命題

\(\delta\in(0,1), \epsilon \geq 4\left(F^{-1}\left(\frac{\log(2/\delta)}{n}\right)-v_{\ast}\right),B=4\lceil\log_2(n)\rceil H(F,\gamma, n, \delta, \epsilon)\)とする. ただし,\(H(F,\gamma,n,\delta,\epsilon) = 2n \int_{v_{\ast}+\epsilon/4}^{\infty} \gamma^{-1}\left(\frac{t-v_{\ast}}{4}\right)dF(t) + \left(\frac{4}{3}\log(2/\delta) + 2nF(v_{\ast} + \epsilon/4)\right) \gamma^{-1} \left(\frac{\epsilon}{16}\right)\)である.

この時,Successive Halvingは確率\(1-\delta\)以上で\(v_{\hat{i}}-v_{\ast}\leq \left(F^{-1}\left(\frac{\log(2/\delta)}{n}\right)-v_{\ast}\right)+\epsilon/2\)を満たすアーム\(\hat{i}\)を出力する.

証明の流れ

証明には,以下の2つの定理が必要になります.
まずは2つの定理の証明をそれぞれ行い,最後にそれらをまとめることで命題の証明を行います.

定理1

任意の\(\epsilon>0\)に対して,
$$
z_{SH} = 2\lceil \log_2(n) \rceil \max_{i=2, \cdots, n} i\left(1 + \gamma^{-1}\left(\max \left \{ \frac{\epsilon}{4}, \frac{v_i – v_1}{2} \right \} \right)\right)
$$と定義する.
この時,Budgetが\(B > z_{SH}\)を満たす場合,Successive Halvingは\(v_{\hat{i}}-v_1 \leq \epsilon/2\)を満たすアーム\(\hat{i}\)を出力する.

直感的解釈

定理1は,「\(n\)個の中で最も良いアーム(\(v_1\))にどれだけ近いアームを出力することができるか」,ということを表していると解釈することができます.\(\epsilon\)を\(0\)へと近づけることで,一定以上のBudgetを与えることで一番良いアームに限りなく近いアームを選ぶことができるということが,この結果からわかります.つまり,Successive Halvingは一定以上のBudgetがあれば,与えられた\(n\)個のアームの中で最も良いアームを識別することができます.

定理2

\(\delta\in(0,1), p_n=\frac{\log(2/\delta)}{n}\),\(\epsilon \geq 4(F^{-1}(p_n)-v_{\ast})\)とする.
この時,確率\(1-\delta\)以上で
$$
v_1 \leq F^{-1}(p_n),~ \sum_{i=1}^n \gamma^{-1} \left(\max\left\{\frac{\epsilon}{4}, \frac{v_i-v_1}{2}\right\}\right) \leq H(F,\gamma,n,\delta,\epsilon)
$$が成り立つ.

直感的解釈

定理2は「候補となるアームの数\(n\)を増やしたときに,\(n\)個の中で最も良いアーム(\(v_1\))が真に最良のアーム(\(v_{\ast}\))に近づくか」,ということを表していると解釈することができます.実は,定理2はSuccessive Halvingのアルゴリズムにはほぼ関係しておらず,\(n\)個のアームのサンプル方法に対しての定理になっています.\(n\)を無限大へと近づけることで,\(v_1\)が限りなく\(v_{\ast}\)へと近づくことがわかります.無限個のアームをサンプルすれば,その中に最適なアームに限りなく近いものが含まれるというのは直感的だと思います.

定理1の証明

証明は,反復\(k\)において最適なアーム\(1\)が集合から削除される事象,すなわち,\(\{ 1\in S_k, 1\not\in S_{k+1}\}\)について考えることで行います.より具体的には,「\(\{ 1\not\in S_{k+1}\}\)となったとき,\(S_{k+1}\)内に含まれる全てのアームは\(v_i-v_1\leq \epsilon/2\)を満たす」ということを証明していきます.

事象\(\{ 1\in S_k, 1\not\in S_{k+1}\}\)は,\(1\)以外のアームが上位\(\lceil|S_k|/2\rceil\)を占めているときに起こるので,
$$
\{ 1\in S_k, 1\not\in S_{k+1}\} \Leftrightarrow \left\{ \sum_{i\in S_k} \mathbb{1} \{l_{i,R_k} < l_{1,R_k} \} \geq \lceil |S_k|/2 \rceil\right\} \tag{A}
$$が成り立ちます.

また,\(\gamma\)の定義より,全ての\(j\)に対して\(\max_i|l_{i,j}-v_i| \leq \gamma(j)\)が成り立つので,\(t \geq \tau_i = \gamma^{-1}\left(\frac{v_i -v_1}{2}\right)\)のもとで,\(|l_{i,t} – v_i| \leq \gamma(t) \leq \frac{v_i – v_1}{2}\)となります.よって,
$$
\begin{eqnarray}
l_{i,t} – l_{1,t} &=& l_{i,t} – v_i + v_i – v_1 + v_1 – l_{1,t} \\
&=& l_{i,t} – v_i – (l_{1,t} – v_1) + v_i – v_1 \\
&\geq& -2\gamma(t) + v_i – v_1 \\
&\geq& -2\frac{v_i – v_1}{2} + v_i – v_1 \\
&=& 0
\end{eqnarray}
$$を得るので,\(t \geq \tau_i \Rightarrow l_{i,t} – l_{1,t} \geq 0\)が成り立ちます.

したがって,
$$
l_{i,t} < l_{1,t} \Rightarrow t < \tau_i
$$が成り立つことを導けます.よって,(A)式は
$$
(A) \Rightarrow \left\{ \sum_{i\in S_k} \mathbb{1} \{R_k < \tau_i \} \geq \lceil |S_k|/2 \rceil\right\}
$$となります.さらに,\(i<j\)の時,\(\tau_i \geq
\tau_j\)が成り立つので,
$$
\begin{eqnarray}
(A) &\Rightarrow& \left\{ \sum_{i=1}^{\lceil|S_k|/2\rceil} \mathbb{1} \{R_k < \tau_i \} \geq \lceil |S_k|/2 \rceil\right\} \\
&\Leftrightarrow& \left\{ R_k < \tau_{\lceil|S_k|/2\rceil} \right\}
\end{eqnarray}
$$が成り立ちます.したがって,\(R_k \geq \tau_{\lceil|S_k|/2\rceil} \Rightarrow \{ 1 \not\in S_k \lor 1\in S_{k+1}\}\)が導けます.これを用いると,
$$
\begin{eqnarray}
\{ 1\in S_k, R_k \geq \tau_{\lceil|S_k|/2\rceil}\}
&\Rightarrow& \{ (1\in S_k, 1\not\in S_k) \lor (1\in S_k, 1\in S_{k+1}) \} \\
&\Rightarrow& \{ 1\in S_k, 1\in S_{k+1}\} \\
&\Rightarrow& \{ 1\in S_{k+1}\} \tag{B}
\end{eqnarray}
$$が成り立ちます.

また,\(B>z_{SH}\)であることを用いると,
$$
\begin{eqnarray}
R_k \geq r_k &=& \lfloor \frac{B}{|S_k|\lceil\log_2(n)\rceil} \rfloor\\
&\geq& \frac{B}{|S_k|\lceil\log_2(n)\rceil} – 1 \\
&\geq& \frac{2}{|S_k|} \max_{i=2, \cdots, n} i\left(1 + \gamma^{-1}\left(\max \left\{\frac{\epsilon}{4}, \frac{v_i – v_1}{2}\right\}\right)\right) – 1 \\
&\geq& \frac{2}{|S_k|} (\lceil|S_k|/2\rceil)\left(1 + \gamma^{-1}\left(\max \left\{\frac{\epsilon}{4}, \frac{v_{\lceil|S_k|/2\rceil} – v_1}{2}\right\}\right)\right) – 1\\
&\geq& \left(1 + \gamma^{-1}\left(\max \left\{\frac{\epsilon}{4}, \frac{v_{\lceil|S_k|/2\rceil} – v_1}{2}\right\}\right)\right) – 1\\
&=& \gamma^{-1}\left(\max \left\{\frac{\epsilon}{4}, \frac{v_{\lceil|S_k|/2\rceil} – v_1}{2}\right\}\right) \tag{C}
\end{eqnarray}
$$を導くことができます.

ここからは,(B)式と(C)式を用いて,「\(\{ 1\not\in S_{k+1}\}\)となったとき,\(S_{k+1}\)内に含まれる全てのアームは\(v_i-v_1\leq \epsilon/2\)を満たす」ということを証明していきます.

(C)式には\(\max\)演算が入っていて複雑なため,反復\(k\)における事象を\(\left\{\frac{v_{\lceil|S_k|/2\rceil}-v_1}{2}\geq \frac{\epsilon}{4}, 1\in S_k\right\}\)のとき,\(\left\{\frac{v_{\lceil|S_k|/2\rceil}-v_1}{2} < \frac{\epsilon}{4}, 1\in S_k\right\}\)のとき,\(\{1\not\in S_k\}\)のときの3つのcaseに分割し,それぞれについて考えていきましょう.

case 1: \(\left\{\frac{v_{\lceil|S_k|/2\rceil}-v_1}{2}\geq \frac{\epsilon}{4}, 1\in S_k\right\}\)

(C)式より,\(R_k \geq \gamma^{-1}\left(\frac{v_{\lceil|S_k|/2\rceil} – v_1}{2}\right) = \tau_{\lceil|S_k|/2\rceil}\)となります.したがって,(B)式の条件を満たすため,\(\{1\in S_{k+1}\}\)が成り立つことがわかります.よってこのcaseでは,アーム\(1\)は次の反復\(k+1\)の集合\(S_{k+1}\)内に含まれることになります.

case 2: \(\left\{\frac{v_{\lceil|S_k|/2\rceil}-v_1}{2} < \frac{\epsilon}{4}, 1\in S_k\right\}\)

(C)式より,\(R_k \geq \gamma^{-1}\left(\frac{\epsilon}{4}\right)\)となります.\(\gamma^{-1}\left(\frac{\epsilon}{4}\right) < \tau_{\lceil|S_k|/2\rceil}\)となることを考えると,このcaseでは,\(1\in S_{k+1}\)となる場合と\(1\not\in S_{k+1}\)となる場合が考えられます.

重要なのはアーム\(1\)以外のアームが出力されるときの\(v_{\hat{i}}\)の値ですので2,最初は\(1 \not\in S_{k+1}\)となる場合を考えましょう.
\(p=\min \{i \in [n] ~|~ \frac{v_i – v_1}{2} \geq \frac{\epsilon}{4} \}\)と置くと,\(p\)の定義より,
$$
R_k \geq \gamma^{-1}\left(\frac{\epsilon}{4}\right) \geq \gamma^{-1}\left(\frac{v_i – v_1}{2}\right) = \tau_i,~ \forall_i \geq p
$$が成り立ちます.このことと,先ほど示した\(t\geq \tau_i \Rightarrow l_{i,t} \geq l_{1,t}\)を用いると,\(i\geq p\)を満たすアーム\(i\)に対して\(l_{i, R_k} \geq l_{1, R_k}\)が成り立ちます.したがって,\(i\geq p\)を満たすアームはアーム\(1\)より早い反復,あるいは同じ反復で削除されることがわかります.さらに,\(p> \lceil|S_k|/2\rceil
\)が成り立つことを考えると,\(i\geq p\)を満たすアーム\(i\)は全て削除されることがわかります.したがって,次反復\(k+1\)における集合\(S_{k+1}\)内のアーム\(i\)は全て\(\frac{v_i-v_1}{2}<\frac{\epsilon}{4}\)を満たすことになります.

したがって,\(\{1\in S_{k}, 1\not\in S_{k+1}\}\Rightarrow \max_{i\in S_{k+1}} v_i \leq v_1 + \frac{\epsilon}{2}\)が成り立ち,この後最終的にSuccessive Halvingが出力するアーム\(\hat{i}\)は最低でも\(v_{\hat{i}} \leq v_1 + \frac{\epsilon}{2}\)を満たすということが導けます.

一方,\(1 \in S_{k+1}\)となる場合では,次反復\(k+1\)でcase 1またはcase 2のどちらかを必ず満たすことになります.したがって,この場合も最終的にはアーム\(\hat{i}=1\)または\(v_{\hat{i}} \leq v_1 + \frac{\epsilon}{2}\)を満たすアームを出力することになります.

case 3: \(\{1\not\in S_k\}\)

このcaseでは,すでにアーム\(1\)が削除されてしまっているという状況を前提にしています.

最初の反復の集合\(S_0\)内にアーム\(1\)は必ず含まれていたはずなので,反復\(k\)より前のどこかの反復\(r<k\)でアーム\(1\)が削除されたという事象,つまり\(\{1\in S_r, 1\not\in S_{r+1}\}\)が起こっていたはずです.これまでに示したように,case 1においては必ず\(1 \in S_{r+1}\)となるため,結局アーム\(1\)が削除されるのはcase 2の場合においてのみということになります.

したがって,case 3では集合内のアームは\(\max_{i\in S_{k}} v_i \leq v_1 + \frac{\epsilon}{2}\)を満たしているはずなので,この場合も最終的には\(v_{\hat{i}} \leq v_1 + \frac{\epsilon}{2}\)を満たすアームを出力することになります.

定理1まとめ

case 1からcase 3までの結果をまとめると,\(v_{\hat{i}} \leq v_1 + \frac{\epsilon}{2}\)を満たすアーム\(\hat{i}\)を出力することが導くことができます.

これで定理1を証明することができました.次は定理2の証明を行いましょう.

定理2の証明

みやすさのため,\(M=\gamma^{-1}\left(\frac{\epsilon}{16}\right), \mu=\mathbb{E}[\min\left\{M, \gamma^{-1}\left(\frac{v_1-v_{\ast}}{4}\right)\right\}]\)と置きましょう.また,事象\(\xi_1, \xi_2\)を
$$
\begin{eqnarray}
\xi_1 &=& \{v_1 \leq F^{-1}(p_n)\}\\
\xi_2 &=& \left\{\sum_{i=1}^n \min\left\{M, \gamma^{-1}\left(\frac{v_i-v_{\ast}}{4}\right)\right\} \leq n\mu + \sqrt{2n\mu M\log(2/\delta)} + \frac{2}{3}M\log(2/\delta)\right\}
\end{eqnarray}
$$と定義しておきます.

定理2の証明は,まず\(\xi_1, \xi_2\)が確率\(1-\delta\)以上で成り立つことを示し,その後に\(\xi_1, \xi_2\)が成り立つ場合に\(\sum_{i=1}^n \gamma^{-1} \left(\max\left\{\frac{\epsilon}{4}, \frac{v_i-v_1}{2}\right\}\right) \leq H(F,\gamma,n,\delta,\epsilon)\)が成り立つことを示すことで行います.

ではまず,\(\xi_1, \xi_2\)が確率\(1-\delta\)以上で成り立つことを示しましょう.
事象\(\xi_1\)について,\(p(\xi_1^c) = p(\min_{i=1,\cdots,n} v_i > F^{-1}(p_n)) = (1 – p_n)^n \leq \exp(-np_n) \leq \frac{\delta}{2}\)が成り立ちます.また,
$$
\mathbb{E}\left[\min\left\{M, \gamma^{-1}\left(\frac{v_i-v_{\ast}}{4}\right)\right\}^2\right] \leq \mathbb{E}\left[M \min\left\{M, \gamma^{-1}\left(\frac{v_i-v_{\ast}}{4}\right)\right\}\right] = M\mu
$$より,Bernsteinの不等式を用いると,\(p(\xi_2^c) \leq \frac{\delta}{2}\)を導くことができます.3

したがって,\(p(\xi_1 \land \xi_2) \geq \left(1 – \frac{\delta}{2}\right)^2 = 1-\delta+\frac{\delta^2}{4} \geq 1 – \delta\)となり,確率\(1-\delta\)以上で事象\(\xi_1,\xi_2\)が成立することが導けます.

次に,\(\xi_1,\xi_2\)が成り立つときに,\(\sum_{i=1}^n \gamma^{-1} (\max\left\{\frac{\epsilon}{4}, \frac{v_i-v_1}{2}\right\}) \leq H(F,\gamma,n,\delta,\epsilon)\)が成り立つことを示しましょう.

このために,まず,\(\max\left\{\frac{\epsilon}{4}, \frac{v_i-v_1}{2}\} \geq \min\{\frac{\epsilon}{4}, \frac{v_i-v_{\ast}}{4}\right\}\)が成り立つことを示します.\(\max\)演算が入っているので,ここでも場合分けをすることで考えます.

case 1: \(\frac{\epsilon}{4} \leq \frac{v_i-v_1}{2}\)

事象\(\xi_1\)より,\(v_{\ast} \leq v_1 \leq F^{-1}(p_n)\)なので,
$$
\frac{v_i-v_1}{2} \geq \frac{v_i – v_{\ast} + v_{\ast} – F^{-1}(p_n)}{2} = \frac{v_i – v_{\ast}}{4} + \frac{v_i – v_{\ast}}{4} – \frac{F^{-1}(p_n) – v_{\ast}}{2} \geq \frac{v_i – v_{\ast}}{4} + \frac{v_i – v_1}{4} – \frac{F^{-1}(p_n) – v_{\ast}}{2}
$$が成り立ちます.また,仮定\(\epsilon \geq 4(F^{-1}(p_n) – v_{\ast})\)と,case 1における仮定\(\frac{\epsilon}{4} \leq \frac{v_i – v_1}{2}\)を用いると,\(\frac{v_i – v_{\ast}}{4} + \frac{v_i – v_1}{4} – \frac{F^{-1}(p_n) – v_{\ast}}{2} \geq \frac{v_i – v_{\ast}}{4}\)となります.

よって,\(\frac{v_i – v_1}{2} \geq \frac{v_i – v_{\ast}}{4}\)が成り立つことが示せました.

case 2: \(\frac{\epsilon}{4} > \frac{v_i-v_1}{2}\)

case 2の仮定を用いると,
$$
\frac{v_i-v_{\ast}}{4} = \frac{v_i – v_1}{4} + \frac{v_1 – v_{\ast}}{4} < \frac{\epsilon}{8} + \frac{v_1 – v_{\ast}}{4}
$$が成り立ちます.

さらに,事象\(\xi_1\)より,\(v_{\ast} \leq v_1 \leq F^{-1}(p_n)\)なので,\(\frac{\epsilon}{8} + \frac{v_1 – v_{\ast}}{4} \leq \frac{\epsilon}{8} + \frac{F^{-1}(p_n) – v_{\ast}}{4}\)が導けます.

最後に,\(\epsilon \geq 4(F^{-1}(p_n) – v_{\ast})\)を用いると,\(\frac{\epsilon}{8} + \frac{F^{-1}(p_n) – v_{\ast}}{4} < \frac{\epsilon}{4}\)が成り立つことが示せました.

定理2まとめ

case 1とcase 2の結果から,\(\max\left\{\frac{\epsilon}{4}, \frac{v_i-v_1}{2}\right\} \geq \min\left\{\frac{\epsilon}{4}, \frac{v_i-v_{\ast}}{4}\right\}\)が成り立つことが示せました.
このことと\(\xi_1, \xi_2\)の定義を用いると,事象\(\xi_1,\xi_2\)が成り立つ時,
$$
\begin{eqnarray}
\sum_{i=1}^n \gamma^{-1}\left(\max\left\{\frac{\epsilon}{4},\frac{v_i-v_1}{2}\right\}\right) &\leq& \sum_{i=1}^n \gamma^{-1}\left(\max\left\{\frac{\epsilon}{4},\frac{v_i-v_{\ast}}{4}\right\}\right)\\
&\leq& \sum_{i=1}^n \gamma^{-1}\left(\max\left\{\frac{\epsilon}{16},\frac{v_i-v_{\ast}}{4}\right\}\right)\\
&=& \sum_{i=1}^n \min\left\{M,\gamma^{-1}\left(\frac{v_i-v_{\ast}}{4}\right)\right\}\\
&\leq& n\mu + \sqrt{2n\mu M\log(2/\delta)} + \frac{2}{3}M\log(2/\delta)\\
&\leq& \left(\sqrt{n\mu} + \sqrt{\frac{2}{3}M\log(2/\delta)}\right)^2\\
&\leq& 2n\mu + \frac{4}{3}M\log(2/\delta)
\end{eqnarray}
$$が成り立つことがわかります.

\(\mu\)を展開すると,
$$
\begin{eqnarray}
\mu &=& \mathbb{E}\left[\min\left\{M, \gamma^{-1}(\frac{v_i-v_{\ast}}{4})\right\}\right]\\
&=& \mathbb{E}\left[\left(\gamma^{-1}(\max\left\{\frac{\epsilon}{16},\frac{v_i-v_{\ast}}{4}\right\}\right)\right]\\
&=&\int_{-\infty}^{v_{\ast}+\epsilon/4}\gamma^{-1}\left(\frac{\epsilon}{16}\right)dF(t) + \int_{v_{\ast}+\epsilon/4}^{\infty}\gamma^{-1}\left(\frac{t-v_{\ast}}{4}\right)dF(t)\\
&=&\gamma^{-1}\left(\frac{\epsilon}{16}\right)F(v_{\ast}+\epsilon/4) + \int_{v_{\ast}+\epsilon/4}^{\infty}\gamma^{-1}\left(\frac{t-v_{\ast}}{4}\right)dF(t)
\end{eqnarray}
$$となるので,これを代入すると,事象\(\xi_1,\xi_2\)が成り立つ時,
$$
\begin{eqnarray}
\sum_{i=1}^n \gamma^{-1}\left(\max\left\{\frac{\epsilon}{4},\frac{v_i-v_1}{2}\right\}\right) &\leq& 2n\mu + \frac{4}{3}M\log(2\delta)\\
&=& 2n \int_{v_{\ast}+\epsilon/4}^{\infty} \gamma^{-1}\left(\frac{t-v_{\ast}}{4}\right)dF(t) + \left(\frac{4}{3}\log(2/\delta) + 2nF(v_{\ast} + \epsilon/4)\right) \gamma^{-1} \left(\frac{\epsilon}{16}\right)
\end{eqnarray}
$$が成り立つことが導けます.

この結果と,事象\(\xi_1,\xi_2\)が確率\(1-\delta\)以上で成り立つことを考えると,確率\(1-\delta\)以上で
$$
v_1 \leq F^{-1}(p_n),~ \sum_{i=1}^n \gamma^{-1} \left(\max\left\{\frac{\epsilon}{4}, \frac{v_i-v_1}{2}\right\}\right) \leq H(F,\gamma,n,\delta,\epsilon)
$$が成り立つことがわかります.

これで定理1と定理2の証明が終わりました.最後に,定理1と定理2の結果をまとめることで,命題の証明を行いましょう.

命題の証明

\(\epsilon \geq 4\left(F^{-1}\left(\frac{\log(2/\delta)}{n}\right)-v_{\ast}\right)\)より,定理2から確率\(1-\delta\)以上で
$$
\sum_{i=1}^n \gamma^{-1} \left(\max\left\{\frac{\epsilon}{4}, \frac{v_i-v_1}{2}\right\}\right) \leq H(F,\gamma,n,\delta,\epsilon)
$$が成り立ちます.また,\(\gamma^{-1}(x)\)が\(x\)に関して単調減少であることを用いると,
$$
\begin{eqnarray}
z_{SH} &=& 2\lceil \log_2(n) \rceil \max_{i=2, \cdots, n} i\left(1 + \gamma^{-1}\left(\max \left\{\frac{\epsilon}{4}, \frac{v_i – v_1}{2}\right\}\right)\right)\\
&\leq& 2\lceil \log_2(n) \rceil \left(\max_{i=2, \cdots, n} i + \max_{i=2, \cdots, n} i\left(\gamma^{-1}\left(\max \left\{\frac{\epsilon}{4}, \frac{v_i – v_1}{2}\right\}\right)\right)\right)\\
&\leq& 2\lceil \log_2(n) \rceil \left(n + \max_{i=2, \cdots, n} i\left(\gamma^{-1}\left(\max \left\{\frac{\epsilon}{4}, \frac{v_i – v_1}{2}\right\}\right)\right)\right)\\
&\leq& 2\lceil \log_2(n) \rceil \left(n + \sum_{i=1,\cdots,n}\gamma^{-1}\left(\max \left\{\frac{\epsilon}{4}, \frac{v_i – v_1}{2}\right\}\right)\right)
\end{eqnarray}
$$が成り立ちます.よって,
$$
\begin{eqnarray}
z_{SH} &\leq& 2\lceil \log_2(n) \rceil \left(n + \sum_{i=1,\cdots,n}\gamma^{-1}\left(\max \left\{\frac{\epsilon}{4}, \frac{v_i – v_1}{2}\right\}\right)\right)\\
&\leq& 2\lceil \log_2(n) \rceil \left(n + H(F,\gamma,n,\delta,\epsilon)\right)\\
&<& 4\lceil \log_2(n) \rceil H(F,\gamma,n,\delta,\epsilon)=B
\end{eqnarray}
$$が成り立つので,\(B>z_{SH}\)を満たします.
したがって定理1の前提条件を満たすので,\(v_{\hat{i}}-v_1\leq \epsilon/2\)が成り立ちます.
また,定理2から\(v_{\ast}\leq v_1\leq v_{\ast}+(F^{-1}(p_n)-v_{\ast})\)が同時に成り立つことがわかるので,
$$
v_{\hat{i}}-v_1 \leq v_{\hat{i}}-v_{\ast}\leq (F^{-1}(p_n)-v_{\ast})+\epsilon /2
$$も成り立つことが導けます.

これらの結果を組み合わせると,Successive Halvingは確率\(1-\delta\)以上で\(v_{\hat{i}}-v_{\ast}\leq \left(F^{-1}\left(\frac{\log(2/\delta)}{n}\right)-v_{\ast}\right)+\epsilon/2\)を満たすアーム\(\hat{i}\)を出力することを示せました.

直感的解釈

定理1では「一定以上のBudgetを与えることでアーム\(1\)に限りなく近いアームを選ぶことができる」ということが,定理2では「\(n\)を無限大へと近づけることで,\(v_1\)が限りなく\(v_{\ast}\)へと近づく」ということがわかります.

これら2つの定理をあわせて証明した命題は単にこれらの結果を合わせたような結果となっているだけですので,直感的には,「\(n\)と\(B\)を無限大へと近づけると,Successive Halvingは最適なアームを出力する」というイメージを持つことができます.当たり前といえば当たり前なのですが,理論的に保証がされているとアルゴリズムを使用する際に安心できるので,意外と重要なことなのかな,と思います.

Hyperbandとのつながり

Successive Halvingは強力な理論保証を持つアルゴリズムですが,実際のハイパーパラメータ最適化では\(\gamma\)や\(F\)はわからないことが一般的なため,\(B\)や\(n\)をどれくらいに設定すればいいかは事前にわからないことがほとんどです.

\(B\)と\(n\)はトレードオフの関係にあります.\(n\)を増加させると多くのアームを候補とすることができますが,その分だけ\(B\)を増加させないと各アームに対して十分に学習を進めることができません.一方で,\(n\)を減少させると各アームに対してより多くの学習時間を割り当てることができますが,その中に最適なアームに近いものが含まれている可能性も低くなってしまいます.

Hyperbandはこの問題に対処した手法であり,\(n\)と\(B\)に対してループを回すことによって様々な\(n\)と\(B\)の組み合わせに対してSuccessive Halvingを実行することができるようなアルゴリズムになっています.

おわりに

今回は,機械学習のハイパーパラメータ最適化手法であるSuccessive Halvingについて紹介し,その性能を理論的に解析しました.やはり理論的保証があると嬉しいので,自分で提案したアルゴリズムに対しても理論的保証を与えていきたいですね!

非常に長いブログとなりましたが,最後まで読んでくださりありがとうございました.

参考文献

  • Bergstra, James S and Bardenet, Rémi and Bengio, Yoshua and Kégl, Balázs : Algorithms for hyper-parameter optimization, Advances in neural information processing systems (2011)
  • Hutter, Frank and Hoos, Holger H and Leyton-Brown, Kevin : Sequential model-based optimization for general algorithm configuration, International Conference on Learning and Intelligent Optimization (2011)
  • Jamieson, Kevin and Talwalkar, Ameet : Non-stochastic best arm identification and hyperparameter optimization, Artificial Intelligence and Statistics (2015)
  • Li, Lisha and Jamieson, Kevin and DeSalvo, Giulia and Rostamizadeh, Afshin and Talwalkar, Ameet : Hyperband: A Novel Bandit-Based Approach to Hyperparameter Optimization, The Journal of Machine Learning Research (2018)

  1. 評価の方法はいろいろありますが,例えば,validation data setに対しての誤分類率を評価値とする,といった方法があります. ↩
  2. アーム\(1\)が出力されるならそれに越したことはないので,アーム\(1\)がずっと集合内に残っている事象についてはあまり深く考えず,どこかの反復でアーム\(1\)が削除されてしまった後の事象について特に考えます. ↩
  3. ここの証明は省きます. ↩
]]>