magattacaのブログ

日付以外誤報

「ベイズ反応最適化」(Nature 2021)がわからないのでベイズ最適化をお勉強したメモ

先日(2021/2/3)公開のNatureにとても気になる文献がでました。

Shields, B.J., Stevens, J., Li, J. et al. Bayesian reaction optimization as a tool for chemical synthesis.
Nature 590, 89–96 (2021).

doi.org

News&Viewsは無料で読むことができ、研究の概要をつかむことができます。

Machine learning made easy for optimizing chemical reactions Hein, J.E. Nature 590, 40-41 (2021)

doi.org

要するに、「有機合成反応条件の最適化に、機械学習のツール(ベイズ最適化)を適用することで、 実験化学者を上回る結果がでた」という内容のようです。

反応条件の最適化は、実験条件(試薬・温度・濃度・・・)の組み合わせが無数にありえ、化学者の経験と感に寄るところも大きいです。 この問題を改善しうる、より効率的なソフトウェアが構築され(オープンソース!)、しかも得られた結果の中には、 経験のある化学者がだれも思いつかなかった条件でより高い収率を達成したものもあった、とのこと。

「こりゃ、おまんまの食い上げだよ!」ってことで、思わず課金してしまったのですが、読んでもさっぱりわからなかったのです。

というわけで、必要そうな周辺知識のお勉強メモ。。。

論文の簡単な紹介

まずはざっと論文の概要をご紹介します。

著者グループの過去文献(Science 2018(360)186)

さて、今回の文献はPrinceton大学のAbigail G. Doyle教授のグループとBristol-Myers Squib社によるものです。

DoyleグループのHPはこちら。 おもに有機合成反応開発を研究テーマとされているようですが、 ハイ・スループット実験(HTE)や機械学習(ML)といった手法を積極的に取り入れて成果を挙げられている、格好良いグループです。

関連する報告として、2018年Science誌にMerck社との共著を出されています。(本文公開されています。)

Predicting Reaction Performance in C-N Cross-Coupling Using Machine Learning.
Ahneman, D. T.; Estrada, J. G.; Lin, S.; Dreher, S. D.; Doyle, A. G. Science 2018, 360, 186-190.

science.sciencemag.org

Science文献では、有機合成反応の中でも必要な試薬が多く、パラメーターの多いクロスカップリング反応(Buchwald-Hartwig cross-coupling) を題材として、反応阻害物質の収率への影響を予測するモデルを構築しています。

モデルのアルゴリズムランダムフォレスト(RF)ですが、入力となる化学物質の特徴量として、DFT計算で得た値(HOMO、LUMO etc.)や振動モード (vibrational mode)を記述子に取り込んでいる点が興味深いです。

この量子化学計算による記述子というアプローチはNature文献でも引き継がれています。

Nature文献の概要

今回の論文のポイントはだいたいこんな感じ。。。

  1. ベイズ最適化の有機合成実験への実践的適用
  2. 化学者が利用可能なオープンソースフレームワークの作成
    • コンピューター上でのハイスループット実験と反応の特徴量化(auto-QChem)
    • ベイズ最適化パッケージ(EDBO)
  3. BMS社のハイスループット実験(HTE)データを利用した性能比較(ベンチマーク
    • Webゲームアプリを作成し、化学者 vs. ソフトウェアの比較実験(EVML)

上記、データ・コードともに公開されており、文献ページでもリンクを確認できます*1

それぞれ名称が何の略か見ると機能がわかりますね。

反応の特徴量化(featurization)としては、ケモインフォマティクスの記述子(Mordred)やOne-hot-encoding(OHE)の結果と比較した上で 量子化学(DFT)を選択しています。*2

また、性能評価のために、合成反応最適化ゲームを作って化学者とソフトを競わせてしまう(Expert versus Machine Leaning)というのは面白いアプローチですね。

具体的検証として、複数の合成反応における比較結果が記載されています。 一例として、クロスカップリング反応において、機械学習は化学者よりも高い収率に到達し、なんとその条件で使われている配位子は同種の反応で報告例のないもの(!?)、だったそうです。

感想

ベイズ最適化自体は、実験計画法(Design of experiments, DOE)との比較文脈で、 化学以外の他の分野でも多く使われているそうなので、数理分野に親しみのある方からみれば、あまり複雑なことはしていないのかもしれません。 ですが、企業と組んで実際の実験データを利用し、実践的なシステムの構築ゲーミフィケーションのとりいれといったアプローチを実現しつつ、 実際にヒト以上の性能のソフトウェアを作ってしまっているのは、本当にすごいなーと思います。

感想文はここまでにして、、、ベイズ最適化のお勉強に進みたいと思います。

目標は、文献でわからなかった以下の用語たちのお気持ちを知ることです。

  1. gaussian process surrogate model
  2. Matérn52
  3. explore / exploit
  4. aquistion funtion
  5. Thompson Sampling
  6. Kriging believer algorithm

ベイズ最適化について

ベイズ最適化の雰囲気

ベイズ最適化についてはSlideShareの「機械学習のためのベイズ最適化入門」が雰囲気をつかみやすかったです。*3

まとめスライドから引用します。

  • ベイズ最適化は高コストなブラックボックス関数の最適点効率よく求める手法
  • ガウス過程を用いて目的関数を表現
  • 獲得関数が最大となる点を次の観測点に選ぶ

だいたいこんな感じの話みたいです。*4

f:id:magattaca:20210214233010p:plain

まず、ベイズ最適化は「形状のわからない関数(ブラックボックス関数)」について、「効率的(少ない評価回数)」に「最大値または最小値」を求めるための手法です。

ここで解きたい問題は「大域的最適化問題」。つまり「局所解」(local)に陥らずに「大域解」(global)を求めるのが目標です。

「効率的」とありますが、逆に効率が悪い例はグリッドサーチのように探索範囲のすべての組み合わせを検討するアプローチや、ランダムサーチのように完全にランダムに探索するものです。

これに対して、ベイズ最適化では「評価値の良そうなエリアを優先的に観測」しつつ、 「局所解に陥らないように(観測点が)スカスカのエリアもたまに観測」することで、より少ない回数で最適解に到達することができます。

この「次に観測する観測点」は、「これまでの結果をもとに」決められます(逐次最適化法)。人間が経験に基づいて直感的に判断するのを再現するようなものとなっています。

その判断の戦略には複数あり、例として① PI戦略 (Probability of Improvement) 、 ②EI戦略 (Expected Improvement) 、③UCB戦略 (Upper Confidence Bound) といったものがあります。

いずれの戦略においても、「何らかの関数を最大化する点を次に観測する」という選択をします。 このような関数を「獲得関数(acquisition function)」とよびます。*5

より具体的には、獲得関数は期待値(μ)や偏差(σ)の組み合わせで定義されます。 これらの値は、「最適化したい関数がガウス過程に従うと仮定する」ことで求めることができます。 つまりガウス過程の導入により獲得関数の最大化が計算可能となります。

ガウス過程では、形状のわからない関数(ブラックボックス関数)のだいたいの形を観測点から予想します。すると「未観測点の期待値(μ)と分散2)」が算出可能となります。

  • 期待値(μ)が大きい → 周囲の観測点が大きい → 評価値の良さそうなエリア
  • 偏差(σ) が大きい → 周囲が観測されていない → スカスカのエリア

となるので、先に見たベイズ最適化の探索の仕方に対応していることがわかります。

こうして決めた次の観測点のデータが得られたら、そのデータを取り込んでモデルを更新し、どんどんと精度を高めていきます。*6

以上がベイズ最適化の雰囲気です。

Nature文献の例では?

今回のNature文献の例では、以下のようなベイズ最適化の問題だったといえるでしょうか?

  • 反応条件(xi)の組み合わせ(x1, x2,… xn)と収率(y)の関係は具体的な形がわからない関数
  • 求めたいのは最大の収率(y)を与える最適な反応条件(xi)の組み合わせ
  • 膨大な反応条件の組み合わせから、効率的に大域解をあたえる組み合わせを探索したい。

また、「実験化学者が見出せなかった条件にソフトウェアが到達した」という結果は、

  • 化学者は経験や類似の反応の報告例をもとにあたりをつけた、良さそうな条件(期待値大)の周りを探索するため、 少ない試行回数である程度良い結果を得ることができる。
  • 一方で、ソフトウェアは期待値が低く偏差が大きい組み合わせも探索に含めるため、報告例のない大域解にも到達することができた。 また、そこに至る試行回数も現実的に許容可能な範囲であった。

と、いった内容になりそうです。

ベイズ最適化とガウス過程(Gaussian Process)

ベイズ最適化の雰囲気がわかりました。気になるのは、未知の関数の計算のためにとりいれられた「ガウス過程の仮定」という、天丼みたいな用語です。もう少しつっこみましょう。

サロゲートモデル?

さて、先にベイズ最適化は逐次最適化を行うとかきました。 このように「反復的に関数評価と目的関数のモデルの更新を繰り返す手法」をSequential Model-based Optimization(SMBO)と呼ぶそうです。

また、この「目的関数のモデル」のことをサロゲートと呼びます。これらの用語を使うと、「ベイズ最適化は、サロゲートベイズ的に構築するSBMO」ともいえます。*7

サロゲートは先の「形状のわからない関数」のモデルにあたりますが、その種類はいくつかあり、ガウス過程、ランダムフォレスト、Tree Parzan Estimator(TPE)などがあります。

Nature文献中のGaussian process surrogate modelという記載はこれだったんですね!

ガウス過程を5分で理解!?

では、ガウス過程(Gaussian Process, GP)はどのようなものなのでしょうか?

本棚見たらこんな書籍をもってました!なんと冒頭、第0章のタイトルは「たった5分でガウス過程法がわかってしまう」!!! まじかーー!!

ガウス過程は「観測データをもとに、元の関数(f(x))の形を推定」する方法の一つです。 「回帰問題(データから誤差を織り込んだ入出力(x-y)関係を推定する問題)」の解法の一つ、というわけですね!

教科書でよく見る回帰問題の標準的な解法は最小二乗法(OLS)です。最小二乗法では誤差を最小とするように、最適なパラメーターをビシッ!と決めてやります 対してガウス過程回帰法では、ビシッと一つの形として推定するのではなく、あやふやさを織り込んだ広がりを持ったもの(「確率分布の雲」)と推定するのが特徴です。

f:id:magattaca:20210214233257p:plain    

また、この関数の推定(モデル化)においてガウス分布を道具として使います。複数のガウス分布を組み合わせることで、多様な関数の形を表現できるので「ある程度の滑らかさを持つ関数だったら何でもアリ」という広い条件のもとで探索することができます。  

念のため、「ビシッ = 直線」「あやふや = 曲線」という意味ではないです(上図、OLSが1次関数なのは手頃な図がなかったからです)。ここで言いたいのは、「ベイズ主義でいくぜ!」ってことです。

頻度主義では「知りたいパラメータは1つの真の値」(ビシッ)でした。一方でベイズ主義では「知りたいパラメータは確率変数である」(雲)と考えます*8ベイズ推定によりパラメータを推定し得た関数の形は確率的なものなので、このモデルによる予測も広がりのあるものとなります。

観測データはおおよそ予測値(期待値)のあたりだけどズレるのは織り込み済み。予測の確度が高い部分は広がり(分散)が小さく、自信がなければ大きくなる。と、いうのが「あやふやさを織り込んだ広がり」とした推定のようです。

f:id:magattaca:20210214233529p:plain

ベイズに話が逸れましたが、何はともあれガウス過程のガウスガウス分布に由来しそうなことがわかりました。数学っぽくするためにWikipediaを引用しておきます。*9*10

f:id:magattaca:20210214233555p:plain

では、ガウス過程の残りの「過程」とは何でしょうか?

これはガウス過程が「「確率過程」(stochastic process)の一種である」ことに由来するそうです。 確率過程とは、「入力の集合(x_1, x_2, ..., x_N)に対応する確率変数の集合(y_1, y_2, ..., y_N)に同時分布p(y_1, y_2, ..., y_N)を与える確率モデル」です。*11

また、観測Yの確率モデル(あるいは確率的生成モデル (probablistic generative model))とは、「現実世界における観測Yは、何らかの確率分布p(Y)からのサンプリング Y ~ p(Y)によって得られたものだ」とする仮説のことです*12。サンプリングと考えることで、「観測される値の生成過程確率分布で表現」することができます*13

ちなみに、もともと「時系列に対する理論」として生まれたので「過程」という名前がついていますが、時系列以外の一般に成り立つ理論だそうです。 *14また、確率過程が仮説であることから、「ガウス過程を仮定」という表現の「仮定」の意味もわかりますね。

格好いい表現を書籍からお借りします。

f:id:magattaca:20210214233619p:plain

さて、だいたい必要そうな用語をひろいました。これらを踏まえて「ガウス過程と機械学習 第0章」の表現をお借りしましょう。

簡潔にいうと、ガウス過程とは「関数f(x)を確率変数と見立てた確率分布」であり、ガウス過程回帰とは「データから関数f(x)の確率分布をガウス過程の形で求める方法」です。 また、求めたいものは「関数f(x)の「事後分布の雲」」であり、ベイズ推定で求めます。*15

ガウス過程の定義を以下に引用しておきます。

f:id:magattaca:20210214233644p:plain

上記でN次元としていますが、Nは無限に大きくても良いのでガウス過程は「無限次元ガウス分布」です。

定義の用語を使えば、ガウス過程回帰は、平均 μ と共分散行列 K からfの事前分布であるガウス過程を定め、観測データによってfの事後分布を求める、ということになります。

以上、ガウス過程の用語でした。「ガウス過程と機械学習」の色々な章から継ぎ接ぎしたので、正確なお話は書籍を買いましょう!図表が多く語り口も優しいので数学嫌いでも取りつきやすいですよ!*16

ガウス過程とカーネル法

さて、ベイズ最適化の関数のモデルにおいて使われるガウス過程の雰囲気がわかって来ました。ガウス過程の定義を参照すると、関数の形を求めていく作業は、平均 μ と共分散行列 K からfの事前分布であるガウス過程を定め、観測データによってfの事後分布を求める、作業になります。

この問題を解くために、より具体的な形に入っていくにはカーネルという言葉を押さえておく必要があります。サポートベクターマシーンでよく見る格好いいやつですね!

具体的には共分散行列がカーネル関数から計算されるカーネル行列となっています。カーネル関数をつかうことで、計算量をずっと減らすことができます(カーネルトリック)。*17

カーネル関数の定義には様々あり、以下の書籍には複数のアプローチからの導入やアプローチ間の関係性が議論されています。*18

このうち、確率モデルからの導入において、線形モデルのヘイズ推論から出発して、ガウス過程とカーネル関数の関係性が説明されています。また、「ガウス過程と機械学習 Chaptor 3」において、線形モデルからパラメータ(重み w)の消去によりガウス過程を導く流れからも説明されています。*19

だいたいこういう雰囲気の話です。

f:id:magattaca:20210214233825p:plain

上の流れで見たことから、カーネル関数のグラム行列を分散共分散行列とみなすと、カーネル関数とガウス過程は等価となります*20カーネル関数をつかうと、特徴空間における内積をデータから直接計算することができるので、特徴ベクトルを明示的に使った計算が不要となり、計算量を減らすことができます。*21

さて、カーネル関数の概略がだいたいわかりました。では、具体的にはどのような形の関数なのでしょうか?

カーネル関数の形

カーネル関数の具体例に入る前に、その意味合いについて触れておきます。

カーネル関数は「サンプル間の類似度を評価するもの」ということができます。カーネル関数は共分散行列の要素を与えており、多変量ガウス分布において2つの変数の間の共分散となります。「共分散が大きい = 似た値をとりやすい」ということになるので、「入力 xとx'の近さ」(類似度)をあらわす意味合いがある、ということになります。*22

カーネル関数の満たすべき条件は書籍を参照していただくとして、具体的な例を以下に挙げます。*23

f:id:magattaca:20210214233915p:plain

一番下、Matérnカーネルという複雑な形を引用しました。Matérnカーネルのパラメータ ν関数の滑らかさを表すもので、カーネルの性質を決めます。 「ν = 」のとき、RBFカーネルに一致し、「ν = 3/2」はMatérn3、「ν = 5/2」はMatérn5と呼ばれます。

今回題材にしているNatureの文献ではMatérn52という記載があり、カーネル関数としてMatérn5(ν = 5/2)を使用していると言う意味だと思われます。

以上、カーネル関数の形についてでした。

これで、ガウス過程の概要と、具体的な式表現をざっと拾い終わりました。 先に見た通り、ガウス過程はベイズ最適化のサロゲートモデルの一つで、目的関数の表現に関わるものでした。 では続いて、ベイズ最適化の残り、効率的な探索部分に関して見て行きましょう。

探索と活用と獲得関数

さて、ベイズ最適化の概要でみたように、べイズ最適化では効率的な探索のため、獲得関数を最大化するように次の観測点を選んでいくのでした。

探索と活用のトレードオフ

このような、観測を繰り返して最適解を探す問題において効率化のために考えるべき点として「探索と活用のトレードオフ」(Exploration-exploitation trade-off)があります。

(しらみ潰しやランダムでない)効率的な探索には、すでにある情報(過去の経験)の活用が鍵となります。 やってみて良い結果になった行動を続けていけば、同様に良い結果が得られる可能性が高くなります(経験の活用(Exploitation))。

一方で、活用ばかりでは、離れた場所にある、もっと良い結果につながる行動を見つけることができません。

そこで、不確実な未経験の行動についても試してみることが大事になります(探索(Exploration))。ですが、探索ばかりでも、今度は過去の経験を生かせない、と言う問題があります。*24

このように、探索と活用にはトレードオフがあるので、両者のちょうど良いバランスを取ることが目指されます。このバランスをどのように取るか?バランスの取り方(戦略)を反映するのが獲得関数(acquitson function)となっています。

獲得関数

では、獲得関数には具体的にどのようなものがあるのでしょうか? 以下の3つが有名みたいです。*25 *26 *27

f:id:magattaca:20210214233953p:plain

上記、①PI戦略の獲得関数は改善確率に基づくもので、改善量を考慮していません。 従って、「改善量は大きいが不確実性が高い」選択肢があったとしても、「改善量は小さいが確度は高い」選択肢が選ばれる可能性があります。つまり活用(exploitation)重視なので、局所解に陥る可能性があります。

対して、②EI戦略では改善量も考慮に入れられており、imporovement functionの期待値が獲得関数として使われます。ベイズ最適化ではEIが一般的によく使われるそうです。

UCB戦略は多腕バンティット問題でよく出てくるバンディットアルゴリズムです。 ベイズ最適化を多腕バンディット問題と捉えると、あらかじめ決めた試行(観測-モデル更新)回数で最適解を見つける問題と考えられます。 最適化の試行回数をT、現在の試行回数をtとすると、ハイパーパラメーターν(> 0)を使ってκを置き換えて、上図のGP-UCBのように表すこともできます。

以上見てきた3つの獲得関数(戦略)は、解析的な形をとっており、決定的(deterministic)なアプローチとなっています。これに対してランダムなアプローチもあります。

Thompson Sampling

ランダムなアプローチの例としてThompson Samplingというアルゴリズムがあり、Nature文献中でも他の獲得関数と比較検証されています。

Thomson Samplingについてはバンディットアルゴリズムとしての解説が多いので、多腕バンディット問題に従って内容をおっていきます。

Thompson Samplingはベイズ戦略の一種で、アーム(腕)を「そのアームが最適(期待値が最大)である事後確率」に従ってランダムに選択します。 この事後確率は以下の図中のように表せますが、実際には求める必要はありません。同等となる動作が知られています。*28*29*30

f:id:magattaca:20210214234315p:plain

上図中のような手続きを行うことで、「期待値最大の事後確率に基づくアームの選択」が可能になります。 *31 Thompson SamplingはUCB戦略と比べて余分な探索が少なくなることが知られており、有限の試行回数でより良い性能を達成できるそうです。

ベイズ最適化(ガウス過程)にThompson Samplingを利用する際のアルゴリズムを引用しておきます。*32

f:id:magattaca:20210214234344p:plain

右側の日本語は本文を適当に訳したものです。

以上、ベイズ最適化の獲得関数を見てきました。最後のThompson Samplingは、他の3つと異なり決定的ではなく、ランダムな手法という違いがありました。 加えて、Thompson Samplingには「次の観測点の候補をサンプリングにもとづいて決める」という手順から、ベイズ最適化の並列化バッチ処理)と相性が良いと予想されます。

この記事の最後の話題として並列化に触れておきましょう。

ベイズ最適化の並列化(バッチ処理

今回のNatureの論文の目的は、有機合成反応条件の探索へのベイズ最適化の応用でした。

ベイズ最適化は観測をもとに意思決定を行うサイクルを回す逐次的最適化です。実際の問題への適応を考えると、このサイクルで最も時間がかかるのは実際に実験を行う部分です。

実験作業の効率化を考えると、「1つ実験して、結果を踏まえて条件を変更して次の実験をおこなう」というサイクルよりも、 「同時に並べて複数の実験を行って、それらの結果を踏まえて、また新しく複数の実験を行う」といった、並列化した作業(バッチ処理)の方が好ましくなります。

先に、Thompson Samplingは並列化と相性がいいと書きました。 1サイクルあたりN個の実験を行うバッチ処理に適応したいのであれば、事後確率分布からN個サンプリングを行えば良いと考えれば、なるほどそうかも、と言う感じですね。

では、「決定的なアプローチ(PI、EI、UCB)の場合、どうやってバッチ処理にあわせるか?」というと、Nature文献中ではKriging beliver algorithmと言うのを用いています。

クリギング

クリギング(Kriging)は鉱山技術者ダニー・クリーグにより開発された、採石場全体に含まれる鉱物の総量を推定するための方法です。

サンプリング(ボーリング検査)のコストを減らすため、すでにある座標 x1,..., xN での実測値 fx1,... fxNの重み付き線形和を使って 任意の空間座標 (x)における計測値を推定すると言うものです。現象の生じる位置関係をモデルに含めて説明能力を増すために空間統計学などで使われています。

クリギングとガウス過程回帰法は原理的な方法論としての内容は同じです。カーネル関数でみたMatérnカーネルは空間統計学で広く使われているそうです。*33

クリギング信者アルゴリズム

クリギング信者アルゴリズム(Kriging believer algorithm) は、クリギングに基づく逐次的最適化の問題において、 特に複数の点を同時に最適化(multi-points optimization)する際の戦略です。用語は違いますが、ガウス過程によるベイズ最適化で並列最適化を考えているのと同じですね。

複数の点の同時最適化において、決定的な獲得関数例えばEI)を使っている時、難しくなるポイントは多変量ガウス分布積分の計算が出てくることです。 この複雑な計算を回避するヒューリスティックな戦略の一つがKriging Believerです。*34

ここでは最適化の各イテレーションで考慮する条件的知識(conditional knowledge)を弱めることを考えます。 具体的には、「一つ前のイテレーションにおける、選んだ箇所での応答(response)に関する条件的知識」を、 「クリギング予測器(krigind predictor)の期待値」で置き換えます。 決定的な値(deterministic value)に置き換えることで、計算を楽にしてやる、という感じですね。*35

Natureの文献中では、「チェスプレーヤーが、複数の手を先読みして、各ステップにおける駒の操作で起こりうる結果を推測する」ようなものだと例えられていました。 Supplementary Information Figure S29. S30.が、Thompson Sampling、Kriging believer algorithmそれぞれの場合のアルゴリズムを記載しているので引用しておきます。*36

f:id:magattaca:20210214234525p:plain

以上、ベイズ最適化の並列化(Parallel Optimization)に関する用語でした。

ベイズ最適化まとめ

ベイズ最適化について関連する用語を拾ってきましたが、話題が散らかって細かくなりすぎた感じもあるので、最後にもう一度大枠を見直しておきます。

結局、ベイズ最適化は「高コストなブラックボックス関数の最適点効率よく求める手法」であり、「関数のサロゲートモデルとしてガウス過程」が出てきました。 ガウス過程の式においては、「カーネル関数(共分散行列)として何を選ぶか?」という選択がありました。 また、最適化のための探索の過程では、効率的な探索のため複数の戦略があり、それぞれ獲得関数を最大化するように次の観測点を選ぶ、という手順が取られました。

最適化のイメージとして、arXiv:1012.2599 (2010). Figure 1がわかりやすいので引用しておきます。

f:id:magattaca:20210214234614p:plain

また、解くと言う観点から、ベイズ最適化に関与するハイパーパラメータとしては、ガウス過程の平均関数とカーネル関数のパラメータがあります。これらは最尤推定(MLE)や事後分布最大化(MAP)推定によって求められるそうです。 *37

最後に発展的な話題として、最適化の各イテレーションで観測点を複数とする並列最適化、という点についてもふれました。ベイズ最適化の並列化は難しいらしく、色々と研究がされているみたいです。*38

 まとめ

以上、Nature文献の感想と、読んでもわからなかったベイズ最適化の雰囲気を知るためのお勉強記録でした。

機械学習で新しい反応条件が見つかるというのは個人的にはかなり衝撃でした。学生時代、後追いロースループット実験しかしていなかったショボい身としては、 「そこそこ良い収率出せる配位子あるのに、わざわざ報告例のない配位子にチャレンジするの謎。そこから最適条件までもっていけるとかどう考えても予測不能でしょ。・・・」って感じです。

お仕事なくなっちゃうね!

正直な話、Gaussain(高価そう)でゴリゴリ計算して、ハイスループット実験マシーンをバシバシ動かせる先端機関、数える程しかないのでは??と思ってしまいました。 ソフトがオープンになっても、入力データを準備できる環境を手に入れるのが大変そうです。

また、本記事は用語まとめといいつつ、書籍やインターネット上の資料の引用記事のようになってしまいました。ごめんなさい。 正しい内容が知りたい方は書籍「ガウス過程と機械学習」を購入しましょう!色々なところでもオススメされているので買って損はないはず!

後半、Thompson SamlingやKriging believer algorithmはどこを参照にすれば良いかわからず、検索して出てきた英語の資料をDeepLに投げ込んだりしているので、かなり内容が怪しくなっています。 オススメの日本語資料、書籍があればご教示いただけると幸いです。

ではでは。

f:id:magattaca:20210215001305p:plain
やったね!

*1:購読不要

*2:Supplementary Informationでも比較を確認可能です。

*3:この資料を後悔してくださっている牧山幸史氏はHOXO-M Inc.という企業の方らしいです。O'REILLYの「機械学習のための特徴量エンジニアリング――その原理とPythonによる実践の翻訳をされた企業さんらしい。不勉強で知らなかった。

*4:以下の図の表記は講談社MLPガウス過程と機械学習」の記載も参考にしています

*5:UCB戦略はオープンソースの逆合成解析ソフト AiZynthFinderでも使われた気がします。

*6:こちらの記事(「ベイズ最適化って何がベイズ?」)では、「ベイズ的に獲得関数を更新していく」のでベイズ最適化というのでは、と書かれていました。

*7:グリー株式会社 尾崎嘉彦氏の資料「機械学習モデルのハイパパラメータ最適化」の記載を元にしています。SildeShare

*8:Wikipedia ベイズ確率

*9:Wikipedia 正規分布

*10:Wikipedia 多変量正規分布

*11:ガウス過程と機械学習 Chapter 3 ガウス過程」 記載より

*12:「~」は確率的生成モデルを表現するのに用いられる記号です。

*13:同上「Chapter 4 確率的生成モデルとガウス過程」 記載より

*14:同上 「Chapter 3 ガウス過程」 記載より

*15:Nature文献中に"Gaussian process represents a distribution over functions"という記載がでてきましたが、この辺りの事を言っているのだと思います。

*16:まあ、私は0章よむのに1週間かかってますけどね。読み終えられる自信がない。。。

*17:ガウス過程と機械学習 Chapter 3 ガウス過程」記載より

*18:岩波書店カーネル多変量解析」1,2章ではカーネル多変量解析の概要を難しい数式なしに把握できるよう説明してくださってます。リプレゼンター定理とか出てくる用語が格好いいです。数式の間を言葉でつなぐように書かれているので、式変形を追ううちに目標を見失う私にとってはありがたかったです。同書4章をよんでサポートベクトルマシンの意味するところがやっとわかった気がします。6章,7章は再性核やらヒルベルト空間やら私には全く理解できない話でした。

*19:この流れについてはHELLO CYBERNETICSさんの記事「ガウシアンプロセスを使ってみたい人への最低限の知識」でもわかりやすく説明してくださってます。

*20:また、詳細は省きますが、カーネル関数と等価なガウス過程を事前分布として用いた場合のMAP推定の結果と、カーネル関数の重み付き和のモデルを正則化付きで求めた関数近似の結果は一致します。「カーネル多変量解析 第2章」をご参照ください

*21:Wikipedia カーネル法

*22:明治大学 データ化学工学研究室(金子研究室)HP 「カーネル関数って結局なんなの?→サンプル間の類似度と理解するのがよいと思います!」の記載が参考になります。

*23:ガウス過程と機械学習 Chapter 3」の式より

*24:参考 Hiromichi Okazaki氏の資料 SlideShare探索と活用の戦略 ベイズ最適化と多腕バンディット

*25:参考 牧山幸史氏の資料 SlideShare機械学習のためのベイズ最適化入門

*26:明治大学 データ化学工学研究室(金子研究室)HP 「ベイズ最適化(Bayesian Optimization, BO)

*27:E.Brochu, V.M.Cora, N.de Freitas : A Tutorial on Bayesian Optimization of Expensive Cost Functions, with Application to Active User Modeling and Hierarchical Reinforcement Learning, arXiv:1012.2599 (2010).

*28:ALBERT Official Blog バンディットアルゴリズム 基本編

*29:IBIS2014  本多淳也 氏 資料「多腕バンディット問題の理論とアルゴリズム

*30:参考 Qiita 「Thompson Samplingで広告配信を最適化してみた

*31:「アームが最適である確率」に着目した方法を確率一致法といい、Thompson Samplingはベイズ統計の枠組みを確率一致法に適用した方策と言えるそうです。

*32:Kandasamy, K., Krishnamurthy, A., Schneider, J. & Poczos, B. Parallelised Bayesian Optimisation via Thompson Sampling. PMLR 84:133-142, 2018.

*33:ガウス過程と機械学習 Chapter 6 ガウス過程の適用」

*34:Constant Liar と言う戦略もあるそうです。

*35:参考 Ginsbourger D., Le Riche R., Carraro L. (2010) Kriging Is Well-Suited to Parallelize Optimization. In: Tenne Y., Goh CK. (eds) Computational Intelligence in Expensive Optimization Problems. Adaptation Learning and Optimization, vol 2. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-10701-6_6

*36:「Kriging believer algorithm」という用語は出てきませんが、明治大学 金子研究室HPの記事(「ベイズ最適化において一度に複数の実験をするときに候補を選択するシンプルな方法」)で解説してくださっている方法は、ここで引用したアルゴリズムと同じことだと思います。間違っていたらすみません。

*37:創薬・材料探索のための機械学習 「ベイズ最適化(その2):獲得関数

*38:Slideshare機械学習モデルのハイパパラメータ最適化