AI創薬を加速するMetaの勾配不要最適化ライブラリNevergradの概要図

Nevergrad入門|AI創薬の多目的最適化を支援するMeta製の勾配不要OSS

1. はじめに:勾配が取れない場面で活きる「もう一つの最適化」

AI創薬の機械学習モデルでは、勾配(パラメータに対する損失の傾き)を計算してパラメータを更新する勾配降下法が中心的な役割を担います。しかし、分子設計やシミュレーション系の最適化では、目的関数が微分困難だったり、内部構造が分からないブラックボックスだったり、実験データのノイズを大きく含んでいたり、離散変数(フラグメントの選択など)を含んでいたりと、勾配を計算できない・計算しても意味がない場面が頻繁に発生します。

こうした場面で力を発揮するのが、勾配不要最適化(Derivative-Free Optimization、DFO)です。本記事では、Meta(旧Facebook)が2018年12月に公開したオープンソースの勾配不要最適化ライブラリ「Nevergrad(ネバーグラッド)」を、AI創薬で利用される機械学習・分子設計パイプラインの観点から整理します。Nevergrad自体は創薬専用のAIツールではなく、機械学習・最適化の汎用Python OSSですが、多目的最適化や離散変数を含む分子設計と相性が良く、創薬関連の研究でも採用例が積み上がっています。

2. Nevergradとは:Meta FAIRが公開したPython製の勾配不要最適化OSS

Nevergradは、Meta Platforms傘下の Meta AI Research(旧Facebook AI Research、FAIR)が開発したPython製のオープンソース最適化ライブラリです。J. RapinとO. Teytaudらによって設計され、2018年12月20日にMITライセンスの下でGitHub上に公開されました。公式リポジトリはgithub.com/facebookresearch/nevergradで、現在も継続的に更新されています。

Nevergradの基本コンセプトは「勾配を必要としない最適化アルゴリズムを、できるだけ統一的なインターフェースで使えるようにする」点にあります。研究現場では、勾配不要最適化のアルゴリズムごとに実装や記法がばらばらで、比較・切り替えが煩雑になりがちでした。Nevergradは、これらを共通のAsk-and-Tellインターフェース上に揃え、コード変更を最小限に抑えつつ複数のアルゴリズムを試せる設計を採用しています。

もうひとつの強みは、自動アルゴリズム選択を担う「NGOpt」という仕組みです。NGOptは「wizard(ウィザード)」と位置づけられており、計算予算(評価回数)、問題の次元数、変数の種類(連続・離散・混合)、並列度などの情報をもとに、Diagonal-CMA、Differential Evolution(DE)、Particle Swarm Optimization(PSO)など適切なアルゴリズムを自動で選んでくれます。利用者は問題の特性をざっくり指定するだけで、まずは妥当な最適化が走るという入り口になります。

3. 勾配不要最適化が創薬で重要になる理由

勾配が取れない・取りにくい問題は、創薬研究のなかでも珍しくありません。代表的なケースを4つ整理します。

  • ブラックボックス関数:活性予測や毒性予測モデルが、内部構造を直接利用できないAPI経由の関数として扱われることがある
  • 離散変数を含む探索:分子のフラグメント選択、置換基の入れ替え、合成経路の選定など、組合せ的な意思決定が中心となる場面
  • ノイズの大きい目的関数:実験データやシミュレーションの結果が確率的にぶれる場面で、勾配の意味が薄れる
  • 非滑らか・非連続の関数:合成可能性スコアや薬らしさ判定のように、しきい値で挙動が変わる関数を扱う場面

こうした条件下では、関数値だけを手がかりに探索する勾配不要最適化が、勾配降下法よりも素直に動くことがあります。Nevergradはこのカテゴリの主要アルゴリズムを横断的に提供しており、創薬関連の研究で「最適化エンジンの引き出し」として採用されるケースが見られます。

4. Nevergradを支える主要アルゴリズム

Nevergradには勾配不要最適化の主要アルゴリズムがひととおり揃っています。創薬で頻出するものを整理します。

  • CMA-ES(共分散行列適応進化戦略):解集団の共分散行列を反復的に更新し、二次関数に近い局面では準ニュートン法に近い性能を示す進化戦略。ノイズに強く、多峰性関数(最適解候補が複数ある関数)でも探索が崩れにくい
  • Differential Evolution(差分進化、DE):集団ベースの進化的アルゴリズム。並列化と相性が良く、大規模な探索空間に向きます
  • Particle Swarm Optimization(粒子群最適化、PSO):粒子間の相互作用で大域探索を行うアルゴリズム。多峰性関数に強い
  • ベイズ最適化系:サロゲートモデルを使って評価回数を抑える手法。1回の評価が高コストな場面で有効
  • OnePlusOne / DiscreteOnePlusOne:シンプルな1+1進化戦略。初期探索や離散変数を含む場面で重宝
  • NGOpt:上記を含む複数アルゴリズムから、問題特性に応じて自動選択するwizard

NGOptが選ぶ候補にはDiagonal-CMA、DE、PSO、Lengler などが含まれており、利用者は「とりあえずNGOpt」から入って、結果を見てから個別アルゴリズムにスイッチするのが現実的な進め方です。

5. Ask-and-Tellインターフェース:3つのメソッドで最適化が回る

Nevergradの中心となるのが、Ask-and-Tellインターフェースです。最適化ループを次の3メソッドで構成します。

  • ask():次に評価すべき候補点(パラメータ)を返す
  • tell(candidate, loss):候補点に対する目的関数の評価値をオプティマイザに伝える
  • recommend():現時点で最良と考えられる解を返す

典型的な使い方を最小例で示します。本記事掲載のコードは概念を示すための例であり、実際の利用時はNevergrad公式ドキュメントで最新のAPIを確認してください。

import nevergrad as ng

def objective(x):
    return sum((x - 0.5) ** 2)

optimizer = ng.optimizers.NGOpt(
    parametrization=ng.p.Array(shape=(10,)),
    budget=1000,
)

for _ in range(optimizer.budget):
    candidate = optimizer.ask()
    loss = objective(candidate.value)
    optimizer.tell(candidate, loss)

recommendation = optimizer.recommend()
print(recommendation.value)

このパターンに乗ることで、CMA-ESに変えたい、DEで試したい、といった切り替えは、ng.optimizers.NGOptを別のオプティマイザ名に差し替えるだけで完了します。比較実験のサイクルが回しやすくなる点が、Nevergradを使うひとつの動機になります。

6. AI創薬でのNevergrad活用シナリオ

6.1. 分子設計の多目的最適化

創薬研究では、活性予測スコア、ADMET予測スコア、合成容易性、薬剤類似性など、複数の指標を同時に最適化したい場面が頻繁に登場します。これらは互いにトレードオフ関係にあることが多く、単一最適解ではなくパレート最適解の集合(どれかを改善すると別の指標が悪化する境界線上の解の集合)を探索する必要があります。Nevergradには多目的最適化を扱う公式APIがあり、ng.p.MultiobjectiveReference()で参照値を設定したうえで、複数の損失値を返す目的関数を渡すと、optimizer.pareto_front()で非支配解集合(パレート前線)を直接取得できます。ただし、フルの多目的損失への対応度合いはオプティマイザによって差があり(Differential Evolution系などはフル対応、一部のオプティマイザでは複数の目的関数値を単一の損失にスカラ化して扱う形になります)、NSGA-II相当の専用設計を備えるツール(OptunaのNSGAIISamplerなど)と比べると、パレート前線の運用に手数が増える場面もあります。この点を踏まえたうえで、選択肢の一つとして検討するのがよいでしょう。

6.2. リード化合物最適化での採用例:Nevermore(査読前プレプリント)

2026年1月にbioRxivで公開された査読前プレプリント「Nevermore:Target-Conditioned Protein–Ligand Representation Learning for Multi-Objective Lead Optimization with Database-Grounded Retrieval」(Refahiら、bioRxiv 2026.01.20.700610)では、ターゲット条件付きのタンパク質–リガンド表現学習と、データベースに基づく検索を組み合わせた多目的リード最適化フレームワークが提案されています。同プレプリントでは、Morganフィンガープリント空間上で離散的な分子編集を行う際の探索エンジンとして、勾配不要最適化が活用されています。Nevergradが提供する離散変数対応の最適化アルゴリズムは、こうした研究での実装選択肢として位置づけられます。

ただし、Nevermoreは現時点では査読を経ていないプレプリントであり、報告されている性能や再現性については、今後の査読・独立検証を待って評価する必要があります。本記事は「勾配不要最適化が創薬研究の探索エンジンとして使われている具体例」としてプレプリントを参照するものであり、提案手法そのものの有効性を保証するものではありません。

6.3. 機械学習モデルのハイパーパラメータ最適化

QSARモデルや分子物性予測モデルの構築でも、Nevergradをハイパーパラメータ探索エンジンとして用いる選択肢があります。同種のOSSとしては第36回で取り上げたOptunaが定番ですが、Optunaが定義実行(Define-by-Run)スタイルでサンプラーや剪定を切り替えるのに対し、NevergradはAsk-and-Tellスタイルで進化計算系・粒子群系のアルゴリズムが手厚いという棲み分けがあります。深層学習よりも、勾配が直接使えない統計モデルや、ノイズの大きい評価関数を扱う場面で、Nevergradのほうが取り回しやすい場合があります。

7. NevergradとOptunaの使い分け

同じ「最適化エンジン」でも、Nevergradとオプチューナでは強みが異なります。創薬研究での目安として整理します。

  • Optunaが向く場面:scikit-learn、PyTorch、XGBoost、LightGBMなどのハイパーパラメータ最適化。Define-by-Run API、TPEを用いたベイズ最適化、剪定機能、optuna-integrationの各種コールバックが豊富。多目的最適化はNSGAIISamplerなどの専用サンプラーで運用
  • Nevergradが向く場面:CMA-ES、DE、PSO、進化戦略など、勾配不要・進化計算系のアルゴリズムを横断的に試したい場面。ノイズの大きい目的関数、離散・混合変数、ブラックボックス関数。多目的最適化はMultiobjectiveReferencepareto_front()で運用
  • 併用:ハイパーパラメータ探索はOptuna、分子設計の探索ループはNevergradという役割分担で運用するパターンも実用的

どちらを選ぶかは、扱う問題の性質(勾配が使えるか、評価コストはどの程度か、変数の種類は何か)で決めるのが妥当です。同じ研究プロジェクト内で「ハイパーパラメータはOptuna、分子探索はNevergrad」と分担させる例も現実的な選択肢になります。

8. Nevergrad導入の利点と注意点

Nevergradを創薬研究の最適化フローに取り込むときの利点と注意点を整理しておきます。

  • 利点①勾配不要:ブラックボックス関数・離散変数・ノイズに強い
  • 利点②アルゴリズムが豊富:CMA-ES、DE、PSO、ベイズ最適化、進化戦略がワンパッケージ
  • 利点③Ask-and-Tellで切り替え容易:オプティマイザを差し替えるだけで比較実験が回せる
  • 利点④NGOptで入りやすい:自動選択wizardで初期セットアップの負担が小さい
  • 利点⑤多目的・制約対応の機能ありng.p.MultiobjectiveReference()optimizer.pareto_front()でパレート前線を取得できる多目的最適化API、および制約付き問題を扱う機能が用意されている(対応の仕方はオプティマイザによって異なる)
  • 注意①計算コスト:1回の評価が高コストな場面では、評価回数を絞る工夫(サロゲートモデルとの併用、評価のキャッシュなど)が必須
  • 注意②高次元での性能低下:多くの勾配不要アルゴリズムは高次元で性能が落ちる。次元削減や階層的最適化を併用する
  • 注意③乱数の管理:再現性の確保には乱数シードと評価関数の決定性管理が必要
  • 注意④AI予測は最終確証ではない:Nevergradで最適化したQSAR・ADMETモデルや分子設計の結果は、候補化合物の選定や優先順位付けを支援する参考情報であり、実験的な有効性・安全性・臨床的妥当性を保証するものではありません。最終的には実験検証、専門家の判断、規制対応が不可欠

9. AI創薬への導入ステップ

これから創薬研究にNevergradを取り入れる場合、次のような段階的導入をおすすめします。

  • Step 1:まずpip install nevergradでインストールし、簡単なベンチマーク関数(例:球関数)でAsk-and-Tellループの感覚をつかむ
  • Step 2:自分のQSARモデルや分子物性スコアを目的関数として、NGOptで最適化してみる
  • Step 3:CMA-ES、DE、PSOなど個別アルゴリズムに切り替えて挙動を比較
  • Step 4:多目的最適化(活性予測スコアとADMET予測スコアなど、複数の指標を目的関数に含めた設計)に拡張
  • Step 5:必要に応じて並列実行・ハイパーパラメータ最適化(Optuna併用)に拡張

小さく始めて段階的に広げることで、無理なく自分の研究フローに馴染ませることができます。

10. まとめ:勾配が取れない問題には、別の引き出しを

Nevergradは、Meta FAIRが2018年12月に公開した、Python製の勾配不要最適化OSSです。CMA-ES、DE、PSO、進化戦略、ベイズ最適化などの主要アルゴリズムをAsk-and-Tellインターフェース上に統一し、NGOptで自動選択もできるという、勾配不要最適化のデファクトに近い立ち位置を獲得しています。AI創薬の文脈では、分子設計の多目的最適化、リード化合物最適化、ノイズを含む目的関数の探索といった、勾配降下法では扱いにくい問題に対する有力な選択肢のひとつです。

創薬研究者にとってNevergradは、「勾配で攻めるOptunaやPyTorch系の道具箱」に対するもう一方の「勾配を使わない道具箱」として、引き出しに加えておく価値があります。最終的に医薬品の有効性・安全性を保証するのは実験検証と規制対応であり、Nevergradが返すのはあくまで意思決定を支援する候補解です。この前提を踏まえつつ、勾配が取れない場面に出会ったときに思い出せる名前として、本記事を起点に触れていただければ幸いです。

参考文献・リンク

免責事項

本記事は、Nevergradに関する情報提供を目的として作成されたものです。記事の内容は、公開時点で入手可能な文献・情報に基づいていますが、技術の進歩や新たな知見により、情報が変更される場合があります。記事に記載されたソフトウェアの使用結果や、それに基づく研究成果について、筆者および本ブログは一切の責任を負わないものとします。実際の創薬研究や臨床応用にあたっては、必ず最新の文献・公式ドキュメントを確認し、専門家の助言を得てください。

本記事は生成AIを活用して作成しています。内容については十分に精査しておりますが、誤りが含まれる可能性があります。お気づきの点がございましたら、コメントにてご指摘いただけますと幸いです。 

Amazonでこの関連書籍「Pythonで体験するベイズ推論:PyMCによるMCMC入門」を見る

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


上部へスクロール