代数の基礎
この章では、方程式と不等式の変形、関数の核心的な概念、指数と対数の演算、そして総和記号 Σ と級数の収束について紹介します。
この章の内容は、sigmoid・softmax・交差エントロピー・情報エントロピーに共通する数学の土台です。各項目には操作できるインタラクティブなグラフが付いており、スライダーを動かす方が公式を10回読むよりも直感を養えます。
方程式と不等式の解法・変形
代数の変形は、たった一言に依存しています。
等式の両辺に同じ演算を行っても、等式は成り立ちます。
方程式の両辺に「同じように」足す・引く・掛ける・割る(除数は非ゼロ)・ルートを取る(正負の符号に注意)を行えば、方程式の解は変わりません。
一元一次方程式
最も基本的な形は。
解 の完全な手順:
3x + 5 = 20 3x = 20 - 5 ← 两边同减 5(移项) 3x = 15 x = 15 / 3 ← 两边同除以 3 x = 5
中心となる操作は2つだけです:移項(本質は両辺から同じ数を引くこと)と両辺を同じ数で割る。
一元二次方程式と判別式
形は、2つのよく使う解法があります。
解法1:因数分解。
x² - 5x + 6 = 0 (x - 2)(x - 3) = 0 → x = 2 或 x = 3
解法2:解の公式、すべての場合に使えますが計算量が多めです:
ここで 叫判別式、と表記し、それは解の個数を直接決めます:
| 判別式 | 解の状況 | 幾何学的な意味(放物線と x 軸) |
|---|---|---|
| 2つの異なる実数解 | 放物線は x 軸と2点で交わる | |
| 1つの重解 | 放物線は x 軸にちょうど触れる(接する) | |
| 実数解なし | 放物線は全体が x 軸の上か下にある |
下のスライダーを動かして、放物線の形と判別式がどう連動するか観察しましょう。
解 の解の公式代入過程:
a=1, b=-2, c=-3 Δ = (-2)² - 4×1×(-3) = 4 + 12 = 16 x = (2 ± √16) / 2 = (2 ± 4) / 2 → x = 3 或 x = -1
分数方程式:最後に必ず検算する
まず通分または分母を払って、通常の方程式に変換して解きます。
最後に必ず解を元の方程式に代入して検算し、分母が 0 にならないことを確認します。
分母を 0 にする解は捨てる必要があり、これを無縁根と呼びます。。
不等式:最も間違えやすいルール
不等式の変形ルールは方程式と似ていますが、決定的な違いが1つあります。
不等式の両辺に負の数を掛ける(または割る)ときは、不等号の向きを逆にする必要があります。
解 :
-2x > -6 ← 两边同减 6 x < 3 ← 两边同除以 -2(负数,不等号从 > 变成 <)
このルールは機械学習で非常に重要です。最適化アルゴリズムの収束方向や損失関数の減少条件を導出するとき、符号の処理を誤ると結論が完全に逆になります。
連立不等式の解集合は、複数の不等式の解集合の共通部分(交わり)を取ります。:
x > 1 x < 5 → 解集为 1 < x < 5
よく使う変形テクニック
| テクニック | やり方 | 代表的な用途 |
|---|---|---|
| 移項 | ある項を等号の反対側に移し、同時に符号を変える | すべての方程式を解くときの基本操作 |
| 平方完成 | 二次関数の頂点を求める、損失関数の導出を簡略化する | |
| 置換法(置き換え) | 繰り返し出てくる複雑な部分式を新しい変数で置き換える | 構造が複雑な式を簡単にする |
実例
import math
def solve_quadratic(a, b, c):
"""ax^2 + bx + c = 0 を解き、すべての実数解を返す"""
delta = b * b - 4 * a * c # 判別式 Δ = b² - 4ac
if delta > 0: # Δ > 0:2つの異なる実数解
r = math.sqrt(delta)
return [(-b + r) / (2 * a), (-b - r) / (2 * a)]
elif delta == 0: # Δ = 0:1つの重解
return [-b / (2 * a)]
else: # Δ < 0:実数解なし
return []
# x² - 2x - 3 = 0 を検証する。先ほど手計算した結果は x = 3 または x = -1
print(solve_quadratic(1, -2, -3))
# Δ = 0 の場合:x² - 4x + 4 = 0、つまり (x-2)² = 0
print(solve_quadratic(1, -4, 4))
# Δ < 0 の場合:x² + x + 1 = 0
print(solve_quadratic(1, 1, 1))
上記のコードを実行すると、出力結果は次のようになります:
[3.0, -1.0] [2.0] []
練習:次の不等式を解いてください。
クリックして解答を見る
両辺から 9 を引く:;両辺を -3 で割る(負の数なので不等号を反転):。
関数の概念:定義域・値域・合成関数
関数「入力から出力への」対応規則を表します:各入力 x に対して、対応する出力 y がただ1つだけ存在する。
と書き、「y は x の関数である」と読みます。
定義域:すべての「有効な入力」からなる集合
定義域を判断することは、本質的に式を「無意味」にする値を除外することです:
| 式の特徴 | 制約条件 | 例 |
|---|---|---|
| 分母 | 0 であってはならない | |
| 偶数乗根(平方根など) | ルートの中は負であってはならない | |
| 対数 | 真数は 0 より大きくなければならない |
対数のこの条件は AI では特に重要です。log を使うところ(交差エントロピー損失など)では、必ず入力が正数であることを保証しなければなりません。これが多くのコード実装で——非常に小さな定数 ε を加えて、エラーや無限大の発生を防ぎます。
値域:すべての「可能な出力」からなる集合
の値域は、なぜなら2乗は常に非負だからです。
sigmoid 関数の値域は開区間、決して 0 や 1 には等しくならず、限りなく近づくだけです。
これこそが sigmoid が「確率」を表すのに使われる数学的な理由です。確率は理論上 0% や 100% に限りなく近づけますが、実際には等しくなりません。
合成関数:関数に関数を入れ子にする
ある関数の出力を別の関数の入力として使うことを、次のように書きます。
計算の順序は内側の g(x) を先に計算し、その結果を外側の f に代入する。
设 ,、求めると:
f(g(x)) = f(x+1) = (x+1)²
通常は等しくありません、順序を勝手に交換することはできません。
なぜ合成関数が AI にとって重要なのか:ニューラルネットワークは本質的に、多くの層の関数の合成です。
2層のネットワークは次のように書けます、ここでは第1層(線形変換 + 活性化関数)で、は第2層です。
誤差逆伝播法が「層ごとに」勾配を計算できるのは、まさに合成関数の微分の連鎖律(チェーンルール)のおかげです(後の微積分の講義で詳しく説明します)。
実例
def f(x):
return x ** 2 # 外側の関数 f(x) = x²
def g(x):
return x + 1 # 内側の関数 g(x) = x + 1
# f(g(x)):まず g(3) = 4 を計算し、それを f に代入すると 16
print(f(g(3)))
# g(f(x)):まず f(3) = 9 を計算し、それを g に代入すると 10
# 両者は等しくないので、合成の順序は交換できないことが分かる
print(g(f(3)))
上記のコードを実行すると、出力結果は次のようになります:
16 10
練習:次のように定義する,、次の値を求めと、両者が同じかどうか比較してください。
クリックして解答を見る
両者は異なり、合成関数の順序は交換できないことが分かります。
指数と対数の演算
この2つの関数の役割分担を一言で理解する:指数関数は「数値の範囲を拡大・圧縮する」役割、対数関数は「乗除を加減に変え、大きな範囲の数値を扱いやすい範囲に圧縮する」役割を担います。。
これらは AI の損失関数や活性化関数の設計で繰り返し登場します。
| AI シーン | 公式 | 使う性質 |
|---|---|---|
| sigmoid 関数 | x が大きくなるにつれて 0 に近づき、任意の実数を (0,1) に押し込む | |
| softmax 関数 | 指数で差を拡大し、正規化して確率分布にする | |
| 交差エントロピー損失 | 対数が「確率の掛け算」を「数値の足し算」に変え、アンダーフローを防ぐ | |
| 情報エントロピー | log によりエントロピーが加法性を持つ |
必ず使いこなすべき演算ルール
指数演算の規則:
対数演算の規則。指数の規則と一対一に対応する:
底の変換公式。任意の底の対数を自然対数に変換する:
指数と対数は互いに鏡像の関係にあります
指数関数と対数関数互いに逆関数であり、グラフは直線に関して対称である。
スライダーを動かして底 a を変え、2本の曲線がどのように連動するか観察しましょう。
導出練習:なぜ交差エントロピーに log を使うのか
真实标签が「猫」(確率 1)であると仮定し、モデルが「猫である」と予測する確率を。
log を使わず、直接を損失として使うと、p が 0.5 から 0.1 に下がっても、損失は「線形」にしか増加せず、罰則の強さが不十分です。
用 :のとき(モデルが極めて自信があるのに判断を誤る)とき、、非常に厳しい罰を与えます;一方、(判断が正しい)とき、、ほとんど罰を与えません。
これは対数関数の「0 付近で急峻、1 付近で緩やか」という形状を損失関数の設計に直接応用したもので、第2章ではインタラクティブなグラフでこの曲線を詳しく紹介します。
実例
import math
m, n = 8, 4
# 左辺:直接 log₂(8×4) を計算
left = math.log(m * n, 2)
# 右辺:log₂(8) + log₂(4)
right = math.log(m, 2) + math.log(n, 2)
print(left) # log₂32 = 5
print(right) # 3 + 2 = 5、両者は等しいので規則が成り立つ
print(abs(left - right) < 1e-12)
上記のコードを実行すると出力結果は次のようになります:
5.0 5.0 True
練習:計算し、対数の法則を使って1つの対数に簡約しなさい。
クリックして答えを見る
数列と級数:Σ と収束を理解する
数列とは順番に並んだ一連の数のことで、と表記し、簡潔に。
最も基本的な2種類の数列:
| 種類 | 特徴 | 例 | 一般項の公式 |
|---|---|---|---|
| 等差数列 | 隣り合う2項の差が一定(公差 d) | 2, 5, 8, 11, ...(d=3) | |
| 等比数列 | 隣り合う2項の比が一定(公比 r) | 2, 4, 8, 16, ...(r=2) |
総和記号 Σ は一体何を計算しているのか
意味は:添え字 i を 1 から n まで変化させ、それぞれのをすべて計算し、すべて足し合わせる。
Σ の公式を読む3ステップ:まず総和変数が誰か(添え字)を確認し、次に総和範囲(どこからどこまで)を確認し、最後に各項がどのような形かを確認する。
AI の公式ではほぼ必ず Σ が見られます。例えば平均二乗誤差損失やニューロンの重み付き和。
2つの総和公式:等差数列、等比数列()。
級数と収束性
級数とは数列の「無限個の項」を足し合わせた和であり、すなわち。
無限個の数を足し合わせると、結果は無限大になるのだろうか?これが収束と発散の問題です:
項数が増えるにつれて、累積の和がある確定した有限値に近づくなら、級数は収束するといいます。和がどんどん大きくなる、または一定の傾向がない場合は、級数は発散するといいます。
最も古典的な例は等比級数:
当 のとき収束し、和は;一方、のとき発散します。
「再生」ボタンをクリックして、部分和がどのように一歩一歩極限値に近づくかを観察しましょう。
なぜ収束性が AI にとって重要なのか
ニューラルネットワークを訓練するとき、勾配降下法の各更新ステップは数列とみなせます。重みの更新が安定した値に「収束」するかどうかの判断ロジックは、級数の収束に関する直感と通じるものがあります。
一部の最適化アルゴリズム(Adam の運動量項など)は、本質的に過去の勾配に対して重み付き指数減衰の総和を行っており、数学的な形は公比が 1 未満の等比級数です。
再帰ニューラルネットワーク(RNN)では、ある乗法因子が繰り返し掛け合わされ、その絶対値が 1 未満だと「勾配消失」(級数が 0 に収束することに対応)が起こります。1 より大きいと「勾配爆発」(級数が発散することに対応)が起こります。これは深層学習の古典的な問題であり、根源はまさに等比数列の直感にあります。
実例
# 理論上の極限:1 / (1 - 0.5) = 2
r = 0.5
limit = 1 / (1 - r) # 理論上の極限値 2
s = 0 # 部分和。0 から累積
for i in range(6): # 項ごとに累加:1 + 0.5 + 0.25 + ...
s += r ** i
print(i + 1, s) # 項数と現在の部分和を出力
print(limit) # 理論上の極限。部分和はそれにどんどん近づく
上記のコードを実行すると出力結果は次のようになります:
1 1.0 2 1.5 3 1.75 4 1.875 5 1.9375 6 1.96875 2.0
項を1つ加えるごとに、部分和と極限との差が半分になることがわかります。これはまさに公比 0.5 の等比級数の収束のペースです。
練習:級数が収束するかどうかを判定し、収束する場合はその和を求めなさい。
クリックして答えを見る
公比、...を満たすので、収束します。
本章のまとめ
| テーマ | 一言で言うと核心 |
|---|---|
| 方程式と不等式 | 両辺に同じ演算を行う。負の数を掛ける/割るときは不等号の向きを反転する |
| 関数の概念 | 定義域は「何を入力できるか」、値域は「何を出力できるか」、合成関数は「関数に関数を入れる」 |
| 指数と対数 | 指数は数値を拡大/圧縮し、対数は掛け算・割り算を足し算・引き算に変える——AI の損失関数の中核ツール |
| 数列と級数 | Σ は「規則に従って和を求める」ことであり、級数が収束するかどうかがモデル訓練の安定性を左右する |