優れた機械学習モデルの構築には、多くの時間をかける必要があります。教師データの確保はもちろんですが、データのインプットを完了した後も、データサイエンティストやエンジニアはさまざまな調整作業に追われます。機械学習において最も重要なプロセスの一つが、ハイパーパラメータのチューニングです。ハイパーパラメータを適正値へ導くことで、実践でも活躍が期待できる学習モデルの構築を実現します。今回は、ハイパーパラメータの役割や、どのようにチューニングを行えば良いのかなどについて、ご紹介します。ハイパーパラメータとはハイパーパラメータとは、機械学習のアルゴリズムのパフォーマンスを制御するための設定値で、モデルの完成度へ大きく影響しています。適切な値を導く手段AIは必ずしも学習データを読み込ませるだけで完成するとは限りません。学習データの質や、学習モデルのパフォーマンス次第では、期待していたよりも劣る、あるいはそのままでは実用性に欠けるというケースが日常茶飯事です。そんな時に、ハイパーパラメータの設定が役に立ちます。チューニングと呼ばれる設定過程を通じて微調整を実施することで、実行結果に大きな改善効果が見られることがあります。AIの開発にはコンピュータの自発的な学習が鍵を握っていますが、最終調整には人間が一手間を加えてやることで、実践的なモデルを構築できます。手動での設定が必要ハイパーパラメータのチューニングは、基本的にデータサイエンティストやエンジニアが手動で実施することが一般的です。例えば決定木分析という機械学習アルゴリズムを採用している場合、AIが物事を判断するための特徴が段階的に分析にかけられるため、ツリー状に階層が深まっていく様子が描かれます。決定木分析を採用したモデルでは、複雑な判断能力が問われるケースほど、巨大な樹形図が作られることになるのですが、ハイパーパラメータはここに手を加えます。階層を増やしたり、減らしたりして学習モデルの判断能力をチューニングすることで、適切な精度で実用性を確保できるようになります。これらの作業は基本的に手動で行わなければならないため、データサイエンティストとしてのスキルや経験が存分に活かされる機会でもあります。ハイパーパラメータのチューニング方法ここからは、具体的にどのようなチューニング方法があるのかについて、見ていきましょう。ハイパーパラメータのチューニングは主に3つの方法があり、場合に応じて使い分けることが一般的です。どんな手法が適切なのか、選び方にも注目してみましょう。グリッドサーチグリッドサーチは、ハイパーパラメータのチューニング方法の中でも最も一般的な手法として知られています。ハイパーパラメータの候補となり得る値全てをチューニング対象とし、あらゆるパターンの検証を行える方法です。ハイパーパラメータのチューニングにおいては、候補となる値のパターンをさまざまに組み替えながら検証しなければなりません。例えば値Aの調整パターンが3通りあり、調整効果が期待できそうなハイパーパラメータがそれだけであれば、3通りの検証を行うだけで完了です。しかし、検証できる値がA,B,Cの三つ、それぞれのパターンが5通り、7通り、4通りと存在する場合、全ての検証を行うためには5×7×4=140通りもの検証を行わなければなりません。検証は全て手動で実施することになるため、こうなるとデータサイエンティストには多大な負担がかかることになります。そのため、この微調整の作業にも結果次第では多くの時間を必要とします。とはいえ、グリッドサーチは必ずしも真正面から順に取り組む必要はありません。何度も検証を行う中で、「これは」という感触が掴めた場合、ある程度の「あたり」をつけながら目当ての結果を目指して検証を行えます。データサイエンティストの経験が問われるものの、質の高いチューニングを行える手法と言えます。ランダムサーチ二つ目の方法は、ランダムサーチです。グリッドサーチでは考え得るパターンを全て実施することも視野に入れていた方法ですが、ランダムサーチは何を検証するのかを運任せで決めるのが特徴です。ランダムサーチを実施する場合、あらかじめモデルの訓練回数を指定します。グリッドサーチであれば、組み合わせの数だけ実行していましたが、こちらでは回数を指定する代わりに、どのあたりで実行するかはランダムで決定します。運任せでモデルを調整する、というのは一見すると無責任な取り組みであるようにも思えますが、実際のハイパーパラメータのチューニングというのは、膨大な組み合わせが存在するため、とても一つずつ訓練を行う時間と余裕はないケースも珍しくありません。そこでランダムサーチによって、あらかじめ無理のない範囲で訓練を行い、今後の方向性をそこで得た結果から見出すというアプローチが可能です。ランダムサーチによって完璧なあたいと組み合わせを見いだせずとも、「このあたりの値なら成果が得られそうだ」という手がかりを掴める可能性があるため、実行の価値は十分にあります。ベイズ最適化ランダムサーチは指定した回数内で、無作為の訓練を実施する方法ですが、もう少し方向性を固めながら実行してくれるのが、ベイズ最適化です。ベイズ最適化は、パラメータを効果が出やすいようにある程度自動化して抽出してくれる方法で、前回実行した結果を参考にしながら、次に設定する値を決定できる機能を有しています。ベイズ最適化によって実行した結果を参考にする際、主に二つのアプローチが存在します。一つ目は「探索」で、これは前回の調査で調べた値の範囲を読み取り、次回の検証の際には別の値で検証を行おうとするものです。例えば、街中でどこかに財布を忘れてきたケースを想像してみましょう1日中出歩いていた日の夜、家に帰って初めて財布がないことに気づいたとします。その場合、今日一日どんなスポットを訪れてきたかを振り返ることになりますが、大抵の人はそれらのスポットをしらみつぶしに探そうとするはずです。この「しらみ潰しに答えを求める」というアプローチが、ベイズ最適化における「探索」です。要領よく「ここはだめだったから次へ行こう」と行動指針を明らかにすることで、最適な結果を得ようとします。もう一つのアプローチが「活用」です。これは特定の領域で良い反応が得られた場合、その範囲内で集中的に検証を重ねるというものです。先程の財布を失くしたケースで例えるならば、「財布は見つからなかったが、駅の紛失物コーナーや道中の交番へ行けば見つかるかもしれない」とヒントを得られた状態に当たります。このような手順を経て、ベイズ最適化は毎回の訓練結果を参考にしながら最適なチューニングに近づけるため、ランダムサーチよりも質の高い結果を得やすいのが強みです。活用すべき手法は?ここでは、ハイパーパラメータのチューニングに使われる3つの方法をご紹介しました。いずれも異なるアプローチで検証を行いますが、場合によって使い分けられるのが理想です。例えばグリッドサーチにおいては、検証を行う値の数がある程度限られており、総当たりでも問題なく行える余裕がある場合には、確実性の高い手法です。また、データサイエンティストがある程度「あたり」をつけられている場合も、最低限の回数でチューニングを実施できるため、有効であると言えます。一方で膨大な数の検証を行わなければならない場合、グリッドサーチをまともに実行していては、時間がかかり過ぎてしまいます。そこで活用したいのがランダムサーチで、こちらはあらかじめ訓練回数を指定して検証を行えるので、余計な負担を抑えられます。何度か検証することで、効果のありそうな値を発見することができる可能性もあるため、そこからチューニングの確度を高められます。ただ、ランダムサーチはあくまでも無作為な検証であるため、どれほどの成果が得られるかは完全に運任せとなります。効率よく結果を得られる時もあれば、全く成果を得られない時もあるため、過度に信頼するのは控えるべきでしょう。ランダムサーチよりも高い確度で、なおかつ効率よくチューニングを実施したい際には、ベイズ最適化が役に立ちます。他の手法よりも高度な技術を要しますが、実現可能であればランダムサーチよりも根拠を持ってチューニングを自動化できるため、高い精度で改善を行うことができます。優秀なデータサイエンティストを確保することができるのであれば、積極的に活用したいところです。ハイパーパラメータのチューニングを扱う上での注意点ハイパーパラメータのチューニングは重要な意味を持つ一方で、あらかじめ気をつけておきたい部分もあります。ここでは以下の三つの注意点をご紹介します。時間が異常にかかる一つ目は、チューニングに多くの時間を必要とする点です。もちろん、どんな方法でチューニングを行うのか、どれだけのマシンパワーを持っている環境でチューニングするのかによって、必要な時間は変わってくるものの、基本的に時間を必要とする作業であることは押さえておきましょう。特にグリッドサーチのような総当たり形式のチューニング方法だとより多くの時間を必要とします。チューニングにかけられる時間に余裕がない場合、あらかじめ計画を固めてから実践することをおすすめします。データ量や特徴量の増減で結果が変わる可能性がある二つ目に、最適なハイパーパラメータは変動する可能性があるという点です。一度チューニングを実施して、目的の精度を手に入れた場合でも、新たにデータを加えたり、特徴量に変化があった場合には、パラメータの値も再度調整する必要が出てきます。時間のかかるハイパーパラメータのチューニングを何度も実施するのは非効率であるため、学習モデルが固まっていない場合には実行を控えるべきでしょう。特徴量エンジニアリングなど別の手法と併用する三つ目のポイントは、必ずしもハイパーパラメータのチューニングにこだわる必要はないという点です。学習モデルの精度向上を促す上では、これ以外にも特徴量エンジニアリングなどの方法が挙げられます。特徴量エンジニアリングは、目的に合わせて特徴量をうまく作り出すことで、モデルの精度向上を目指すアプローチです。データセットの領域に対する深い見識があれば、ハイパーパラメータのチューニングよりも容易に実践ができるだけでなく、AI開発においては頻繁に取り組むことになるため、こちらを優先できるスキルを身につけておいて損はありません。状況に応じて最適な手法を選べるよう準備しておくことが、効率の良いAI開発を実現する上での重要なポイントです。ハイパーパラメータの最適化に役立つツール最後に、ハイパーパラメータのチューニングに役立つ2つのツールについて、ご紹介しておきます。OptunaOptunaは、これまで手動で行われてきたハイパーパラメータの最適化を自動で実行できるという、非常に便利なフレームワークです。Pythonユーザーに向けて現在は提供されているツールで、ベイズ最適化アルゴリズムの一種を採用し、チューニングの自動化に貢献します。高度なアプローチとされたベイズ最適化を簡単に採用できるフレームワークとなっているため、ハイパーパラメータのチューニング精度を高めるとともに、実施スピードの高速化にも期待が持てます。AutoFlowAutoFlowは、機械学習アルゴリズムの選定とパラメータチューニングを自動で実施してくれるサービスです。データサイエンスや機械学習の素養がなくとも扱えることを強みとしており、業務自動化のためのAIを、自動的に開発できるという夢のような機能を備えています。これまでは数ヶ月かかっていたようなチューニング業務なども、わずか数時間で実行できるようになるなどの驚異的なパフォーマンスを発揮し、最先端のAI開発をさらに後押しする効果を期待できます。おわりに今回は、ハイパーパラメータのチューニングの重要性や、どのようにチューニングを実行するかについてご紹介してきました。AIはただデータをインプットするだけでは完成に導くことはできず、最終的なデータサイエンティストの調整を持って、初めて実用化が可能です。ハイパーパラメータの最適化には多くの時間を要するものの、近年は便利なツールやサービスも登場したことで、実施のハードルは低くなっています。AI開発のノウハウがなくとも高度なプロセスを実現できるサービスを有効活用し、業務効率化を実現しましょう。