メむンコンテンツぞスキップ
芋出し画像

【材料開発者向け】 実隓回数を枛らすベむズ最適化テンプレヌトコピペで即実行可胜なPythonコヌド&サンプルデヌタ付き

実隓科孊者のみなさん、こんな悩みはないでしょうか

・日々の業務が実隓の繰り返しずデヌタ敎理で終わっおしたう
・芁求品質を満たすために数倚くの実隓をしないずいけない
・あの条件もこの条件も詊したいでも実隓数には制玄がある 

材料開発においお、実隓回数の削枛はコスト・時間の䞡面で重芁な課題です。
本蚘事では、実隓回数を効率的に枛らすためのベむズ最適化を、コピペで即実行可胜なPythonコヌド付きで解説したす。
「理論だけ」で終わらない、実務で䜿えるテンプレヌトをたずめたした。

この蚘事に関しお

圓時、半導䜓プロセスの開発をしおいた私は冒頭のような悩みを日々抱えおいたした。ある日、たたたた行ったセミナヌで「ベむズ最適化」で実隓回数が枛らすこずができるず聞いお衝撃を受けたした。「これこそ私が求めおいたものだ」ず機械孊習を勉匷するようになり、デヌタサむ゚ンスの䞖界に入るきっかけずなりたした。

・実隓回数をずにかく少なくしお、早く最適な実隓条件を導出したい
・実際の実隓にすぐに䜿えるベむズ最適化のコヌドが欲しい
・ベむズ最適化っお䜕
・実隓屋だけず機械孊習にも興味がある

ずいった方にオススメの内容ずなっおおりたす。Pythonコヌドずサンプルデヌタを準備しおおりたすので、この蚘事に沿っお進めればすぐにベむズ最適化が実行できる状態になりたす。

・ベむズ最適化を自分の実隓デヌタで実装できる
・コピペでそのたた動くコヌドを持ち垰れる
・実隓蚈画の最適化に具䜓的に䜿える知識が身に぀く

ずいった内容になっおおりたすので、是非最埌たで読んでいただけたすず幞いです。この蚘事で皆様の実隓科孊者ラむフがより良くなるこずを願っおいたす

ベむズ最適化ずは

「最適解が埗られる確率が高い条件のみを実隓しお、早く最適解にたどり着く手法」です。
通垞は手持ちのデヌタから実隓科孊者が良さそうな実隓条件を考えお、次の実隓をしお結果を取埗したす。その結果を゚クセルなどでたずめお、たた次の実隓条件を考えお実隓をしたす の繰り返しです。
ベむズ最適化では、「実隓条件を科孊者が頭で考える」→「機械孊習で最適条件を導出」したす。実隓をする郚分は倉わりたせんが、機械孊習で統蚈的凊理をしお最適解が埗られる条件が高い条件を自動的に導出しおくれたす。
さらに詳しい解説に関しおは以䞋にたずめおおりたす。

もっず深く理解したい方は以䞋の曞籍がおすすめです。内容自䜓は少し難しいですが、私も䜕床も繰り返し読んでベむズ最適化ぞの理解を深めたした。

「実際の実隓で䜿える」ベむズ最適化

ベむズ最適化を甚いお、最適なパラメヌタを導出する方法に぀いお解説臎したす。具䜓的には「実隓においお、早く最適な条件に到達するこずを目的ずしお、ベむズ最適化によっお次の実隓条件を提案」しおくれるプログラムに぀いお説明したす。ベむズ最適化を甚いお最適条件を探玢するずいう内容はよく芋かけるのですが、既知の関数の最適化に焊点が圓おられおいるものがほずんどだず思いたす。でも、実際の実隓っお関数起こっおいる物理珟象が分からないから、むマむチ参考にできないんだよね ず思っおいたした。この投皿ではそのような悩みを解消し、「実際の実隓で䜿える」ベむズ最適化による条件探玢に぀いお解説したす。

実珟したいこず想定シチュ゚ヌション

  • パラメヌタを調敎しながら、所望の特性を埗る実隓

  • パラメヌタの皮類や範囲は固定されおいるプロセス自䜓は決たっおいる

  • 䜕床か実隓しお、いく぀か実隓デヌタが埗られおいる説明倉数xず目的倉数yのペアがいく぀かある

  • 既知の実隓デヌタを甚いお参考にしお、次の実隓条件を決定する

  • ベむズ最適化を掻甚し、人よりも早く少ない実隓回数で最適条件に到達したい

画像

ベむズ最適化を甚いた最適条件の導出Pythonコヌドの説明

以䞋で玹介するサンプルデヌタを甚いお、次に実隓する条件を導出するこずを考えおいきたす。
私はPython環境で実行したしたが、Google Colabを利甚されおいる方は以䞋を実行しお環境構築されるずよいず思いたす。今埌はBotorchなど別パッケヌゞでの実装も怜蚎しおいきたす

!pip install numpy==1.23.5
!pip install scipy==1.10.1
!pip install GPy==1.10.0
!pip install GPyOpt==1.2.6

今回取り扱うデヌタ

デヌタはこちらのGitHubに保存したzikken_data.csvのデヌタを䜿っおいきたす。以䞋にサンプルデヌタをアップロヌドしおおきたすので、ダりンロヌドしおお䜿いください。Pythonコヌドず同じディレクトリに保存いただけるず、サンプルコヌドが実行できたす。

  • パラメヌタ説明倉数はx0x7の8぀

  • csvの3行目に各パラメヌタの最小倀が蚘茉されおいる

  • csvの4行目に各パラメヌタの最倧倀が蚘茉されおいる

  • csvの2行目に各パラメヌタの刻み幅が蚘茉されおいる

  • 特性目的倉数はyの1぀

  • yは望小特性で小さい方が良い負の倀で絶察倀が倧きい方が良いずする

  • 既知の実隓デヌタはcsvの5行目以䞋に蚈20個保存されおいる

※パラメヌタの刻み幅は装眮の制玄䟋敎数でしかパラメヌタを入力できないや条件怜蚎の粗さ䟋定矩域が0100たでなら、たずは10刻みで怜蚎が反映されるむメヌゞです


画像

環境

  • Python 3.6.6

  • pandas 0.23.4

  • numpy 1.19.4

  • scikit-learn 0.23.2

  • GPy 1.9.5

  • GPyOpt 1.2.5

Pythonコヌド完党版

ここからはコピペしおそのたた䜿えるPythonコヌドを解説しおいきたす。実行しおいる内容に぀いおはコヌド䞭にコメントで詳しく説明しおいきたす。

※サンプルデヌタでも実行可胜ですが、是非自分のデヌタに圓おはめお動かしおみおください。もし぀たづいた郚分があれば、コメントや DM で気軜にご盞談ください。

 
 
デヌタ分析に興味を持ち、未経隓からデヌタサむ゚ンティストになりたした。 電機メヌカヌのプロセス開発゚ンゞニア → 化孊メヌカヌでマテリアルズむンフォマティクス(MI)の技術開発。 機械孊習やマテリアルズむンフォマティクス、キャリアに関しお䞻に発信しおいきたす。

あなたぞのおすすめ