1. はじめに:評価コストの高い創薬実験に向き合う
創薬研究の現場では、合成や活性評価といった1回1回の実験コストが高く、評価できる候補化合物の数には常に上限がつきまといます。膨大な化学空間から「次に何を作るか」を決める意思決定の質が、研究全体の効率を大きく左右します。こうした「評価が高価なブラックボックス関数」を、できるだけ少ない試行で賢く探索するための代表的な枠組みが、ベイズ最適化(Bayesian Optimization)です。
本記事では、PyTorchエコシステムの一員として広く使われているベイズ最適化ライブラリ「BoTorch(ボートーチ)」を、AI創薬の候補探索を支援するOSSとして整理します。BoTorch自体はAI創薬専用の自動創薬ツールではなく、評価コストの高いブラックボックス関数を効率よく探索するための汎用ベイズ最適化フレームワークです。化学・材料・分子設計領域でベイズ最適化の利用が広がっており、BoTorchも有力な実装候補のひとつとして検討される状況にあります。ファーマAIラボでこれまで取り上げてきたOptuna、Nevergradと並ぶ「最適化エンジンの3つ目の引き出し」として位置づけられる存在です。
2. BoTorchとは:PyTorchを基盤としたベイズ最適化フレームワーク
BoTorchは、Meta(旧Facebook)のAI研究チームが中心となって開発するPython製のオープンソースベイズ最適化ライブラリで、現在はGitHubのmeta-pytorch/botorchリポジトリで管理されています(PyTorch関連の組織再編に伴い、旧来のfacebookresearch/botorchから移管されました。古いリンクで止まっているドキュメントを見かけた場合は読み替えてください)。論文「BoTorch: A Framework for Efficient Monte-Carlo Bayesian Optimization」はNeurIPS 2020(Advances in Neural Information Processing Systems 33)で発表されており、著者は Maximilian Balandat、Brian Karrer、Daniel R. Jiang、Samuel Daulton、Benjamin Letham、Andrew Gordon Wilson、Eytan Bakshy らです。
BoTorchの設計上の特徴は、ガウス過程ライブラリ「GPyTorch」をモデル側のバックエンドに据え、PyTorchの自動微分とGPUアクセラレーションをそのまま活用できる点にあります。これによって、深いカーネル学習やマルチタスクGP、深層GP、近似推論といった現代的なベイズモデルを、勾配ベースの最適化やニューラルネットワークと自然に組み合わせて使えます。
もうひとつの強みが、モンテカルロ近似による獲得関数の実装です。解析的に閉形式で計算しづらい獲得関数(特に多目的問題)でも、サンプリングによる近似と自動微分を組み合わせて勾配ベースで最適化できる構造になっており、多目的ベイズ最適化に対する第一級のサポートを提供しているのが特徴です。
3. ベイズ最適化が創薬研究で力を発揮する場面
ベイズ最適化が創薬で重宝されるのは、評価コストと不確実性のバランスを意識した探索を、明示的に組み立てられる点にあります。具体的には次のような場面で有効です。
- 合成・活性評価のコストが高い:1試行あたり数日〜数週間かかる場面で、評価回数を絞りながら有望候補を絞り込みたい
- 関数値がブラックボックス:化学反応の収率や活性値が、内部メカニズムを完全には記述できない関数で表される
- 探索と活用のバランスを取りたい:既知の有望領域を深掘りしつつ、未踏領域にも一定の頻度で踏み込む戦略を、確率モデル上で扱える
- 複数の特性を同時に最適化したい:活性、ADMET特性、選択性、合成容易性などのトレードオフをパレート前線として扱える
ベイズ最適化は、ガウス過程による不確実性付きの予測(代理モデル)と、次に評価すべき点を選ぶ獲得関数の2段構造で動きます。「探索(Exploration、未知領域の不確実性を減らす)」と「活用(Exploitation、有望と推定される領域を深掘りする)」のバランスを獲得関数のなかに織り込めるため、限られた実験回数で意思決定を進めたい創薬研究と相性がよいのです。
4. BoTorchを支える主要コンポーネント
BoTorchの中身は、モデル・獲得関数・最適化の3つの層を組み合わせて使う設計です。創薬で頻出する要素を整理します。
- SingleTaskGP:基本となるガウス過程モデル。単目的のほか、同じ入力に対して複数の出力を扱う構成にも対応するが、その場合はバッチ処理で出力を独立にモデル化する設計であり、出力間の相関は捉えません。出力間(タスク間)の相関を活用したい場合は、ICM(Intrinsic Co-regionalization Model、内在的共領域化モデル)カーネルを用いる
MultiTaskGPの検討が必要です - ModelListGP:目的ごとに独立したGPを並べる構成。ノイズや特徴量が目的によって異なる場合、または訓練入力が目的間で共通でない場合に有効
- UpperConfidenceBound(UCB):単目的の代表的な獲得関数。
betaで探索と活用のバランスを調整する - qExpectedImprovement / qLogExpectedImprovement:バッチ提案に対応した期待改善量。複数候補を同時に提案できる。なお、BoTorch公式は数値安定性の観点から、
qExpectedImprovementをqLogExpectedImprovementへ単純に置き換えること(同一API)を強く推奨しています(根拠論文:Amentら, arXiv:2310.20708)。ノイズあり版についても同様に、qNoisyExpectedImprovementよりqLogNoisyExpectedImprovementが推奨されます - qLogNoisyExpectedHypervolumeImprovement(qLogNEHVI):多目的最適化向けの獲得関数。微分可能なハイパーボリューム定式化を用いてパレート前線を効率よく押し広げる
- optimize_acqf:獲得関数を勾配ベースで最適化し、次の候補点を返すユーティリティ
創薬で「単目的ならSingleTaskGP+qLogEIまたはUCB」「多目的ならModelListGP+qLogNEHVI」を出発点にし、必要に応じてカーネルやモデル構造(タスク間相関を扱うならMultiTaskGPなど)を入れ替えていく流れが、典型的な使い方になります。
5. BoTorchの最小コード例
BoTorchの感覚をつかむための最小例を示します。実際のAPIは更新されるため、最新仕様は公式ドキュメント(botorch.org)を確認してください。
import torch
from botorch.models import SingleTaskGP
from botorch.fit import fit_gpytorch_mll
from botorch.acquisition import UpperConfidenceBound
from botorch.optim import optimize_acqf
from gpytorch.mlls import ExactMarginalLogLikelihood
# 学習データ(記述子 train_X と活性値 train_Y)を事前に準備
model = SingleTaskGP(train_X, train_Y)
mll = ExactMarginalLogLikelihood(model.likelihood, model)
fit_gpytorch_mll(mll)
UCB = UpperConfidenceBound(model, beta=0.1)
candidate, acq_value = optimize_acqf(
UCB,
bounds=bounds,
q=1,
num_restarts=10,
raw_samples=512,
)
多目的最適化に拡張する場合は、目的ごとにSingleTaskGPを作ってModelListGPで束ね、qLogNoisyExpectedHypervolumeImprovementに渡すというパターンになります。創薬モデルではこのまま回すこともあれば、Tanimotoカーネルなどの分子向けカーネルや、ChemBERTaのような分子埋め込みを表現として組み合わせる構成も検討できます。
6. AI創薬でのBoTorch活用シナリオ
6.1. 反応条件・合成プロセスの最適化
化学反応の条件最適化は、ベイズ最適化が活躍してきた代表領域です。光照射強度、試薬当量、酸素濃度、添加剤量、基質濃度など、複数の連続変数を同時に動かしながら収率を上げる場面で、BoTorchによる獲得関数最適化が「次に試すべき条件」を提案する役割を担います。従来の単因子探索や格子探索と比べ、実験回数を抑えながら有望条件に近づく事例が報告されていますが、結果は反応系・初期データ・探索範囲設計に依存するため、評価指標と探索空間の設計に十分な時間を割く必要があります。
6.2. リード化合物探索とTanimotoカーネル
分子フィンガープリント空間でのベイズ最適化では、Tanimotoカーネル(バイナリベクトル間の類似度をモデル化するカーネル)が有効に働く場面があります。Acceleration ConsortiumとMerck KGaAが2024年3月に共同主催した「AC BO Hackathon(Bayesian Optimization Hackathon for Chemistry and Materials)」では、Tanimotoカーネル付きGPとドッキングスコアの代理モデルを使い、選択的な成長因子受容体阻害剤のデノボ設計に取り組むプロジェクトなどが実施され、創薬コミュニティでベイズ最適化の活用が広がっていることが示されています。なお、ドッキングスコアは候補化合物の順位付けや結合可能性を検討するための参考指標であり、それ自体が薬効や実測の結合親和性を証明するものではない点には留意が必要です。最終的な評価は実測の生化学アッセイや細胞アッセイで行われます。
6.3. 多目的分子設計とベイズ最適化の関連研究:DyRAMOの事例
多目的分子設計にベイズ最適化を組み込んだ関連研究例として、2025年にNature Communications誌に掲載されたDyRAMO(Dynamic Reliability Adjustment for Multi-objective Optimization、Nat. Commun. 2025)が挙げられます。本研究は、多目的分子設計で生じる「報酬ハッキング」(予測モデルが学習データから大きく外れた分子で過大評価を返してしまう問題)を回避するためのフレームワークで、ベイズ最適化を組み込んで複数の予測モデルの信頼度(Applicability Domain)を動的に調整し、EGFR阻害活性・代謝安定性・膜透過性の3特性を維持しながら分子をデノボ設計する例が示されています。多目的ベイズ最適化と適用範囲(AD)評価を組み合わせる先端的なアプローチとして注目されています。なお、本研究は「ベイズ最適化を用いた多目的分子設計」の代表的な関連研究として参照しており、BoTorchを直接利用した事例として位置づけているわけではありません。BoTorchはあくまで、同領域の研究や応用において利用可能な実装基盤の一つとして本記事では紹介しています。
7. BoTorchとAxの使い分け
BoTorchを実務で使うときに必ず話題になるのが、同じくMetaが開発する適応的実験プラットフォーム「Ax(アックス)」との関係です。両者は競合ではなく、レイヤの違うツールとして併存しています。
- Axが向く場面:標準的なベイズ最適化を手早く回したい、実験結果やメタデータを管理したい、複数の実験を運用に乗せたい。高レベルAPIで実装の手数が小さく、結果管理機能(MySQLストレージなど)も含む
- BoTorchが向く場面:カスタムカーネル、独自の獲得関数、特殊なモデル(マルチタスクGP、深層カーネル等)を組み込みたい、研究開発・プロトタイピング向けの細かい制御をしたい
- 併用:Axで実験運用の枠組みを作り、ホットスポットだけBoTorchで深くカスタマイズする、というハイブリッド構成も実用的
創薬研究者が初めて触る場合は、AxからスタートしてBoTorchの個別機能に降りていく流れが、学習コスト的にもおすすめです。
8. Optuna、Nevergradとの位置づけ
ファーマAIラボで取り上げてきた他の最適化OSSとの棲み分けも整理しておきます。
- Optunaが向く場面:scikit-learn、PyTorch、XGBoost、LightGBMなどのハイパーパラメータ最適化。TPEを用いたベイズ最適化、剪定機能が手厚い
- Nevergradが向く場面:CMA-ES、DE、PSOなど勾配不要・進化計算系のアルゴリズムを横断的に使いたい。ノイズの大きい目的関数、離散・混合変数
- BoTorchが向く場面:GPベースの本格的なベイズ最適化、多目的最適化のパレート前線探索(qLogNEHVI等)、評価コストが高く試行回数を強く抑えたい場面
機械学習モデルのハイパーパラメータ探索はOptuna、勾配不要な分子探索はNevergrad、ガウス過程ベースで評価コストの高い実験を効率化するベイズ最適化はBoTorchという棲み分けが、創薬研究の現場では自然な役割分担になります。
9. BoTorch導入の利点と注意点
BoTorchを創薬研究のフローに組み込む際の利点と注意点を整理しておきます。
- 利点①GP×多目的に強い:qLogNEHVIなどの多目的獲得関数で、パレート前線探索が手軽に組める
- 利点②PyTorchエコシステム:GPyTorchによるカーネル設計、自動微分、GPU活用がそのまま使える
- 利点③バッチ提案・並列実験:q>1の獲得関数で、並列実験のスケジューリングに乗せやすい
- 利点④Axとの連携:プロトタイピングと本番運用の橋渡しがしやすい
- 注意①高次元での性能低下:GPベースのベイズ最適化は、変数が増えると計算コストと探索効率が落ちる。次元削減や潜在空間ベースの設計を併用する
- 注意②カーネル選びの影響:分子フィンガープリントには Tanimoto 系、連続記述子には RBF/Matern など、表現に合ったカーネル選定が結果を大きく左右する
- 注意③初期データへの依存:初期サンプルが偏ると探索方向もズレやすい。クラスタリングや実験計画法による初期点設計と組み合わせるのが妥当
- 注意④BoTorchは自動創薬ツールではない:BoTorchはAI創薬専用の自動創薬ツールではなく、評価コストの高いブラックボックス関数を効率よく探索するための汎用ベイズ最適化フレームワークです。BoTorchで最適化したQSAR・ADMETモデルや反応条件の候補は、あくまで意思決定を支援する参考情報であり、実験的な有効性・安全性・臨床的妥当性を保証するものではありません。最終判断には実験検証、専門家の判断、データ品質の確認、規制対応が必要です
10. まとめ:評価コストの高い探索に「もう一段の戦略」を
BoTorchは、Metaが開発するPyTorchベースのベイズ最適化フレームワークで、ガウス過程・多目的獲得関数・モンテカルロ近似を柱に、評価コストの高いブラックボックス関数を効率的に探索するための道具一式を提供します。NeurIPS 2020で発表されて以来、化学・材料・分子設計領域でベイズ最適化の利用が広がるなかで、有力な実装候補のひとつとして検討される状況にあります。Tanimotoカーネルとの組み合わせや、DyRAMOのような多目的分子設計とベイズ最適化を組み合わせる関連研究も登場しており、創薬研究での活用パターンの幅も広がってきました。
創薬研究者にとってBoTorchは、Optunaのハイパーパラメータ最適化、Nevergradの勾配不要進化計算と並ぶ、第三の引き出しになる存在です。ただし、BoTorchはAI創薬専用の自動創薬ツールではなく、提案された候補点は実験的な有効性・安全性・臨床的妥当性を保証するものではありません。最終判断には実験検証、専門家の判断、データ品質の確認、規制対応が必要です。この前提を踏まえつつ、評価コストの高い実験と向き合う場面で、本記事を起点に検討の選択肢に加えていただければ幸いです。
参考文献・リンク
- BoTorch公式サイト:https://botorch.org/
- BoTorch GitHubリポジトリ:https://github.com/meta-pytorch/botorch
- BoTorch論文(Balandatら, NeurIPS 2020):https://arxiv.org/abs/1910.06403
- LogEI系獲得関数の根拠論文(Amentら, “Unexpected Improvements to Expected Improvement for Bayesian Optimization”, arXiv:2310.20708):https://arxiv.org/abs/2310.20708
- GPyTorch公式サイト:https://gpytorch.ai/
- Ax公式サイト:https://ax.dev/
- AC BO Hackathon(Bayesian Optimization Hackathon for Chemistry and Materials、2024年3月27-28日):https://ac-bo-hackathon.github.io/
- DyRAMO関連論文「A data-driven generative strategy to avoid reward hacking in multi-objective molecular design」(Nat. Commun. 2025、DOI: 10.1038/s41467-025-57582-3):https://www.nature.com/articles/s41467-025-57582-3
- ファーマAIラボ関連記事:Optuna入門|AI創薬の機械学習モデル構築を支援するハイパーパラメータ最適化OSS
- ファーマAIラボ関連記事:Nevergrad入門|AI創薬の多目的最適化を支援するMeta製の勾配不要OSS
免責事項
本記事は、BoTorchに関する情報提供を目的として作成されたものです。記事の内容は、公開時点で入手可能な文献・情報に基づいていますが、技術の進歩や新たな知見により、情報が変更される場合があります。記事に記載されたソフトウェアの使用結果や、それに基づく研究成果について、筆者および本ブログは一切の責任を負わないものとします。実際の創薬研究や臨床応用にあたっては、必ず最新の文献・公式ドキュメントを確認し、専門家の助言を得てください。
本記事は生成AIを活用して作成しています。内容については十分に精査しておりますが、誤りが含まれる可能性があります。お気づきの点がございましたら、コメントにてご指摘いただけますと幸いです。
Amazonでこの関連書籍「Pythonではじめるベイズ機械学習入門」を見る

