Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

Chainer入門と最近の機能

108.570 visualizaciones

Publicado el

Chainer meetup #1で話した内容です

Publicado en: Tecnología
  • DOWNLOAD FULL MOVIE, INTO AVAILABLE FORMAT ......................................................................................................................... ......................................................................................................................... ,DOWNLOAD FULL. MOVIE 4K,FHD,HD,480P here { https://tinyurl.com/yybdfxwh }
       Responder 
    ¿Estás seguro?    No
    Tu mensaje aparecerá aquí
  • DOWNLOAD FULL BOOKS, INTO AVAILABLE FORMAT ......................................................................................................................... ......................................................................................................................... 1.DOWNLOAD FULL. PDF EBOOK here { https://tinyurl.com/y3nhqquc } ......................................................................................................................... 1.DOWNLOAD FULL. EPUB Ebook here { https://tinyurl.com/y3nhqquc } ......................................................................................................................... 1.DOWNLOAD FULL. doc Ebook here { https://tinyurl.com/y3nhqquc } ......................................................................................................................... 1.DOWNLOAD FULL. PDF EBOOK here { https://tinyurl.com/y3nhqquc } ......................................................................................................................... 1.DOWNLOAD FULL. EPUB Ebook here { https://tinyurl.com/y3nhqquc } ......................................................................................................................... 1.DOWNLOAD FULL. doc Ebook here { https://tinyurl.com/y3nhqquc } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Responder 
    ¿Estás seguro?    No
    Tu mensaje aparecerá aquí
  • Nice !! Download 100 % Free Ebooks, PPts, Study Notes, Novels, etc @ https://www.ThesisScientist.com
       Responder 
    ¿Estás seguro?    No
    Tu mensaje aparecerá aquí
  • Njce! Thanks for sharing.
       Responder 
    ¿Estás seguro?    No
    Tu mensaje aparecerá aquí

Chainer入門と最近の機能

  1. 1. Chainer⼊入⾨門と最近の機能 2015/12/19  Chainer  Meetup  #01 (株)Preferred  Infrastructure 海野  裕也 v1.5向け
  2. 2. ⾃自⼰己紹介 海野  裕也 l  -2008 東⼤大情報理理⼯工修⼠士 l  ⾃自然⾔言語処理理 l  2008-2011 ⽇日本アイ・ビー・エム(株)東京基礎研 l  テキストマイニング、⾃自然⾔言語処理理の研究開発 l  2011- (株)プリファードインフラストラクチャー l  ⾃自然⾔言語処理理、情報検索索、機械学習、テキストマイニングなど の研究開発 l  研究開発系案件、コンサルティング l  JubatusやChainerの開発 l  最近は対話処理理 NLP若若⼿手の会共同委員⻑⾧長(2014-) 「オンライン機械学習」(2015, 講談社)2
  3. 3. 今⽇日のおはなし l  Deep Learningのおさらい l  Chainer の使い⽅方の紹介 l  最後にv1.5での変更更点などを 3
  4. 4. ニューラルネットの基礎
  5. 5. ニューラルネット l  値が伝播していく有向グラフ l  エッジで重みをかけて、ノードに⼊入るところで⾜足し 込み、ノードの中で⾮非線形変換する l  全体としては巨⼤大で複雑な関数を表す 5
  6. 6. ニューラルネット=合成関数 l  ベクトルに対して線形・⾮非線形な関数をたくさん適 ⽤用する合成関数と捉えるとよい l  各ノードはベクトルを保持する変数 6
  7. 7. ⼀一般のニューラルネットは  DAG = 計算グラフ ⼀一般にはグラフが分岐したり合流流したりする l  分岐:同じ変数を複数の場所でつかう l  合流流:⼆二つ以上の変数を受け取る関数を適⽤用する 7
  8. 8. 計算グラフの例例 z = x ** 2 + 2 * x * y + y 8 x y _ ** 2 2 * _ _ * _ _ + _ z _ + _
  9. 9. 誤差逆伝播は、計算グラフを逆向きにたどる 計算グラフと順伝播時の各変数の値があれば計算可能 9
  10. 10. ニューラルネットの学習⽅方法 1.  ⽬目的関数の設計 l  計算グラフを⾃自分で設計する 2.  勾配の計算 l  誤差逆伝播で機械的に計算できる 3.  最⼩小化のための反復復計算 l  勾配を使って反復復更更新する 10 1さえ設計すれば残りは ほぼ⾃自動化されている
  11. 11. Recurrent Net l  ループがあるニューラルネット l  時刻の概念念があり、t=T の状態は t=T-1 の状態と t=T の⼊入 ⼒力力を使って求める 11 T T-1 T
  12. 12. Recurrent Net は時間展開して考える l  時間展開すれば、DAG の計算グラフになる l  DAG の計算グラフは誤差逆伝播できる(Backprop Through Time) 12 t=1 t=2 t=3 t=4
  13. 13. Chainer の使い⽅方
  14. 14. Chainer はニューラルネットのフレームワーク l  機能 l  ニューラルネットを記述する l  ニューラルネットの順伝播・逆伝播を実⾏行行する l  勾配法を実⾏行行してパラメータを最適化する l  Chainer の特徴 l  順伝播は単純に Python のスクリプトとして書ける l  そのスクリプトの実⾏行行結果は計算⼿手順を記憶してい て、逆伝播を⼿手で書く必要はない 14
  15. 15. Chainer のインストール l  環境は Linux(特に Ubuntu)がおすすめ l  インストール⽅方法 l  新しめの Python 環境を⽤用意(CPython 2.7+, 3.4+, 3.5+) l  pip も⽤用意 l  コマンドを実⾏行行:  pip install chainer l  chainer パッケージが import できれば完了了です l  Python スタックの環境構築は、Anaconda  がお すすめ l  Python のバージョン管理理は  pyenv がおすすめ l  pyenv からコマンド⼀一つで Anaconda もインストールできます 15
  16. 16. 順伝播 l  今まで「変数」と呼んでいたものは、Chainer では  Variable オブジェクト l  Variable を  Function に⼊入れると、順伝搬後の Variable が返ってくる l  Variable が計算グラフを保持している l  Function は、四則演算以外に chainer.functions に⽤用意されている 16
  17. 17. 順伝搬とコード例例 17 x y _**2 2*_ _*_ _+_ z _+_ x = Variable(...) y = Variable(...) z = x ** 2 + 2 * x * y + y
  18. 18. Variable オブジェクト l  計算グラフの(データ)ノード l  NumPy または  CuPy(後述)の配列列を保持する l  多くの Function は配列列の最初の軸をミニバッチとして 使うので注意 l  下の x は、20 次元ベクトルが 10 個⼊入ったミニバッチとみなす l  現状、Chainer は多くの場所で  float32 配列列を要求する ので注意 18 x = Variable(np.zeros((10, 20), dtype=np.float32)) x.data
  19. 19. Function オブジェクト l  計算グラフの「演算」ノード l  chainer.functions (以降降 F)  にいろいろ定義され ている l  F.relu, F.max_pooling_2d, F.lstm, ... l  Functionの呼び出し結果が、再びVariableになる l  v1.5からパラメータはLinkとして分離離された(後述) 19 x = Variable(...) y = F.relu(x) # yもVariable
  20. 20. Link オブジェクト l  パラメータ付きの関数 l  最適化の対象となる l  save/loadができる(v1.5からsave/loadをサポート) l  chainer.links(以降降L)に⾊色々⽤用意されている l  L.Linear, L.Convolution2D, L.EmbedID, ... l  Linkの呼び出し結果が、再びVariableになる l  v1.5からFunctionとパラメータは分離離され、パラメータ 付きの関数はLinkオブジェクトになった 20 v1.5~
  21. 21. ChainでLinkをまとめる l  ⼀一般的にパラメータ付きの関数(Link)は複数あるので、 Chainでまとめて管理理できる l  Chainを継承すると再利利⽤用しやすくなる model = Chain(embed=L.EmbedID(10000, 100), layer1=L.Linear(100, 100), layer2=L.Linear(100, 10000)) x = Variable(...) h = F.relu(model.layer1(model.embed(x))) y = model.layer2(h) 21 v1.5~
  22. 22. ロス関数、勾配計算 l  ロス関数もFunctionの⼀一種 l  ロス関数の出⼒力力に、Variable.backward()  を呼ぶと 勾配が計算できる loss = F.softmax_cross_entropy(y, t) loss.backward() 22
  23. 23. Optimizer の設定 l  勾配が計算できたら、あとは勾配法をまわす l  勾配法のアルゴリズムは  Optimizer クラスの⼦子クラス l  chainer.optimizers に定義されている l  実装されている最適化⼿手法:SGD, MomentumSGD, AdaGrad, RMSprop, RMSpropGraves, AdaDelta, Adam l  最適化対象をsetup メソッドに渡す l  正則化はhook関数として登録する optimizer = optimizers.SGD() optimizer.setup(model) optimizer.add_hook(optimizer.WeightDecay()) 23
  24. 24. Optimizer による最適化 l  まず勾配をゼロ初期化:zerograds() l  順伝播・逆伝播を実⾏行行 l  最適化ルーチンを実⾏行行:update() l  以上を何回も繰り返す model.zerograds() loss = ... loss.backward() optimizer.update() 24
  25. 25. Chainer を使う場合の全体の流流れ 1.  Linkを使ってChainを定義する 2.  Optimizer  に、Chain を設定する 3.  forward 関数を定義する 4.  データセットを読み込み、訓練⽤用と評価⽤用にわける 5.  訓練ループを回す a.  勾配をゼロ初期化 b.  順伝搬して、得られたロス値の backward メソッドを呼ぶ c.  Optimizerを、update 6.  適当な頻度度で評価ループを回す a.  テストデータで順伝搬関数を呼んで結果を記録 25
  26. 26. Chainerの最近の変更更
  27. 27. v1.5の主な変更更点 l  Link、Chainのサポート l  CuPyのCython化 l  Save/Loadサポート 27
  28. 28. LinkとChainのサポート l  今までパラメタ(最適化の対象)がきちんと管 理理されていなかった l  Link:パラメタ付きの関数 l  Chain:複数のLinkで構成される関数 l  これが最適化の対象 l  同時にシリアライズの対象(後述) l  Chainの単位でモジュール化できるので、再利利 ⽤用しやすい 28
  29. 29. CuPyのCython化 l  v1.3からGPUバックエンドがCuPyになったが、 パフォーマンスが低下した l  Cythonを利利⽤用することで速度度向上 l  cppファイルを添付したのでインストール時に Cythonは不不要(ただし、h5pyが使う) l  CUDAなどの共有ライブラリをctypesではなく てCythonから使う l  ctypesが遅かった l  インストール時にビルドが必要になった 29
  30. 30. Save/Loadのサポート l  Link/Chainで保存の対象が明確になった l  Chainが⼊入れ⼦子になるので⼊入れ⼦子になったパラ メータも⾃自然と保存できる l  hdf5形式をサポート l  h5pyのインストールが失敗しやすい・・・ 30
  31. 31. まとめ l  ニューラルネットを(おもに実装⾯面から)簡単におさら いしました l  Chainer の使い⽅方をざっくりお伝えしました l  v1.5でインストールが難しくなったと⾔言われていますが、 v1.6でだいたい元の戻る予定 31

×