技術 約21分で読めます

AIの記事でよく出る微分、ここだけ読めれば怖くない

いけさん目次

前回の確率と統計までで、LLMの学習ログやモデルカードの数字はだいぶ読めるようになる。 ただ、実際のモデルが「損失を下げる方向にどう動くのか」を追いかけようとすると、今度は微分の記号が出てくる。 dLdw\frac{dL}{dw}\partial\nabla あたりで閉じてしまう人も多いと思う。

この記事もシリーズ前3本と同じで、解けるようになる必要はなく、読めるようになることを目標にする。

微分の厳密な計算ルールは出さない。 ddx\frac{d}{dx}f(x)f'(x)fx\frac{\partial f}{\partial x}f\nabla f の4つが「何をやっているか」で読めれば、AI記事の微分まわりはかなり追える。

勾配降下と逆伝播は連鎖律・勾配がそのまま主役になる話なので、次の記事でまとめて扱う。

微分は「傾き」を取り出す計算

微分のコアはこれだけだ。 「ある関数のある点で、入力を少し動かしたら出力がどれだけ動くか」

中学・高校で出てきた 変化の割合 を、動かす幅を限りなく小さくしたもの、と言ってもいい。

グラフでいうと、曲線上のある点を通る 接線 の傾きが、その点での微分値になる。

関数の接線と傾き 放物線上の3点での接線を描き、それぞれの傾きが左で負・中央で0・右で正になる様子 x y 傾き負 傾き0 傾き正
曲線上のある点の「接線の傾き」がその点での微分値。点ごとに値は変わる。
  • 上向きに急な点 → 微分値は大きなプラス
  • 平らな点(頂点など) → 微分値は0
  • 下向きに急な点 → 微分値は大きなマイナス

この「点ごとの傾き」は、高校数学では2段階で整理されている。 まず、ある特定の点 x=ax = a での瞬間の傾きの値を 微分係数 と呼び、f(a)f'(a) と書く。 これを aa だけでなくどの xx に対しても返せるように関数の形にまとめ直したものが 導関数 で、記号は f(x)f'(x)dfdx\frac{df}{dx} が使われる。 「微分する」とは、元の関数 f(x)f(x) からこの導関数 f(x)f'(x) を作り出す操作のことだ。

AIでは損失 LL をパラメータ ww で微分した dLdw\frac{dL}{dw} を計算して、「重みをちょっと動かしたら損失がどれだけ動くか」を見ている。 「損失が減る方向に重みを動かす」ができるのは、この傾きが測れるからだ。

d/dx と f’(x) の読み方

微分の書き方は、主に2種類の記法が使われる。

  1. ライプニッツ記法: ddxf(x)\frac{d}{dx} f(x) または dfdx\frac{df}{dx}
  2. ラグランジュ記法: f(x)f'(x) または yy'

どちらも「ffxx で微分する」という同じ意味だ。使い分けは書きやすさや見やすさの問題で、意味の違いはない。

  • dfdx\frac{df}{dx} は分数のような見た目だが、「dfdf」と「dxdx」を別々に割り算しているわけではない。「xx を微小に動かしたときの ff の微小な変化」の気持ちを記号で表している。
  • f(x)f'(x) は短くて書きやすく、式の途中で何度も微分を使うときに便利。
  • xx で微分する」の「で」は、「どの変数に対して変化率を測るか」を指している。

AIの論文や解説では、どの変数で微分しているかを明示したい場面が多いので、ライプニッツ記法(Lw\frac{\partial L}{\partial w} のような形)のほうがよく見る。

分数じゃないのに分数っぽくバラすテクが許される理由

受験や大学の微積分を進めていくと、dydx=f(x)\frac{dy}{dx} = f(x)dy=f(x)dxdy = f(x)dx とバラして扱うテクニック(置換積分や変数分離形の微分方程式)に出会う。 「1つの記号扱いのはずなのに、分数として扱っていいのか?」と引っかかった人向けに、短答だけ置いておく。

もともとライプニッツが17世紀にこの記号を作ったときは、dxdxdydy は「無限に小さい量」として本当に分数だった。 現代の厳密な微積分では dydx\frac{dy}{dx} は1つの記号扱いだが、バラす操作は連鎖律や置換積分の定理のショートカット記法として裏で正当化されている。 厳密な話は大学の微分形式や解析学で嫌でもやるので、高校〜入試の間は「結果が合う便利な道具」と割り切って足りる。

具体例で感覚を掴む

y=xy = xy=x2y = x^2y=x3y = x^3 のように、y=xny = x^n の形をした関数を べき関数 と呼ぶ。 nn の部分を 指数 といい、「xx を何回掛け合わせるか」を表している。nn はプラスの整数だけでなく、マイナス(x1=1/xx^{-1} = 1/x)や分数(x1/2=xx^{1/2} = \sqrt{x})もOKで、全部べき関数の仲間だ。

このべき関数の微分から入ると感覚が掴みやすい。

  • y=x2y = x^2 を微分すると y=2xy' = 2x
  • y=x3y = x^3 を微分すると y=3x2y' = 3x^2
  • y=x10y = x^{10} を微分すると y=10x9y' = 10x^9

並べて見ると規則が見える。

(xn)=nxn1(x^n)' = n x^{n-1}

「肩に乗っていた指数が前に降りてきて、指数が1つ減る」というルールだ。 手で計算するときの主役になる公式で、AI 記事ではこの形の微分が一番よく出る。

元の関数導関数
y=xy = xy=1y' = 1
y=x2y = x^2y=2xy' = 2x
y=x3y = x^3y=3x2y' = 3x^2
y=x1=1/xy = x^{-1} = 1/xy=x2=1x2y' = -x^{-2} = -\dfrac{1}{x^2}
y=x1/2=xy = x^{1/2} = \sqrt{x}y=12x1/2=12xy' = \dfrac{1}{2}x^{-1/2} = \dfrac{1}{2\sqrt{x}}
y=5y = 5(定数)y=0y' = 0

公式 (xn)=nxn1(x^n)' = n x^{n-1} は、nn がマイナスでも分数でもそのまま当てはまる。 肩の指数を前に降ろして、指数を1減らす、という手順をそのまま適用するだけだ。

定数は微分すると0になる。 「変化しない値の傾き」は0だ、と読める。

よく使う微分の形

AI記事で出てくる関数の微分は、この表で足りる。

表には指数関数 axa^x が初登場する。これはべき関数 xnx^n とちょうど逆の構造で、底 aa が定数、指数 xx が変数の関数だ。 名前は似ているが、xx がどこにいるかで別の仲間になる。

  • べき関数 xnx^n: 底が動く変数、指数は固定
  • 指数関数 axa^x: 底は固定、指数が動く変数

exe^x は指数関数の a=ea = e の場合で、あとで出てくる 対数関数 logx\log x は指数関数の逆関数(「ee を何乗したら xx になるか」を返す関数)になる。

元の関数導関数
xnx^n (べき関数)nxn1n x^{n-1}
exe^x (指数関数の代表)exe^x(そのまま)
logx\log x (自然対数)1/x1/x
sinx\sin xcosx\cos x
cosx\cos xsinx-\sin x
定数 cc00

全部覚える必要はなく、「exe^x は微分しても exe^x」「logx\log x の微分は 1/x1/x」の2つだけでも、AIの式を読むときの助けになる。

ここで2つとも底が ee や自然対数で出てくるのがポイントで、次の節で正体を掘る。

e の正体

前回までで「ee は約2.71828…の特別な定数で、微積の話で出てくる」と先送りしてきた。ここで回収する。

出自は複利の極限

ee が歴史上最初に姿を現したのは、複利計算の話だ。 「元本1を年利100%で借りたとき、利息を年 nn 回に分けて複利で付けていくと、1年後にいくらまで増えるか」を考える。

  • 年1回複利: (1+1)1=2(1 + 1)^1 = 2
  • 半年ごと複利: (1+1/2)2=2.25(1 + 1/2)^2 = 2.25
  • 四半期ごと複利: (1+1/4)42.441(1 + 1/4)^4 \approx 2.441
  • 月ごと複利: (1+1/12)122.613(1 + 1/12)^{12} \approx 2.613
  • もっと細かく…

nn を大きくするほど増えるが、無限に増え続けるわけではなく、ある定数に収束する。

e=limn(1+1n)n2.71828e = \lim_{n \to \infty}\left(1 + \frac{1}{n}\right)^n \approx 2.71828\ldots

これが ee の出自で、17世紀に Jacob Bernoulli が複利の限界を考えていて見つけた定数だ。

結果として、微分でも特別な性質を持つ

この ee、微分の世界でも特別な顔をする。

(ex)=ex(e^x)' = e^x

普通の指数関数 axa^x を微分すると、axa^x に余計な係数がくっついてくる。

  • (2x)(2^x)'2x2^x に約 0.6930.693 を掛けたもの
  • (ex)(e^x)'exe^x そのまま
  • (10x)(10^x)'10x10^x に約 2.3032.303 を掛けたもの

ee だけ係数1が出て、微分を何回繰り返しても exe^x のままで形が崩れない。 複利から出てきた定数が微分でも綺麗に働くのは偶然ではなく、裏側に「その時点の値に比例して増える(減る)」という共通の構造が効いている。 深追いすると脱線するが、「複利限界の定数が微分でも自然に顔を出す」と受け取っておけば足りる。

同じ理由で、底が ee の対数(自然対数)の微分も綺麗になる。

(logx)=1x(\log x)' = \frac{1}{x}

底が10や2だと、この右辺に余計な係数が付いてくる。底が ee のときだけ、素の 1/x1/x で収まる。

なぜAIでは自然対数・e を使うのか

前のシリーズ記事を思い出すと、softmax の exie^{x_i}、交差エントロピーの logq\log q、対数尤度の logP\log P など、AI の式は eelog\log だらけだった。 理由のかなりは「微分が綺麗だから」に集約される。

学習はパラメータを微分方向に更新していく作業で、その微分が綺麗な形になるほど、数式・コード・実装がシンプルになる。 逆伝播(次回の主役)では連鎖律で微分を掛け算していくので、1ステップの微分に係数がぶら下がっていないほうが圧倒的に扱いやすい。

AI系の記事で log\log と書いてあったら「底は ee」と読み替えてよく、ln\lnlog\log を区別しない流派も多い。 このへんの慣習は数学の教科書より工学寄り、と思っておけばいい。

連鎖律は「外×内」

AIで一番効いてくる微分のルールが 連鎖律 だ。 日本の高校数学では「合成関数の微分」と呼ばれることが多く、「連鎖律」は大学以降やAI・機械学習の文脈でよく使われる呼び方になる。指しているものは同じだ。

関数の中に関数がある 合成関数 y=f(g(x))y = f(g(x)) を微分するルールで、u=g(x)u = g(x) と置くと式はこう書ける。

dydx=dydududx\frac{dy}{dx} = \frac{dy}{du} \cdot \frac{du}{dx}

やっていることを言葉にすると、

  1. 外の関数 ff を普通に微分する
  2. 内の関数 gg を普通に微分する
  3. 2つを掛け合わせる

の3ステップだけだ。

具体例で y=(x2+1)3y = (x^2 + 1)^3 を微分する。

  • 外: y=u3y = u^3 → 微分して 3u23u^2
  • 内: u=x2+1u = x^2 + 1 → 微分して 2x2x
  • 掛ける: 3u22x=3(x2+1)22x=6x(x2+1)23u^2 \cdot 2x = 3(x^2+1)^2 \cdot 2x = 6x(x^2+1)^2

イメージとしては歯車の回転比だ。 入力 xx を少し動かすと中間の uu が動く。uu が動くと出力 yy が動く。 xux \to u の連動率と uyu \to y の連動率を掛け合わせれば、xyx \to y 全体の連動率が出てくる、という発想になる。

なぜ掛け算でOKなのか

「なんで足し算じゃなくて掛け算なのか」と引っかかる人もいる。 少しだけ数式寄りに書くと、こうなる。

xx を微小量 Δx\Delta x 動かしたとき、uu はだいたい dudxΔx\frac{du}{dx} \cdot \Delta x 動く。 その uu の微小変化 Δu\Delta u に対して、yy はだいたい dyduΔu\frac{dy}{du} \cdot \Delta u 動く。 2つをつなぐと、

ΔydydududxΔx\Delta y \approx \frac{dy}{du} \cdot \frac{du}{dx} \cdot \Delta x

両辺を Δx\Delta x で割って Δx0\Delta x \to 0 の極限を取れば、dydx=dydududx\frac{dy}{dx} = \frac{dy}{du} \cdot \frac{du}{dx} になる。 厳密には Δu=0\Delta u = 0 の場合の扱いなど細かい場合分けが要るが、直感としては「変化量を掛け算で繋ぐ」で正しい。 ライプニッツ記法で書かれていると見た目通り分数のキャンセルに見えるのも、この掛け算構造が裏にあるからだ。

AI での連鎖律の立ち位置

ニューラルネットは層を何層も重ねる構造で、1つの入力から最終損失までは深い合成関数になっている。

flowchart LR
    X[入力 x] --> L1[層1 W1, b1]
    L1 --> L2[層2 W2, b2]
    L2 --> L3[層3 W3, b3]
    L3 --> L[損失 L]

損失 LL を、例えば層1の重み W1W_1 で微分したいときに、連鎖律を何回か繰り返して使うことで、層ごとに微分を分解して掛け算していくことができる。 これが逆伝播(次回の主役)の骨格そのものになる。 「連鎖律をひたすら適用するだけで、深いネットの全重みに対する勾配が出せる」というのが、現代のニューラルネットが動いている理由の大きな部分を占めている。

偏微分 ∂f/∂x

ここまでは入力変数が1つの関数の話だった。 AIの学習では、損失関数がニューラルネットの重み(パラメータ)何百万〜何兆個に依存する多変数関数になる。 そこで、変数が複数ある関数に微分を拡張する必要が出てくる。

f(x,y)=x2+y2f(x, y) = x^2 + y^2 のような2変数の関数で考えてみる。 このとき、「xx だけを動かしたら ff はどう動くか」「yy だけを動かしたら ff はどう動くか」を別々に測りたい。 これが 偏微分 だ。

  • yy を固定して xx だけで微分 → fx\frac{\partial f}{\partial x}
  • xx を固定して yy だけで微分 → fy\frac{\partial f}{\partial y}

\partial は「パーシャル」「ラウンドディー」「デル」などと読まれる。 dd ではなく \partial という別の記号を使うのは、「他の変数を固定した上で1つの変数だけ動かした微分」であることを明示するためだ。 変数が1つだけのときの dfdx\frac{df}{dx} とは意味が違う、という自己主張の記号と思えばよい。

具体例

f(x,y)=x2+y2f(x, y) = x^2 + y^2 で実際にやってみる。

  • fx=2x\frac{\partial f}{\partial x} = 2x (y2y^2xx から見ると定数なので微分して0)
  • fy=2y\frac{\partial f}{\partial y} = 2y (同様に x2x^2 が落ちる)

普通の微分に「他の変数を定数扱いする」というひと手間を足しただけで、計算のルール自体は変わらない。

幾何的なイメージ

f(x,y)=x2+y2f(x, y) = x^2 + y^2 は、3次元空間では「お椀」のような立体の表面になる。 (x,y)(x, y) を動かすと表面の高さ ff が変わる、という見方ができる。

fx\frac{\partial f}{\partial x} は、このお椀の表面を「yy が固定された面」でスパッと切ったときに現れる断面の傾きだと思うと分かりやすい。 yy を固定すると2次元の曲線だけが残るので、その点での曲線の傾きを測っている。fy\frac{\partial f}{\partial y} は切る向きを90度変えただけで、発想は同じだ。

変数が3つ以上になっても、「1つの軸方向だけに動かしたときの断面の傾き」を取り出している、というイメージは変わらない。

勾配 ∇f は偏微分のベクトル

多変数関数の偏微分を全部並べてベクトルにしたのが 勾配 だ。記号は \nabla (ナブラ)を使う。

f(x,y)=x2+y2f(x, y) = x^2 + y^2 の勾配は、

f=[f/xf/y]=[2x2y]\nabla f = \begin{bmatrix} \partial f / \partial x \\ \partial f / \partial y \end{bmatrix} = \begin{bmatrix} 2x \\ 2y \end{bmatrix}

これはただのベクトルだ。2本目のベクトル記事で扱った「向きと長さを持つ数字の並び」がそのまま戻ってきている。

2つの意味: 向きと長さ

勾配ベクトルには2つの意味がある。

  1. 向き: 関数が一番急に増える方向
  2. 長さ: その方向に動いたときの増加の勢い

「一番急に増える方向」の逆が「一番急に減る方向」になるので、損失 L(θ)L(\theta)(ここで θ\theta はモデルのパラメータ全部をまとめた記号) の勾配 L\nabla L を計算してその逆向きに θ\theta を動かせば、損失が減る方向に進める。 これが次回の主役、勾配降下の中核にあたる動きだ。

等高線で見る勾配

さっきの偏微分章で出した「お椀」の地形を、真上から見下ろしたのが次の図だ。 同心円は「同じ高さの点をつないだ線」(等高線)を表していて、中心に近いほどお椀の底(低い)、外に行くほど高くなる。

等高線と勾配ベクトル 同心円で描いた関数の等高線と、等高線上の点から外向きに伸びる勾配ベクトル 最小 ∇f
同心円が等高線、中心がお椀の最小点。ある点での勾配は等高線に垂直で、外側(高いほう)を向く。逆向きに動けば一番急に谷底へ下れる、というのが勾配降下。

図の赤い点はお椀の中腹の1点で、そこから伸びる赤い矢印が勾配ベクトル f\nabla f だ。 見てわかるとおり、勾配は必ず等高線に垂直で、より高いほうを向く。

なぜ偏微分を並べただけで「最急方向」になるのか

「偏微分を並べただけのベクトルが、なぜ一番急な方向を指すのか」は自然な疑問なので、直感だけ添えておく。

任意の方向 v\vec{v} に少し動いたときの ff の変化率は、勾配と v\vec{v}内積 fv\nabla f \cdot \vec{v} になる。 内積は前のベクトル記事でやったとおり、向きが揃っているほど大きく、直交で0、逆向きで負になる。 したがって、v\vec{v} を勾配と同じ向きにしたときに変化率が最大化される、という仕組みだ。

厳密な証明はコーシー・シュワルツ不等式で詰める話だが、AI記事を読む範囲では「内積が最大になる向き」で足りる。

巨大次元でも発想は同じ

AIのモデルでは、勾配 L\nabla L の次元数はパラメータ数(何億〜何兆)と同じ巨大なベクトルになる。 3次元以上は直接可視化できないが、「どの方向に動いたら損失が一番急に減るかを指し示すベクトル」という発想は2次元の例と変わらない。

ベクトルや行列に対する微分

ここまでの勾配は「スカラー関数 ff をベクトル x\vec{x} で微分する」パターンで、AI記事では他にも色々な組み合わせの微分が出てくる。 高校範囲ではないので深入りは避けるが、論文で記号を見たときに引っかからないように、どのパターンがあるかだけ表で整理しておく。

何を何で微分表記例結果の形AIでの用途
スカラー を ベクトルでLw\frac{\partial L}{\partial \vec{w}}, wL\nabla_{\vec{w}} Lベクトル(w\vec{w} と同じ形)勾配降下の主役、前節の勾配そのもの
スカラー を 行列でLW\frac{\partial L}{\partial W}, WL\nabla_W L行列(WW と同じ形)各層の重み更新
ベクトル を ベクトルでyx\frac{\partial \vec{y}}{\partial \vec{x}}行列(ヤコビ行列)逆伝播で層から層へ勾配を流す
ベクトル を スカラーでdrdt\dfrac{d\vec{r}}{dt}ベクトル位置 r\vec{r} を時刻 tt で微分すると速度、もう一回で加速度。AIより物理寄り

どれも発想は共通で、「結果となる要素ひとつひとつが、入力のどれかに対する偏微分」というだけだ。 記号が物々しく見えても、中身は偏微分を並べた表でしかない。

高校物理を先に履修した人には、表の4つめ(ベクトルをスカラーで微分)が一番馴染みのある形になる。位置ベクトル r(t)\vec{r}(t) を時間 tt で微分したのが速度 v=dr/dt\vec{v} = d\vec{r}/dt、もう一度微分したのが加速度 a=dv/dt\vec{a} = d\vec{v}/dt で、まさにこの形だ。

ちなみに高校物理で「v=v0+atv = v_0 + at」「x=x0+v0t+12at2x = x_0 + v_0 t + \frac{1}{2}at^2」と覚えさせられる等加速度運動の公式も、この a=dv/dt\vec{a} = d\vec{v}/dt の関係を時間で積分し直せば機械的に出てくる。 微積を知っている立場から見れば導出可能な式なので、本来は丸暗記する必要のない話になる。

並べ方のルールだけ押さえる

  • LW\frac{\partial L}{\partial W}WW と同じ形の行列で、(i,j)(i,j) 要素が LWij\frac{\partial L}{\partial W_{ij}}
  • ヤコビ行列 yx\frac{\partial \vec{y}}{\partial \vec{x}} は縦に出力の要素、横に入力の要素を並べた行列で、(i,j)(i,j) 要素が yixj\frac{\partial y_i}{\partial x_j}

AI記事で WL\nabla_W LLW\frac{\partial L}{\partial W}、ヤコビ行列 JJ のような記号が出てきたら、「要素ごとに偏微分を並べただけの多次元データ」と読み替えれば足りる。

本当の使い方(逆伝播で連鎖律がどう行列の掛け算になるか等)は、次回の勾配降下・逆伝播記事で実例と一緒に見る。

積分をざっと

最後に積分に少しだけ触れる。 ここまで微分を扱ってきたが、ちょうど逆向きの操作として 積分 が対になっている。記号は \int (インテグラル)だ。

積分には2つの見方がある

積分には、見た目は別物だが裏で繋がっている2つの捉え方がある。

  1. 微分の逆操作: F(x)=f(x)F'(x) = f(x) を満たす関数 F(x)F(x)ff原始関数 と呼ぶ。これを探すのが 不定積分 で、f(x)dx=F(x)+C\int f(x)\, dx = F(x) + C と書く。定数 CC は微分すると消えるので、原始関数が1つ決まっても定数ぶんの不定性が残る。
  2. 関数の下の面積: 区間 [a,b][a, b] における f(x)f(x) のグラフと xx 軸で挟まれた領域の面積を 定積分 と呼び、abf(x)dx\int_a^b f(x)\, dx と書く。

この2つが裏で繋がっている、というのが 微積分の基本定理 の主張で、

abf(x)dx=F(b)F(a)\int_a^b f(x)\, dx = F(b) - F(a)

という形で「原始関数の端点での差が面積になる」と言っている。 微分の逆を取れば面積が計算できる、という関係だ。詳しい証明は解析学まで待つことになるが、結論だけ押さえておけば読む分には足りる。

さっきの等加速度運動を積分で

前節の例は、積分の側から見直すときれいに閉じる。 加速度 a\vec{a} が一定のとき、時間 tt で順に積分していくと、

v(t)=adt=at+v0\vec{v}(t) = \int \vec{a}\, dt = \vec{a}\, t + \vec{v}_0 r(t)=vdt=12at2+v0t+r0\vec{r}(t) = \int \vec{v}\, dt = \frac{1}{2}\vec{a}\, t^2 + \vec{v}_0 t + \vec{r}_0

となり、高校物理の等加速度運動の公式がそのまま出てくる。 積分のたびに出てくる定数 v0\vec{v}_0r0\vec{r}_0 は、「初速度」「初期位置」に対応している。

AI記事で積分が出てくる場面

AI記事で積分が出てくる場面は限定的だ。

  • 連続分布の確率計算(期待値 E[X]=xp(x)dxE[X] = \int x \cdot p(x)\, dx)
  • 拡散モデル(diffusion)で使われる確率微分方程式
  • 情報理論の連続版エントロピー

LLMまわりの記事を読む範囲ではほぼ出てこないので、\int を見たら「微分の逆」か「面積」のどちらかで読み替えれば足りる。

ここまで読めると何が読めるか

この記事の範囲で、AIの学習まわりの式がかなり追えるようになる。

見かける形読み方
dLdw\frac{dL}{dw}重み ww を動かしたら損失 LL がどう動くか
Lwi\frac{\partial L}{\partial w_i}他を固定した上での、wiw_i に対する変化率
θL\nabla_\theta Lパラメータ全体に対する勾配ベクトル
LW\frac{\partial L}{\partial W} / WL\nabla_W L行列 WW と同じ形の、要素ごとの偏微分の集まり
yx\frac{\partial \vec{y}}{\partial \vec{x}}ヤコビ行列、出力 × 入力の偏微分表
(ex)(e^x)'そのまま exe^x
(logx)(\log x)'1/x1/x
(fg)(f \circ g)' / 連鎖律合成関数の微分、逆伝播の骨格

式そのものを解ける必要はなくて、「何が何に対する変化率なのか」が読めれば、論文や実装の勾配まわりの話が数字の羅列じゃなくなる。

飛ばして問題ない話

入門の段階では、以下は無視してOKだ。

用語中身なぜ飛ばしていいか
ε-δ 論法極限の厳密な定義「微小に動かす」の直感で足りる
テイラー展開関数を多項式で近似する式出てきたら定義を見に行く程度で可
積分の計算テクニック置換積分、部分積分などLLM記事では積分自体が稀
高階微分微分を何回も適用した形Adam等のoptimizer内部で使われるが、名前だけでOK
ヘッセ行列2階の偏微分をまとめた行列Optimizer内部で使われるが、名前だけでOK
陰関数の微分方程式で定義された関数の微分AI記事ではほぼ出ない

ニューラルネットの学習で最低限押さえるべきは、べき関数と exe^xlogx\log x の微分、そして連鎖律の3つだ。

おまけ: 試験などで手計算が必要になったら

本筋からは外れるが、ここまでは「読める」に寄せてきたぶん、手で微分を解く場面の公式はだいぶ省いてきた。 E資格のようにディープラーニング向けの試験だと、実際に微分を計算する問題も出てくる。 その場面でよく使うものだけ、補足としてまとめておく。

積と商の微分

2つの関数の積や商を微分するルール。

(fg)=fg+fg(fg)' = f'g + fg' (fg)=fgfgg2\left(\frac{f}{g}\right)' = \frac{f'g - fg'}{g^2}

具体例で y=x2exy = x^2 e^x を微分すると、

y=2xex+x2ex=(2x+x2)exy' = 2x \cdot e^x + x^2 \cdot e^x = (2x + x^2)\, e^x

左半分が「前を微分×後ろはそのまま」、右半分が「前はそのまま×後ろを微分」、あとは足し合わせる。

合成関数の追加例

連鎖律を実際に使うときの定番パターン。

元の関数導関数
y=sin(2x)y = \sin(2x)y=2cos(2x)y' = 2\cos(2x)
y=ex2y = e^{x^2}y=2xex2y' = 2x \cdot e^{x^2}
y=log(x2+1)y = \log(x^2 + 1)y=2xx2+1y' = \dfrac{2x}{x^2 + 1}

どれも「外を微分 × 内を微分」で処理できる。

一般の底の指数・対数、逆三角関数

AIでは底が ee で揃えられるが、試験では一般の底や逆三角関数も混ざる。

元の関数導関数
axa^xaxlogaa^x \log a
logax\log_a x1xloga\dfrac{1}{x \log a}
tanx\tan x1cos2x\dfrac{1}{\cos^2 x}
arctanx\arctan x11+x2\dfrac{1}{1 + x^2}

底が ee のとき loge=1\log e = 1 なので、(ex)=ex(e^x)' = e^x(logx)=1/x(\log x)' = 1/x に揃うのが見える。 ee が「微分で形が崩れない特別な底」と呼ばれる理由がここにもある。

なぜ (a^x)’ = a^x log a になるのか

ついでに、上の公式の出どころを辿っておく。 どんな指数関数 axa^x も、ee を使って書き換えられる。

a=elogaa = e^{\log a}

ここで log\log は自然対数(loge\log_e)。両辺の xx 乗を取ると、

ax=(eloga)x=exlogaa^x = \left(e^{\log a}\right)^x = e^{x \log a}

exlogae^{x \log a} の微分は、連鎖律で「外 × 内」に分解できる。

  • (eu)=eu(e^u)' = e^u (ee の性質がそのまま効く)
  • (xloga)=loga(x \log a)' = \log a (loga\log a は定数)

2つを掛け合わせると、

(ax)=exlogaloga=axloga(a^x)' = e^{x \log a} \cdot \log a = a^x \cdot \log a

a=ea = e のときは loge=1\log e = 1 なので、係数が綺麗に消えて、

(ex)=ex1=ex(e^x)' = e^x \cdot 1 = e^x

に落ちる。「ee だけ係数1が出るのはなぜか」の正体は、loge=1\log e = 1 で余計な loga\log a がちょうど消えるから、と読める。

(log_a x)’ のほうも

同じ流れで対数側も辿れる。底変換を使うと、

logax=logxloga\log_a x = \frac{\log x}{\log a}

loga\log a は定数なので、微分で外に出るだけだ。

(logax)=(logx)loga=1xloga(\log_a x)' = \frac{(\log x)'}{\log a} = \frac{1}{x \log a}

a=ea = e のときはやはり loge=1\log e = 1 が効いて、(logx)=1/x(\log x)' = 1/x に揃う。

指数関数も対数関数も、一般の底 aa で書くと loga\log a という余計な係数が出てくるが、a=ea = e のとき loge=1\log e = 1 でそれが消える。 これが ee と自然対数がAIで常連になっている、式のレベルの理由になっている。


次に読むと繋がりやすい記事

気になった人向けの用語メモ

この節は読み飛ばしてOK。

用語意味
微分ある点での関数の傾き(瞬間的な変化率)
導関数元の関数を微分して得られる、点ごとの傾きを与える関数
ddx\frac{d}{dx}xx で微分する」演算子(ライプニッツ記法)
f(x)f'(x)導関数(ラグランジュ記法)
ee約2.71828…の定数。複利の極限 (1+1/n)n(1+1/n)^n として現れ、(ex)=ex(e^x)' = e^x を満たす唯一の底でもある
自然対数底が ee の対数。AI系では単に log\log と書かれることも多い
連鎖律合成関数の微分ルール。dydx=dydududx\frac{dy}{dx} = \frac{dy}{du} \frac{du}{dx}
偏微分 \partial多変数関数で1つの変数だけ動かしたときの変化率
勾配 f\nabla f偏微分を並べたベクトル。関数が一番急に増える方向を指す
ヤコビ行列出力ベクトルの各要素を、入力ベクトルの各要素で偏微分して並べた行列
積分 \int関数の下の面積。微分の逆操作

次は勾配降下と逆伝播に進む。今回の連鎖律と勾配がそのまま主役になる。