SlideShare ist ein Scribd-Unternehmen logo
1 von 22
Downloaden Sie, um offline zu lesen
AITC TensorFlow勉強会
TensorFlowによる
RNNの実装について
2018年1月
AITC会員 ⻄野、鈴⽊
TensorFlow, the TensorFlow logo and any related marks are trademarks of Google Inc.
1
リカレントニューラルネットワーク(RNN)
• 接続に戻りがあり閉路を持つニューラルネットワーク
• ⼊出⼒データが(⻑さ不定の)「列」の場合に利⽤
例:機械翻訳、⾳声認識、評判分析など
• 隠れノードに”状態“(=過去の履歴を集約した情報)を保持
Hidden
Input
Output
一時刻先への
伝播
最も一般的な構造
(Turing完全)
Hidden
Input
Output
Outputから戻る構造
状態の学習に逐次の正解を使
えるので効率がよい
2
Backpropagation through Time (BPTT)
• ネットワーク構造:
• ot = Vht+C 、ht = φ(at)、 at = Wht-1+Uxt+B
• 勾配:
•
L
= + = +
L
W
htの勾配は時間を遡って計算できる
•
!
=∑
#
= ∑
L
•
$
= ∑ ht %
= ∑
L
ht&1 '
= ∑
L
xt
Hidden
Input
Output
時間軸を展開 ht-2
xt-2
ot-2
ht-1
xt-1
ot-1
ht
xt
ot
ht+1
xt+1
ot+1
ht+2
xt+2
ot+2
重み共有
W U
V
U
VW
3
サンプルコード
• Qiitaの以下の記事からの流⽤:
「TensorFlowのRNNを基本的なモデルで試す」
http://qiita.com/yukiB/items/f6314d2861fc8d9b739f
• 変更点
• Tensorflow 1.2以降に対応
• accuracyをグラフで定義してTensorBoardで変化を⾒える化
• state_is_tuple=Falseがdeprecatedになるそうなので、Trueで動くように改訂
• BasicLSTMCell版に加えてBasicRNNCell版も作成し、違いを確認できるように
• ⼊⼒層/隠れ層間の重み計算は、Cell内でやっているので、不要と判断
• 例題:
Xk = 0 or 1の数値が⼊⼒された際の,それらの合計値を出⼒する。
たとえば,X = [0, 1, 1, 0, 1, 0, 0, 1, 0, 0] に対して、このリストの合算値であ
る Y = 4 を正しい出⼒とする。
4
パラメタ
• I: num_of_input_nodes
• H: num_of_hidden_nodes
• O: num_of_output_nodes
• S: length_of_sequences
• B: size_of_mini_batch
• U: BasicRNNCell/LSTMCellのデフォルト
• V: weight_var & bias_var
• W: BasicRNNCell/LSTMCellのデフォルト
h0
x0
o0
h1
x1
o1
h2
x2
o2
hS-1
xS-1
oS-1
U
VW
I
H
O
S
…
5
BasicRNNCell版のグラフの構造
6
I: num_of_input_nodes
H: num_of_hidden_nodes
O: num_of_output_nodes
S: length_of_sequences
B: size_of_mini_batch
0
1
0
1
1
0
1
0
1
…in1/in2 B
I
h0 h1 h2 h3 h4 hS-1
0
0
0
istate_ph
H
O
B
B
H
…
1 1 0…
0 0 1…
0 1 1…
B
S
input_ph
注:
隠れ層への活性関数はtanh
in1は3次元Tensor
in2は2次元TensroのList
I
…B
H
rnn_output
output_op weight_varを掛けて
bias_varを足す
活性関数は無し
Long Short-Term Memory (LSTM)
• RNNは、 t = t-1 t により過去の記憶を指数的に忘れてしまう
• “状態”には重みを掛けず、代わりに“忘れる”スイッチを付ける
σ
✕ +
✕
tanh
✕
tanh
σσ
Input
LSTMセル
Output
1時刻前の状態
(c_state)
1時刻前の出⼒
(m_state)
f
i
o
σ:シグモイド関数
✕:要素毎の積
+:ベクトル和
f:forgetゲート
i:inputゲート
o:outputゲート
通過するベクトルに
0/1のベクトルを掛けて
フィルターする
重みを含む
All the cool kids are using LSTMs.
(Brad Neuberg@Dropbox)
7
c_state_ph
BasicLSTMCell版のグラフの構造
8
0
1
0
1
1
0
1
0
1
…in1/in2 B
I
h0 h1 h2 h3 h4 hS-1
0
0
0
H
O
B
B
H
…
1 1 0…
0 0 1…
0 1 1…
B
S
input_ph
I
…B
H
rnn_output
output_op
m_state_ph
…0
0
0
B
H
LSTMStateTuple
Tensorflowによる実装
9
におけるグラフ構造の定義
引数 返り値
static_rnn
入力データ列
(長さN)
in2
RNNの
初期内部状態
istate_ph
cell
RNNの種類
cell
出力データ列
(長さN)
RNNの
最終内部状態
cellcell
t=1 t=2 t=N
• グラフ構造の定義には、
static_rnnメソッドを使う
• 時系列データや、単語列などを
RNNに順番に入力し、
計算された出力結果を得る
• バッチ学習に対応しており、
入力データは
[バッチサイズ, 次元数]
のtensorのリスト(in2)
• cellには、RNNCellクラスの
インスタンスを指定可能
• BasicRNNCell
• BasicLSTMCell
• GRUCell … etc # 隠れ層の定義
cell = tf.nn.rnn_cell.BasicLSTMCell(num_of_hidden_nodes, forget_bias=forget_bias)
# グラフ構造の定義
rnn_output, states_op = tf.nn.static_rnn(cell, in2, initial_state=istate_ph)
サンプルコード
主な
•
• H個の基本hiddenセルを生成する。
•
• H個の基本hiddenセルを生成する。
•
• 展開構造を構築する
11
主な とグラフとの関係
•
• H個の基本hiddenセルを生成する。
12
0
1
0
1
1
0
1
0
1
…in1/in2 B
I
h0 h1 h2 h3 h4 hS-1
0
0
0
istate_ph
H
O
B
B
H
…
1 1 0…
0 0 1…
0 1 1…
B
S
input_ph
I
…B
H
rnn_output
output_op
•
• H個の基本hiddenセルを生成する。
13
c_state_ph
13
0
1
0
1
1
0
1
0
1
…in1/in2 B
I
h0 h1 h2 h3 h4 hS-1
0
0
0
H
O
B
B
H
…
1 1 0…
0 0 1…
0 1 1…
B
S
input_ph
I
…B
H
rnn_output
output_op
m_state_ph
…0
0
0
B
H
LSTMStateTuple
主な とグラフとの関係
•
• 展開構造を構築する
14
0
1
0
1
1
0
1
0
1
…in1/in2 B
I
h0 h1 h2 h3 h4 hS-1
0
0
0
istate_ph
H
O
B
B
H
…
1 1 0…
0 0 1…
0 1 1…
B
S
input_ph
I
…B
H
rnn_output
output_op
主な とグラフとの関係
の 層について
• 引数
• num_units
右図のLSTM構造を何個持つか
• forget_bias
バイアス。出力の微調整(bf)
• activation
内部状態の励起関数(tanh)
• state_is_tuple
内部状態の受け取り方
Trueが推奨
Forget_bias
Activation
サンプルコードの解説
- SimpleRNNbyTensorFlowBasicRNN.py -
16
ログディレクトリ/パラメータ設定
17
ログディレクトリの指定
TensorBoardを--logdir=LOGDIRで起動すれば、
そのサブディレクトリの内容を比較できる
※TensorBoard実行中だとプログラム実行エ
ラーになるので注意
各パラメータの定義
・入力層、隠れ層、出力層のノード数
・学習率
・正答閾値 etc.
RNN層の設計/実装
18
隠れ層の定義
・num_of_hidden_nodes=隠れ層の数
RNN構造の作成
・cell=定義した隠れ層の指定
TensorBoard
損失関数
19
精度の評価
20
まとめ
• RNN/LSTMは時系列データを扱うことができる
• 機械学習はソースコードから理解すると早い
• 今後はRNNを応⽤したseq2seqモデルについても解明していきたい
21
ご静聴ありがとうございました!
22

Weitere ähnliche Inhalte

Mehr von aitc_jp

5)パネルディスカッション:『空気を読む家』×ウェルビーイング/メタバース・Web3
5)パネルディスカッション:『空気を読む家』×ウェルビーイング/メタバース・Web35)パネルディスカッション:『空気を読む家』×ウェルビーイング/メタバース・Web3
5)パネルディスカッション:『空気を読む家』×ウェルビーイング/メタバース・Web3aitc_jp
 
4)技術視点でウェルビーイングを考える
4)技術視点でウェルビーイングを考える4)技術視点でウェルビーイングを考える
4)技術視点でウェルビーイングを考えるaitc_jp
 
3-2)『空気を読む家』とメタバース駆動開発構想
3-2)『空気を読む家』とメタバース駆動開発構想3-2)『空気を読む家』とメタバース駆動開発構想
3-2)『空気を読む家』とメタバース駆動開発構想aitc_jp
 
3-1)『空気を読む家』とメタバース駆動開発構想 空間OS モノと社会をつなげる
3-1)『空気を読む家』とメタバース駆動開発構想   空間OS モノと社会をつなげる3-1)『空気を読む家』とメタバース駆動開発構想   空間OS モノと社会をつなげる
3-1)『空気を読む家』とメタバース駆動開発構想 空間OS モノと社会をつなげるaitc_jp
 
1)空気を読む家』のこれまでの取り組み
1)空気を読む家』のこれまでの取り組み1)空気を読む家』のこれまでの取り組み
1)空気を読む家』のこれまでの取り組みaitc_jp
 
2022/07/22 AITC 第4回オープンラボ「メタバース応用編~空間OSのこれまでとこれから~」セッション2 「空間OSと空気を読む家の実証」
2022/07/22 AITC 第4回オープンラボ「メタバース応用編~空間OSのこれまでとこれから~」セッション2 「空間OSと空気を読む家の実証」2022/07/22 AITC 第4回オープンラボ「メタバース応用編~空間OSのこれまでとこれから~」セッション2 「空間OSと空気を読む家の実証」
2022/07/22 AITC 第4回オープンラボ「メタバース応用編~空間OSのこれまでとこれから~」セッション2 「空間OSと空気を読む家の実証」aitc_jp
 
2022/07/22 AITC 第4回オープンラボ「メタバース応用編~空間OSのこれまでとこれから~」セッション1 「空間OSとメタバース」
2022/07/22 AITC 第4回オープンラボ「メタバース応用編~空間OSのこれまでとこれから~」セッション1 「空間OSとメタバース」2022/07/22 AITC 第4回オープンラボ「メタバース応用編~空間OSのこれまでとこれから~」セッション1 「空間OSとメタバース」
2022/07/22 AITC 第4回オープンラボ「メタバース応用編~空間OSのこれまでとこれから~」セッション1 「空間OSとメタバース」aitc_jp
 
2022/04/20 AITCオープンラボ第2回「田園都市国家構想とデジタル政策について」
2022/04/20 AITCオープンラボ第2回「田園都市国家構想とデジタル政策について」2022/04/20 AITCオープンラボ第2回「田園都市国家構想とデジタル政策について」
2022/04/20 AITCオープンラボ第2回「田園都市国家構想とデジタル政策について」aitc_jp
 
2022/03/23 AITCオープンラボ第1回「メタ―バース入門」
2022/03/23 AITCオープンラボ第1回「メタ―バース入門」2022/03/23 AITCオープンラボ第1回「メタ―バース入門」
2022/03/23 AITCオープンラボ第1回「メタ―バース入門」aitc_jp
 
ITフォーラム2022 先端IT活用推進コミュニティ(3-1)
ITフォーラム2022 先端IT活用推進コミュニティ(3-1)ITフォーラム2022 先端IT活用推進コミュニティ(3-1)
ITフォーラム2022 先端IT活用推進コミュニティ(3-1)aitc_jp
 
ITフォーラム2022 先端IT活用推進コミュニティ(5-2)
ITフォーラム2022 先端IT活用推進コミュニティ(5-2)ITフォーラム2022 先端IT活用推進コミュニティ(5-2)
ITフォーラム2022 先端IT活用推進コミュニティ(5-2)aitc_jp
 
ITフォーラム2022 先端IT活用推進コミュニティ(5-1)
ITフォーラム2022 先端IT活用推進コミュニティ(5-1)ITフォーラム2022 先端IT活用推進コミュニティ(5-1)
ITフォーラム2022 先端IT活用推進コミュニティ(5-1)aitc_jp
 
ITフォーラム2022 先端IT活用推進コミュニティ(4-2)
ITフォーラム2022 先端IT活用推進コミュニティ(4-2)ITフォーラム2022 先端IT活用推進コミュニティ(4-2)
ITフォーラム2022 先端IT活用推進コミュニティ(4-2)aitc_jp
 
ITフォーラム2022 先端IT活用推進コミュニティ(4-1)
ITフォーラム2022 先端IT活用推進コミュニティ(4-1)ITフォーラム2022 先端IT活用推進コミュニティ(4-1)
ITフォーラム2022 先端IT活用推進コミュニティ(4-1)aitc_jp
 
ITフォーラム2022 先端IT活用推進コミュニティ(3-2)
ITフォーラム2022 先端IT活用推進コミュニティ(3-2)ITフォーラム2022 先端IT活用推進コミュニティ(3-2)
ITフォーラム2022 先端IT活用推進コミュニティ(3-2)aitc_jp
 
ITフォーラム2022 先端IT活用推進コミュニティ(2)
ITフォーラム2022 先端IT活用推進コミュニティ(2)ITフォーラム2022 先端IT活用推進コミュニティ(2)
ITフォーラム2022 先端IT活用推進コミュニティ(2)aitc_jp
 
ITフォーラム2022 先端IT活用推進コミュニティ(1)
ITフォーラム2022 先端IT活用推進コミュニティ(1)ITフォーラム2022 先端IT活用推進コミュニティ(1)
ITフォーラム2022 先端IT活用推進コミュニティ(1)aitc_jp
 
ITフォーラム2022 先端IT活用推進コミュニティ(0)
ITフォーラム2022 先端IT活用推進コミュニティ(0)ITフォーラム2022 先端IT活用推進コミュニティ(0)
ITフォーラム2022 先端IT活用推進コミュニティ(0)aitc_jp
 
2021/05/21 AITCシニア技術者勉強会 Re:ゼロから始める感染隔離生活
2021/05/21 AITCシニア技術者勉強会 Re:ゼロから始める感染隔離生活2021/05/21 AITCシニア技術者勉強会 Re:ゼロから始める感染隔離生活
2021/05/21 AITCシニア技術者勉強会 Re:ゼロから始める感染隔離生活aitc_jp
 
2021/05/21 AITCシニア技術者勉強会 二酸化炭素の呼吸
2021/05/21 AITCシニア技術者勉強会 二酸化炭素の呼吸2021/05/21 AITCシニア技術者勉強会 二酸化炭素の呼吸
2021/05/21 AITCシニア技術者勉強会 二酸化炭素の呼吸aitc_jp
 

Mehr von aitc_jp (20)

5)パネルディスカッション:『空気を読む家』×ウェルビーイング/メタバース・Web3
5)パネルディスカッション:『空気を読む家』×ウェルビーイング/メタバース・Web35)パネルディスカッション:『空気を読む家』×ウェルビーイング/メタバース・Web3
5)パネルディスカッション:『空気を読む家』×ウェルビーイング/メタバース・Web3
 
4)技術視点でウェルビーイングを考える
4)技術視点でウェルビーイングを考える4)技術視点でウェルビーイングを考える
4)技術視点でウェルビーイングを考える
 
3-2)『空気を読む家』とメタバース駆動開発構想
3-2)『空気を読む家』とメタバース駆動開発構想3-2)『空気を読む家』とメタバース駆動開発構想
3-2)『空気を読む家』とメタバース駆動開発構想
 
3-1)『空気を読む家』とメタバース駆動開発構想 空間OS モノと社会をつなげる
3-1)『空気を読む家』とメタバース駆動開発構想   空間OS モノと社会をつなげる3-1)『空気を読む家』とメタバース駆動開発構想   空間OS モノと社会をつなげる
3-1)『空気を読む家』とメタバース駆動開発構想 空間OS モノと社会をつなげる
 
1)空気を読む家』のこれまでの取り組み
1)空気を読む家』のこれまでの取り組み1)空気を読む家』のこれまでの取り組み
1)空気を読む家』のこれまでの取り組み
 
2022/07/22 AITC 第4回オープンラボ「メタバース応用編~空間OSのこれまでとこれから~」セッション2 「空間OSと空気を読む家の実証」
2022/07/22 AITC 第4回オープンラボ「メタバース応用編~空間OSのこれまでとこれから~」セッション2 「空間OSと空気を読む家の実証」2022/07/22 AITC 第4回オープンラボ「メタバース応用編~空間OSのこれまでとこれから~」セッション2 「空間OSと空気を読む家の実証」
2022/07/22 AITC 第4回オープンラボ「メタバース応用編~空間OSのこれまでとこれから~」セッション2 「空間OSと空気を読む家の実証」
 
2022/07/22 AITC 第4回オープンラボ「メタバース応用編~空間OSのこれまでとこれから~」セッション1 「空間OSとメタバース」
2022/07/22 AITC 第4回オープンラボ「メタバース応用編~空間OSのこれまでとこれから~」セッション1 「空間OSとメタバース」2022/07/22 AITC 第4回オープンラボ「メタバース応用編~空間OSのこれまでとこれから~」セッション1 「空間OSとメタバース」
2022/07/22 AITC 第4回オープンラボ「メタバース応用編~空間OSのこれまでとこれから~」セッション1 「空間OSとメタバース」
 
2022/04/20 AITCオープンラボ第2回「田園都市国家構想とデジタル政策について」
2022/04/20 AITCオープンラボ第2回「田園都市国家構想とデジタル政策について」2022/04/20 AITCオープンラボ第2回「田園都市国家構想とデジタル政策について」
2022/04/20 AITCオープンラボ第2回「田園都市国家構想とデジタル政策について」
 
2022/03/23 AITCオープンラボ第1回「メタ―バース入門」
2022/03/23 AITCオープンラボ第1回「メタ―バース入門」2022/03/23 AITCオープンラボ第1回「メタ―バース入門」
2022/03/23 AITCオープンラボ第1回「メタ―バース入門」
 
ITフォーラム2022 先端IT活用推進コミュニティ(3-1)
ITフォーラム2022 先端IT活用推進コミュニティ(3-1)ITフォーラム2022 先端IT活用推進コミュニティ(3-1)
ITフォーラム2022 先端IT活用推進コミュニティ(3-1)
 
ITフォーラム2022 先端IT活用推進コミュニティ(5-2)
ITフォーラム2022 先端IT活用推進コミュニティ(5-2)ITフォーラム2022 先端IT活用推進コミュニティ(5-2)
ITフォーラム2022 先端IT活用推進コミュニティ(5-2)
 
ITフォーラム2022 先端IT活用推進コミュニティ(5-1)
ITフォーラム2022 先端IT活用推進コミュニティ(5-1)ITフォーラム2022 先端IT活用推進コミュニティ(5-1)
ITフォーラム2022 先端IT活用推進コミュニティ(5-1)
 
ITフォーラム2022 先端IT活用推進コミュニティ(4-2)
ITフォーラム2022 先端IT活用推進コミュニティ(4-2)ITフォーラム2022 先端IT活用推進コミュニティ(4-2)
ITフォーラム2022 先端IT活用推進コミュニティ(4-2)
 
ITフォーラム2022 先端IT活用推進コミュニティ(4-1)
ITフォーラム2022 先端IT活用推進コミュニティ(4-1)ITフォーラム2022 先端IT活用推進コミュニティ(4-1)
ITフォーラム2022 先端IT活用推進コミュニティ(4-1)
 
ITフォーラム2022 先端IT活用推進コミュニティ(3-2)
ITフォーラム2022 先端IT活用推進コミュニティ(3-2)ITフォーラム2022 先端IT活用推進コミュニティ(3-2)
ITフォーラム2022 先端IT活用推進コミュニティ(3-2)
 
ITフォーラム2022 先端IT活用推進コミュニティ(2)
ITフォーラム2022 先端IT活用推進コミュニティ(2)ITフォーラム2022 先端IT活用推進コミュニティ(2)
ITフォーラム2022 先端IT活用推進コミュニティ(2)
 
ITフォーラム2022 先端IT活用推進コミュニティ(1)
ITフォーラム2022 先端IT活用推進コミュニティ(1)ITフォーラム2022 先端IT活用推進コミュニティ(1)
ITフォーラム2022 先端IT活用推進コミュニティ(1)
 
ITフォーラム2022 先端IT活用推進コミュニティ(0)
ITフォーラム2022 先端IT活用推進コミュニティ(0)ITフォーラム2022 先端IT活用推進コミュニティ(0)
ITフォーラム2022 先端IT活用推進コミュニティ(0)
 
2021/05/21 AITCシニア技術者勉強会 Re:ゼロから始める感染隔離生活
2021/05/21 AITCシニア技術者勉強会 Re:ゼロから始める感染隔離生活2021/05/21 AITCシニア技術者勉強会 Re:ゼロから始める感染隔離生活
2021/05/21 AITCシニア技術者勉強会 Re:ゼロから始める感染隔離生活
 
2021/05/21 AITCシニア技術者勉強会 二酸化炭素の呼吸
2021/05/21 AITCシニア技術者勉強会 二酸化炭素の呼吸2021/05/21 AITCシニア技術者勉強会 二酸化炭素の呼吸
2021/05/21 AITCシニア技術者勉強会 二酸化炭素の呼吸
 

2018年01月27日 TensorFlowでRNN-LSTMを実装してみた