損失関数とは

損失関数とは

機械学習(ML)では、損失関数を使用して、モデルの予測と正しい「グラウンド・トゥルース」の予測との偏差を計算し、モデルのパフォーマンスを測定します。モデルを最適化するには、モデルのパラメーターを調整して、損失関数の出力を最小限に抑える必要があります。

損失関数は目的関数の一種で、データ・サイエンスの観点では、最小化または最大化がモデル・トレーニングの目的を表す関数を指します。「損失関数」という用語は、通常、コスト関数または誤差関数と同義であり、特に、最小化が機械学習モデルのトレーニング目標である状況を指します。

簡単に言えば、損失関数は、人工知能(AI)モデルの出力におけるエラーの度合いを追跡します。これは、特定の入力に対する予測値(つまりモデルが結果として出す値)と実際の値またはグラウンド・トゥルースとの差(「損失」)を定量化することによって行われます。モデルの予測が正確であれば、損失は小さくなります。予測が不正確であれば損失は大きくなります。

機械学習の基本的な目標は、適切な予測を出力するようにモデルをトレーニングすることです。損失関数を使用すると、その目標を数学的に定義して追求することができます。トレーニング中、モデルは損失を減らすようにパラメーターを調整することで、より良い予測を出力するように「学習」します。損失が事前に設定されたしきい値以下に最小化された場合、機械学習モデルは十分にトレーニングされたことになります。

The DX Leaders

AI活用のグローバル・トレンドや日本の市場動向を踏まえたDX、生成AIの最新情報を毎月お届けします。登録の際はIBMプライバシー・ステートメントをご覧ください。

ご登録いただきありがとうございます。

ニュースレターは日本語で配信されます。すべてのニュースレターに登録解除リンクがあります。サブスクリプションの管理や解除はこちらから。詳しくはIBMプライバシー・ステートメントをご覧ください。

損失関数の仕組み

一般的なトレーニング設定では、モデルはトレーニング用データ・セットから抽出されたサンプル・データ・ポイントのバッチに対して予測を行い、損失関数は各サンプルの平均エラーを測定します。この情報はモデルパラメータを最適化するために使用されます。

損失関数は、トレーニング・タスクで正しい答え、つまりグラウンド・トゥルースが存在することを前提とする 教師あり学習に特有のものです。クラスタリング関連付けなどの従来の教師なし学習アルゴリズムでは、「正しい」答えや「間違った」答えは含まれず、ラベルのないデータに内在するパターンを発見することのみを目的としています。

教師あり学習にはラベル付けされたデータ・セットが必要であり、手動での注釈によって各トレーニング・サンプルのグラウンド・トゥルースが提供されます。例えば、画像セグメンテーション モデルでは、各ピクセルが正しいクラスに従って注釈付けされたトレーニング用サンプルが必要です。ラベル付けされていないデータ・サンプルの一部をマスクまたは変換し、モデルにそれらを再構築させる 自己教師あり学習 では、元のサンプル自体がグラウンド・トゥルースとして機能します。

オフィスでミーティングをするビジネスチーム

IBMお客様事例

お客様のビジネス課題(顧客満足度の向上、営業力強化、コスト削減、業務改善、セキュリティー強化、システム運用管理の改善、グローバル展開、社会貢献など)を解決した多岐にわたる事例のご紹介です。

損失関数とモデルの最適化

損失関数は単なる評価指標ではありません。それらの明示的な目的は、モデルの成功を測定するだけでなく、損失を最小限に抑えるためにモデルのパラメーターを最適化するアルゴリズムへの入力として機能することです。

勾配降下法などの最適化アルゴリズムでは、通常、損失関数の勾配が使用されます。勾配は、複数の変数を持つ関数の導関数です。本質的に、導関数は関数の出力が任意の時点で変化する速度と量を表します。したがって、損失関数が微分可能であること、つまりすべての点で導関数を持つことが重要です。

機械学習モデルは、特定のモデル・パラメーターを調整することで正確な予測を行うことを学習します。例えば、単純な線形回帰アルゴリズムは、関数y = wx+bを使用してデータをモデル化します。ここで、yはモデルの結果、xは独立変数(入力)、wは重み、bはバイアスです。モデルは、損失関数が十分に最小化されるまで重みとバイアス項を更新して学習します。

最適化アルゴリズムは、損失関数の勾配を使用して、勾配を下げて損失を減らすためにモデル・パラメーターをどの方向に「ステップさせる」かを決定します。

ディープラーニングにおける損失関数

ディープラーニング・モデルでは、単一の関数に依存するのではなく、それぞれが独自の非線形活性化関数を持つ相互接続されたニューロン層で構成される大規模な人工的なニューラル・ネットワークが使用されます。ネットワーク全体を微分化するには、数百、数千、あるいは数百万の個別の変数と活性化関数の他の部分導関数を計算する必要があります。

そのために、ニューラル・ネットワークはバックプロパゲーションを使用して、トレーニング用データ・セットのデータ・ポイントの予測で終了するフォワード・パスの後の損失関数の勾配を見つけます。backward propagation of error(エラーの後方プロパゲーション)を短くした用語であるバックプロパゲーションは、損失関数の出力から始まります。出力層から入力層へのネットワークのバックワード・パスでは、バックプロパゲーションは連鎖律を使用して、ネットワーク内の個々の重みとバイアスが全体の損失にどのように寄与したかを計算します。

得られたネットワーク全体の偏導関数の勾配は、勾配降下アルゴリズムによって使用され、損失が十分に最小化されるまでネットワークの重みを繰り返し更新できます。

正則化

モデルはトレーニング用データ・セットで予測を行うことでトレーニングおよび検証されますが、トレーニング用のサンプルで良好なパフォーマンスを発揮することが最終的な目的ではありません。機械学習の真の目的は、新しいサンプルにうまく一般化できるモデルをトレーニングすることです。

特異損失関数の最小化のみに依存することを「経験的リスク最小化」と呼びます。これは明らかにシンプルで魅力的である一方で、モデルがトレーニング用データに 過剰適合し、一般化が不十分になるリスクがあります。このリスクを軽減するために、多くのアルゴリズムとアーキテクチャーでは、主な損失関数を変更する正規化項が導入されています。

例えば、平均絶対誤差(MAE)(この文脈ではL1正則化と呼ばれます)は、ニューラル・ネットワーク内のアクティブ化されたニューロンの数やそのアクティブ化の程度にペナルティーを課すことで、スパース性を強制するために使用できます。

損失関数の種類

さまざまな損失関数が存在し、それぞれが異なる目的、データ・タイプ、優先順位に適しています。最高レベルでは、最も一般的に使用される損失関数は、回帰損失関数と分類損失関数に分けられます。

  • 回帰損失関数は、連続値を含む予測の誤差を測定します。回帰損失は、価格、年齢、サイズ、時間などの定量化可能な概念を直接推定するモデルに最も直感的に適用されますが、幅広く使用されています。例えば、回帰損失関数は、個々のピクセルの色の値を推定するタスクを伴う画像モデルを最適化するためにも使用できます。

  • 分類損失関数は、データ・ポイントが属するカテゴリーやEメールがスパムであるかどうかなど、離散的な値を含む予測のエラーを測定します。分類損失の種類は、さらに、バイナリー分類に適したものとマルチクラス分類に適したものに分けられます。

適切な損失関数の選択

これら2つの大まかなカテゴリーから1つの損失関数を選択するかどうかは、使用ケースの性質によって異なります。一部の機械学習アルゴリズムでは、その数学的構造に適した特定の損失関数が必要ですが、ほとんどのモデル・アーキテクチャーでは、少なくとも理論的には複数のオプションがあります。

異なる損失関数は、異なるタイプのエラーを優先します。例えば、外れ値に対して厳しいペナルティーを課すものもあれば、小さな差異を管理するものもあります。より高い精度を提供するものもありますが、計算がより複雑になるため、その場合には、計算に多くの時間と計算リソースが必要になります。

最終的に、損失関数の選択は、特定の学習タスク、モデルが分析するデータの性質、最もコストがかかる不正確さの種類、および手元にある計算リソースにより決定されます。

回帰損失関数

線形回帰や多項式回帰などの回帰問題では、1つ以上の独立変数(入力)(x)と従属変数(出力)(y)の関係を決定することによって連続値を出力します。xが与えられると、yの値が予測されます。したがって、回帰損失は、出力が間違っているかどうかだけでなく、それがグラウンド・トゥルースからどの程度逸脱しているかにも敏感でなければなりません。

平均二乗誤差(MSE)

平均二乗誤差損失関数は、L2損失または二次損失とも呼ばれ、通常、ほとんどの回帰アルゴリズムのデフォルトです。名前が示すように、MSEは、すべてのトレーニング用サンプルにおける予測値と実際の値の差の二乗の平均として計算されます。n個のデータポイントにわたるMSEを計算する式は1n∑i=1n(yi-yi^)2と書かれます。ただし、y は真の値であり、ŷは予測値を表します。

誤差を二乗するということは、結果の値が常に正になることを意味します。そのため、MSEは誤差の大きさのみを評価し、その方向は評価しません。また、誤差を二乗すると、大きな間違いが全体の損失に不釣り合いに大きな影響を及ぼすため、外れ値が強く罰せられ、モデルが外れ値を減らすように動機付けられます。したがって、MSEは、ターゲット出力が正規(ガウス)分布を持つと想定される場合に適しています。

MSEは常に微分可能であるため、勾配降下法による回帰モデルの最適化に有用です。

平均二乗対数誤差(MSLE)

ターゲット出力の潜在的な値の範囲が非常に広い回帰問題(指数関数的増加を伴う問題など)の場合、大きな誤差に対して重いペナルティーを課すと逆効果になる可能性があります。平均二乗対数誤差(MSLE)は、予測値と平均値の差の自然対数の二乗を平均することで、この問題を補正します。ただし、MSLEでは、予測値が高すぎる場合よりも低すぎる場合に、より大きなペナルティーが割り当てられることに注意してください。

MSLEの式は、1n∑i=1n(loge(1+yi)-loge(1+yi^))2と表記されます。

二乗平均平方根誤差(RMSE)

二乗平均平方根誤差はMSEの平方根であり、標準偏差の式と密接に関連しています。具体的には、RMSEは次のように計算されます。

i=1n(yi-yi^)2n .

したがって、RMSEは外れ値に対する感度の点でMSEの特性とほぼ同じですが、出力値自体と同じ単位で損失を表現するため、解釈が容易です。このメリットは、RSMEの計算にはMSEの計算に比べて別の手順が必要となり、計算コストが増加するという事実によって多少相殺されます。

平均絶対誤差(MAE)

平均絶対誤差または L1損失は、予測値と実際の値の平均絶対差を測定します。MSEと同様、MAEは常に正であり、高すぎる推定値と低すぎる推定値を区別しません。これは、すべてのエラーの絶対値の合計をサンプル・サイズで割って計算されます。1ni=1n|yi-yi^|

MAEは各損失値を二乗しないため、MSEよりも外れ値に対してロバストです。したがって、MAEは、モデルに過度の影響を与えない極端な値がデータに含まれている可能性がある場合に最適です。L1損失は、L2損失よりも小さなエラーに対してペナルティーを課します。

予測出力が実際の出力と一致する場合、MAE損失関数は微分可能ではありません。したがって、MAEでは最適化中にさらに多くの回避策が必要になります。

フーバー損失

フーバー損失は 滑らかな L1 損失 とも呼ばれ、MAEとMSEの両方の良いところ取りすることを目的としています。これには、移行点として機能する調整可能なハイパーパラメーターδが組み込まれています。損失値がπ未満であれば、フーバー損失は二次関数(MSEなど)になり、損失値がδより大きい場合、フーバー損失は線形(MAEなど)になります。

 Lδ={12(y-y^)2if|(y-y^)|<δδ(|(y-y^)|-12δ)otherwise

したがって、フーバー損失は、MAEの外れ値に対するロバストさとMSEの勾配降下法による最適化の容易さにより、完全に微分できる関数を提供します。また、δにおいて2次関数的な挙動から線形的な挙動に移行することで、MSE損失と比較して、勾配が消失したり爆発したりするような問題が発生しにくい最適化が行われる。

これらの利点は、δを慎重に定義する必要性によって緩和され、モデル開発の複雑さが増します。フーバー損失は、モデルが外れ値に対してロバストでなければならない一方で、特定のしきい値を超える極端な値には厳しいペナルティーを課す必要がある場合など、MSEもMAEも満足のいく結果を生成できない場合に最も適しています。

分類損失関数

分類の問題と、それを解決するモデルを最適化するために使用される損失関数は、バイナリー分類(例えば、「スパム」または「スパムではない」、「承認」または「拒否」)またはマルチクラス分類に分けられます。

マルチクラス分類問題には2つの方法でアプローチできます。1つのアプローチは、各潜在的なカテゴリーに属するデータ・ポイントの相対的な確率を計算し、最も高い確率が割り当てられたカテゴリーを選択することです。このアプローチは通常、出力層のニューロンにsoftmax活性化関数を使用するニューラル・ネットワークで採用されています。代替アプローチは、問題を一連のバイナリー分類問題に分割するアプローチです。

クロスエントロピー損失関数

ほとんどの場合、分類損失はエントロピーに基づいて計算されます。エントロピーとは、簡単に言えば、システム内の不確実性の尺度です。直感的な例として、コインを投げることとサイコロを振ることを比較してみましょう。コインを投げる場合、可能性は2つあり、サイコロを投げる場合の可能性(6)よりも少ないため、コインを投げる場合の方がエントロピーが低くなります。

教師あり学習では、モデルの予測がデータ・ラベルによって提供されるグラウンド・トゥルースの分類と比較されます。これらのグラウンド・トゥルース・ラベルは確実であるため、エントロピーが低いか、エントロピーがありません。したがって、モデルによって予測されたラベルの確実性と、グラウンド・トゥルース・ラベルを使用した場合の確実性の差の観点から損失を測定できます。

クロスエントロピー損失(CEL)の式は、2つの確率分布の差を測定するKullback-Leibler divergence(KL divergence)の式から派生しています。最終的に、損失を最小限に抑えるには、各潜在的なラベルに割り当てられた確率のグラウンド・トゥルースの分布と、モデルによって予測された各ラベルの相対確率との差を最小限に抑える必要があります。

バイナリー・クロスエントロピー(ログ損失)

バイナリー・クロスエントロピーは、ログ損失とも呼ばれ、バイナリー分類に使用されます。バイナリー分類アルゴリズムは通常、0から1の間の尤度値を出力します。例えば、Eメールのスパム検出モデルでは、出力が1に近いEメール入力には「スパム」というラベルが付けられます。0に近い出力を生成するEメール入力は、「スパムではない」と分類されます。出力が0.5の場合、最大の不確実性またはエントロピーを示します。

アルゴリズムは0から1の間の値を出力しますが、正しい予測のグラウンド・トゥルースの値は正確に「0」または「1」です。したがって、バイナリー・クロスエントロピー損失を最小限に抑えるには、誤った予測にペナルティーを課すだけでなく、確実性の低い予測にもペナルティーを課す必要があります。これにより、モデルは、正しいだけでなく信頼性の高い予測を生成するパラメーターを学習するようになります。さらに、予測される尤度値の対数に重点を置くと、アルゴリズムは確実に間違っている予測に対してより重いペナルティーを課すことになります。

損失値が低いほどエラーが少ないという一般的な慣例を維持するために、結果には -1 が掛けられます。したがって、単一のサンプルiのログ損失は (yi·log(p(yi))+(1-yi)·log(1-p(yi))) という式で計算されます。ここで、yi は真の尤度(0または1)であり、p(yi) は予測される尤度です。したがって、n個のトレーニング用サンプル全体の平均損失は 1n∑i=1nyi·log(p(yi))+(1-yi)·log(1-p(yi)) という式で計算されます。

カテゴリー・クロスエントロピー損失

カテゴリー・クロスエントロピー損失(CCEL)は、この同じ原理をマルチクラス分類に適用します。マルチクラス分類モデルは通常、各潜在的クラスの値を出力し、入力がそれぞれのカテゴリーに属する確率を表します。言い換えれば、予測を確率分布として出力します

ディープラーニングでは、ニューラル・ネットワーク分類器は通常、出力層のニューロンに対してsoftmax活性化関数を使用します。各出力ニューロンの値は0から1までの数値にマッピングされ、値の合計は1になります。

例えば、潜在的なカテゴリーが1つだけ含まれるデータ・ポイントでは、各予測のグラウンド・トゥルースの値は、真のクラスの場合は「1」、誤ったクラスの場合は「0」になります。CCELを最小化するには、正しいクラスの出力値を増やし誤ったクラスの出力値を減らすことが必要であり、それによって確率分布がグラウンド・トゥルースの分布に近づきます。それぞれのサンプルについて、モデルによって予測される潜在的な分類ごとにログ損失を計算する必要があります。

ヒンジ損失

ヒンジ損失は、バイナリー分類問題に対する代替損失関数であり、特にサポート・ベクター・マシン(SVM)モデルの最適化に適しています。具体的には、2つのクラスを分離する決定境界を最適化するための効果的な損失関数です。その後、ポイントは決定境界のどちら側にあるかに応じて分類できます。

ヒンジ損失を使用するアルゴリズムでは、各バイナリー・ラベルのグラウンド・トゥルースの値は{0,1}ではなく{-1, 1}にマッピングされます。ヒンジ損失関数ℓ(𝑦)=max(0,1−𝑡⋅𝑦)と定義されます。ここで、tは真のラベル、yは分類器の従属変数(出力)です。この方程式の結果は常に非負です。1−𝑡⋅𝑦が負の場合(モデルが正しいクラスを予測したためにtyが同じ符号の場合にのみ可能)、損失は代わりに0と定義されます。

これにより、さまざまな可能性とインセンティブがもたらされます。

  • モデルの予測が正しくて信頼できる場合、つまり、yの符号が正しく、|y| ≥ 1の場合、1-t⋅𝑦の値は負になり、したがって = 0になります。

  • モデルの予測は正しいが確信が持てない場合、つまり、y の符号は正しいが |y| < 1 の場合、 の値は0から1の間の正の値になります。これにより、精度に自信を持てない予測が抑制されます。

  • モデルの予測が正しくない場合、つまり、yの符号が正しくない場合、の値は1より大きくなり、|y|の値に比例して増加します。これにより、誤った予測を大幅に回避できます。

特殊な損失関数

一部のモデル・アーキテクチャー、特にディープラーニングで使用されるモデル・アーキテクチャーでは、独自の特殊な損失関数が採用されているようです。このような目的関数は、コンテキストとロジックの点で独特ですが、多くの場合、共通の損失関数を特定のトレーニング目的に特化して適用したものにすぎません(常にそうとは限りません)。

次に例を示します。

  • オートエンコーダーは、独立変数(入力)を「ボトルネック」に押し込むことで圧縮された入力の表現を効率的にエンコードし、その圧縮された表現を使用して元の入力を再構築することを学習する教師なしモデルです。オートエンコーダーは、再構築損失を最小限に抑えることで学習します。再構築損失とは、通常、平均二乗誤差(MSE)によって計算される元の入力と再構築された入力の差のことです。変分オートエンコーダーは、KL情報量を正規化項として組み込みます。

  • オブジェクト検出モデルは、境界ボックス回帰とクロスエントロピー損失の2種類の損失を最小限に抑えます。前者は、MSE、MAE、または交差和集合(IoU)などの特殊な損失を使用して、予測された境界ボックスの座標をグラウンド・トゥルースの座標と比較します。後者はオブジェクト自体の分類を測定します。

  • 自己教師学習の一種である 対照学習 では、類似のデータ・ポイントに対して類似のベクトル埋め込みを出力するようにモデルをトレーニングします。これは、対照的な損失や、トリプレット損失などの特殊な変異を減らすことを目的としています。

関連ソリューション
IBM watsonx.ai

AI開発者向けの次世代エンタープライズ・スタジオであるIBM watsonx.aiを使用して、生成AI、基盤モデル、機械学習機能をトレーニング、検証、チューニング、導入しましょう。わずかなデータとわずかな時間でAIアプリケーションを構築できます。

watsonx.aiをご覧ください。
人工知能ソリューション

業界をリードするIBMのAI専門知識とソリューション製品群を使用すれば、ビジネスにAIを活用できます。

AIソリューションはこちら
AIコンサルティングとサービス

AIの導入で重要なワークフローと業務を再構築し、エクスペリエンス、リアルタイムの意思決定とビジネス価値を最大化します。

AIサービスはこちら
次のステップ

AI開発ライフサイクル全体にわたる機能にワンストップでアクセスできます。使いやすいインターフェース、ワークフロー、業界標準のAPIやSDKを利用して、強力なAIソリューションを構築できます。

watsonx.aiの詳細はこちら デモを予約