なぜニューラルネットワークの層と層の間は「内積」でつながっているのか?
こんにちは。ゆうせいです。
今日は、ニューラルネットワークの層と層の間の演算に「内積」が使われている理由について、詳しく解説していきます。
「なんで足し算とかじゃなくて、内積なの?」
そんな疑問を持ったあなたのために、仕組みと背景をやさしくひもといていきます!
ニューラルネットの基本構造をおさらい
まずはおさらいから。
ニューラルネットワークは、
- 入力層
- 中間層(隠れ層)
- 出力層
という層の集合体です。各層には「ニューロン(ノード)」という小さな処理ユニットがたくさん並んでいます。
これらの層は次の層に信号を渡していくのですが、そのときに使われるのが「内積」なんです。
入力と重みの「内積」で信号を伝える
ニューロン同士がつながるとき、前の層の出力(数値)に「重み(weight)」をかけて、次の層に渡します。
たとえば:
- 前の層の出力:x = [x₁, x₂, x₃]
- 重み:w = [w₁, w₂, w₃]
このとき、次の層のニューロンでは、
z = x₁×w₁ + x₂×w₂ + x₃×w₃
z = x・w
(ゼットは、エックス1かけるダブリュー1 たす エックス2かけるダブリュー2 たす エックス3かけるダブリュー3)
という計算、つまり内積が行われます。
でも、なぜ「内積」?
ここからが本題です!
層と層の演算に内積が使われるのには、ちゃんと理由があります。
理由1:すべての入力を「まとめて」扱えるから
内積は、複数の入力をひとつの値に圧縮できます。
これはつまり、「このニューロンにどれくらい刺激が届いているか?」を数字1つで表現できるということ。
これはとても効率が良いんです。
たとえば、料理で言えば:
- 塩、こしょう、醤油などの調味料(=入力)
- 分量(=重み)
これらをうまく組み合わせて「この料理はしょっぱいぞ!」と判断する、みたいな感じです。
理由2:行列演算として拡張しやすい!
ニューラルネットでは、何十個、何百個というニューロンが同時に計算されます。
これを一つひとつやっていたら、時間がかかって仕方ありません。
そこで使われるのが「行列(matrix)」です。
- 入力ベクトル:x(1行n列)
- 重み行列:W(n行m列)
- 結果:z = xW(1行m列)
つまり、ベクトルと行列の掛け算により、一気に全ニューロンの内積を計算できるんです!
これによって、GPUなどの計算機でも超高速で処理できるようになります。
理由3:内積には「方向性と相性」がある
内積には、ベクトルの方向の違いを測る意味もあります。
- 同じ方向 → 内積が大きくなる(よく反応)
- 正反対 → 内積がマイナス(反応しない)
- 直角 → 内積がゼロ(無視)
つまり、重みベクトルというのは「この特徴に注目しているよ!」という方向を持っており、入力ベクトルとの内積を取ることで、「注目していた特徴がどれだけあったか」を数値化できるわけです。
内積じゃなかったらどうなる?
逆に、もし内積を使わずに、たとえば「全部の入力を足すだけ」にすると…
- どの入力が重要なのか区別がつかない
- 全体の強さしかわからない
- ニューロンが学習できる表現が限られる
といった欠点が出てきます。
重みによる調整 + 内積 = ニューロンが「意味ある判断」をできるという仕組みなんですね。
数式でのまとめ
層と層の間の演算は、次のように表せます。
z = x・w + b
z = x₁w₁ + x₂w₂ + ... + xₙwₙ + b
(ゼットは、エックス1かけるダブリュー1 たす エックス2かけるダブリュー2 … たす バイアス)
ここに活性化関数(ReLUなど)を通すことで、非線形性も導入されます。
まとめ
ニューラルネットの層間演算に内積が使われる理由は、主に3つ。
理由 | 内容 |
---|---|
複数入力の圧縮 | 重み付き和をコンパクトに表現できる |
行列演算の効率 | GPUなどで高速処理できる |
類似度の測定 | 重みと入力の相性を計算できる |
内積は「たった一つの操作で、ニューロンが意味のある判断を下すための土台」となっているのです。
今後の学習のヒント
次のステップとして、以下のテーマを勉強してみてください!
- バイアス項の意味と効果
- 活性化関数の役割(ReLU, sigmoid, tanhなど)
- 内積とコサイン類似度の違い
- 行列計算とテンソル演算の違い
「仕組み」だけでなく、「なぜこの仕組みにしたのか?」まで考えると、グッと理解が深まりますよ!
セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク
投稿者プロフィール
- 代表取締役
-
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。
最新の投稿
山崎講師2025年10月5日ニューラルネットワークの「重み付き和」に内積を使う理由をやさしく解説!
山崎講師2025年10月5日なぜニューラルネットワークの層と層の間は「内積」でつながっているのか?
山崎講師2025年10月4日スカラーとは何か?名前の由来と「スケール」との意外な関係
山崎講師2025年10月4日運動神経はヘブ則で鍛えられる?脳のルールをスポーツに活かす秘訣