renom user group #1 part2

32
INFRASTRUCTURE + LIFE + INNOVATION RNUG Kick Off Part 2 - ReNom 2.0 - Copyright (C) 2017 GRID All Rights Reserved.

Upload: renom-user-group

Post on 23-Jan-2018

232 views

Category:

Data & Analytics


1 download

TRANSCRIPT

Page 1: ReNom User Group #1 Part2

INFRASTRUCTURE + LIFE + INNOVATION

RNUG Kick Off Part 2- ReNom 2.0 -

Copyright (C) 2017 GRID All Rights Reserved.

Page 2: ReNom User Group #1 Part2

Copyright (C) 2017 GRID All Rights Reserved.

Agenda

p ReNomとは?p設計思想pVersion 1.0 ⇒ version 2.0pプログラムインタフェースp具体例 全結合ネットワーク, GANpまとめp今後の展開、提供方法

Page 3: ReNom User Group #1 Part2

ReNomとは?

Copyright (C) 2017 GRID All Rights Reserved.

(2017/7/20) 現在 Version 1.2まで開発が進みユーザー様にご利用いただいている

Page 4: ReNom User Group #1 Part2

ReNomとは?

Copyright (C) 2017 GRID All Rights Reserved.

大切にしていること:NN構築しやすさ、変更しやすさ

開発理由:DLの技術向上のため、他製品のバックエンド、使いやすさの向上

Page 5: ReNom User Group #1 Part2

設計思想

Copyright (C) 2017 GRID All Rights Reserved.

● NN構築、変更しやすさ ...

p 上からレイヤを並べてくことでNNを構築

p コメントアウトでレイヤを差し替えられる

p 正則化などの関数もレイヤ化

p ベイズサーチによるハイパーパラメータ探索

p Train関数

Page 6: ReNom User Group #1 Part2

Version 1.0 ⇒ Version 2.0

Copyright (C) 2017 GRID All Rights Reserved.

Version 1.0 から Version 2.0へメジャーアップデートに伴いReNomをgithub上へ公開

Page 7: ReNom User Group #1 Part2

自動微分

Copyright (C) 2017 GRID All Rights Reserved.

𝑎

𝑥

×

𝑏

+ 𝑓(𝑥)ℎ

𝑑ℎ𝑑ℎ

𝑑𝑓𝑑𝑓

𝑑𝑓𝑑𝑏

𝑑𝑓𝑑ℎ

𝑑ℎ𝑑𝑥

𝑑ℎ𝑑𝑎

𝒅𝒇𝒅𝒂

𝒅𝒇𝒅𝒙

トップダウン型自動微分を実装…関数 f(x)の導関数 12

13を自動的に生成するアルゴリズム

𝑓 𝑥 = 𝑎𝑥 + 𝑏

計算グラフを順に生成(順伝播)

𝑑𝑓𝑑𝑥 = 𝑎

計算グラフを逆にたどる(逆伝播)

Page 8: ReNom User Group #1 Part2

自動微分

Copyright (C) 2017 GRID All Rights Reserved.

●勾配を求めたい行列をVariableオブジェクトとして定義する

Page 9: ReNom User Group #1 Part2

プログラムインタフェース

Copyright (C) 2017 GRID All Rights Reserved.

pNumpyのndarrayと同じインターフェース

pSequentialモデルとFunctionalモデル

p勾配の初期化(zerograd, cleargrad)が必要ない

Page 10: ReNom User Group #1 Part2

プログラムインタフェース

Copyright (C) 2017 GRID All Rights Reserved.

p Numpyのndarrayと同じインターフェース

● Numpyで書いたコード

𝑓 𝒙 =5𝑎6 ∗ 𝑥6 + 𝑏6

�𝒂 =

𝑎:𝑎;

, 𝒃 = 𝑏:𝑏;

, 𝒙 = 𝑥:𝑥;

ReNomのVariableは Numpyの ndarrayクラスを継承している。インターフェースがNumpyと同じ。Numpyの関数にVariableオブジェクトを入れられる。

Page 11: ReNom User Group #1 Part2

プログラムインタフェース

Copyright (C) 2017 GRID All Rights Reserved.

p Numpyのndarrayと同じインターフェース

● ReNomで書いたコード

①勾配を計算したい変数を

Variableでラップ

② ReNomのsum演算に置き換える

Page 12: ReNom User Group #1 Part2

プログラムインタフェース

Copyright (C) 2017 GRID All Rights Reserved.

● xに関する勾配を取得

𝑓 𝒙 =5𝑎6 ∗ 𝑥6 + 𝑏6

𝑑𝑓𝑑𝒙 = 𝒂

p Numpyのndarrayと同じインターフェース

Variableオブジェクトの勾配をすべて取得

Xに関する勾配を取得

Page 13: ReNom User Group #1 Part2

プログラムインタフェース

Copyright (C) 2017 GRID All Rights Reserved.

p Numpyのndarrayと同じインターフェース

Page 14: ReNom User Group #1 Part2

プログラムインタフェース

Copyright (C) 2017 GRID All Rights Reserved.

p SequentialモデルとFunctionalモデル

n ReNom Version1と同様、Sequentialモデルを提供

n 様々なフレームワークで提供されているFunctionalモデルを追加

Page 15: ReNom User Group #1 Part2

プログラムインタフェース

● Sequentialモデル …レイヤオブジェクトを並べてニューラルネットを構築

Relu

入力層

中間層

出力層

p SequentialモデルとFunctionalモデル

Copyright (C) 2017 GRID All Rights Reserved.

Page 16: ReNom User Group #1 Part2

プログラムインタフェース

● Functionalモデル …関数の組み合わせで自由に演算を定義可能

Relu

入力層

中間層

出力層

p SequentialモデルとFunctionalモデル

Copyright (C) 2017 GRID All Rights Reserved.

Page 17: ReNom User Group #1 Part2

プログラムインタフェース

VariableVariable

Variable

p勾配の初期化が必要ない多くのフレームワークでは、逆伝播で計算された勾配情報を行列クラス

(Variableなど)が属性として持っている。

𝑎

𝑥

×

𝑏

+ 𝑓(𝑥)ℎ

𝑑𝑓𝑑𝑓

𝑑𝑓𝑑ℎ

𝒅𝒇𝒅𝒙

順伝播

逆伝播

Copyright (C) 2017 GRID All Rights Reserved.

Page 18: ReNom User Group #1 Part2

プログラムインタフェース

VariableVariable

Variable

● ReNomでは、計算された全ての勾配をGradsオブジェクトとして計算グラフの外に持つ

𝑎

𝑥

×

𝑏

+ 𝑓(𝑥)ℎ

Grads𝒅𝒇𝒅𝒙

𝑑𝑓𝑑ℎ

𝑑𝑓𝑑𝑓

リファレンス

順伝播

逆伝播

p 勾配の初期化が必要ない

Copyright (C) 2017 GRID All Rights Reserved.

Page 19: ReNom User Group #1 Part2

プログラムインタフェース

ReNom方式

利点・勾配計算後、初期化が必要ない

・モデルを複数定義せずに複数の勾配データを管理できる

p 勾配の初期化が必要ない

誤差逆伝播を実行し、各Variableの勾配を持つGradsオブジェクトを生成

Gradsオブジェクトからxに関する勾配を取得

Copyright (C) 2017 GRID All Rights Reserved.

Page 20: ReNom User Group #1 Part2

具体例 1 全結合ネットワークモデル

全結合ニューラルネットワークの例を通してReNomの使用方法を説明します。

二層ニューラルネットワーク活性化関数:Relu

Relu

1. ナイーブな実装2. L2ノルム正則化の追加3. Sequentialモデルを使用した実装4. 勾配降下アルゴリズムの適用

Copyright (C) 2017 GRID All Rights Reserved.

Page 21: ReNom User Group #1 Part2

具体例 1 全結合ネットワークモデル

Copyright (C) 2017 GRID All Rights Reserved.

●ナイーブな実装 -順伝播

重みパラメータの初期化

順伝播計算

Page 22: ReNom User Group #1 Part2

具体例 1 全結合ネットワークモデル

Copyright (C) 2017 GRID All Rights Reserved.

● L2正則化を追加

・L2ノルム正則化(weight decay)を付加・Numpyで書くように重み正則化を追加することで、正則化を実装可能・L1ノルム正則化やその他正則化も同様に、数式をそのままNumpyで書くように実装することができる。

Page 23: ReNom User Group #1 Part2

具体例 1 全結合ネットワークモデル

Copyright (C) 2017 GRID All Rights Reserved.

●勾配降下アルゴリズムの適用

順伝播

L2ノルム正則化

誤差関数

Gradsオブジェクト

誤差逆伝播

Page 24: ReNom User Group #1 Part2

具体例 1 全結合ネットワークモデル

Copyright (C) 2017 GRID All Rights Reserved.

●勾配降下アルゴリズムの適用

n Gradsオブジェクトは勾配データとVariableオブジェクトへの参照を保持

n そのためupdate関数はGradクラスに実装した

Page 25: ReNom User Group #1 Part2

具体例 1 全結合ネットワークモデル

Copyright (C) 2017 GRID All Rights Reserved.

●勾配降下アルゴリズムの適用

n Sgd、Adamなどの勾配降下アルゴリズムはupdate関数の引数として与える。

Page 26: ReNom User Group #1 Part2

具体例 2 GANモデル

Copyright (C) 2017 GRID All Rights Reserved.

● GAN(Generative adversarial Network)を例にした複雑なニューラルネットワークの構築方法

Relu

Relu

Discriminator

Generator

Proper Distribution

Latent Distribution

1. GANモデル構築の簡単な説明2. 複数のモデル定義から新たなモデル作成3. ネットワークの一部分を更新する

Page 27: ReNom User Group #1 Part2

具体例 2 GANモデル

Copyright (C) 2017 GRID All Rights Reserved.

● GeneratorとDiscriminator

Discriminator

Generator

Proper Distribution

Latent Distribution

Relu

Relu

二つのネットワークをSequentialモデルで構築

Page 28: ReNom User Group #1 Part2

具体例 2 GANモデル

Copyright (C) 2017 GRID All Rights Reserved.

● GeneratorとDiscriminatorを統括するGANクラスを定義

Discriminator

Generator

Proper Distribution

Latent Distribution

Relu

Relu

定義済みモデルGenerator, Discriminator

Page 29: ReNom User Group #1 Part2

具体例 2 GANモデル

Copyright (C) 2017 GRID All Rights Reserved.

二つのネットワークを別々に更新する。

Relu

Relu

Discriminator

Generator

Proper Distribution

Latent Distribution

・Discriminatorのみを更新したい場合、generatorのwith prevent_updateブロックの中で重みを更新する。

このwithブロックの中では、Generatorの重みパラメータは

更新されない。

Page 30: ReNom User Group #1 Part2

具体例 2 GANモデル

Copyright (C) 2017 GRID All Rights Reserved.

Relu

Relu

Discriminator

Generator

Proper Distribution

Latent Distribution

このwithブロックの中では、Discriminatorの重みパラメータは

更新されない。同様にGeneratorの重みだけをのみを更新

Page 31: ReNom User Group #1 Part2

まとめ

Copyright (C) 2017 GRID All Rights Reserved.

nReNomを公開します

nReNomは Defined by Run

nReNomのVariableは Numpy ndarrayと同じインタフェース

nReNomは他DLフレームワークと、勾配の扱い方の点で異なる

Page 32: ReNom User Group #1 Part2

今後の展開

Copyright (C) 2017 GRID All Rights Reserved.

● 8月1日(火) Version 2.0 ドキュメント公開● 8月8日(火) ReNom 2.0 公開

機能拡張、チューニング…徐々に更新していきます(Convolution3D, Temporal Dropout…)

提供方法●公開場所 : Github

https://github.com/ReNom-dev-team/ReNom