以下の論文を読みます。

これは TCN を提案された方々の論文ですが、この論文では系列データを学習する新しいモデル構造である Trellis Networks(「格子垣」ネットワーク)を提案するようですが、この TrellisNet はアブストラクトによると
- ちょっと特殊な Temporal Convolutional Networks (TCN) ともいえるし、
- ちょっと特殊な Recurrent Neural Networks (RNN) ともいえる


じゃあ RNN のようでもあって、TCN のようでもあって、格子にみえるモデルを考えてみたらいいんじゃないかな。そもそもどんなモデルだったら格子にみえるだろう?

どんなって、「格子」というからには…あれ、格子ってなんでしょう…あ、そうです! 複素数平面の格子点です! つまり、格子点のように、何か横方向のインデックスと縦方向のインデックスをもつものがあれば、格子にみえるでしょう。むしろそれが格子の定義かもしれませんが…まあいいです。
それで、RNN や TCN には縦方向と横方向のインデックスをもつものがあるかという話です。この場合、横方向のインデックスは時間ステップでしょう。縦方向のインデックスは何層目の特徴かといったようなものが考えられると思います。入力を0層目、出力を1層目とすれば RNN も TCN も格子とはいえますね。でも、それではちょっとお粗末だと思います。それでは格子というより梯子ですから。
…あっ、でも、RNN も TCN も構造上2つ以上積み重ねることができますね。そうすれば、時刻 の
層目の出力が格子にみえると思います。
…いや、よく考えると、RNN に TCN を重ねることも、TCN に RNN を重ねることも妨げられるものではないですね。ステップ毎に出力を出すタイプの系列モデルであれば中身がどうあっても積み重ねらることができますから。であれば、TCN → RNN → TCN → RNN のような積み重ねだって可能ですし、かつ格子にみえます。TrellisNet の正体はもうこれでは?

いい線なんじゃないかな。でも TCN → RNN → TCN → RNN というモデルではないみたいだね。それよりは TCN → TCN → TCN → TCN が近いと思う。3ページ目の Figure 1 をみる限りは。たぶん TrellisNet には純粋な再帰路はない。

うおおおい! 私には考えさせておいて自分はちゃっかりカンニングしてるじゃないですか! それに、TCN → TCN → TCN → TCN だと RNN 要素なくないですか? TrellisNet はちょっと特殊な RNN なんでしょう?

どう RNN なのか解説してくれるのが 4.2 節なんだと思う。

…おとなしくイントロダクションから読んでいきます。って、最初の段落、どばっと文献の引用がありますが、個々の内容には何も言及されていないですね…。近年の系列データの学習の研究では、RNN も改良が続けられているし、TCN も高いパフォーマンスを発揮しているし、セルフアテンションに基づくネットワークも快進撃をみせているということですが…セルフアテンションって RNN や TCN の並びに入るんですか? RNN や TCN は将来のデータをカンニングしてはならないという縛りがあるはずですが、文章に対する品詞分類や翻訳などのタスクでは、ふつう将来のデータ(単語)をカンニングしてもいいですよね? むしろカンニングしろって感じですが…。

セルフアテンションが RNN や TCN の並びに入るかということについては、セルフアテンション層は未来の単語も過去の単語も参照するということはしていないと思う。だから分の途中まででも出力は同じだよ。Positional Encoding とかあるから文章中の座標は単語に貼り付けてある必要はあるし、ネットワークを学習するときに次の単語を説明しようとしたり前の単語の説明しようとしたりということをしないということではないよ。
![]() そこを読む限り、TrellisNet は TCN → TCN → TCN → TCN (多層 TCN)なんだけど、全ての TCN は重みを共有しているし、どの層にも入力データが injection されるんだね(右図)。なるほど格子にみえる。 でも「これをみせられてもよい性能をもつとは思われないでしょう」と。まあこれだけぱっとみせられても何がいいのか、全ての TCN が重みを共有している意義は何なのかわからないね。でもこれが記憶をトランケートされた RNN の一般化になっていることをこの論文で示すらしい。それが優れている根拠になっているといいたいのかな。 ![]() 「RNN とみなせるから優れているのだ」ですか。RNN に一定の信頼があるのは確かでしょうが。イントロダクションの5段落目にあるのは TrellisNet の性能を検証したタスクですね。おそらく先の先行研究にならって選定されていると思われます。個々のタスクの出自やデータサイズなんかの詳細は Appendix C にあるようです。
ところで sequential MNIST 以下はもう「系列モデルに対するスタンダードなストレステスト」とされていますが、手書き数字や写真って本来全てのピクセルを同時に認識でき、縦横のつながりも明らかなものですよね。明らかに CNN さんに学習させるべきですよね。それを出鱈目な順序でピクセルごとに流すような、無駄な曲芸のようなタスクを系列モデルにさせるのってパワハラに当たらないんですか? | ![]() |


いや法律的な見解ではなく、本来は2次元としての構造をもつデータがベンチマークとなっているのはどうなのかといいたかったんですが…。2節の「背景」は短いですね。かいてある内容としては、
といった感じでまあ何にせよ RNN と TCN を組み合わせるといった感じですが、RNN と TCN を組み合わせた先行研究も引用されていますね。ただどのようなものだったのか詳しくわかりませんね。TrellisNet の方が両者をより深く結びつけたのだということではあるんでしょうが。
「convolutional LSTMs combine convolutional and recurrent units」というのは RNN ユニットと CNN ユニットを組み合わせたというようにみえるけどね。なら RNN の結果を CNN したり、CNN の結果を RNN したり、それこそ TCN → RNN → TCN → RNN のようなものなのかな。知らないけど。

3節の SEQUENCE MODELING AND TRELLIS NETWORKS に進みます。冒頭では「系列モデルとは長さ T の系列を受け取って長さ T の系列を出すものであって t 番目の出力は未来の入力に依存してはいけないものとする」という TCN の論文同様の定義が示されています。その後にはもう TrellisNet が以下のように定式化されていますね。
- 系列モデルの入力を
とする。
- 時刻
の
層目の出力を
とする(つまり何層目の出力であっても
次元である)。
はゼロベクトルとする。
- TrellisNet の
のつくり方としては、まず
を下図のように線形結合で生成し(Conv1D とも解釈できますね)、
と
に適当な非線形関数
を適用して
とする。

…いっていることはわかりますが、腑に落ちませんね。特に最終出力 について、なぜ
を使うのか、
は具体的にどういった関数なのかという点です。
がわからなければ TrellisNet が何をするモデルなのかイメージすることは難しいと思います。もっといえばすべての層でウェイトを共有する理由だってわかりません。本文中には Vogel & Pock (2017) が画像処理で層方向のウェイトの共有をやっているとありますがだから何やら。

3節の最後に LSTM セルに基づく活性化をするとあるよ。4節にその理論的根拠があるとあるけど、先に活性化の式がある 5.1 節をみてみようか。気になるしね。

LSTM で活性化? LSTM は活性化関数ではないと思うんですが…5.1 節をみると、ゲート付き活性化というのがそもそもあるんですね? 5.1 節を読む限り、その LSTM に基づくゲート付き活性化というのは以下になるはずです。


…もし「前回の入力」と「前回の前の層の出力」を使用しないなら、これは時刻 i から時刻 i+1 に進む LSTM だよね。ただし、実際には i とは何層目かであって時刻を表すインデックスではないけど。それに、実際には「前回の入力」と「前回の前の層の出力」が混ぜ込まれるし、いわば「入力とゲートに混ぜ物があり、他人の記憶を植え付けられた LSTM」かな。微塵も LSTM ではないな…。

読み飛ばした 4 節に戻りますね。4.1 節は、TrellisNet と TCN の共通点と相違点について、「各層で未来のデータを参照せず畳込みを行うこと」「多層化するほど参照範囲が広がること」の2点は TCN と同様ですが、「各層の重みが共有されていること」「各層に入力データがインジェクションされること」は TCN と異なるといっていますね。それはまあそうですが。「各層の重みが共有されていること」は学習の安定化とモデルサイズの節約に寄与する正則化になっているとのことです。