公開日:2024年7月23日
寄稿者:Ivan Belcic、Cole Stryker
ハイパーパラメーターのチューニングとは、機械学習モデルのトレーニングに使用する最適なハイパーパラメーターを特定して選択する手法です。ハイパーパラメーターのチューニングを正しく行うと、機械学習モデルの損失関数を最小化することができます。つまり、モデルのパフォーマンスが可能な限り正確になるようにトレーニングされるということです。
ハイパーパラメーターのチューニングは実験的な手法であり、最適な値が特定されるまで、繰り返すたびにさまざまなハイパーパラメーター値がテストされます。このプロセスは、ハイパーパラメーターが学習プロセスを制御するため、モデルのパフォーマンスにとって重要です。ニューラル・ネットワーク内のニューロンの量、生成AIモデルの学習率、サポート・ベクター・マシンのカーネル・サイズはすべて、ハイパーパラメーターの例です。
ハイパーパラメーターを適切にチューニングするということは、機械学習モデルが意図したタスクのメトリクスに従って、全体的により優れたパフォーマンスを発揮することを意味します。ハイパーパラメーターのチューニングが、ハイパーパラメーターの最適化とも呼ばれるのは、この理由のためです。
データサイエンスにおけるハイパーパラメーターとモデル・パラメーターの主な違いは、モデルが自ら取り込んだトレーニング・データ・セットからパラメーターを学習または推定するのに対し、データサイエンティストはトレーニング・プロセスの開始前にモデルのアルゴリズムのハイパーパラメーターを定義することです。モデルは作業に合わせてパラメーターを更新し続けますが、モデルのハイパーパラメーターの最適値は事前に特定および設定されます。
ハイパーパラメーターのチューニングが重要な理由は、それがモデルの構造、トレーニング効率、パフォーマンスの基になるからです。ハイパーパラメーターの最適な構成により、現実世界でのモデル・パフォーマンスが向上します。大規模言語モデル運用(LLMOPs)は、適切なチューニングの効率面を重視し、必要な計算能力を最小限に抑えることに重点を置いています。
ハイパーパラメーターのチューニングの目的は、偏りと分散のトレードオフのバランスを取ることです。偏りとは、モデルの予測と現実との乖離のことです。チューニングが不十分なモデルや学習不足のモデルの場合、データポイント間の重要な関係を識別できず、正確なパフォーマンスに必要な結論を導き出すことができません。
分散とは、新しいデータに対するモデルの感度のことです。信頼できるモデルは、トレーニング・データから他のデータ・セットに移行する際に、一貫した結果をもたらす必要があります。しかし、分散レベルが高いモデルは複雑すぎて、元のトレーニング・データ・セットに過剰に適合してしまうため、新しいデータへの対応に苦労します。
偏りの小さいモデルは正確である一方、分散が小さいモデルは一貫性があります。ハイパーパラメーターを適切にチューニングすることにより、ジョブに最適なモデルが作成されると同時に、トレーニング中の計算リソース効率も最大化されます。
どの機械学習アルゴリズムも、それぞれのハイパーパラメーター・セットを優先するため、いかなる場合も最大化の必要はありません。場合によっては、ハイパーパラメーターをチューニングする際に、より保守的なアプローチを採用することで、パフォーマンスが向上することもあります。
ニューラル・ネットワークは、人間の脳から着想を得たもので、互いに信号を送り合う、相互接続されたノードで構成されています。ここでは、ニューラル・ネットワーク・モデルのトレーニングで使用される最も一般的なハイパーパラメーターをいくつかご紹介します。
学習率は、モデルが1回の反復においてパラメーターを調整する速度を指定します。この調整はステップと呼ばれます。学習率が高いということは、モデルの調整速度が上がるということですが、パフォーマンスが不安定になり、データ・ドリフトが生じるリスクがあります。一方、学習率が低いと時間がかかり、より多くのデータが必要になりますが、データサイエンティストがモデルの最小損失を特定する可能性も高くなります。勾配降下の最適化は、設定された学習率を必要とするトレーニング・メトリクスの一例です。
学習率の減衰は、ネットワークの学習率を時間の経過とともに低下させる比率を指定し、これにより、モデルは学習する速度を上げることができます。アルゴリズムが最初の活性化から理想的なパフォーマンスに至るまでのトレーニングの進行状況は、収束と呼ばれます。
バッチ・サイズは、パラメーターを更新する前にモデルが算出するサンプル量を指定します。これは、トレーニング・プロセスの計算効率と精度の両方に大きな影響を与えます。バッチ・サイズを大きくすると、それだけで全体的なパフォーマンスが低下しますが、バッチ・サイズとともに学習率を調整することで、この損失を軽減できます。
ニューラル・ネットワーク内の隠れ層の数によってその深さが決まり、これがその複雑さと学習能力に影響を与えます。層が少ないほど、モデルはよりシンプルで高速になりますが、ディープラーニング・ネットワークなどのように層が多いほど、入力データの分類が向上します。ここで、考えられるすべての組み合わせから最適なハイパーパラメーター値を特定するには、速度と精度のトレードオフが重要になります。
層ごとのノード数またはニューロン数によって、モデルの幅が決まります。層あたりのノードまたはニューロンが多いほど、モデルの幅が広がり、データ・ポイント間の複雑な関係をより適切に表現できます。
モメンタムは、モデルがコースの向きを逆にするのではなく、前回の反復と同じ方向にパラメーターを更新する度合いのことです。ほとんどのデータサイエンティストは、モメンタム用のハイパーパラメーター値を最初は小さくし、その後、トレーニング・データを取り込む際にモデルを軌道に乗せるため、必要に応じて微調整を行い、値を上げていきます。
エポック数はハイパーパラメーターの1つで、トレーニング・プロセス中にモデルにトレーニング・データ・セット全体を学習させる回数を指定します。学習させる回数が多いほど、パフォーマンスの向上につながりますが、過剰適合(過学習)のリスクもあります。
活性化関数はモデルに非線形性をもたらし、モデルがより複雑なデータ・セットを処理できるようにします。非線形モデルは、より多様なデータを一般化し、それに適応することができます。
サポート・ベクター・マシン(SVM)は、データの分類、回帰、外れ値の検知に特化した機械学習アルゴリズムです。これには、次のような独自の必須ハイパーパラメーターがあります。
Cは、モデルがデータ分類器として機能する場合における、許容誤差と結果として生じるエラーの回数の比率です。C値を低くすると、滑らかな決定境界が形成され、誤差の許容範囲は大きくなり、パフォーマンスはより一般的なものになりますが、データの誤分類が生じるリスクがあります。一方、C値が高いと、より正確なトレーニング結果を得るためにきちんと整った決定境界が形成されますが、過剰適合(過学習)が起きる可能性があります。
カーネルは、データ・ポイント間にどのような関係があるかを確定し、それに応じてデータ・ポイントをグループに分類する関数です。使用されるカーネルによって、データ・ポイントの関係性は異なるため、SVMモデル全体のパフォーマンスに大きな影響を与える可能性があります。線形、多項式、動径基底関数(RBF)、シグモイドは、最も一般的に使用されるカーネルの一部です。線形カーネルはよりシンプルであり、簡単に分離可能なデータに最適である一方、非線形カーネルは、より複雑なデータ・セットに適しています。
gammaは、サポート・ベクターが決定境界に与える影響の度合いを指定します。サポート・ベクターは、超平面(データ・グループ間の境界)に最も近いデータ・ポイントのことです。値が高いと、近くにあるベクトルから強い影響を受けますが、値が低いと、より遠くにあるベクトルからの影響が制限されます。gamma値を高く設定しすぎると、過剰適合(過学習)が起きる可能性があり、値が低すぎると、決定境界が曖昧になる可能性があります。
XGBoostは、「extreme gradient boosting」の略で、決定木と呼ばれる複数の弱いモデルの予測を組み合わせて、より正確な結果を得るためのアンサンブル・アルゴリズムです。勾配ブースティング・アルゴリズムは、複数の決定木で構成される別のタイプのアンサンブル・アルゴリズムであるランダム・フォレスト・モデルよりも優れたパフォーマンスを発揮する傾向があります。
XGBoostの最も重要なハイパーパラメーターは次のとおりです。
learning_rateは、ニューラル・ネットワークで使用される学習率ハイパーパラメーターと似ています。この関数は、各トレーニング中に行われる修正のレベルを制御します。指定できる値の範囲は0~1で、デフォルト値は0.3です。
n_estimatorsは、モデル内の木の本数を指定します。このハイパーパラメーターは、元のXGBoostではnum_boost_roundsと呼ばれていますが、一般的なPython API scikit-learnでは、n_estimatorsという名前が導入されました。
max_depthは、決定木のアーキテクチャーを決定し、木から各葉(最終的な分類器)までのノードの最大量を指定します。ノードが多いほどデータの分類が複雑になり、木が小さいほど過剰適合(過学習)を回避しやすくなります。
min_child_weightはは、新しい木を作成するのに必要な最小の重み(モデルのトレーニング・プロセス全体に対して与えられたクラスの重要度)です。最小の重みを小さくすると、より多くの木が作成されますが、過剰適合(過学習)が起こる可能性があり、重みを大きくすると、木を分割するためにより多くのデータが必要になるため、複雑さが軽減されます。
subsampleは、各トレーニング中に使用されるデータ・サンプルの割合を指定し、colsample_bytreeは、木の構築で使用する特徴量の割合を指定します。
ハイパーパラメーターのチューニングは、目的関数を中心に行われます。目的関数は、ハイパーパラメーターのグループ、すなわちタプルを分析し、予測損失を算出します。ハイパーパラメーターを最適にチューニングすることで、選択したメトリクスに従って損失を最小限に抑えることができます。結果は相互検証によって確認されます。相互検証では、結果が、特定のトレーニング・インスタンス以外の他のデータ・セットに対してどれほど忠実に一般化されているか測定されます。
データサイエンティストは、ハイパーパラメーターのさまざまなチューニング手法を自由に使用できますが、それぞれに長所と短所があります。ハイパーパラメーターのチューニングは、手動で行われることも、AutoML(自動機械学習)ストラテジーの一部として自動化されることもあります。
グリッド探索は、ハイパーパラメーターの包括的かつ網羅的なチューニング手法です。データサイエンティストが、各ハイパーパラメーターに対して考えられるすべての値を設定したら、グリッド探索により、それらの離散的なハイパーパラメーター値の構成として可能なものすべてに対してモデルが構築されます。これらのモデルはそれぞれパフォーマンスが評価され、互いに比較され、そして最終的にトレーニングに最適なモデルが選択されます。
このように、グリッド探索は、正しいシーケンスが見つかるまで可能性のある数字の組み合わせをすべて入力することでパスワードを試す、総当たり攻撃と似ています。グリッド探索により、データサイエンティストはハイパーパラメーター空間で考えられるすべての構成を検討できますが、非効率的な手法であり、計算リソースを大量に消費します。
ランダム探索は、データサイエンティストが各ハイパーパラメーターの離散値ではなく、統計分布を提供するという点でグリッド探索とは異なります。ランダム探索では、各範囲からサンプルが抽出され、各組み合わせのモデルが構築されます。数回繰り返される間、最適なモデルが見つかるまで、モデルは互いに比較検討されます。
ハイパーパラメーター探索空間に大きな分布が含まれている状況では、グリッド探索よりもランダム探索の方が適しています。グリッド探索の場合、各離散値をテストするには、シンプルに手間がかかりすぎるからです。ランダム探索アルゴリズムが、最適なハイパーパラメーター構成を見つけることができるという保証はありませんが、グリッド探索に匹敵する結果を、かなり少ない時間で返すことができます。
ベイズ最適化は、シーケンシャル・モデルベース最適化(SMBO)アルゴリズムの1つであり、テストを繰り返すたびに、次のテストのサンプリングの方法が向上します。グリッド探索とランダム探索は両方同時に実行できますが、各テストは単独で行われるため、データサイエンティストは、学習した内容を後続のテストに反映させることはできません。
以前のテストに基づいて、ベイズ最適化では、より良い結果が得られる可能性が高い新しいハイパーパラメーター値のセットが確率的に選択されます。この確率的モデルは、元の目的関数のサロゲート(代理)と呼ばれます。サロゲート・モデルは計算効率が良いため、通常は、目的関数が実行されるたびに更新および改善されます。
サロゲートが最適なハイパーパラメーターを適切に予測できるようになるほど、プロセスは高速化され、必要な目的関数のテストが減ります。これにより、ベイズ最適化は他の手法よりもはるかに効率が上がります。ハイパーパラメーター値の不適切な組み合わせによる無駄な時間が生じないからです。
結果(この場合、最高のモデル・パフォーマンス)と一連の変数との関係を統計的に決定するプロセスは、回帰分析と呼ばれます。ガウス過程は、データサイエンティストの間で良く知られているSMBOの1つです。
2016年に導入されたHyperband(ibm.com外部へのリンク)は、好調な結果が得られないトレーニング構成の使用を打ち切り、優れた構成に対してより多くのリソースを割り当てることで、ランダム探索を改善するために設計されたものです。
この「早期停止」は、連続半減処理によって実現されます。この処理は、各トレーニング後に、最もパフォーマンスの悪い構成の半分を取り除くことで、構成の数を縮らすというものです。各バッチの上位50%は、最適なハイパーパラメーター構成が1つ残るまで、次の反復に引き継がれます。
AIモデルのトレーニング、検証、調整、導入を行うAI開発者向けの次世代エンタープライズ・スタジオ(ツール・機能群)をご利用ください。
watsonxプラットフォームにある基盤モデルのIBMライブラリーを探索し、ビジネスに合わせて自信を持って生成AIを拡張します。
IBM® Graniteは、ビジネスに特化した人工知能(AI)モデルのファミリーであり、AI駆動型アプリケーションの信頼性と拡張性を確保できるようにゼロから設計されました。オープンソースのGraniteモデルは今すぐご利用いただけます。