{ "cells": [ { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# 「深層学習」読書会 〜第7章〜" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
2016/07/02 機械学習 名古屋 第5回勉強会
" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## 第7章 再帰型ニューラルネット" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "abstract:\n", "\n", "+ RNN(再帰型ニューラルネットワーク)\n", " + 以下のようなデータの特徴をうまく取り扱うNN:\n", " + データの長さがサンプルごとにまちまち\n", " + 系列内の要素の並び(=コンテキスト)に意味がある\n", " + 例:音声・言語・動画\n", "+ LSTM(長・短期記憶)\n", " + より長期のコンテキストをモデル化可能\n", "+ CTC(コネクショニスト時系列分類法)\n", " + 入力系列とは長さの異なる系列を推定(出力)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### 7.1 系列データの分類" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "**系列データ**:\n", "\n", "+ 個々の要素の順序付き集まりデータ" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\n", "{\\bf x}^1, {\\bf x}^2, {\\bf x}^3, \\dots , {\\bf x}^T\n", "$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "+ 音声・動画・テキストなど\n", "+ 系列の長さ $T$ は、一般に可変\n", "+ インデックス $t = 1, 2, 3, \\dots$ を **時刻**と呼ぶ(*時間*とは言ってない)。" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "**RNN(再帰型ニューラルネット)**:\n", "コンテキストを学習し、分類出来る。\n", "\n", "**コンテキスト(文脈)**:系列内の要素の並び、依存関係\n", "\n", "要素の例:\n", "\n", "+ 文章中の「単語」\n", "+ 音声信号中の「音素」" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### 7.2 RNNの構造" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**RNN(再帰型ニューラルネット)**:\n", "\n", "+ 内部に(有向)閉路を持つNNの総称\n", "+ 特徴:\n", " + 情報を一時的に記憶\n", " + 振る舞いを動的に変化" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true, "slideshow": { "slide_type": "skip" } }, "outputs": [], "source": [ "from graphviz import Digraph" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true, "slideshow": { "slide_type": "skip" } }, "outputs": [], "source": [ "fig_7_3_a = Digraph(\"fig_7_3_a\", format=\"svg\")\n", "fig_7_3_a.graph_attr.update(compound=\"true\", splines=\"line\")\n", "\n", "fig_7_3_a.body.extend(['rankdir=BT'])\n", "\n", "fig_7_3_a.node_attr.update(shape='circle', color='black', penwidth='2')\n", "fig_7_3_a.node('na1', '')\n", "fig_7_3_a.node('na2', '')\n", "fig_7_3_a.node('na3', 'i')\n", "fig_7_3_a.node('nc1', '')\n", "fig_7_3_a.node('nc2', '')\n", "fig_7_3_a.node('nc3', 'k')\n", "\n", "c0 = Digraph('cluster0')\n", "c0.node('nb1', '')\n", "c0.node('nb2', '')\n", "c0.node('nb3', 'j')\n", "c0.node('nb4', '')\n", "\n", "fig_7_3_a.subgraph(c0)\n", "\n", "fig_7_3_a.edge('na1', 'nb1')\n", "fig_7_3_a.edge('na1', 'nb2')\n", "fig_7_3_a.edge('na1', 'nb3')\n", "fig_7_3_a.edge('na1', 'nb4')\n", "fig_7_3_a.edge('na2', 'nb1')\n", "fig_7_3_a.edge('na2', 'nb2')\n", "fig_7_3_a.edge('na2', 'nb3')\n", "fig_7_3_a.edge('na2', 'nb4')\n", "fig_7_3_a.edge('na3', 'nb1')\n", "fig_7_3_a.edge('na3', 'nb2')\n", "fig_7_3_a.edge('na3', 'nb3')\n", "fig_7_3_a.edge('na3', 'nb4')\n", "fig_7_3_a.edge('nb1', 'nc1')\n", "fig_7_3_a.edge('nb1', 'nc2')\n", "fig_7_3_a.edge('nb1', 'nc3')\n", "fig_7_3_a.edge('nb2', 'nc1')\n", "fig_7_3_a.edge('nb2', 'nc2')\n", "fig_7_3_a.edge('nb2', 'nc3')\n", "fig_7_3_a.edge('nb3', 'nc1')\n", "fig_7_3_a.edge('nb3', 'nc2')\n", "fig_7_3_a.edge('nb3', 'nc3')\n", "fig_7_3_a.edge('nb4', 'nc1')\n", "fig_7_3_a.edge('nb4', 'nc2')\n", "fig_7_3_a.edge('nb4', 'nc3')\n" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "image/svg+xml": [ "\n", "\n", "\n", "\n", "\n" ], "text/plain": [ "