メインコンテンツへスキップ
  1. Blogs/

極限がAIを無限にする:微分の直感

··2372 文字·5 分· ·
著者
Aakash Nand
Senior Data Engineer @ Kraken Technologies

曲線の傾きとChatGPTに何の関係があるのでしょうか?実は、思っている以上に深い関係があります。私たちが高校で学んだ微積分、特に微分こそが、AIが学習するための数学的基盤なのです。この記法を見たことがあるかと思います:\(\frac{dy}{dx}\)

数年前、私はAIの大学院コースを受講し、その背景にある仕組みを理解しようとしました。それ以来、多くのことを学びましたが、すべてのコースで勾配降下法が登場します。それはAIを学習させるアルゴリズムです。もちろん、私たちが目にするAIの影響は勾配降下法だけによるものではなく、GPU性能、膨大なデータセット、埋め込み表現、トランスフォーマーなど、多くの要素が組み合わさっています。これらの概念を学ぶ中で、私は極限と微分を再び学び直し、Eddie Wooという素晴らしい数学チャンネルに出会いました。Eddieは情熱と熱意を持って教え、数学を本当に面白いものにしてくれます。彼の動画を見て印象的だったのは、微分の考え方が単純な幾何学的問題から自然に浮かび上がってくることです。今日はその過程を一緒に辿っていきたいと思います。この記事は彼の動画にインスパイアされています。このような概念をわかりやすく伝えてくださっているEddie氏に感謝します。ぜひ彼のチャンネルもチェックしてみてください。

話の出発点として、実際の例から始めましょう。アイザック・ニュートンが木の下に座っていると、りんごが落ちるのを見ました。彼はふと疑問に思いました。空高く浮かんでいる月は、なぜ木からりんごが落ちるように落ちないのか?重力がりんごには働いているのに、なぜ月には働かないのか?この疑問が彼を問題の数式化へと駆り立て、距離と力の関係を解明することになりました。ニュートンの万有引力の法則として知られる有名な式は次のとおりです:

$$ F = G\frac{m_1 m_2}{r^2} $$

ここで:

  • \(F\) は二つの物体間の引力
  • \(G\) は万有引力定数 \(6.674 \times 10^{-11} \ \text{Nm}^2/\text{kg}^2\)
  • \(m_1\) と \(m_2\) は二つの物体の質量
  • \(r\) は二つの物体の中心間の距離

以下のグラフは距離 \(r\) と引力 \(F\) の関係を示しており、両者は反比例しています。曲線が直線でないことに注目してください:

alt text

alt text

この曲線こそ、私たちが解こうとしている問題です。ニュートンが知りたかったのは「ある距離 \(r\) において、引力はどれほど急激に変化しているのか?」つまり、この曲線上の任意の点における傾きはいくつか、ということです。

直線の傾きは \(m= \frac{rise}{run}\) で求められます。2点 \((x_1,y_1)\) と \((x_2,y_2)\) があれば、傾きは \(m= \frac{y_2-y_1}{x_2-x_1}\) です。直線上ではどの2点を選んでも傾きは常に同じです。しかし、ニュートンの引力の式のような曲線では、点が動くにつれて傾きは変化し続けます。これが核心的な問題です。非線形な曲線上の1点における傾きをどうやって計算するのでしょうか?

その答えは、原理的には接線です。ある点における接線は、その点での瞬間的な傾きを教えてくれます。しかし問題があります。傾きを計算するには2点が必要ですが、接線は定義上、曲線に1点でしか接しません。

alt text
alt text

この問題を解決するのが割線です。割線は曲線上の2点を通る直線です。この2点を徐々に近づけていくと何が起きるか見てみましょう。割線は回転し、だんだんと接線に近づいていきます。2点が無限に近くなった極限において、割線は接線になります。これが本質的な洞察です。

では、これを式にしてみましょう。以下のように関数に交わる割線を考えると、その傾きは次のように書けます:

alt text

この割線から接線の傾きを求めるには、2点間の距離 \(h\) を0に近づける必要があります。しかし \(h\) を実際に0にすることはできません。\(h\) で割っているからです。

ここで極限が登場します。\(h\) が0に等しくなったときではなく、\(h\) が0に限りなく近づいていくときに何が起きるかを考えるのです。これを数学的記法で表すと \(\displaystyle{\lim_{h \to 0}}\) となります。

この傾きの式に極限を適用する前に、もっと単純な例で極限の直感を養いましょう:

$$ \lim_{x \to 5}f(x) = \frac{x^2-25}{x-5} $$

分母に \(x-5\) があるので \(x=5\) を直接代入することはできませんが、式を整理すると:

$$ \lim_{x \to 5}f(x) = \frac{x^2-25}{x-5} = \frac{(x+5)(x-5)}{(x-5)} = (x+5) = 10 $$

元の式に5を直接代入することはできなくても、\(x\) が5に近づくにつれて関数が何に近づくかは求められます。極限は、0で割ることなく答えを教えてくれるのです。

同じ考え方を傾きの問題に適用すると、接線の式が得られます:

$$ m_{\ tangent}=\lim_{h \to 0} \frac{f(x+h)-f(x)}{h} $$

これは単純に \(y\) の変化量を \(x\) の変化量で割ったもので、\(\frac{dy}{dx}\) と表記されます。この式は第一原理とも呼ばれます。これを使って \(f(x)=x^2\) の微分を計算してみましょう:

$$ \begin{align*} f(x) &= x^2 \\ f’(x) &= \lim_{h \to 0} \frac{f(x+h)-f(x)}{h} \\ &= \frac{(x+h)^2-x^2}{h} \\ &= \frac{x^2+2xh+h^2-x^2}{h} \\ &= \frac{2xh+h^2}{h} \\ &= 2x+h \\ &= 2x \end{align*} $$

極限がどこで機能するかに注目してください。最後から2番目のステップで \(2x + h\) が出てきます。\(h \to 0\) の極限を取っているので、\(h\) は消え去り、\(2x\) が残ります。このたった一つのステップが微積分の核心です。

では、これがAIとどう繋がるのでしょうか?ニューラルネットワークが学習するとき、予測を行い、損失関数を使ってその予測がどれほど外れているかを測定します。損失関数とは、予測値と実際の値の誤差を測る関数です。精度を上げるためには、損失を減らすためにどの方向に各パラメータを調整すべきかを知る必要があります。その方向こそが勾配であり、私たちが今導いた微分を使って計算されます。これを繰り返し、損失が最小化されるまで行うアルゴリズムが勾配降下法です。これについては別の記事で詳しく取り上げます。

次にAIモデルが「訓練された」と聞いたとき、その裏側のどこかで極限が取られ、微分が計算され、正しい方向への小さな一歩が踏み出されていることを、あなたは知っているはずです。何百万回も繰り返されながら。それがAIを動かす微積分の力なのです。