17. 柔軟なグラフ操作:制御構⽂文を⽤用いた計算グラフ構築
• ネットワーク構築時に、通常の
Pythonの制御構⽂文を利利⽤用でき
る (if / for / while etc…)
• 応⽤用
• 訓練・テストで層を取り替
える
• For⽂文を⽤用いてRNNを構築
• 訓練データごとに異異なる計
算グラフ
def forward(x, t, train=True):
h = F.relu(model.l1(x))
y = model.l2(h)
if train:
loss = F.softmax_cross_entropy(y, t)
return loss
else:
prob = F.softmax(y)
acc = F.accuracy(prob, t)
return acc
…… y sce
lo
ss
…… y sm
pr
ob
acc
ac
c
訓練
テスト
……
……
17
18. MNISTによる多層パーセプトロンの訓練
# (1) Model definition
model = FunctionSet(
l1=F.Linear(784, 100),
l2=F.Linear(100, 100),
l3=F.Linear(100, 10)).to_gpu()
# (2) Optimizer Setup
opt = optimizers.SGD()
opt.setup(model)
# (3) Forward computation
def forward(x, t):
h1 = F.relu(model.l1(x))
h2 = F.relu(model.l2(h1))
y = model.l3(h2)
return F.softmax_cross_entropy(y, t)
# (4) Training loop
for epoch in xrange(n_epoch):
for i in xrange(0, N, batchsize):
x = Variable(to_gpu(...))
t = Variable(to_gpu(...))
opt.zero_grads()
loss = forward(x, t)
loss.backward()
opt.update()
784 100 100 10
0:2%
1:5%
2:90%
・
・
9:1%18
21. (3) Training Loop
for epoch in xrange(n_epoch):
for i in xrange(0, N, batchsize):
x = Variable(to_gpu(...))
t = Variable(to_gpu(...))
opt.zero_grads()
loss = forward(x, t)
loss.backward()
opt.update()
順伝播を1回⾏行行う
→ 裏裏で計算グラフ
を⾃自動構築
21
23. (4) Training Loop
for epoch in xrange(n_epoch):
for i in xrange(0, N, batchsize):
x = Variable(to_gpu(...))
t = Variable(to_gpu(...))
opt.zero_grads()
loss = forward(x, t)
loss.backward()
opt.update()
計算グラフ上で
逆伝播
パラメータの
アップデート23
24. 柔軟なグラフ操作:グラフの切切り落落とし
• 変数yより前のグラフを切切り落落とす
• yより前にはエラーが伝搬しない
• truncated BPTT** を実装するのに便便利利
x f y g z
y g z
y.unchain_backward()
x = Variable(…)
y = f(x)
z = g(y)
y.unchain_backward()
* BPTT:Back Propagation Through Time
RNNを時間⽅方向に展開したネットワーク上で逆伝播
をする操作(通常最初の時刻まで逆伝播する)
** truncated BPTT
BPTTで逆伝播時に遡る時刻を途中で打ち切切る⼿手法
24
26. 分散深層学習による化合物活性予測
* hERG potassium channels and cardiac arrhythmia, Michael C.
Sanguinetti & Martin Tristani-Firouzi, Nature 440, 463-469(23 March
2006) (doi:10.1038/nature04710) Fig. 5
32. まとめ
• ChainerはPythonベースのディープラーニング
フレームワークです
• Define-by-Runパラダイムを採⽤用することで柔
軟な計算グラフ構築をプログラムとして記述で
きます
• 化合物の活性予測など、ディープラーニングの
様々な応⽤用がChainerにより実現されています
• 公式HP:http://chainer.org
• レポジトリ: https://github.com/pfnet/chainer
• Twitter:@ChainerOfficial
• Google Group:Chainer Uesr Group
• Contribution Guide:
http://docs.chainer.org/en/stable/contribution.html
Your Contribution is Welcome!!
32
And You are Welcome!!
We are hiring :)