Chapter 01
ベクトル内積
二つのベクトルの向きと大きさを掛け合わせ、一つのスカラーで表す最も基本的な演算。
チャプター別 ディープラーニング図
チャプターを進めるたびに、下の図が少しずつ埋まります。ここまでの構造です。
左のX1,X2,X3と右のY1,Y2,Y3が線でつながっています。右の1ノードは左との重みの内積です。
ディープラーニングで見る内積
内積は二つのベクトルの同じ位置の成分を掛けてすべて足した値です。例えば [2, 3] · [4, 1] = 2×4 + 3×1 = 11 になります。
内積は二つのベクトルがどれだけ同じ方向を向いているかも表します。値が大きいほど方向が近い(似ている)、ゼロなら直交(無関係)、負なら逆方向です。類似度を一つの数で測れるのが内積の強みです。
式で書くと a · b = a₁×b₁ + a₂×b₂ + … + aₙ×bₙ です。内積を計算するには二つのベクトルの要素数(次元)が同じでなければなりません。
ディープラーニングでは一つのニューロンの出力が内積で計算されます。重みベクトルと入力ベクトルの同じ位置を掛けて足す──これがそのニューロンの「入力への反応スコア」です。
内積はディープラーニングの最も基本的な演算です。行列の積は内積を束ねたものであり、線形層・アテンション・埋め込み比較など、すべてが内積の繰り返しで成り立っています。
内積は類似度の指標としても使われます。例えばNetflixではユーザーベクトルと映画ベクトルの内積で「マッチ度」を計算します。この考え方はコサイン類似度とも呼ばれます。
レコメンドシステム(Netflix・YouTube): ユーザーベクトルとコンテンツベクトルの内積で「このユーザーがこのコンテンツを好む度合い」を算出します。スコアが高いほどおすすめ上位に表示されます。
検索エンジン・チャットボット: クエリと文書をベクトルに変換し、内積(類似度)で順位をつけます。ChatGPTも質問に最も関連する情報を探すとき、同じ仕組みを使っています。
アテンション機構: 翻訳やチャットボットで、単語ベクトル同士の内積で「関連度スコア」を計算し、スコアが高い単語により注目して処理します。
計算方法: 同じ位置の成分を掛けて、すべて足します。例: [1, 2, 3] · [4, 5, 6] = 1×4 + 2×5 + 3×6 = 4 + 10 + 18 = 32。
空白の求め方: 内積の合計と他の積が与えられている場合、分かっている積をまず合計し、全体から引いて足りない積を出します。その積を既知の要素で割れば空白が分かります。
注意点: 二つのベクトルの要素数は必ず同じにします。また、すべてのペアを漏れなく掛けたか、一つずつチェックするとミスを防げます。
a = [2, 3], b = [4, 1] → a·b = 同じ位置の成分の積の和
問題
以下のベクトルの内積 を求めなさい。