夜のデスクに置かれたノートPCの画面に、無数の数字が並んでいる。
これが「ニューラルネットワーク」の世界の入口だと知ったらどうだろう。
画像も文章も音声も、すべて数字の塊=Tensorに変換されて計算されている。
Pythonと少しのコードがあれば、この仕組みを誰でも体感できる時代になった。
1.ニューラルネットワークの正体
ニューラルネットワークとは、人間の脳の神経回路をヒントに作られた計算モデル。
入力されたデータを層ごとに変換しながら処理し、最終的に出力を得る仕組みを持つ。
層は大きく「入力層」「隠れ層」「出力層」の3つに分かれる。
1つ1つの層の中には、ニューロンと呼ばれる小さな計算単位が並んでいる。
現代のAIブームを支えているのは、このシンプルな枠組みを何十層も積み重ねた「ディープラーニング」だ。
複雑な画像認識や音声翻訳も、突き詰めればニューロンの繰り返し計算にすぎない。
2.ニューロンの役割
ニューロンは、入力を受けて重みを掛け算し、足し合わせ、バイアスを加え、活性化関数で変換する。
式で書けばとてもシンプルだ。
y = f(x·w + b)
ここで x
は入力ベクトル、w
は重みベクトル、b
はバイアス、f
は活性化関数だ。
この計算を1つのニューロンが担当し、その出力が次の層へ渡される。
たったこれだけの仕組みが、画像に写る猫を認識したり、人間の声を文字に変換する力につながる。
単純な計算が積み重なることで知能的なふるまいが生まれるのは驚きだ。
3.Tensorの基本
Tensorは「数字の塊」を表す入れ物だ。
0次元はスカラー、1次元はベクトル、2次元は行列、3次元以上になると画像や動画のような複雑データになる。
例えば写真は「縦×横×RGBチャンネル」の3次元Tensorで表現できる。
音声はサンプル点の並びとして1次元Tensorになる。
文章は単語ベクトルを並べて2次元Tensorになる。
TensorはNumPyの配列に似ているが、GPU上で効率的に計算できるのが大きな違いだ。
深層学習フレームワーク(PyTorchやTensorFlow)は、すべてのデータとパラメータをTensorとして扱っている。
4.Tensorでニューロンを表現する方法
ニューロン1つの計算もTensorで書ける。
y = f(x·w + b)
x
も w
もTensorであり、その積と和を取ればすぐに y
が求められる。
つまり「ニューロンの出力」はTensor計算そのものなのだ。
これにより、複雑なループを書かなくても、ベクトルや行列を使って一気に処理できる。
Pythonでのコードは数行で済む。
5.Tensorでネットワークを表現する方法
ニューロンを並べて層にすると、出力もまとめてベクトルになる。
重みは行列に拡張され、式はこう表される。
y = f(W·x + b)
層を積み重ねれば、ネットワーク全体も「yの連鎖」として表せる。
y1 = f1(W1·x + b1)
y2 = f2(W2·y1 + b2)
...
yL = fL(WL·yL-1 + bL)
こうしてニューラルネット全体をTensor演算の流れとして書ける。
実際のフレームワークも、まさにこの形でモデルを実装している。