合成関数とは?基礎から分かる関数の組み合わせ方

数学の授業で「合成関数」という言葉を聞いたことはありませんか?

「関数はなんとなく分かるけど、合成って何?」「記号が複雑で意味が分からない…」と戸惑う方も多いはずです。

でも実は、合成関数は私たちが日常的に無意識にやっている「手順の組み合わせ」を数学的に表現したものなんです。料理のレシピや工場の製造工程のように、複数の処理を順番に組み合わせるイメージですね。

この記事では、合成関数の基本から応用まで、数学が苦手な方にも理解できるように丁寧に解説していきます。

実は、AIや機械学習の根幹にも関わる重要な概念なので、しっかり理解しておくと役立ちますよ。


スポンサーリンク

合成関数とは?まずは基本から

関数のおさらい

合成関数を理解する前に、「関数」を簡単に復習しておきましょう。

関数とは、ある値(入力)を受け取って、別の値(出力)を返す「変換ルール」のこと。

例えば、f(x) = 2x という関数は、入力した数を2倍にして出力します。3を入れたら6が出てくるわけですね。

合成関数の定義

合成関数とは、2つ以上の関数を組み合わせて、新しい関数を作ることです。

一つの関数の出力を、次の関数の入力として使うんです。まるでリレーのバトンのように、値を次々と渡していくイメージですね。

身近な例で考えよう

例1:お菓子作り

  1. 小麦粉と卵を混ぜる(関数f)
  2. 混ぜたものを焼く(関数g)

「混ぜてから焼く」という2段階の処理。これが合成関数の考え方なんです。

例2:計算機の操作

  1. 数字を2倍にする
  2. その結果に3を足す

5という数を入れたら、まず10になって、最後は13になります。この一連の流れが合成関数ですよ。


合成関数の書き方と記号

基本的な記号

合成関数は、特別な記号で表現します。

記号:(g ∘ f)(x) または g(f(x))

読み方は「gまるf」または「gコンポーズf」。

この記号の意味は:

  • まず関数fをxに適用する
  • その結果をさらに関数gに適用する

順序に注意!

重要なポイント:合成関数は右から左に読みます

(g ∘ f)(x) = g(f(x))

これは、「fを先に適用してから、gを適用する」という意味です。

直感とは逆の順序なので、最初は混乱するかもしれません。でも慣れればすぐに分かるようになりますよ。

具体的な例

f(x) = x + 2
g(x) = 3x

このとき、合成関数 (g ∘ f)(x) は:

ステップ1: f(x) を計算
f(x) = x + 2

ステップ2: その結果をgに入れる
g(f(x)) = g(x + 2) = 3(x + 2) = 3x + 6

つまり、(g ∘ f)(x) = 3x + 6 となります。


具体例で理解を深めよう

例1:基本的な計算

関数の定義:

  • f(x) = x²
  • g(x) = x + 1

合成関数 g(f(x)) を求める:

まず f(x) = x² を計算
次に g(x²) = x² + 1

答え:g(f(x)) = x² + 1

x = 3 を代入すると:
f(3) = 9
g(9) = 10

確かに、3² + 1 = 10 になりますね。

例2:逆の順序で合成

同じ関数で、今度は逆順に合成してみましょう。

合成関数 f(g(x)) を求める:

まず g(x) = x + 1 を計算
次に f(x + 1) = (x + 1)²

答え:f(g(x)) = (x + 1)²

x = 3 を代入すると:
g(3) = 4
f(4) = 16

確かに、(3 + 1)² = 16 になります。

注目: g(f(x)) = x² + 1 と f(g(x)) = (x + 1)² は違う関数です。

合成の順序を変えると、結果も変わるんですね。

例3:3つの関数の合成

関数は2つだけでなく、3つ以上組み合わせることもできます。

f(x) = 2x
g(x) = x + 3
h(x) = x²

このとき、(h ∘ g ∘ f)(x) は:

ステップ1: f(x) = 2x
ステップ2: g(2x) = 2x + 3
ステップ3: h(2x + 3) = (2x + 3)²

答え:(h ∘ g ∘ f)(x) = (2x + 3)²

展開すると:4x² + 12x + 9

複雑に見えますが、一つずつ順番に処理していけば必ず解けますよ。


合成関数の重要な性質

1. 結合法則が成り立つ

3つの関数 f、g、h があるとき:

(h ∘ g) ∘ f = h ∘ (g ∘ f)

どちらから先に合成しても、最終的な結果は同じになります。

これは「結合法則」と呼ばれる性質です。計算の順序を変えても大丈夫なんですね。

2. 交換法則は成り立たない

一般的に:

g ∘ f ≠ f ∘ g

合成の順序を入れ替えると、別の関数になってしまいます。

先ほどの例でも見たように、「2倍してから3を足す」と「3を足してから2倍する」では結果が違いますよね。

3. 恒等関数との合成

恒等関数 I(x) = x という特別な関数があります。

入力をそのまま出力する「何もしない関数」ですね。

任意の関数 f に対して:

  • f ∘ I = f
  • I ∘ f = f

恒等関数と合成しても、元の関数のままなんです。

4. 逆関数との合成

関数 f に対して逆関数 f⁻¹ が存在するとき:

f ∘ f⁻¹ = I
f⁻¹ ∘ f = I

関数と逆関数を合成すると、恒等関数になります。

「やったことを元に戻す」というイメージですね。


合成関数の微分:連鎖律(チェーンルール)

微分とは

微分は、関数の「変化の割合」を調べる操作です。

高校数学で学ぶ内容ですが、機械学習では非常に重要な役割を果たします。

連鎖律の公式

合成関数を微分するときは、連鎖律(れんさりつ)という特別なルールを使います。

y = g(f(x)) のとき:

dy/dx = (dg/df) × (df/dx)

つまり、「外側の関数の微分」×「内側の関数の微分」という形になるんです。

具体例で理解する

y = (x² + 1)³ という関数を微分してみましょう。

これは以下の合成関数です:

  • 内側:f(x) = x² + 1
  • 外側:g(u) = u³ (u = f(x))

ステップ1: 外側を微分
g'(u) = 3u²

ステップ2: 内側を微分
f'(x) = 2x

ステップ3: 連鎖律を適用
dy/dx = 3(x² + 1)² × 2x = 6x(x² + 1)²

このように、内側と外側に分けて考えると分かりやすいですね。

なぜ連鎖律が重要?

機械学習、特にディープラーニングでは、誤差逆伝播法(バックプロパゲーション)という手法で学習します。

これは、連鎖律を使って複雑な合成関数の微分を効率的に計算する方法なんです。ニューラルネットワークも、実は巨大な合成関数なんですよ。


実生活での合成関数の応用

温度変換

摂氏(℃)からケルビン(K)、そしてランキン度(°R)への変換を考えましょう。

関数1: 摂氏からケルビン
K = C + 273.15

関数2: ケルビンからランキン度
R = K × 1.8

合成: 摂氏からランキン度
R = (C + 273.15) × 1.8

これも合成関数の一例です。

為替レート

円をドルに換え、さらにドルをユーロに換えるとき:

関数1: 円→ドル
ドル = 円 ÷ 140

関数2: ドル→ユーロ
ユーロ = ドル × 0.85

合成: 円→ユーロ
ユーロ = (円 ÷ 140) × 0.85

複数の通貨換算も、合成関数で表現できるんです。

割引計算

商品価格に2段階の割引が適用される場合:

関数1: 20%割引
価格1 = 元の価格 × 0.8

関数2: さらに10%割引
最終価格 = 価格1 × 0.9

合成:
最終価格 = 元の価格 × 0.8 × 0.9 = 元の価格 × 0.72

28%引きになるわけですね。


機械学習における合成関数の重要性

ニューラルネットワークは巨大な合成関数

ディープラーニングのニューラルネットワークは、実は巨大な合成関数そのものなんです。

各層で行われる処理を関数と考えると:

入力層 → 隠れ層1 → 隠れ層2 → … → 出力層

これは f₁ ∘ f₂ ∘ f₃ ∘ … という合成関数になります。

活性化関数の役割

各層では、以下の処理が行われます:

  1. 線形変換:重みを掛けて足し算
  2. 活性化関数:非線形な変換(ReLU、Sigmoidなど)

この2段階も、合成関数の考え方ですね。

誤差逆伝播法と連鎖律

AIの学習では、出力の誤差から各層の重みを更新します。

このとき、連鎖律を使って、合成関数全体の微分を効率的に計算するんです。

入力から出力へ:順伝播(Forward)
データを前に流して予測を出す

出力から入力へ:逆伝播(Backward)
誤差を後ろに流して重みを更新

この仕組みがあるから、深い層を持つネットワークでも学習できるんですよ。

深層学習の「深さ」

「ディープ」ラーニングの「深さ」とは、合成される関数の数のこと。

数十層、時には数百層もの関数が合成されている場合もあります。この複雑な合成関数が、高度な認識能力を生み出しているんです。


よくある間違いと注意点

間違い1:順序を逆にする

(g ∘ f)(x) = f(g(x)) ← 間違い!

正しくは:(g ∘ f)(x) = g(f(x))

記号と実際の順序が逆なので、混乱しやすいポイントです。「右から左に読む」と覚えましょう。

間違い2:交換法則があると思い込む

g ∘ f = f ∘ g ← 一般には成り立ちません!

合成の順序を変えると、通常は別の関数になります。

特別な場合(例:可換な関数)を除いて、順序は重要なんです。

間違い3:微分で連鎖律を忘れる

合成関数を微分するとき、内側の微分を忘れる人が多いです。

y = (x² + 1)³ の微分

間違い:3(x² + 1)²
正しい:3(x² + 1)² × 2x

内側の 2x を掛けるのを忘れないでくださいね。

間違い4:定義域と値域の不一致

関数を合成するには、「fの値域」が「gの定義域」に含まれている必要があります。

例えば:

  • f(x) = √x (x ≥ 0)
  • g(x) = 1/x (x ≠ 0)

このとき、g(f(0)) は定義できません。f(0) = 0 で、g(0) は定義されていないからです。


練習問題で理解を確認

問題1:基本問題

f(x) = x – 1
g(x) = x²

(g ∘ f)(3) を求めてください。

解答:
f(3) = 2
g(2) = 4

答え:4

問題2:式を求める

f(x) = 2x + 1
g(x) = x²

(f ∘ g)(x) の式を求めてください。

解答:
g(x) = x²
f(x²) = 2x² + 1

答え:2x² + 1

問題3:逆順の合成

同じ関数で (g ∘ f)(x) を求めてください。

解答:
f(x) = 2x + 1
g(2x + 1) = (2x + 1)²

答え:(2x + 1)² = 4x² + 4x + 1

確かに、問題2と答えが違いますね。


まとめ

合成関数は、複数の関数を組み合わせて新しい関数を作るという、数学の基本的な概念です。

この記事のポイント:

  • 合成関数は「関数のリレー」のようなもの
  • 記号 (g ∘ f)(x) は右から左に読む
  • 順序を変えると結果も変わる(交換法則は成り立たない)
  • 連鎖律を使って微分できる
  • 実生活でも様々な場面で使われている
  • ディープラーニングの根幹を支える重要概念

最初は記号や順序で混乱するかもしれませんが、具体例で練習すれば必ず理解できます。

合成関数は、高校数学だけでなく、大学の数学や機械学習の理解にも欠かせない概念です。

特にAIやデータサイエンスの分野に進みたい方は、しっかりマスターしておくと後々役立ちますよ。

一つずつステップを踏んで計算していけば、どんな複雑な合成関数も解けるようになります。焦らず、着実に理解を深めていってくださいね!

コメント

タイトルとURLをコピーしました