機械学習における目的関数とは
目的関数(Objective Function)は、機械学習モデルがどれだけ良い予測をしているかを評価するための指標です。
モデルの学習は、この目的関数を最小化(または最大化)するように進められます。
目的関数は、主に「損失関数」と「正則化項」の2つの要素で構成されています。
損失関数(Loss Function)
損失関数は、モデルの予測と実際のデータとの誤差を数値化するものです。
タスクの種類によって使い分けられます。
回帰問題(数値を予測するタスク)
連続値を予測する場合、誤差を表すために主に次のような損失関数が使われます。
- 平均二乗誤差(MSE):予測値と実際の値の差を二乗して平均したもの。誤差が大きいほど強く罰せられるため、外れ値に敏感です。
- 平均絶対誤差(MAE):誤差の絶対値を平均したもの。外れ値の影響をやや抑えたい場合に有効です。
- Huber損失:誤差が小さいときはMSEのように扱い、大きいときはMAEのように扱うハイブリッド型。外れ値にある程度強い特性を持ちます。
分類問題(カテゴリーを予測するタスク)
分類タスクでは、出力を確率として扱うことが多いため、確率分布の誤差を測る指標が使われます。
- 二値クロスエントロピー損失:スパム・非スパムのように2クラスを判定する際に使われる。予測確率が正解に近づくほど損失が小さくなります。
- 多クラスクロスエントロピー損失:3種類以上のクラス(例:犬・猫・鳥など)を分類するタスクで使用される。Softmax関数と組み合わせて使われます。
- ヒンジ損失:サポートベクターマシン(SVM)で用いられる損失関数。正しいクラスと誤ったクラスの間の「マージン(余裕)」を最大化することを目的とします。
正則化項(Regularization Term)
正則化項は、モデルが訓練データに過剰に適応しすぎる(過学習する)ことを防ぐために導入されます。
主な正則化の方法には以下があります。
- L1正則化(Lasso):不要なパラメータの重みをゼロに近づけ、重要な特徴量だけを残す効果があります。
- L2正則化(Ridge):パラメータの大きさを全体的に抑えることで、より安定した予測を可能にします。
- Dropout・早期終了(Early Stopping):目的関数の式には現れませんが、学習中に過学習を防ぐ仕組みとして広く利用されています。
目的関数と最適化の関係
目的関数の値を最小化するために、最適化アルゴリズムが使われます。
代表的なのは勾配降下法(Gradient Descent)で、目的関数の傾きを計算し、その値が小さくなる方向にパラメータを更新していきます。
実際の学習では、計算コストを下げるために「確率的勾配降下法(SGD)」や「Adam」「RMSProp」などの改良版が使われます。
目的関数の設計と選び方
タスクの特性や目的に応じて、最適な目的関数を選ぶ必要があります。
- ランキング問題:検索結果やレコメンドの順位を学習する場合、順位の良し悪しを直接反映する損失(ペアワイズ損失やリストワイズ損失など)を使用します。
- 生成モデル:確率分布を再現することが目的なので、尤度(確率の高さ)を最大化する仕組みを取ります。
- 強化学習:得られる報酬(リワード)を最大化すること自体が目的関数になります。
- GAN(敵対的生成ネットワーク):生成モデルと識別モデルが互いに競い合うように設計され、それぞれが別の目的関数を持ちます。
ロジスティック回帰の例
ロジスティック回帰では、「正しいクラスを選ぶ確率を最大化する」ことが目的です。
数学的には「対数尤度を最大化」することと同義であり、損失関数としてはクロスエントロピーを最小化する形で表現されます。
この構造は、深層学習における分類タスクでもそのまま受け継がれています。
実務的なポイント
- ビジネス目標との整合性:広告クリック率を最大化したい場合はクロスエントロピー、顧客離脱を予測したい場合は二値分類損失など、KPIに沿った目的関数を選ぶ。
- 外れ値の影響を考慮:金融データやセンサーデータでは外れ値が多いため、MAEやHuber損失が向いています。
- モデルの解釈性を重視する場合:L1正則化を使って特徴量を絞り、どの要素が結果に影響しているかを明確にする。
- データの不均衡対策:クラスが偏っている場合は、クロスエントロピーにクラス重みを付けたり、Focal Lossを用いたりしてバランスを取る。
- 過学習対策:正則化だけでなく、学習データの分割、Dropout、Early Stoppingなどを併用する。
まとめ
目的関数は、機械学習モデルの「学習の方向性」を決める最も重要な要素です。
損失関数が「どのような誤差を重視するか」を定義し、正則化項が「モデルの複雑さをどう制御するか」を定義します。
そして、最適化アルゴリズムがその目的関数を小さくするようにパラメータを更新し続けることで、モデルはより精度の高い予測を行えるようになります。
以上、機械学習の目的関数についてでした。
最後までお読みいただき、ありがとうございました。
