ソフトマックス関数とその微分

2026/10/02 8:24

ソフトマックス関数とその微分

RSS: https://news.ycombinator.com/rss

要約▶

日本語訳:

元のサマリーは強力です。入力・出力のベクトル次元を明示的に述べ、微分がヤコビアン行列であることを明確にし、指数関数をとる前に最大値を引くことでオーバーフロー/NaNを防ぎ安定性を達成することを指定することで、明瞭性と精密性が若干向上します。以下に、これらの clarification を取り入れつつ元のコンテンツを保持した改善版を示します:

テキストは、ソフトマックス関数が N 次元の実数ベクトルを、要素の和が 1 であり (0, 1) の範囲にある確率の別の N 次元ベクトルへマッピングすることを説明しています。この振る舞いは入力間の差を増幅し、「ソフト」な最大演算子として動作するため、フル接続層からの logit を多クラス分類のためのクラス確率に変換する際に標準的に用いられます。要素ごとの公式は exp(x[i]) / sum(exp(x)) であり、より大きな入力の変動が結果の分布に支配的であるという実用的な例 ([1, 2, 3] → ~[0.09, 0.24, 0.67]; [1, 2, 5] → ~[0.02, 0.05, 0.93]) が示されています。数学的に、ソフトマックスの微分は複数の入力が複数の出力へマッピングするためヤコビアン行列となりますが、クロスエントロピー損失と組み合わされる場合、全体的な勾配は (P − Y) に簡略化され、学習を大幅に効率化します。大規模データセットでの数値的安定性を確保し、オーバーフロー/NaN を防ぐため、実装では指数関数をとる前に入力から最大値を引きます(例:np.exp(x) / np.sum(np.exp(x)) は非常に大きい x に対して NaN を生成する可能性があるが、安定版はそうしない)。これらの性質により、ソフトマックス層は深層学習の最終出力予測において汎用性と信頼性を備えています。

本文

ソフトマックス関数:原理・導関数・数値的安定性

ソフトマックス関数は、機械学習における多クラス分類タスクで広く使用される重要な活性化関数です。本記事では、その数学的な定義、確率的解釈、微分法、数値的安定性の確保方法、そして損失関数との組み合わせについて解説します。

1. ソフトマックス関数の基本原理

ソフトマックス関数は、任意の実数の $N$ 次元ベクトルを受け取り、合計が 1.0 になる $(0, 1)$ の範囲の別の $N$ 次元実数ベクトル(確率分布)を生成します。

数学的定義

個々の要素 $s_i$ に対する式は以下の通りです:

$$ s_i = \frac{e^{z_i}}{\sum_{k} e^{z_k}} $$

なぜ出力が $(0, 1)$ の範囲で合計が 1.0 になるか?

  • 指数関数の性質: $e^{z_k}$ は常に正($>0$)です。
  • 部分分数の性質: 分子 ($e^{z_k}$) は分母(すべての正数の和)の一部であるため、必ず $0 < \frac{e^{z_k}}{\sum e^{z_i}} < 1$ が成り立ちます。

インタプリテーション

ソフトマックスは**「柔らかい(soft)」最大値関数**と考えることができます。

  • 最大の要素: 入力ベクトルの最も大きな要素に対して、出力の合計 1.0 を大きく割り当てます。
  • 他の要素: 他の要素にもわずかな確率を割り当てます。

例:

  • 入力
    [1.0, 2.0, 3.0]
    → 出力
    [0.09, 0.24, 0.67]
    • 最後の要素 (3.0) が最も大きく、結果を支配しています。
  • 入力を
    [1.0, 2.0, 5.0]
    に変更した場合:
    • 出力は
      [0.02, 0.05, 0.93]
      となり、最後の要素の影響力がさらに強まります。

2. 確率的解釈と多クラス分類

ソフトマックス関数の特性(和が 1 で要素は正)は、確率分布を表すのに適しています。特に、入力データがどの出力クラスに属するかを示す確率を割り当てるために使用されます。

一般的な用途

多クラスロジスティック回帰などで以下のように解釈されます:

  1. 入力の処理: 入力ベクトル $\mathbf{x}$ を重み行列 $\mathbf{W}$ との内積を取ってログット(logits)$\mathbf{z} = \mathbf{x}\mathbf{W}$ を得る。
  2. 確率変換: ログットをソフトマックス関数にかけ、確率ベクトルに変換する。

3. ベクトル微分法とヤコビアン

ソフトマックスはベクトルを入力としベクトルも出力するため、単一の「導関数」ではなく**ヤコビアン行列(Jacobian matrix)**を計算する必要があります。

求めるべき導関数

$$ \frac{\partial \text{softmax}_i}{\partial a_j} $$

  • $a$: 入力ベクトル
  • $s$: ソフトマックス出力ベクトル

ヤコビアン行列 $\mathbf{J}$ は以下の形状を持ちます: $$ \mathbf{J}_{ij} = \frac{\partial s_i}{\partial a_j} $$

導関数の導出(商則を用いる)

$$ s_i = \frac{e^{a_i}}{\sum_k e^{a_k}} = \frac{e^{a_i}}{\Sigma} \quad (\Sigma = \sum_k e^{a_k}) $$

商則を適用すると、以下の 2 つの場合に分けられます:

  1. $i = j$ の場合(自身の入力に対する偏微分): $$ \frac{\partial s_i}{\partial a_i} = s_i (1 - s_i) $$
  2. $i \neq j$ の場合(他要素の入力に対する偏微分): $$ \frac{\partial s_i}{\partial a_j} = -s_i s_j $$

簡潔な表記(クロネッカーのデルタ)

上述の結果は、クロネッカーのデルタ関数 $\delta_{ij}$($i=j$ のとき 1, $i \neq j$ のとき 0)を用いて以下のように一つにまとめられます:

$$ \frac{\partial s_i}{\partial a_j} = s_i (\delta_{ij} - s_j) $$

4. ソフトマックスと数値的安定性

単純な実装では、入力が大きい場合や負の場合に**数値的不安定(NaN や Inf)**が発生します。

問題:単純な実装の欠陥

def softmax(x):
    """Compute the softmax of vector x."""
    exps = np.exp(x)
    return exps / np.sum(exps)
  • 大数の場合:
    softmax([1000, 2000, 3000])
    はすべて
    nan
    になります。
    • 理由: $e^{x}$ が非常に大きくなり、浮動小数点数の範囲を超えてしまうためです(例:$e^{709} \approx \text{Inf}$)。

解決策:入力シフト

数学的には、任意の定数 $C$ を足しても結果は変わらないことが証明できます: $$ s_i(x + C) = \frac{e^{x_i+C}}{\sum_k e^{x_k+C}} = \frac{e^C e^{x_i}}{e^C \sum_k e^{x_k}} = s_i(x) $$

これを利用して、**すべての入力値から最大値を引く(シフトする)**ことで安定性を確保します。これにより、最大の指数が 0 となり、他の指数は負の値になります($e^{\text{負}}$ は非常に小さい正数なので安全)。

安定した実装例

def stable_softmax(x):
    """Compute the softmax of vector x in a numerically stable way."""
    # 入力から最大値を引くことで、exp の引数を範囲内に収める
    shiftx = x - np.max(x) 
    exps = np.exp(shiftx)
    return exps / np.sum(exps)

5. ソフトマックスレイヤーと損失関数の微分計算

機械学習では、全結合層(行列積)の後にソフトマックスを適用し、さらにクロスエントロピー損失関数を組み合わせることが一般的です。ここでは**連鎖律(Chain Rule)**とヤコビアンを用いて、重み行列 $\mathbf{W}$ に関する勾配を第一原理から導出します。

アーキテクチャ

$$ \mathbf{y} = \text{softmax}(\mathbf{x}\mathbf{W}) $$

連鎖律の適用

損失関数 $L$ を重み $\mathbf{W}$ で微分するには、以下のステップを経ます:

  1. ヤコビアン計算:
    • ソフトマックス層のヤコビアン(出力確率空間での勾配)
    • 全結合層のヤコビアン(入力ログットから重みへの勾配)
  2. 行列積:
    • これらのヤコビアンを掛け合わせることで、最終的な $\nabla_{\mathbf{W}} L$ を得る。

クロスエントロピー損失との組み合わせ

クロスエントロピー損失 $H(P, Q)$ は: $$ L = -\sum_k P(k) \ln(Q(k)) $$ (ここで $P$ はモデル予測、$Q$ は正解ラベル)

ソフトマックス層とクロスエントロピーを組み合わせると、微分計算が大幅に簡略化されます。最終的な重みに対する勾配は以下の美しい形になります:

$$ \frac{\partial L}{\partial W_{ij}} = (\mathbf{y}_i - t_i) $$

  • $\mathbf{y}$: ソフトマックス出力(予測確率)
  • $t$: 正解ラベル(独熱エンコードベクトル)

この式は、予測値と真値の差を重みに直接反映する意味を持ちます。ヤコビアン行列を使って計算しても、要素ごとのキャンセル効果によって同様の簡潔な結果が得られます。

同じ日のほかのニュース

一覧に戻る →

2026/10/04 7:07

連邦裁判官が「Flock」を「恣意的な大規模監視」と批判

## 日本語翻訳: Tulsa の連邦裁判所は、最近の重要な判決において、シエリフ補佐官が Flock Safety を用いて令状なしに女性のナンバープレートを検索した行為が第四条修正(第 4 条修正)の権利を侵害したと判断し、ヒル判事はその捜索が彼女の車両にカリフォルニア州のナンバープレートがあることのみによる動機付けであるように見ると指摘しました。同判決は拘束力のある先例を確立するものではありませんが、このデータベースに対する自動化された検索が無憲法違反であると宣言する最初の連邦判決の一つとして位置づけられます。ヒル判事は、「公衆の所在を目録化するような恣意的な大規模監視」を「合憲的な問題がある」と非難し、Carpenter v. United States において取り扱われたターゲット指向のアプローチとは区別しました。Flock データを通じてメタン 91 ポンドが発見されたことを受け、ヒル判事は証拠を「有毒の木の果実」として押収 orders の発令しました。この事件は、政治的・法的な反対が高まっている時期に登場しています:Bernie Sanders 上院議員は、連邦機関がそのような自動読み取り装置を使用することを禁ずる Block Flock 法案を導入し、フロリダ州やテキサス州を含む各州ではこの技術の使用を停止する計画を発表しました。これに対し、Flock の CEO の Garretty Langley は、Flock を使用する法執行ユーザーによってストーキングされた女性らに謝罪するとともに、プライバシーと安全との間の妥協点を求める呼びかけを行いました。一方、キャンセルが増える中、同社は従業員への自主的な退職支援(voluntary buyout)を開始し、人員削減を図っています。

2026/10/04 3:06

ホールパンチ:重力場をスリングして宇宙船を操る

## 日本語訳: 提供されたテキストには実質的な情報が含まれておらず、単に特定の項目識別子のみを特定しており、それに関連する文脈が欠落しています。証拠、根拠、または背景の詳細がないため、意味のある物語を構築したり、中心的なメッセージを特定したりすることは不可能です。さらに、入力にはより広いトピックを理解するために不可欠な将来の発展、潜在的な影響、または関連事例について言及されていません。したがって、この断片単体から論理的な要約を導き出すことはできません。有効な概要を作成するには、項目の説明、重要性、および関連する周囲の状況を含む全文書へのアクセスが必要です。現状のままでは、テキストは単に生粋の参照コードとして機能し、コミュニケーションのための文章ではありません。そのような限られたデータを要約しようとすることは、当然ながら推測や捏造を招き、利用可能な事実に基づく正確性の要求に違反します。したがって、唯一妥当な結論は、問題となる項目に関するいかなる主張または討論も支えるのに不十分であるということです。 ## 翻訳元のテキスト: ## Summary: The provided text contains no substantive information because it identifies only a specific item identifier without any accompanying context. Without evidence, reasoning, or background details, it is impossible to construct a meaningful narrative or identify a central message. Furthermore, the input lacks any mention of future developments, potential impacts, or related cases that are essential for understanding a broader topic. Consequently, no logical summary can be derived from this fragment alone. To generate an effective overview, one would need access to the full document containing the item's description, its significance, and any relevant surrounding circumstances. As it stands, the text functions merely as a raw reference code rather than a communicative passage. Attempting to summarize such limited data would inevitably result in speculation or fabrication, which violates the requirement for accuracy based on available facts. Therefore, the only valid conclusion is that the source material is insufficient to support any claim or discussion regarding the item in question.

2026/10/04 3:01

ロダン美術館の3Dスキャン裁判判決での裏切り

## Japanese Translation: Cosmo Wenman は 2026 年 10 月 13 日(CEST 14:00–15:00)に「COMMUNIA Salon: The Rodin Case」にて、オーギュスト・ロダンの彫刻の 3D スキャンを巡る高プロファイルな情報公開に関する事件について検討する。著者が 2017 年にアクセス権の付与を求めた後、市民権活動家の Alexis Fitzjean Ó Cobhthaigh は Communia、Wikimédia France、La Quadrature du Net とともにその代理を務め、CADA(行政裁判所)は 2019 年に著者の側で判決を下した。2023 年 12 月には、パリ行政裁判所がロダン美術館および文化省に対しスキャンの公開を命じるとともに、これらの機関から効果的な上訴を受けられなかった著者に€1,500 の損害賠償を付けた。本案はフランス最高行政法院である Conseil d'État に再審され、2025 年 12 月の判決において、rapporteure publique(公の報告官)はルネ・マジットの『イメージの裏切り』に言及し、スキャンが物理的な原本なしには不可読であると主張した。Conseil d'État は、3D スキャンを物理的な複製と法的に区別できないものと認定し、これを行政文書ではなく譲渡不能な芸術コレクションの一部として分類した。裁判所はパリの判決を破棄し、著者に€3,000 の支払いを命じ、決定について書面による通知を発しなかった。Wenman は、この結局が情報公開(FOI)メカニズムの潜在的な濫用を示している点を分析する。その中で、手続的な動きや技術的な定義を用いて、機関が開示義務から守られることが可能になることを指摘する。