| この記事で学ぶこと | 対象読者・前提知識 |
|---|---|
| 損失関数が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.
ご利用規約(免責事項)
当サイト(以下「本サイト」といいます)をご利用になる前に、本ご利用規約(以下「本規約」といいます)をよくお読みください。本サイトを利用された時点で、利用者は本規約の全ての条項に同意したものとみなします。
第1条(目的と情報の性質)
- 本サイトは、医療分野におけるAI技術に関する一般的な情報提供および技術的な学習機会の提供を唯一の目的とします。
- 本サイトで提供されるすべてのコンテンツ(文章、図表、コード、データセットの紹介等を含みますが、これらに限定されません)は、一般的な学習参考用であり、いかなる場合も医学的な助言、診断、治療、またはこれらに準ずる行為(以下「医行為等」といいます)を提供するものではありません。
- 本サイトのコンテンツは、特定の製品、技術、または治療法の有効性、安全性を保証、推奨、または広告・販売促進するものではありません。紹介する技術には研究開発段階のものが含まれており、その臨床応用には、さらなる研究と国内外の規制当局による正式な承認が別途必要です。
- 本サイトは、情報提供を目的としたものであり、特定の治療法を推奨するものではありません。健康に関するご懸念やご相談は、必ず専門の医療機関にご相談ください。
第2条(法令等の遵守)
利用者は、本サイトの利用にあたり、医師法、医薬品、医療機器等の品質、有効性及び安全性の確保等に関する法律(薬機法)、個人情報の保護に関する法律、医療法、医療広告ガイドライン、その他関連する国内外の全ての法令、条例、規則、および各省庁・学会等が定める最新のガイドライン等を、自らの責任において遵守するものとします。これらの適用判断についても、利用者が自ら関係各所に確認するものとし、本サイトは一切の責任を負いません。
第3条(医療行為における責任)
- 本サイトで紹介するAI技術・手法は、あくまで研究段階の技術的解説であり、実際の臨床現場での診断・治療を代替、補助、または推奨するものでは一切ありません。
- 医行為等に関する最終的な判断、決定、およびそれに伴う一切の責任は、必ず法律上その資格を認められた医療専門家(医師、歯科医師等)が負うものとします。AIによる出力を、資格を有する専門家による独立した検証および判断を経ずに利用することを固く禁じます。
- 本サイトの情報に基づくいかなる行為によって利用者または第三者に損害が生じた場合も、本サイト運営者は一切の責任を負いません。実際の臨床判断に際しては、必ず担当の医療専門家にご相談ください。本サイトの利用によって、利用者と本サイト運営者の間に、医師と患者の関係、またはその他いかなる専門的な関係も成立するものではありません。
第4条(情報の正確性・完全性・有用性)
- 本サイトは、掲載する情報(数値、事例、ソースコード、ライブラリのバージョン等)の正確性、完全性、網羅性、有用性、特定目的への適合性、その他一切の事項について、何ら保証するものではありません。
- 掲載情報は執筆時点のものであり、予告なく変更または削除されることがあります。また、技術の進展、ライブラリの更新等により、情報は古くなる可能性があります。利用者は、必ず自身で公式ドキュメント等の最新情報を確認し、自らの責任で情報を利用するものとします。
第5条(AI生成コンテンツに関する注意事項)
本サイトのコンテンツには、AIによる提案を基に作成された部分が含まれる場合がありますが、公開にあたっては人間による監修・編集を経ています。利用者が生成AI等を用いる際は、ハルシネーション(事実に基づかない情報の生成)やバイアスのリスクが内在することを十分に理解し、その出力を鵜呑みにすることなく、必ず専門家による検証を行うものとします。
第6条(知的財産権)
- 本サイトを構成するすべてのコンテンツに関する著作権、商標権、その他一切の知的財産権は、本サイト運営者または正当な権利を有する第三者に帰属します。
- 本サイトのコンテンツを引用、転載、複製、改変、その他の二次利用を行う場合は、著作権法その他関連法規を遵守し、必ず出典を明記するとともに、権利者の許諾を得るなど、適切な手続きを自らの責任で行うものとします。
第7条(プライバシー・倫理)
本サイトで紹介または言及されるデータセット等を利用する場合、利用者は当該データセットに付随するライセンス条件および研究倫理指針を厳格に遵守し、個人情報の匿名化や同意取得の確認など、適用される法規制に基づき必要とされるすべての措置を、自らの責任において講じるものとします。
第8条(利用環境)
本サイトで紹介するソースコードやライブラリは、執筆時点で特定のバージョンおよび実行環境(OS、ハードウェア、依存パッケージ等)を前提としています。利用者の環境における動作を保証するものではなく、互換性の問題等に起因するいかなる不利益・損害についても、本サイト運営者は責任を負いません。
第9条(免責事項)
- 本サイト運営者は、利用者が本サイトを利用したこと、または利用できなかったことによって生じる一切の損害(直接損害、間接損害、付随的損害、特別損害、懲罰的損害、逸失利益、データの消失、プログラムの毀損等を含みますが、これらに限定されません)について、その原因の如何を問わず、一切の法的責任を負わないものとします。
- 本サイトの利用は、学習および研究目的に限定されるものとし、それ以外の目的での利用はご遠慮ください。
- 本サイトの利用に関連して、利用者と第三者との間で紛争が生じた場合、利用者は自らの費用と責任においてこれを解決するものとし、本サイト運営者に一切の迷惑または損害を与えないものとします。
- 本サイト運営者は、いつでも予告なく本サイトの運営を中断、中止、または内容を変更できるものとし、これによって利用者に生じたいかなる損害についても責任を負いません。
第10条(規約の変更)
本サイト運営者は、必要と判断した場合、利用者の承諾を得ることなく、いつでも本規約を変更することができます。変更後の規約は、本サイト上に掲載された時点で効力を生じるものとし、利用者は変更後の規約に拘束されるものとします。
第11条(準拠法および合意管轄)
本規約の解釈にあたっては、日本法を準拠法とします。本サイトの利用および本規約に関連して生じる一切の紛争については、東京地方裁判所を第一審の専属的合意管轄裁判所とします。
For J³, may joy follow you.

