目的関数とは?意味・仕組み・活用例をわかりやすく解説

目的関数とは?意味・仕組み・活用例をわかりやすく解説

AIの初心者

「目的関数」って何ですか?機械学習でよく出てきますが、何を目的にしているのかが分かりにくいです。

AI専門家

簡単に言うと、AIが学習するときの「良さ」を数値で表す関数だよ。目標に近いほど良い値になり、遠いほど悪い値になるように設計するんだ。

AIの初心者

では、AIはその数値を見ながら学習しているということですか?

AI専門家

その通り。予測と正解の差を小さくしたり、正解に近い判断を増やしたりする方向へ、目的関数を手がかりにモデルのパラメータを調整していくんだ。

目的関数とは。

目的関数は、機械学習モデルが「何を良い結果とみなすか」を数値で定める関数です。予測の誤差を小さくする、分類の正しさを高める、モデルを複雑にしすぎないなど、学習で目指す方向を一つの計算式として表します。

目的関数とは何か

目的関数が機械学習の学習目標を示すイメージ

機械学習では、モデルが入力データから予測や分類を行います。ただし、モデルは最初から正しい判断ができるわけではありません。そこで必要になるのが、学習の良し悪しを測るための目的関数です。

目的関数は、モデルの出力が望ましい状態にどれだけ近いかを数値にします。例えば、住宅価格を予測するモデルなら、予測価格と実際の価格の差が小さいほど良いモデルだと考えられます。画像分類なら、正しいカテゴリを高い確率で選べるほど良いモデルだと考えられます。この「良い」「悪い」を計算できる形にしたものが目的関数です。

目的関数の値は、必ずしも大きいほど良いとは限りません。正答率や報酬のように最大化したい場合もあれば、誤差や損失のように最小化したい場合もあります。機械学習の実装では、誤差を表す目的関数を小さくする形で扱うことが多く、この作業を最適化と呼びます。

用語 意味
目的関数 モデルが目指す良さを数値化した関数
最小化 誤差や損失がなるべく小さくなるように調整すること
最大化 正答率や報酬などがなるべく大きくなるように調整すること
最適化 目的関数の値が最も良くなるようにパラメータを更新すること

目的関数を数式で見る

目的関数は、文章で考えるよりも、簡単な式にすると役割が見えやすくなります。代表的な例として、データ全体の平均損失に正則化項を加えた形を考えます。

\(J(\theta)=\frac{1}{n}\sum_{i=1}^{n}L(f_{\theta}(x_i), y_i)+\lambda R(\theta)\)

この式では、\(J(\theta)\) が目的関数です。\(\theta\) はモデルのパラメータ、\(x_i\) は入力データ、\(y_i\) は正解、\(f_{\theta}(x_i)\) はモデルの予測を表します。\(L\) は一つ一つのデータに対する誤差を測る損失関数で、\(\frac{1}{n}\sum\) によって全データの平均を取っています。

後半の \(\lambda R(\theta)\) は正則化項です。モデルが学習データに合わせ込みすぎるのを防ぐために、パラメータの大きさや複雑さにペナルティを加えます。\(\lambda\) は、そのペナルティをどれくらい重く見るかを調整する係数です。

つまり目的関数は、単に誤差を測るだけではなく、予測の正確さとモデルの扱いやすさのバランスを取るためにも使われます。この視点を持つと、目的関数が機械学習の設計そのものに関わることが分かります。

損失関数との違い

個々の損失が目的関数へ集約されるイメージ

目的関数と損失関数は似た文脈で使われるため、初学者が混乱しやすい用語です。大まかに言えば、損失関数は個々の予測ミスを測るもので、目的関数は学習全体で最適化したい指標です。

例えば、商品の売上を予測するモデルを考えます。ある日の予測が100個、実際の売上が120個なら、その日の誤差は20個です。この一つのデータに対するズレを測るのが損失関数です。一方で、学習データ全体に対して誤差を平均し、必要に応じて正則化項も加えたものを最小化するなら、それが目的関数になります。

ただし、文脈によっては損失関数と目的関数がほぼ同じ意味で使われることもあります。特に正則化項を含めず、単に平均損失だけを最小化する場合は、目的関数を損失関数と呼ぶことがあります。厳密に区別したいときは、個別データの誤差が損失関数、学習で最終的に最適化する全体の式が目的関数、と考えると整理しやすくなります。

項目 主な役割
損失関数 一つのデータ、または一つの予測の誤差を測る 予測価格と実価格の差、分類確率のズレ
目的関数 学習全体で最適化したい値を定義する 平均損失、平均損失に正則化を加えた式
評価指標 学習後の性能を人間が確認するために使う 正答率、F1スコア、平均絶対誤差

目的関数を最適化する仕組み

勾配降下法で目的関数を最適化するイメージ

目的関数を決めただけでは、モデルはまだ良くなりません。次に必要なのは、その値が良くなるようにモデルのパラメータを更新することです。この作業が最適化です。

代表的な方法に勾配降下法があります。勾配降下法では、目的関数の値が小さくなる方向を計算し、パラメータを少しずつ動かします。山の斜面を下って谷底を探すようなイメージです。傾きが分かれば、どちらへ進めば値が下がるかを判断できます。

パラメータ更新の基本形は、次のように表せます。

\(\theta_{t+1}=\theta_t-\eta g_t\)

\(\theta_t\) は更新前のパラメータ、\(\theta_{t+1}\) は更新後のパラメータです。\(g_t\) はその時点での勾配、\(\eta\) は学習率を表します。学習率が大きすぎると最小値を飛び越えやすく、小さすぎると学習に時間がかかります。

実際の機械学習では、全データを一度に使う勾配降下法だけでなく、一部のデータを使って素早く更新する確率的勾配降下法や、過去の更新の勢いを利用するモーメンタム、Adamのような改良手法も使われます。どの方法を選ぶかは、データ量、モデルの大きさ、目的関数の形によって変わります。

正則化を目的関数に入れる理由

正則化で過剰適合を抑えるイメージ

機械学習で重要なのは、学習データで良い結果を出すことだけではありません。まだ見たことのないデータに対しても正しく予測できる必要があります。この未知データへの強さを汎化性能と呼びます。

モデルが学習データの細かなノイズまで覚えてしまうと、学習データでは高性能に見えても、新しいデータではうまく働きません。この状態が過剰適合です。正則化は、モデルが複雑になりすぎないように目的関数へペナルティを加える考え方です。

代表的なものにL1正則化とL2正則化があります。L1正則化はパラメータの絶対値の和にペナルティをかけ、不要なパラメータをゼロに近づけやすい性質があります。L2正則化はパラメータの二乗和にペナルティをかけ、値が極端に大きくなるのを抑えます。

正則化を入れると、目的関数は「学習データへの当てはまり」だけでなく、「モデルの複雑さ」も同時に見るようになります。実務では、学習データの目的関数だけでなく、検証データでの評価指標も一緒に確認し、過剰適合が起きていないかを判断します。

代表的な目的関数の種類

問題の種類に応じて目的関数を選ぶイメージ

目的関数は、解きたい問題によって選び方が変わります。分類問題、回帰問題、ランキング、強化学習では、モデルに求める「良さ」が異なるためです。

分類問題では、交差エントロピーがよく使われます。これは、正しいクラスに高い確率を割り当てられているかを測る目的関数です。画像を犬、猫、車などに分類する場合、正解クラスの確率が高いほど良い学習になります。

回帰問題では、平均二乗誤差や平均絶対誤差が使われます。平均二乗誤差は大きな誤差を強く罰するため、外れ値の影響を受けやすい一方、大きなズレを避けたい場面に向いています。平均絶対誤差は誤差の絶対値を平均するため、平均二乗誤差より外れ値に比較的強い性質があります。

問題の種類 よく使われる目的関数 使いどころ
分類 交差エントロピー 画像分類、文章分類、異常判定
回帰 平均二乗誤差、平均絶対誤差 価格予測、需要予測、気温予測
ランキング ランキング損失 検索順位、推薦順位の学習
強化学習 期待報酬を最大化する目的関数 ゲーム、制御、行動選択

目的関数の選択を間違えると、モデルは意図と違う方向に学習します。例えば、分類問題で単純な誤差の二乗だけを使うと、確率としてのズレを扱いにくく、学習が不安定になることがあります。問題設定に合った目的関数を選ぶことは、モデルの性能を引き出すための基本です。

実務や学習での使いどころ

目的関数は、モデルを作る最初の段階から運用後の確認まで関わります。まず、何を達成したいのかを決め、その目的に合う関数を選びます。売上予測なら予測誤差、画像分類なら分類確率、推薦ならクリックや購入につながる順位など、業務上の目的を機械学習で扱える数値に変換します。

学習中は、目的関数の値の推移を見ることで、モデルが想定通りに学習しているかを確認します。値が下がり続けていれば、多くの場合は学習が進んでいます。ただし、学習データの目的関数だけが良くなり、検証データの性能が悪化するなら、過剰適合の可能性があります。

また、目的関数と評価指標を分けて考えることも大切です。モデルは交差エントロピーを最小化して学習し、最終的な報告では正答率やF1スコアを見る、といった運用はよくあります。学習に使いやすい指標と、人間が成果を判断しやすい指標が同じとは限りません。

初心者がつまずきやすい注意点

一つ目の注意点は、目的関数の値だけでモデルの良し悪しを決めないことです。学習データで目的関数が良くなっていても、未知データで性能が落ちることがあります。検証データやテストデータでの評価を必ず確認します。

二つ目は、最大化と最小化の違いに混乱しないことです。報酬や正答率は大きいほど良い指標ですが、実装上は符号を反転させて最小化問題として扱うことがあります。目的関数が「小さくなるほど良い」のか「大きくなるほど良い」のかを、学習前に確認しておく必要があります。

三つ目は、目的関数が現実の目的を完全に表しているとは限らないことです。例えばクリック率だけを最大化すると、短期的にはクリックされても、ユーザー満足度を下げる推薦になる可能性があります。実務では、目的関数を業務目的に近づけるだけでなく、副作用を測る評価指標も用意します。

まとめ

目的関数とは、機械学習モデルが目指す良さを数値で表す関数です。予測誤差を小さくする、分類の確率を正しくする、報酬を大きくする、モデルの複雑さを抑えるといった目標を、学習で扱える形にします。

損失関数は個々の誤差を測る関数として使われることが多く、目的関数はそれらを平均したり、正則化項を加えたりした学習全体の指標として考えると理解しやすくなります。勾配降下法などの最適化手法は、この目的関数の値が良くなるようにパラメータを更新します。

目的関数を理解すると、機械学習が何を基準に学習しているのか、なぜモデルがそのような予測をするのかを追いやすくなります。モデルの種類やデータに合わせて適切な目的関数を選び、評価指標とあわせて確認することが、高性能で実用的なAIモデルにつながります。

更新履歴

日付 内容
2025年2月1日 初回公開
2026年6月7日 式の読み方、損失関数との差、選び方の注意を追記