まとめ事前知識テンソルで理解しておくべきことは意外と少ない畳み込みニューラルネットワークでは非常にたくさんの添字が現れます。難しいものではありません。実はとてもシンプルな処理を繰り返しているだけです。そのことを理解するためには、テンソルの概念を知っておくと便利です。言葉が聞き慣れないだけで全く難しくありません。テンソルのインターネットで検索すると何やら難しい話が出てきます。以下はWikipediaの引用です(読む必要ありません。テンソルって聞くとこんな話が出てきますが、気にしないでくださいということが言いたいのです。多重線型写像としての取り扱い[編集]テンソルを多次元配列として定義するやり方では、内在的な幾何学的対象であることから期待されるべき性質である基底の取り方に依らないことが、定義から明らかでないという欠点がある。テンソルの変換法則が実際に基底の取り方に依らないことは証明できることではあるが、しばしばより内在的な定義が取り上げられる。その一つが、テンソルを多重線型写像として定義することである[1]。}で、各引数に関して線型であるようなものとして定義される。その双対ベクトルからなる双対空間である。q)-次元配列が得られる。各引数に関して線型であるから、成分は多次元配列としてのテンソルの変換法則を満足する。成分の成す多次元配列はその意味において確かにテンソルを成していることが分かる。成分として実現できる。そのような事情により、多重線型写像をテンソルに基づく内在的対象を与えるものとして見ることができる。同一視するのが普通である。属する線型形式を与えられたベクトルにおいて評価した値へ写す写像」と看做すことによって与えられる。その二重双対と同一視することは有用である。数学的応用に際しては、より抽象的やり方の方が有効なこともある。これは普遍性を通じて定義できるベクトル空間のテンソル積の元としてテンソルを定義することによってなされる。copies}}}}として定義される[2]。^{j_{q}}}に等しい。q)-型テンソルの変換則を満たすことが示せる。言えば、テンソル積の普遍性により、今定義した意味でのテンソルと多重線型写像として定義した意味でのテンソルが一対一対応することが言える。テンソルは極めて一般に(例えば任意の環上の加群まで含めて)定義することができる。その双対から得られるテンソル積(テンソル空間)の元のために用いるのが普通である。それは数学的な都合によるもので、機械学習で応用する上では難しい概念は必要ありません。多次元配列のことをテンソルだと思えばいいのです。階テンソルはと表せます。値を変えれば、テンソルの要素にアクセスできるくらいに思っておけばいいでしょう。それぞれ何のインデックスなのかは問題に応じて人間が勝手に決めればいいのです。以下の記事でテンソルというものの概念を掴んでください。s0sem0y.hatenablog.com畳み込みニューラルネットワークを扱う上ではテンソルの添字の扱いに慣れておいたほうがいいでしょう。プログラミングに慣れている人は単に多次元配列だと考えても支障はないです。畳み込みとは畳み込み畳み込みという言葉はなにやら難しそうな言葉です。一般的に畳み込み演算とは以下で表されます。(最後に述べますが、畳み込みニューラルネットは厳密には以下で述べる畳み込み演算とは異なります。読み飛ばしても構わないです。方のみが変化をしていきます。引数が1つずつずれていっているのが分かるでしょうか。具体例を見てみましょう。以下の単純な問題を考えます。ような数列を準備しましょう。ここで数列の長さが異なっていますね。これらを畳み込んでみましょう。定義通りに値を代入していっただけです。ここで引数(数列のインデックス)は0から始めています。各値については既に知っているのでこれを代入してしまいましょう。番目の値を具体的に計算できることになります。今数列と数列を畳み込んで、新たな数列を作り出しました。畳み込み演算自体は離散でなくとも連続でも扱うことができます。片方を固定し、片方の引数を変化させていき積を取るのが畳み込み演算であり、以下の図が非常に分かりやすいです。畳み込みより)通常、信号処理や制御では当たり前のように扱われており、波形をシステムに畳み込むことで出力を獲得します。通常、信号処理で行われるフィルタ処理は畳み込み処理によって実現されます。畳み込みニューラルネットでもフィルタと2次元データに畳み込みのような処理を行い、何らかの新たな2次元データを獲得します。実は厳密には畳み込みニューラルネットの畳み込みと呼ばれる処理は、「畳み込み演算」ではありません。