ReNom User Group #1 Part2
-
Upload
renom-user-group -
Category
Data & Analytics
-
view
234 -
download
1
Transcript of ReNom User Group #1 Part2
![Page 1: ReNom User Group #1 Part2](https://reader034.fdocument.pub/reader034/viewer/2022051318/5a6759ea7f8b9a656a8b494f/html5/thumbnails/1.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022051318/5a6759ea7f8b9a656a8b494f/html5/thumbnails/2.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022051318/5a6759ea7f8b9a656a8b494f/html5/thumbnails/3.jpg)
ReNomとは?
Copyright (C) 2017 GRID All Rights Reserved.
(2017/7/20) 現在 Version 1.2まで開発が進みユーザー様にご利用いただいている
![Page 4: ReNom User Group #1 Part2](https://reader034.fdocument.pub/reader034/viewer/2022051318/5a6759ea7f8b9a656a8b494f/html5/thumbnails/4.jpg)
ReNomとは?
Copyright (C) 2017 GRID All Rights Reserved.
大切にしていること:NN構築しやすさ、変更しやすさ
開発理由:DLの技術向上のため、他製品のバックエンド、使いやすさの向上
![Page 5: ReNom User Group #1 Part2](https://reader034.fdocument.pub/reader034/viewer/2022051318/5a6759ea7f8b9a656a8b494f/html5/thumbnails/5.jpg)
設計思想
Copyright (C) 2017 GRID All Rights Reserved.
● NN構築、変更しやすさ ...
p 上からレイヤを並べてくことでNNを構築
p コメントアウトでレイヤを差し替えられる
p 正則化などの関数もレイヤ化
p ベイズサーチによるハイパーパラメータ探索
p Train関数
![Page 6: ReNom User Group #1 Part2](https://reader034.fdocument.pub/reader034/viewer/2022051318/5a6759ea7f8b9a656a8b494f/html5/thumbnails/6.jpg)
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](https://reader034.fdocument.pub/reader034/viewer/2022051318/5a6759ea7f8b9a656a8b494f/html5/thumbnails/7.jpg)
自動微分
Copyright (C) 2017 GRID All Rights Reserved.
𝑎
𝑥
×
𝑏
+ 𝑓(𝑥)ℎ
𝑑ℎ𝑑ℎ
𝑑𝑓𝑑𝑓
𝑑𝑓𝑑𝑏
𝑑𝑓𝑑ℎ
𝑑ℎ𝑑𝑥
𝑑ℎ𝑑𝑎
𝒅𝒇𝒅𝒂
𝒅𝒇𝒅𝒙
トップダウン型自動微分を実装…関数 f(x)の導関数 12
13を自動的に生成するアルゴリズム
𝑓 𝑥 = 𝑎𝑥 + 𝑏
計算グラフを順に生成(順伝播)
𝑑𝑓𝑑𝑥 = 𝑎
計算グラフを逆にたどる(逆伝播)
![Page 8: ReNom User Group #1 Part2](https://reader034.fdocument.pub/reader034/viewer/2022051318/5a6759ea7f8b9a656a8b494f/html5/thumbnails/8.jpg)
自動微分
Copyright (C) 2017 GRID All Rights Reserved.
●勾配を求めたい行列をVariableオブジェクトとして定義する
![Page 9: ReNom User Group #1 Part2](https://reader034.fdocument.pub/reader034/viewer/2022051318/5a6759ea7f8b9a656a8b494f/html5/thumbnails/9.jpg)
プログラムインタフェース
Copyright (C) 2017 GRID All Rights Reserved.
pNumpyのndarrayと同じインターフェース
pSequentialモデルとFunctionalモデル
p勾配の初期化(zerograd, cleargrad)が必要ない
![Page 10: ReNom User Group #1 Part2](https://reader034.fdocument.pub/reader034/viewer/2022051318/5a6759ea7f8b9a656a8b494f/html5/thumbnails/10.jpg)
プログラムインタフェース
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](https://reader034.fdocument.pub/reader034/viewer/2022051318/5a6759ea7f8b9a656a8b494f/html5/thumbnails/11.jpg)
プログラムインタフェース
Copyright (C) 2017 GRID All Rights Reserved.
p Numpyのndarrayと同じインターフェース
● ReNomで書いたコード
①勾配を計算したい変数を
Variableでラップ
② ReNomのsum演算に置き換える
![Page 12: ReNom User Group #1 Part2](https://reader034.fdocument.pub/reader034/viewer/2022051318/5a6759ea7f8b9a656a8b494f/html5/thumbnails/12.jpg)
プログラムインタフェース
Copyright (C) 2017 GRID All Rights Reserved.
● xに関する勾配を取得
𝑓 𝒙 =5𝑎6 ∗ 𝑥6 + 𝑏6
�
�
𝑑𝑓𝑑𝒙 = 𝒂
p Numpyのndarrayと同じインターフェース
Variableオブジェクトの勾配をすべて取得
Xに関する勾配を取得
![Page 13: ReNom User Group #1 Part2](https://reader034.fdocument.pub/reader034/viewer/2022051318/5a6759ea7f8b9a656a8b494f/html5/thumbnails/13.jpg)
プログラムインタフェース
Copyright (C) 2017 GRID All Rights Reserved.
p Numpyのndarrayと同じインターフェース
![Page 14: ReNom User Group #1 Part2](https://reader034.fdocument.pub/reader034/viewer/2022051318/5a6759ea7f8b9a656a8b494f/html5/thumbnails/14.jpg)
プログラムインタフェース
Copyright (C) 2017 GRID All Rights Reserved.
p SequentialモデルとFunctionalモデル
n ReNom Version1と同様、Sequentialモデルを提供
n 様々なフレームワークで提供されているFunctionalモデルを追加
![Page 15: ReNom User Group #1 Part2](https://reader034.fdocument.pub/reader034/viewer/2022051318/5a6759ea7f8b9a656a8b494f/html5/thumbnails/15.jpg)
プログラムインタフェース
● Sequentialモデル …レイヤオブジェクトを並べてニューラルネットを構築
Relu
入力層
中間層
出力層
p SequentialモデルとFunctionalモデル
Copyright (C) 2017 GRID All Rights Reserved.
![Page 16: ReNom User Group #1 Part2](https://reader034.fdocument.pub/reader034/viewer/2022051318/5a6759ea7f8b9a656a8b494f/html5/thumbnails/16.jpg)
プログラムインタフェース
● Functionalモデル …関数の組み合わせで自由に演算を定義可能
Relu
入力層
中間層
出力層
p SequentialモデルとFunctionalモデル
Copyright (C) 2017 GRID All Rights Reserved.
![Page 17: ReNom User Group #1 Part2](https://reader034.fdocument.pub/reader034/viewer/2022051318/5a6759ea7f8b9a656a8b494f/html5/thumbnails/17.jpg)
プログラムインタフェース
VariableVariable
Variable
p勾配の初期化が必要ない多くのフレームワークでは、逆伝播で計算された勾配情報を行列クラス
(Variableなど)が属性として持っている。
𝑎
𝑥
×
𝑏
+ 𝑓(𝑥)ℎ
𝑑𝑓𝑑𝑓
𝑑𝑓𝑑ℎ
𝒅𝒇𝒅𝒙
順伝播
逆伝播
Copyright (C) 2017 GRID All Rights Reserved.
![Page 18: ReNom User Group #1 Part2](https://reader034.fdocument.pub/reader034/viewer/2022051318/5a6759ea7f8b9a656a8b494f/html5/thumbnails/18.jpg)
プログラムインタフェース
VariableVariable
Variable
● ReNomでは、計算された全ての勾配をGradsオブジェクトとして計算グラフの外に持つ
𝑎
𝑥
×
𝑏
+ 𝑓(𝑥)ℎ
Grads𝒅𝒇𝒅𝒙
𝑑𝑓𝑑ℎ
𝑑𝑓𝑑𝑓
リファレンス
順伝播
逆伝播
p 勾配の初期化が必要ない
Copyright (C) 2017 GRID All Rights Reserved.
![Page 19: ReNom User Group #1 Part2](https://reader034.fdocument.pub/reader034/viewer/2022051318/5a6759ea7f8b9a656a8b494f/html5/thumbnails/19.jpg)
プログラムインタフェース
ReNom方式
利点・勾配計算後、初期化が必要ない
・モデルを複数定義せずに複数の勾配データを管理できる
p 勾配の初期化が必要ない
誤差逆伝播を実行し、各Variableの勾配を持つGradsオブジェクトを生成
Gradsオブジェクトからxに関する勾配を取得
Copyright (C) 2017 GRID All Rights Reserved.
![Page 20: ReNom User Group #1 Part2](https://reader034.fdocument.pub/reader034/viewer/2022051318/5a6759ea7f8b9a656a8b494f/html5/thumbnails/20.jpg)
具体例 1 全結合ネットワークモデル
全結合ニューラルネットワークの例を通してReNomの使用方法を説明します。
二層ニューラルネットワーク活性化関数:Relu
Relu
1. ナイーブな実装2. L2ノルム正則化の追加3. Sequentialモデルを使用した実装4. 勾配降下アルゴリズムの適用
Copyright (C) 2017 GRID All Rights Reserved.
![Page 21: ReNom User Group #1 Part2](https://reader034.fdocument.pub/reader034/viewer/2022051318/5a6759ea7f8b9a656a8b494f/html5/thumbnails/21.jpg)
具体例 1 全結合ネットワークモデル
Copyright (C) 2017 GRID All Rights Reserved.
●ナイーブな実装 -順伝播
重みパラメータの初期化
順伝播計算
![Page 22: ReNom User Group #1 Part2](https://reader034.fdocument.pub/reader034/viewer/2022051318/5a6759ea7f8b9a656a8b494f/html5/thumbnails/22.jpg)
具体例 1 全結合ネットワークモデル
Copyright (C) 2017 GRID All Rights Reserved.
● L2正則化を追加
・L2ノルム正則化(weight decay)を付加・Numpyで書くように重み正則化を追加することで、正則化を実装可能・L1ノルム正則化やその他正則化も同様に、数式をそのままNumpyで書くように実装することができる。
![Page 23: ReNom User Group #1 Part2](https://reader034.fdocument.pub/reader034/viewer/2022051318/5a6759ea7f8b9a656a8b494f/html5/thumbnails/23.jpg)
具体例 1 全結合ネットワークモデル
Copyright (C) 2017 GRID All Rights Reserved.
●勾配降下アルゴリズムの適用
順伝播
L2ノルム正則化
誤差関数
Gradsオブジェクト
誤差逆伝播
![Page 24: ReNom User Group #1 Part2](https://reader034.fdocument.pub/reader034/viewer/2022051318/5a6759ea7f8b9a656a8b494f/html5/thumbnails/24.jpg)
具体例 1 全結合ネットワークモデル
Copyright (C) 2017 GRID All Rights Reserved.
●勾配降下アルゴリズムの適用
n Gradsオブジェクトは勾配データとVariableオブジェクトへの参照を保持
n そのためupdate関数はGradクラスに実装した
![Page 25: ReNom User Group #1 Part2](https://reader034.fdocument.pub/reader034/viewer/2022051318/5a6759ea7f8b9a656a8b494f/html5/thumbnails/25.jpg)
具体例 1 全結合ネットワークモデル
Copyright (C) 2017 GRID All Rights Reserved.
●勾配降下アルゴリズムの適用
n Sgd、Adamなどの勾配降下アルゴリズムはupdate関数の引数として与える。
![Page 26: ReNom User Group #1 Part2](https://reader034.fdocument.pub/reader034/viewer/2022051318/5a6759ea7f8b9a656a8b494f/html5/thumbnails/26.jpg)
具体例 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](https://reader034.fdocument.pub/reader034/viewer/2022051318/5a6759ea7f8b9a656a8b494f/html5/thumbnails/27.jpg)
具体例 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](https://reader034.fdocument.pub/reader034/viewer/2022051318/5a6759ea7f8b9a656a8b494f/html5/thumbnails/28.jpg)
具体例 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](https://reader034.fdocument.pub/reader034/viewer/2022051318/5a6759ea7f8b9a656a8b494f/html5/thumbnails/29.jpg)
具体例 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](https://reader034.fdocument.pub/reader034/viewer/2022051318/5a6759ea7f8b9a656a8b494f/html5/thumbnails/30.jpg)
具体例 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](https://reader034.fdocument.pub/reader034/viewer/2022051318/5a6759ea7f8b9a656a8b494f/html5/thumbnails/31.jpg)
まとめ
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](https://reader034.fdocument.pub/reader034/viewer/2022051318/5a6759ea7f8b9a656a8b494f/html5/thumbnails/32.jpg)
今後の展開
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