目次
はじめに
列ベクトルは「縦」、行ベクトルは「横」
列ベクトルと行ベクトルの本質的な相違
E資格では列ベクトル、行ベクトルどちらが多い?
論文では列ベクトル、行ベクトルどちらが多い?
まとめ
はじめに
表題の件に関連する題材として、かなり前に、E資格勉強グループ向けのプチEラーニングに以下の問題を仕込んでおりました。
以下の空欄に当てはまる回答を選択せよ。
機械学習でいうベクトルは、多くの場合 (____)ベクトルを指す
1. 縦
2. 横
当時の回答は一番下に記載しておきました。ただ、「なんで縦ベクトルなんだろう?」と考えるとよくわからないところもあり、当時は「形かな?」と思っていました(後述)。
今もよくわからないので、まずは「列、行どちらが使われているか」に関して把握している傾向と、「形」を見ると確かに、と筆者が思うところのみこちらに記載しておこうと思います。
列ベクトルは「縦」、行ベクトルは「横」
まずはおさらい。列は「縦」、行は「横」です。このことはベクトルに限らず、表であっても同じですので感覚的にもわかると思います。
列ベクトルと行ベクトルの本質的な相違
すみません、私はここがわからないのでどなたかご存じな方がいらっしゃれば教えて下さい。
以降を「傾向」をして記載することにしたのは、この2つの本質的な違いがわからなかったからです。何がわからないかというと、「列ベクトルの内積」と「行ベクトルの内積」に数学的な違いがあるのかどうか・・・結果は同じ一次元のスカラーなので、同じかなぁと思っていたんですが、冷静に考えた方がよさそうだなと思って結論付けをいったん辞めました。
E資格では列ベクトル、行ベクトルどちらが多い?
E資格の教科書では、列ベクトルが使われていることが多いように感じます。その場合、ニューラルネットワーク(NN)を以下の形状で図式化していることが多いと思います。
・入出力ノードを縦に並べている
・順伝搬ではデータが左から右に、逆伝搬ではその逆を想定している
試験問題もそうなっている気がするのは気のせいでしょうか?それもあって、数年前のプチEラーニングの答えは・・・ 1. 列ベクトルとしていました。この「E資格に出てくる数式では、列ベクトルが使われていることが多い」という知識自体は資格試験勉強に今も役立つかもしれませんね。
この場合、NNの伝搬を表現するためには、入力ベクトルに重み行列Wを左から掛ける形の式で表現することになります。
こう書くと、図でも式でも「数値が縦に並んでいる感」は出ますので、なんとなくわかりやすい気はします。
論文では列ベクトル、行ベクトルどちらが多い?
大規模言語モデルの論文など、ディープラーニングの論文では、行ベクトルが使われていることが多いようです。
それで、これが理由かどうかわからないのですが、Transformerは「左から右に順伝搬する」のではなく「下から上に順伝搬する」形状で描かれることが多いので、その図と行ベクトル表現は合うなぁ、というのが筆者の実感です。
この場合、NNの順伝搬は、入力ベクトルに重み行列Wを右から掛ける形の式で表現できます。
こう書くと、図でも式でも「数値が横に並んでいる感」は出ますので、なんとなくわかりやすい気はします。
まとめ
本当の理由は私にはよくわからないんです・・・ただ、「左から右へ」へ順伝搬するニューラルネットワークの図を数式で表現する際は列ベクトル表現が、「下から上へ」「上から下へ」へ順伝搬するニューラルネットワークの図を数式で表現する際は行ベクトル表現が、それぞれ図とマッチしてわかりやすい気がします。