MateriApps
物質科学シミュレーションのポータルサイト

現在アプリ掲載数307件

お問合せ / アプリ掲載依頼
    • JP
    • EN
  • MateriApps について
  • レビュー募集
もっと詳しく探す
  • NEWS / 講習会・イベント
  • アプリ一覧
  • アプリ詳細検索
  • キーワード解説
  • レビュー
  • 事例
  • アプリコンシェルジュ
  • インストールしないでアプリを
    試せる「MateriApps LIVE!」

    詳細はこちら
  • MateriApps について
  • レビュー募集
  • プライバシーポリシー
  • お問合せ / アプリ掲載依頼
  • アプリ一覧
  • COMmon Bayesian Optimization Library (COMBO)

COMmon Bayesian Optimization Library (COMBO)

  • 公開度:3 ★★★
  • ドキュメント充実度:1 ★☆☆

機械学習で使われるベイズ最適化のPythonライブラリ。データ数に対して線形に計算コストが増大するので、大きな特徴空間でベイズ最適化を行うことが可能。ハイパーパラメータは第二種最尤推定に基づいてデータから自動的に学習される。

MateriApps LIVE! と COMBO によるベイズ最適化
Last Update:2021/12/09
あなたはすでに投票済みです!

執筆: MateriApps開発チーム (2019/2/13)

ここでは、Pythonによるベイズ最適化ライブラリをMateriApps LIVE!へインストールし、チュートリアルを実行してみます。チュートリアルではCuの安定な結晶粒界構造探索を行います

参考文献:

  • S. Kiyohara, H. Oda, K. Tsuda and T. Mizoguchi, “Acceleration of stable interface structure searching using a kriging approach”, Jpn. J. Appl. Phys. 55, 045502 (2016).

使用したバージョン:

  • MateriApps LIVE! バージョン 2.1 (Debian Stretch, Python 2.7.13)
  • COMBO (masterブランチ最新版 2016/04/13更新)

VirtualBoxの設定:

デフォルトではMateriApps LIVE!には1GBのメモリが割り当てられています。COMBOの実行には1GBでは不足するので、メモリ割り当てを2GBに増やしておきます

  • Oracle VM VirtualBox マネージャ画面から
  • MateriAppsLive-2.1-amd64を選択
  • 「設定」ボタン→「システム」ボタン→「マザーボード」タグ
  • メインメモリーを2GBに増やし、「OK」ボタン

Cythonのインストール:

$ sudo apt install cython

COMBOのインストール:

$ wget https://github.com/tsudalab/combo/archive/master.tar.gz -O - | tar zxf -
$ cd combo-master 
$ python setup.py build
$ sudo python setup.py install

データファイルのダウンロード

後で実行するチュートリアルスクリプトでは、サンプルデータファイルが必要です。データファイルが存在しない場合にはスクリプト内で自動的にダウンロードしようとしますが、現状 http://www.tudalab.org のSSLの証明書の不具合からダウンロードが失敗します。ここでは、スクリプトの実行前に明示的にダウンロードしておきます

$ cd examples/grain_bound
$ mkdir -p data
$ wget --no-check-certificate http://www.tsudalab.org/files/s5-210.csv -O data/s5-210.csv

このファイルには 17982 件のデータが入っています。 1カラム目から3カラム目までが、Cu結晶粒界のオフセット、4カラム目がGULPにより計算された粒界エネルギーを表します

まずは、ベイズ最適化を行う前に、ファイルの中から最適値を探してみます。

$ sed 's/\r/\n/g' data/s5-210.csv | tail +2 | sed 's/,/ /g' | cat -n | sort -n -k 5 -r | tail
  8696 7.3 1.2 0 0.957542959
  8104 5.7 1.2 0 0.95752306
  6327 0.8 1.2 3.6 0.95751311
  6919 2.4 1.2 3.6 0.957503729
  8418 6.5 1.2 1.8 0.95748724
  7826 4.9 1.2 1.8 0.957480133
  6291 0.8 1.2 0 0.957478996
  6883 2.4 1.2 0 0.957467625
  6605 1.6 1.2 1.8 0.957453411
  7197 3.2 1.2 1.8 0.957449716

7197番目のサンプルが最小値 0.957449716 を取ることが分かります

チュートリアルの実行:

それではチュートリアルを実行してみましょう。まず iPython Notebook を起動し、チュートリアルスクリプトを開きます

$ ipython notebook tutorial.ipynb

ブラウザが立ち上がり、チュートリアルファイルが開きます。まず「cell」メニューから「All Output」→「Clear」を選択し、以前の出力結果を消去します

次に、「cell」メニューから「Run All」を選択し、スクリプトを上から順番に実行します

デフォルトでは初期ランダムサーチを20サンプル行った後、ベイズ最適化を80ステップ行います。合計100サンプル中の最適値として

0100-th step: f(x) = -1.003655 (action=1183)
current best f(x) = -0.963759 (best action=5698)

が求まります (Out[7]の終わりの方を見てください)。COMBOへのデータ読み込み時に、エネルギーの値にマイナス符号を付け、最大値を求めていることに注意してください。100サンプルの探索では、まだ最適値(0.957449716)は求まっていないことが分かります

次に、サンプル数を増やして実行してみます。In[7]の中の max_num_probes を 80 から 480 に変更します。「cell」メニューから「All Output」→「Clear」を選択し、以前の出力結果を消去してから、「cell」メニューから「Run All」を選択してスクリプトを実行します

再び Out[7] を見ると、今回は411ステップ目で最適値が見つかっていることが分かります

ステップ毎に探索したサンプルのエネルギー(にマイナス符号を付けたもの)は res.fx に入っています。プロットするには、セルに以下のコードを入力し shift + enter で実行します

plt.plot(range(res.total_num_search), res.fx[0:res.total_num_search])

また、それぞれのステップまでの最適値は以下のコードで出力されます

plt.plot(range(res.total_num_search), best_fx)

04 / 06

  • 01基本情報
  • 02事例・論文
  • 03講習会
  • 04レビュー
  • 05開発者の声
  • 06このアプリ情報に
    ついてのお問い合わせ
TOP

MateriApps
物質科学シミュレーションのポータルサイト

  • NEWS / 講習会・イベント
  • アプリ一覧
  • アプリ詳細検索
  • キーワード解説
  • 事例
  • アプリコンシェルジュ
  • プライバシーポリシー
お問合せ / アプリ掲載依頼
  • 東京大学 物性研究所 The Institute for Solid State Physics
  • 東京大学 The University of Tokyo
  • CDMSI
  • CCMS

© MateriApps, 2013-2023. All rights reserved.