[書評] Optunaによるブラックボックス最適化 ー Optunaを使っている人、使ってない人みんなに勧めたい1冊

今回は2/21に発売した「Optunaによるブラックボックス最適化」を読んだのでその感想の記事になります。

そもそもブラックボックス最適化とOptunaって何?

個人的にはOptuna使ったことない人にも読んでもらいたいと思っています。なので、Optunaやブラックボックス最適化について名前は知っているけどよく知らないという方や、そもそも名前すらしらないという人向けに簡単にOptunaやブラックボックス最適化について説明します。すでにご存じの方は読み飛ばしてください。

まずブラックボックス最適化です。ブラックボックス最適化は詳細が分からない関数\( f(x) \)があるとき、この\( f(x) \)の最大値、もしくは最小値となる\(x\)を見つけることを指します。そして、ブラックボックス最適化を自動化するために使われるライブラリがOptunaになります。

\( f(x) \)と言われるとイメージしづらいかもしれないので、具体例を示すと機械学習のハイパーパラメータ探索が例の一つです。ハイパーパラメータ探索を人手でやる場合は本当に一部しかできず、しかもかなりの時間がかかるケースが多いです。なので、ハイパーパラメータ探索を自動化することは重要です。

このような説明をすると「ハイパーパラメータ探索なんてしないのでブラックボックス最適化なんて関係ない」という人もいるかもしれません。ただ、ブラックボックス最適化は身近なところで使える手法になっています。身近で、かつ、この本でも紹介していただいた例として「コーヒーの淹れ方の最適化」があります。

自分好みの美味しいコーヒーを淹れたいと思ったことありませんか?私はあります。ただ、ど素人は知識がないので、豆の量、豆の挽き方などどのように変化させると自分好みになるのかなどがわからないという問題があります。この問題がまさにブラックボックス最適化です。ここでは\(x\)に相当するのが豆の量、挽き方など様々な操作で、\(f(x)\)が\(x\)に従って入れたコーヒーのおいしさになります。

この最適化をアシストするのにOptunaが使えます。詳しくはこちらの記事をご覧ください。

どんな本か?

この本はタイトルの通り、Optunaを使ったブラックボックス最適化がメインに書かれていますが、それだけではなく、そもそもブラックボックス最適化がどういう場面で使えばいいのか?や、解きたい問題でブラックボックス最適化を使うべきか?を教えてくれる本です。著者はOptunaを開発しているメンバーです。

ブラックボックス最適化は機械学習におけるハイパーパラメータ探索が有名な例ですが、それ以外にも様々な場面(先ほど紹介したコーヒーの淹れ方の最適化など)でブラックボックス最適化は使えます。ただ、自分が抱えている問題がブラックボックス最適化で解けるのか?やそもそも解きたい問題がブラックボックス最適化を使うべきか?が分からないケースが圧倒的に多いと思っています。この本では4章でどういう応用事例があるのかが紹介されています。この部分はハイパーパラメータ探索以外でどういうことに使えそうか?の手がかりになると思っています。

また、2章で簡単なOptunaの使い方、3章でOptunaをより使いこなしたい人向けにOptunaの各種機能の紹介とそれを使いながら実際にOptunaをこういう手順で使ったらよいという1例の紹介がされています。なのでOptunaを使ったことない方も安心して読めます。

そして5章、6章ではかなり踏み込んでOptunaの中身について説明がされています。なので、Optuna中身を詳しく知りたいという人は5、6章はかなりおすすめです。

どんな人におすすめか?

この本は以下のようなことに興味ある人が読むと良いかなと思います。

  • ブラックボックス最適化がどういうときに使えるのか知りたい方
  • Optunaを今よりも使いこなしたい方
  • Optunaの中身を詳しく知りたい方

特に前半部分は丁寧に書かれている印象です。このため、Pythonをある程度知っている人ならこの本を読んでOptunaを使って様々な問題に対してブラックボックス最適化が使えるようになるのではないかと思っています。

1つ注意点として5章、6章はかなり踏み込んだ内容で、特に6章は数式がゴリゴリ書かれていて読むのがかなり大変です。なので、この部分だけは挫折する人がいるかもしれません。ただ、このあたりがちょっとでもわかっているとOptunaの各クラスでどういう引数を渡せばよさそうかがイメージしやすくなると思うので、「数式がわからなくてもイメージだけつかめればいい」くらいに気軽に読むと良いかなと思います。

個人的によかった点

個人的によかった点としては以下の点です。

  1. Optunaを使って探索範囲をどう決めていけばいいのかの流れが書いてあった
  2. OptunaのSamplerでどういうパラメータを指定すればいいかイメージできるようになった
  3. ブラックボックス最適化のいろいろな応用事例が知れた

特に1,2あたりは非常によかったです。Optunaはベータ版のころから使っていたので、使いこなせているつもりになってましたが、探索範囲をどう狭めていけばいいかは自分の中で定番の流れ、みたいなものがうまく言語化できていませんでした。このため、毎回試行錯誤していたのですが、ある程度ルール化できそうな感触が得られました。

また、OptunaのSamplerのパラメータはどういうときに変えたらいいのかわかっておらず、ほぼデフォルトのまま使っていました。ただ、この本を読んでアルゴリズムの中身がある程度わかったので、これからはこの本で紹介されているパラメータを指定することでもっと効率よく最適化ができそうな気がしています。

ちなみに個人的に最高に面白かった点として4章でGoogleの「クッキーレシピ最適化」をOptunaを使って再現した例の紹介の部分です。この例の中でてっきりOptunaで実装した例だけを示すのかと思ったのですが、「クッキーを著者自ら再現してみました(写真付き)」とさらっと書いてあります。私はこれを読んで思わずコーヒーを吹き出しました。実際に作ったクッキーを食べた感想なんかも書いてあって非常に面白かったです。

最後に、この本でこのブログの記事を取り上げていただけて非常にうれしかったです。

終わりに

今回は2/21に発売した「Optunaによるブラックボックス最適化」を読んだのでその感想を書きました。

想像よりも良い本だったので他の人にも勧めたい一冊でした。

あともう1,2冊は2月中に感想をあげようと思っています。

コメントを残す

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

このサイトは reCAPTCHA と Google によって保護されていますプライバシーポリシー利用規約 申し込み。

The reCAPTCHA verification period has expired. Please reload the page.