【AIの核心】「合成関数の微分」がなければディープラーニングは存在しない理由
こんにちは。ゆうせいです。
ここまで、線形代数、微分、偏微分と、機械学習に必要な数学の旅をしてきましたね。
今回は、その集大成とも言える「合成関数(ごうせいかんすう)の微分」についてお話しします。
高校数学の教科書で という記号を見たとき、何重にも重なったカッコを見て、そっと目を閉じたくなりませんでしたか。その気持ち、よくわかります。「関数の中に関数がある」なんて、ややこしいですよね。
でも、実はこの「合成関数の微分」こそが、現在のAIブーム、特にディープラーニング(深層学習)を支えている最大の功労者なのです。
もしこの計算ルールが存在しなかったら、ChatGPTのような高度なAIは生まれていなかったと言っても過言ではありません。
なぜ、この少し面倒な数学がそこまで重要なのか。今回は「情報のバケツリレー」をイメージしながら、その仕組みを直感的に理解していきましょう。
合成関数とは「工場のライン作業」である
まずは「合成関数」という言葉の堅苦しいイメージを崩しましょう。
これは、ある入力データに対して、順番に処理を行っていく「工場のライン作業」のようなものです。
例えば、あなたがパン工場で働いていると想像してください。
- 工程A(関数g): 小麦粉(入力
)をこねて、生地(中間データ
)にする。
- 工程B(関数f): 生地(中間データ
)を焼いて、パン(出力
)にする。
このとき、最終的なパン( )は、小麦粉(
)に対して、工程Aと工程Bを順番に行った結果ですよね。
これを数学の言葉で書くと、 となります。これが合成関数です。
機械学習、特に「ニューラルネットワーク」は、これと同じ構造をしています。入力された画像データなどが、第1層、第2層、第3層……と、何層もの計算処理(関数)を通過して、最後に「これは猫です」という予測結果(出力)を出します。
つまり、ディープラーニングとは、とてつもなく長い「巨大な合成関数」そのものなのです。
なぜ機械学習に必須なのか?
では、なぜこの合成関数を「微分」する必要があるのでしょうか。
それは、最後の予測結果が間違っていたときに、「どの工程(層)に原因があったのか」を突き止めるためです。
1. 「連鎖律(チェーンルール)」で原因を遡る
先ほどのパン工場の例で、出来上がったパンが焦げていたとします(損失が発生)。
このとき、「オーブンの温度が高すぎたのか(工程Bのミス)」、それとも「生地の水分が少なすぎたのか(工程Aのミス)」を知る必要があります。
ここで登場するのが、合成関数の微分で使う「連鎖律(れんさりつ)」という最強のルールです。
連鎖律を使うと、全体の変化(パンの焦げ具合)を、それぞれの工程ごとの変化の掛け算に分解できます。
全体の変化率 工程Bの変化率
工程Aの変化率
これを数式風に書くと以下のようになります。
この式が意味しているのは、「結果( )から逆順に原因(
)へ遡ることができる」ということです。
機械学習では、出力された誤差(パンの焦げ)を、出口から入口に向かって逆順に伝えながら、各層のパラメータを修正していきます。これを誤差逆伝播法(ごさぎゃくでんぱほう)」と呼びます。
この「逆向きに誤差を伝えていく」仕組みの根底にあるのが、まさに合成関数の微分(連鎖律)なのです。
2. 計算を効率化する
もし連鎖律を使わずに、何百層もあるディープラーニングのパラメータを修正しようとしたらどうなるでしょうか。
入口のパラメータを少し変えて、最後まで計算して結果を見て、また戻って……とやっていたら、計算量が膨大すぎて日が暮れてしまいます。
合成関数の微分を使えば、「隣の層から渡された誤差」に「自分の層の微分」を掛け算するだけで、自分の修正量が計算できます。まるでバケツリレーのように、後ろから前へ、スムーズに計算結果を渡していけるのです。
これにより、スーパーコンピューターを使っても何年もかかるような計算が、数時間や数日で終わるようになりました。
合成関数の微分を学ぶメリットとデメリット
この概念を理解することのメリットと、注意点を整理しましょう。
メリット
- 「誤差逆伝播法」の仕組みが腑に落ちる機械学習の教科書で必ず出てくる「バックプロパゲーション」という言葉。これが単なる「連鎖律の応用」だと知っていれば、恐れる必要はなくなります。
- ネットワーク構造を自由に設計できるどんなに複雑に層を重ねても、それぞれが微分可能な関数(合成関数の一部)であれば、連鎖律を使って学習できることが保証されています。これにより、今のAIのような自由なモデル設計が可能になっています。
デメリット
- 「勾配消失問題」の原因になるこれは少し専門的な話ですが重要です。連鎖律は「掛け算」です。もし、それぞれの層の微分値が
のように小さかったらどうなるでしょう。
と何回も掛けていくと、値は限りなく
に近づいて消えてしまいます。これが「勾配消失(こうばいしょうしつ)」と呼ばれる現象で、層を深くしすぎると学習が進まなくなる大きな原因です。合成関数の仕組みを知っていると、この問題の意味もよく分かります。
今後の学習の指針
ここまで読んでいただき、ありがとうございます。
「合成関数」という名前には圧倒されますが、要は「リレー形式で計算がつながっている」ということであり、その微分(連鎖律)は「掛け算で影響を遡れる」という便利なルールだということが伝わりましたでしょうか。
最後に、今後の学習アドバイスをお伝えします。
「計算グラフ(Computational Graph)を書いてみよう!」
数式だけで理解しようとすると、添字が増えて混乱してしまいます。
これからの学習では、計算の流れを「丸と矢印」で図解する「計算グラフ」という考え方を学んでみてください。
「
」
このように図を描き、矢印を逆向きに辿りながら微分値を掛け算していくイメージを持つと、PyTorchやTensorFlowなどのAIフレームワークが裏側で何をしているのかが、手に取るようにわかるようになります。
難しそうな数式の裏には、実はこんなに合理的な「バケツリレー」の仕組みが隠されていたのです。
これで機械学習に必要な数学の基礎、「線形代数」「微分」「偏微分」「合成関数」が揃いました。
あなたはもう、数式に怯える新人エンジニアではありません。自信を持って、機械学習のコードを書き始めてください。
応援しています!
セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク
投稿者プロフィール
- 代表取締役
-
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。
学生時代は趣味と実益を兼ねてリゾートバイトにいそしむ。長野県白馬村に始まり、志賀高原でのスキーインストラクター、沖縄石垣島、北海道トマム。高じてオーストラリアのゴールドコーストでツアーガイドなど。現在は野菜作りにはまっている。