講演資料


講義資料スライドの表紙

講義資料スライドの表紙です。スライド画像、または下の要約文中の青いページ番号リンクをクリックすると、別のタブで無駄なノイズのない、純粋なPDFビューア画面が起動し、指定されたページへ直接ジャンプして快適に閲覧できます。

全体概要

本セミナーは、「機械は自然言語の文法を理解できるか」という根源的な問いを軸に、RNN(Recurrent Neural Network)とLSTM(Long Short-Term Memory)の基礎を丁寧に解説した技術講義です。

2012年のAlexNetによる画像認識革命以降、Deep Learningは急速に発展しましたが、2016年末にGoogleが発表した「ニューラル機械翻訳」は、それに匹敵する新たなブレイクスルーとして位置づけられています [p.5], [p.6]。その中核技術がRNN/LSTMであり、本セミナーはこの技術の本質的な理解を目指すものです。

技術史的な観点では、RNNは1990年代に一度注目されながらも「勾配消失問題」によって放棄された経緯があります [p.103], [p.106]。しかし1997年にHochreiterらがLSTMを提案したことで復活を遂げ、現在のGoogle翻訳の基盤技術となっています [p.113]。この「放棄と復活」の物語は、問題の難しさを最も深く理解した研究者が解決者となった逆説的な歴史でもあります。

言語理論との接点も重要なテーマです。Chomskyの「文法階層(Chomsky Hierarchy)」という枠組みを援用することで、機械が学習できる文法の複雑さが段階的に整理されます。1997年のHochreiterによる有限オートマトン(正規文法)の学習 [p.15]、2015年のKarpathyによるLaTeXやC言語(文脈自由文法)の学習 [p.13]、そして2016年のGoogle翻訳による自然言語(文脈依存文法)への挑戦 [p.40] という系譜は、機械の文法理解能力が階層を着実に登ってきたことを示しています。

技術的な核心としては、RNNが「同一パラメータを共有する再帰的ネットワーク」であること、そしてLSTMがMemory Cell・三つのGate(Input/Forget/Output)によって「長期記憶」を実現する仕組みであることが、数式とグラフを組み合わせて丁寧に解説されます。本セミナーを通じて受講者は、世界最大規模の機械翻訳システムの設計思想を支える数理的基盤を、根本から理解できるようになります。


講義のロードマップ

■ Part I: RNNの驚くべき能力について

  • この部の核心:

RNNが実際にどれほどの能力を持つかを、歴史的な実験と具体的な生成例を通じて感覚的・直観的に示します。機械が「文法」を学習するとはどういうことかという問いを提起し、Chomsky Hierarchyという理論的枠組みによってその到達点を位置づけます [p.9]

  • 論理展開:
  • Hochreiter(1997年)はLSTMが有限オートマトン(Reber Grammar等)の学習に成功することを実験的に証明した [p.15], [p.16], [p.17]
  • Sutskever(2011年)は5億文字のテキストをRNNに学習させ、文法的には整合しているが意味をなさない文章を生成した [p.23], [p.24], [p.25]
  • Karpathy(2015年)はLaTeXやLinuxソースコードをRNNに学習させ、文脈自由文法レベルの構文規則の習得を示した [p.31], [p.32]
  • Chomsky Hierarchyの観点から整理すると、Type-3(正規文法)→Type-2(文脈自由文法)→Type-1(文脈依存文法)へと機械の学習能力が段階的に拡張してきたことが分かる [p.39], [p.40]
  • Google翻訳(2016年)は日英間の文法的差異(Head-directionality、Null-subject等)を正確に橋渡しし、さらに複数言語間の「中間言語(interlingua)表現」の存在を示唆する [p.43], [p.47], [p.57], [p.60]


■ Part II: RNNとは何か

  • この部の核心:

RNNの構造的本質を「単純なネットワークを横に並べ、パラメータを共有する再帰的繰り返し」として定義し、展開形と再帰形という二通りの表記法を用いて明示します。さらに、かつてRNNが放棄された理由(勾配消失問題)と、その後の復活の経緯も解説します [p.63]

  • 論理展開:
  • RNNはDNN(縦方向の積み重ね)と対比して、ネットワークを「横方向に並べ、パラメータを共有する」ことで構成される [p.67], [p.79], [p.80]
  • 再帰形のループと展開形の横串は同一のものを表し、隠れ層の更新式は `h_t = tanh(Ux_t + Wh_{t-1} + b_h)` で表される [p.82], [p.96]
  • RNNはSequence→Sequenceの変換器として機能し、many-to-many等のバリエーションを持つ [p.87], [p.88]
  • Bengioら(1994年)は「勾配は長期依存関係に対して指数関数的に小さくなる」ことを理論的に証明し、RNNの探求は一時放棄された [p.107], [p.110]
  • LSTMの提案(1997年)によりRNNは復活し、Bengioは2016年にも同じタイトルの論文で問題の継続性と新たな展開を示した [p.113], [p.115]


■ Part III: LSTMの基礎

  • この部の核心:

LSTMがRNNの「勾配消失問題」をどのように克服するかを、Memory Cellの「Constant Error Carousel」とForget Gateという二つのアイデアで説明します。さらに三つのGate(Input/Forget/Output)の数式とグラフを詳細に解説し、LSTMの動作原理を完全に明示します [p.119]

  • 論理展開:
  • RNNとLSTMの最大の違いは、横の接続が`h_t`の一本から`h_t`と`C_t`(Memory Cell)の二本になる点である [p.129]
  • Memory CellのループをW=1に固定することで記憶が消滅しなくなる(Constant Error Carousel)。Forget Gateはこのループに「忘れる」機能を追加する [p.142], [p.144]
  • 三つのGateはいずれも `σ(W·[h_{t-1}, x_t] + b)` の形で制御され、Hadamard積(要素ごとの積)によって情報の通過・遮断を行う [p.161], [p.162], [p.164]
  • Memory Cellの更新式 `C_t = f_t * C_{t-1} + i_t * C̃_t`(Forget Gateで過去の記憶を調整し、Input Gateで新情報を加算)とOutput Gateの出力式 `h_t = o_t * tanh(C_t)` がLSTMの本質的な数式である [p.194], [p.204], [p.207], [p.208]
  • Karpathyによる可視化では、「引用符の内側に反応するCell」「if文の内側に反応するCell」など、LSTMが文法的構造に対応した内部表現を獲得していることが示される [p.151], [p.152]


■ Appendix: 各Frameworkでの実装を見る

  • この部の核心:

TensorFlow(C++/Python)、CNTK、MXNet、TensorFlow Foldという主要なDeep Learningフレームワーク上で、LSTMがどのように実装されるかを実際のコードで示します [p.214]

  • 論理展開:
  • TensorFlowのC++カーネル(lstm_ops.h)ではInput Gate・Forget Gate・Cell Input・Output Gateが順番に計算される [p.216], [p.217]
  • CNTKのNDL(ネットワーク定義言語)では数式と対応した形でGateが記述され、Peepholeありのバリアントも示される [p.220], [p.221], [p.222]
  • MXNetではRによる実装でゲートが`slice.gates`から切り出される形で記述され、展開済みLSTMの構造が明示される [p.224], [p.225]
  • TensorFlow Foldでは関数型スタイルで`bi`(Input Gate)・`bf`(Forget Gate)・`bo`(Output Gate)・`bg`(modulation)を組み合わせてLSTMセルが記述される [p.229]

🎥 セミナー関連動画

エピソード – 1
エピソード – 2
エピソード – 3
エピソード – 4
エピソード – 5
エピソード – 6
エピソード – 7
エピソード – 8
エピソード – 9
エピソード – 10
エピソード – 11
エピソード – 12
エピソード – 13