この記事で学ぶこと | 対象読者・前提知識 |
---|---|
損失関数がAIの学習における「評価指標」であることを説明できる。 回帰問題と分類問題のタスクの違いを理解し、それぞれに適した損失関数を挙げられる。 二乗和誤差と交差エントロピー誤差の基本的な考え方を説明できる。 | AIの背景にある数学の考え方を、直感的に学びたいと考えている医療従事者、研究者、学生の方。 AIやプログラミングの経験は問いません。 第4回で学んだ、AIの学習が「損失の山を下る」プロセスであるという概念を理解していると、本記事の意義がより明確になります。 |
はじめに:AIの学習における「間違い」の測り方
前回の講座では、AIが自らを賢くしていく「学習」のプロセスが、勾配という羅針盤を頼りに「損失の山」を下っていく旅のようなものであることを見ました。AIは、この勾配が指し示す方向(の逆)にパラメータを少しずつ調整することで、山の谷底、つまり最も間違いの少ない地点を目指します。
しかし、ここで一つの極めて重要な疑問が残されています。それは、「そもそも、この『損失の山』とは一体何なのか?」ということです。
AIは、自分の予測がどれくらい「良い」のか、あるいはどれくらい「悪い」のかを、どのようにして判断しているのでしょうか?AIが自身の「間違い」を測るための“ものさし”、それこそが今回のテーマである損失関数 (Loss Function)、または誤差関数 (Error Function) です。
この損失関数を正しく設定することなしに、AIの学習は始まりません。今回は、AIがタスクに応じてどのように「間違い」を数値化し、自らを評価しているのか、その核心に迫ります。
1. 損失関数とは?— AIの「自己評価」のための“ものさし”
損失関数とは、AIモデルの「予測」と「正解」との間の“ズレ”を、一つの数値(スカラー)として定量化するための関数です。この数値は「損失」や「誤差」「コスト」などと呼ばれます。
- 損失が小さい: AIの予測が、正解に近い(性能が良い)。
- 損失が大きい: AIの予測が、正解から大きく外れている(性能が悪い)。
AIの学習における究極の目標は、この損失関数から計算される値が、データセット全体で最小になるような、最適なパラメータ(重みやバイアス)を見つけ出すことに他なりません。
私たちが「損失の山」と呼んできたものの正体は、この損失関数そのものなのです。山の各地点の座標がAIのパラメータに対応し、その地点の「標高」が損失の値に対応します。勾配降下法は、この地形図の上で、標高が最も低くなる地点を探すためのアルゴリズムだった、というわけです。
2. タスクに応じた損失関数の選択 — 「回帰」と「分類」
損失の測り方は、AIに解かせたいタスクの種類によって異なります。テストの採点方法が、記述式問題と選択式問題で異なるのと同じです。AIのタスクは、大きく回帰 (Regression) と分類 (Classification) の2つに分けられ、それぞれに適した損失関数が使われます。
- 回帰 (Regression)
- タスク: 連続的な数値を予測する。(例:明日の最高気温、株価、患者の余命など)
- 医療での例: 患者のデータから、1年後のHbA1c値や血圧、腫瘍のサイズを予測する。
- 代表的な損失関数: 二乗和誤差 (Sum of Squared Error, SSE)、平均二乗誤差 (Mean Squared Error, MSE)
- 分類 (Classification)
- タスク: データがどのカテゴリに属するかを予測する。(例:画像が犬か猫か、メールがスパムか否か)
- 医療での例: CT画像から結節が「悪性」か「良性」かを予測する(2クラス分類)。あるいは、病理組織画像からがんのサブタイプを5種類のうちのどれかに分類する(多クラス分類)。
- 代表的な損失関数: 交差エントロピー誤差 (Cross-Entropy Error)
タスクの性質に合わせて適切な損失関数(評価の“ものさし”)を選ぶことが、AIモデル開発の第一歩です。
3. 代表的な損失関数を覗いてみる
それでは、回帰と分類で使われる、最も代表的な2つの損失関数の中身を見ていきましょう。
a) 二乗和誤差 (Sum of Squared Error) — 回帰問題の標準的な“ものさし”
二乗和誤差は、回帰問題で最も一般的に用いられる損失関数です。その式は以下のように表されます。
\[L = \frac{1}{2} \sum_{k} (y_k – t_k)^2\]
- \(y_k\): AIモデルの予測値(例:予測した1年後のHbA1c値)
- \(t_k\): 正解の値(例:実際の1年後のHbA1c値)
- \((y_k – t_k)\): 予測と正解の単純な差(誤差)
- \((\dots)^2\): 誤差を2乗する。これには2つの意味があります。
- 誤差の符号(プラスかマイナスか)を消し、ズレの大きさだけを評価する。
- 大きな誤差にはより大きなペナルティを、小さな誤差にはより小さなペナルティを与える(外れ値に敏感になる)。
- \(\sum_{k}\): 全てのデータ(全ての患者さん)について、この2乗誤差を合計する。
(式の前にある \(\frac{1}{2}\) は、後で微分する際に計算を簡単にするためのおまじないのようなもので、本質的な意味合いを変えるものではありません。)
非常に直感的で、予測値と正解値の「距離」の総和を測っているようなイメージですね。
b) 交差エントロピー誤差 (Cross-Entropy Error) — 分類問題の“ものさし”
分類問題では、二乗和誤差よりも交差エントロピー誤差の方が、学習が効率的に進むことが知られており、広く使われています(1), (2)。式は以下のように表されます。
\[L = – \sum_{k} t_k \log(y_k)\]
- \(y_k\): AIの予測。各カテゴリに属する確率のベクトル(例:
[猫である確率, 犬である確率, 鳥である確率]
->[0.1, 0.7, 0.2]
)。通常、Softmax関数の出力がこれにあたります。 - \(t_k\): 正解ラベル。one-hot表現という形式のベクトル(例:正解が「犬」なら
[0, 1, 0]
)。正解のカテゴリだけが1で、他は0になります。
この式は少し複雑に見えますが、one-hot表現のおかげで、実際には非常にシンプルな計算になります。\(t_k\)は正解のカテゴリでしか1にならないので、上記の和の計算は、実質的に正解カテゴリに対する項だけが残ります。
\[L = -\log(y_{\text{正解カテゴリ}})\]
例えば、AIが「犬」と予測した確率が0.7だった場合、損失は \(-\log(0.7)\) となります。
この関数の優れた点は、AIが自信を持って間違えたときに、非常に大きなペナルティを与えることです。
- 予測が正しく、自信がある場合: \(y_k \to 1\) に近づく → \(-\log(y_k) \to 0\) (損失がゼロに近づく)
- 予測が間違っており、自信がある場合: \(y_k \to 0\) に近づく → \(-\log(y_k) \to \infty\) (損失が無限大に発散する)
この性質により、AIは「大きな間違い」から効率的に学習を進めることができるのです。
4. Pythonで損失関数を可視化する
二乗和誤差(の要素)と交差エントロピー誤差の「ペナルティの与え方」の違いを、グラフで視覚的に比較してみましょう。
【実行前の準備】
以下のコードで日本語のグラフを表示させるには、あらかじめターミナルやコマンドプロンプトで pip install japanize-matplotlib
を実行してライブラリをインストールしてください。
import numpy as np
import matplotlib.pyplot as plt
import japanize_matplotlib
# AIの予測確率 (0から1まで) を表現するx軸データ
# 0に近づくとエラーが無限大になるため、0.01から開始
x = np.linspace(0.01, 1.0, 100)
# 正解を「1」とした場合の二乗和誤差の要素を計算
# 損失 = (正解 - 予測)^2 = (1 - x)^2
y_mse = (1 - x)**2
# 正解を「1」とした場合の交差エントロピー誤差を計算
# 損失 = -log(予測)
y_ce = -np.log(x)
# グラフを描画して比較
plt.figure(figsize=(10, 6))
plt.plot(x, y_mse, label='二乗和誤差 (要素)', linestyle='--')
plt.plot(x, y_ce, label='交差エントロピー誤差', color='red')
plt.title('損失関数の比較(正解=1の場合)', fontsize=16)
plt.xlabel('AIの予測確率', fontsize=12)
plt.ylabel('損失(間違いの大きさ)', fontsize=12)
plt.grid(True, alpha=0.5)
plt.legend()
plt.show()
(注:上記コードを実行すると、2つの損失関数の挙動を比較するグラフが描画されます。)

このグラフから、予測確率が1(正解)に近づくにつれて両方の損失が0に近づく一方、0(不正解)に近づくにつれて、交差エントロピー誤差(赤線)の方が二乗和誤差(青線)よりも遥かに急激に損失が増大することが分かります。これが、分類問題で交差エントロピー誤差が好まれる理由の一つです。
理解度チェッククイズ
1. 患者の「1年後の体重」を予測するタスクは、一般的に何問題と呼ばれますか?
- 分類
- 回帰
- クラスタリング
2. 二乗和誤差が主に使われるのは、どのようなタスクですか?
- 回帰問題
- 分類問題
- 次元削減
3. AIが「99%の確率で良性」と予測したのに、正解が「悪性」だった場合、交差エントロピー誤差の値はどうなりますか?
- ほぼ0になる
- 1に近づく
- 非常に大きな値になる
答え1-b, 2-a, 3-c
まとめ:学習の「目的」を定義する損失関数
- 損失関数は、AIの予測と正解の「ズレ」を数値化する“ものさし”であり、AIが学習で最小化を目指す目的そのものです。
- 予測する対象に応じて、回帰タスクでは二乗和誤差、分類タスクでは交差エントロピー誤差などが代表的な損失関数として用いられます。
- 優れた損失関数は、AIが間違いから効率的に学べるような性質を持っています。
私たちはついに、AIが下るべき「山の地形図」である損失関数を手に入れました。では、具体的にどうやって山を下るのでしょうか?
次回、第6回「最適化アルゴリズム — 学習を前に進める工夫たち」では、勾配降下法をベースとしながら、より賢く、より速く谷底にたどり着くための様々な「下山テクニック」について探っていきます。
参考文献
- Goodfellow I, Bengio Y, Courville A. Deep Learning. MIT Press; 2016. Chapter 5.
- Bishop CM. Pattern Recognition and Machine Learning. New York: Springer; 2006. Chapter 4.
- James G, Witten D, Hastie T, Tibshirani R. An Introduction to Statistical Learning. Springer; 2013.
- Deisenroth MP, Faisal AA, Ong CS. Mathematics for Machine Learning. Cambridge, UK: Cambridge University Press; 2020.
- Murphy KP. Machine Learning: A Probabilistic Perspective. MIT Press; 2012.
- 法令遵守について
本教材はあくまで一般的な学習参考用の内容であり、医師法、薬機法、個人情報保護法、医療広告ガイドライン等の適用判断については、必ず厚生労働省・PMDA・経済産業省・各学会などの最新の法令・ガイドラインをご自身でご確認のうえご利用ください。 - 医療行為の責任について
本資料で紹介する AI 技術・手法は臨床診断・治療の補助を目的としていますが、最終的な診断・治療方針の決定および報告書の承認は必ず医師などの専門資格保持者が行ってください。AI の結果のみを鵜呑みにせず、Human-in-the-Loop の原則に則り、人間専門家による検証プロセスを実施してください。
本コンテンツは、医療AIに関する技術的な学習と理解を深めることを目的としており、特定の医療行為を推奨、あるいは医学的助言を提供するものではありません。実際の臨床判断は、必ず担当の医療専門家にご相談ください。 - プライバシー保護について
本コース内で紹介するデータセットを利用する際は、各データセットのライセンス条件および研究倫理指針を厳守し、患者情報の匿名化・同意取得など必要な個人情報保護措置を確実に講じてください。 - 知的財産権について
本記事中の図表・コード・文章などを二次利用または転載する場合は、必ず引用元を明示し、権利者の許諾および適切なライセンス表記を行ってください。 - 情報の正確性について
本資料に記載する数値、事例、ライブラリのバージョン情報などは執筆時点の情報に基づいています。機能やライブラリはアップデートにより変更される可能性がありますので、必ず最新の公式ドキュメントや文献をご確認のうえ適宜アップデートしてご活用ください。 - AI 活用の留意点
本内容には AI の提案をもとに作成した部分が含まれていますが、最終的には専門家の監修・編集のもとで公開しています。特に生成系 AI を用いる場合は、ハルシネーション(誤情報)やバイアスに十分注意し、必ず人間専門家が結果を検証してください。 - 免責事項
本資料の利用によって生じたいかなる損害についても、著作者および提供者は一切の責任を負いません。研究・学習目的以外での利用はご遠慮ください。 - 対象読者・前提知識
本教材は医療従事者および AI 技術に関心のある技術者を主対象とし、Python の基礎知識や統計学の初歩的理解を前提としています。 - 環境・互換性
本資料で扱うコード/ライブラリは執筆時点の特定バージョンを前提としています(例:PyTorch 2.0、Transformers 4.x)。実行環境(OS、ハードウェア、依存パッケージ)によっては動作しない場合がありますのでご注意ください。 - 免責範囲の明確化
本教材に記載された内容はいかなる場合も「診療行為」としての効力を持ちません。製品やサービスの導入検討にあたっては、別途法務・品質保証部門との協議および正式な承認プロセスを経てください。
For J³, may joy follow you.
コメント