Chapter 07

重み付き結合

層やニューロン間の重み付き接続。

チャプター別 ディープラーニング図

チャプターを進めるたびに、下の図が少しずつ埋まります。ここまでの構造です。

層と層の間の各線重み(w)です。入力に重みをかけて足し、バイアス(b)を足すと次の層Yになります。

重み(w)重み(w)重み(w)重み(w)重み(w)重み(w)重み(w)重み(w)重み(w)X1X2X3+バイアス(b)Y1Y2Y3

丸が値、線が重み(w)です。重み付き和にバイアス(b)を足した値が次の層Yです。

ディープラーニングで見る結合

結合とはある層のニューロンが次の層のニューロンにどうつながっているかを表す構造です。各結合には重み(数値)があり、「この入力がこの出力にどれだけ影響するか」を決めます。

全結合: 前の層のすべてのニューロンが次の層のすべてのニューロンとつながります。これまで学んだ線形層(Y = W·X + b)がまさに全結合層で、Wのすべてのマスに数値があります。

部分結合: Wの一部が0、つまり「つながっていない」状態です。その入力はその出力に影響しません。CNNのように近くのピクセルだけをつなぐのが部分結合の典型例です。

結合の構造がモデルの性格を決めます。 全結合はすべての入力を考慮し(情報量は多いがパラメータも多い)、部分結合は必要なものだけ見る(効率的で速いが見落としもありうる)という違いがあります。

AIの学習とは結合の強さ(重み)を調整することです。「この結合を強く、あの結合を弱く」と少しずつ調整して正しい出力に近づけます。大規模モデルではこうした結合が数十億個にもなります。

Wが0の場所を見るとモデルが何を無視しているか分かります。学習後に0に近い重みは「重要でない情報」を示し、これを利用したプルーニング(枝刈り)でモデルを軽量化できます。

画像認識(CNN): 部分結合を使い、近くのピクセルだけをつなぎます。遠いピクセルは関連が薄いので、パラメータを減らして効率よく高速に処理します。

チャットボット・翻訳(Transformer): アテンションが「どの単語がどの単語に関連するか」を判断し、データから動的に結合の強さを学習します。

レコメンド・音声認識: ユーザー特徴と商品特徴をつなぐ重みがそのままおすすめスコアになります。音声認識では各周波数帯が次の層のどの特徴とつながるかをモデルが学習します。

W = 0 はつながっていない: 例えば W(2,1) = 0 なら、1番目の入力は2番目の出力にまったく影響しません。計算では飛ばしてOKです。

一つの出力を求める: その出力につながっている(W ≠ 0)入力だけを見つけ、W × X を掛けて足し、bを加えます。0のところは掛けても0なので飛ばして同じ結果です。

空白の戦略: まずWの0の位置を確認します。次に0でない結合だけで方程式を立てます。空白がWにあれば Y と X から逆算、空白がYにあれば W と X から順に計算します。

結合は、ある層のニューロンが次の層のニューロンとどうつながっているかを表します。重みが0でないところだけが実際の結合で、下のグラフはその部分結合だけを線で示しています。

W
0
1
0
0
1
0
·
X
1
2
1
+
b
1
-1
=
Y
3
1

各出力: (W その行·X) の積 + b を加算 = Y

Y₁ = (W 1行·X) + b₁ = (0×1 + 1×2 + 0×1) + 1 = 2 + 1 = 3
Y₂ = (W 2行·X) + b₂ = (0×1 + 1×2 + 0×1) + (-1) = 2 + (-1) = 1

W 1行·X + b[0] → Y[0]|W 2行·X + b[1] → Y[1]

問題

結合 Y=WX+bY = W \cdot X + b で、空欄(?)に入る値を求めなさい。Wが0の入力はその出力にはつながりません。

X
2
1
·
W
-1
0
+
b
-1
=
Y
1 / 20