テンソル(Tensor)は、機械学習や深層学習の基礎となる概念であり、あらゆるデータを数値として扱うための「多次元の器」です。
画像・音声・テキストなど、どのような種類のデータも最終的にはテンソルという形で表現され、計算処理が行われます。
テンソルの基本構造
テンソルとは、複数の数値を整理して保持する「多次元配列」のことです。
最も単純な形は1つの数値を表すスカラーで、次に1列の数値群を持つベクトル、さらに二次元で表のように並んだ行列があります。
テンソルはこれらをさらに高次元へ拡張したものです。
- スカラー:0次元の単一値
- ベクトル:1次元の数列
- 行列:2次元の表
- テンソル:3次元以上の構造を持つデータ
このように、テンソルはスカラーやベクトル、行列をすべて内包する上位概念といえます。
ランクとシェイプ
テンソルを理解するうえで重要な概念が「ランク」と「シェイプ」です。
- ランク(Rank)はテンソルの次元数を表します。
例えば、1次元はベクトル、2次元は行列、3次元以上は高次元テンソルです。
(数学での「階数」とは異なる概念なので注意が必要です。) - シェイプ(Shape)は各次元における要素数を示します。
たとえば、画像データであれば「高さ × 幅 × チャンネル」、テキストでは「系列の長さ × 埋め込み次元」といった形で表されます。
テンソルの具体例
画像データ
カラー画像は一般に「縦 × 横 × チャンネル」という3次元テンソルで表されます。
学習時には複数の画像をまとめて扱うため、さらに「バッチサイズ」という軸を加えた4次元構造になります。
深層学習ライブラリによってデータの並び順は異なり、PyTorchでは「バッチ・チャンネル・高さ・幅(NCHW)」、TensorFlowでは「バッチ・高さ・幅・チャンネル(NHWC)」が主流です。
テキストデータ
テキストは単語や文字を数値化してテンソルに変換します。
系列データとして扱うため、通常は「バッチサイズ × 文章の長さ × 埋め込み次元」という三次元構造になります。
文章の長さが異なる場合は、欠けている部分を補うためにパディングやマスクといった処理が用いられます。
音声データ
音声波形は時間軸に沿った一次元のテンソルで表現されますが、周波数成分を加味したスペクトログラムでは二次元化されます。
さらに複数のサンプルをまとめると、より高次元のテンソルになります。
動画データ
動画は時間軸を持つため、画像のテンソルに時間の次元が追加されます。
そのため一般的には「バッチ × フレーム数 × チャンネル × 高さ × 幅」という5次元テンソルで表されます。
テンソル演算の考え方
テンソルは線形代数の拡張であり、足し算や掛け算、行列積などの演算を通じてデータの変換が行われます。
同じ形のテンソル同士では要素ごとの演算が可能で、異なる形のテンソルでも条件を満たせばブロードキャスト(自動拡張)によって計算が行えます。
このとき、テンソルは右側の次元から比較され、一方のサイズが1であれば拡張されます。
メモリ構造とデータ型
テンソルは効率的な数値処理を目的として、メモリ上に連続的に配置されます。
計算効率を上げるため、データ型(dtype)や格納場所(CPU・GPU・MPSなどのdevice)を明示的に指定できます。
また、最近では計算速度と省メモリの両立を目的に、float16 や bfloat16 といった半精度フォーマットが用いられることも一般的です。
内部的には各要素の配置間隔を示すstride(ストライド)という情報が管理されており、転置や並び替えを行っても実際のメモリコピーを伴わない「非連続テンソル」が存在します。
必要に応じて連続化処理を行い、効率的に演算を実行します。
テンソルと自動微分
PyTorchやTensorFlowなどのフレームワークでは、テンソルが自動的に勾配情報を持つことができます。
これにより、ニューラルネットワークの学習における順伝播(入力から出力へ)と逆伝播(誤差から重みの更新へ)の計算が自動で行われます。
学習中のテンソルには「勾配を追跡する」フラグが付与され、損失関数を通じて勾配が計算されます。
一方で推論時には、不要な計算グラフを構築しないようにするため、勾配追跡を停止させる設定が推奨されます。
機械学習におけるテンソルの役割
テンソルは、機械学習において三つの主要な役割を担います。
- データの表現:画像・音声・テキストなど、あらゆる入力データがテンソルとして表現されます。
- モデルのパラメータ:ニューラルネットワークの重みやバイアスといった学習対象もテンソルです。
- 勾配情報の保持:学習時の更新量や誤差伝搬もテンソルとして扱われます。
学習とは、これらのテンソルを最適化し、望ましい出力を得るための変換関係を見つける過程といえます。
実務的な拡張概念
高度な場面では、テンソルをさらに効率的に扱うための概念も用いられます。
大規模な語彙やグラフ構造を扱う際には、ほとんどがゼロ値となる要素を省くスパーステンソルが有効です。
また、畳み込み処理の最適化やGPU転送の効率化を目的に、チャネルラスト形式(NHWC)やピン留めメモリなどの手法も活用されます。
まとめ
- テンソルは「多次元データ構造」であり、機械学習のすべての計算の基盤を成す。
- ランクは次元数、シェイプは形状を表す。
- 画像・音声・テキストなど、すべてのデータはテンソル化される。
- モデルの重みや勾配もテンソルで表され、学習とはテンソルの最適化過程である。
- 実務ではデータ型、デバイス、メモリ構造の選択が性能に大きく影響する。
このようにテンソルは、単なるデータ構造ではなく、機械学習における「すべての数値的な流れの媒介体」として機能しています。
深層学習とは、まさにテンソルが層を通じて変換され、最終的に最適な形へと収束していくプロセスそのものです。
以上、機械学習のテンソルについてでした。
最後までお読みいただき、ありがとうございました。
