メディア

NVIDIAが解説するディープラーニングの基礎(後編)CNN/RNNやフレームワーク概要まで(4/5 ページ)

» 2018年05月09日 10時30分 公開
[松本貴志EE Times Japan]

Define-and-runとDefine-by-runの比較

 Define-and-runとDefine-by-runの説明に入る前に、山崎氏は「計算グラフ」の概念を説明した。計算グラフは、計算の流れをグラフ構造により記述したもので、複雑な処理でも視覚的に処理内容を理解することができる。多くのフレームワークは、計算グラフによりニューラルネットワークを構築している。

計算グラフ(シンプルなCNNの場合)のイメージ(クリックで拡大)

 上図ネットワークで推論を行う場合、入力データは畳み込み層(conv)、プーリング層(pool)、全結合層(fc)、活性化関数(relu)、ソフトマックス関数(softmax)を経て、処理結果が確率(prob.)として出力される順伝播で処理が進む。このネットワークで学習を行う場合、出力と教師データ(label)から誤差関数(loss)によって誤差(error)を定量化し、逆伝播で各層の勾配を計算、重み係数の更新を行う。

左:順方向伝播の処理 右:逆方向伝播の処理(クリックで拡大)

 Define-and-runは計算グラフを構築した後にデータを流し処理を実行する方式で、「最適化しやすいが、途中経過の処理状態を確認することが面倒」だと山崎氏は説明する。その対称とされるDefine-by-runでは、計算グラフの構築と順伝播処理の実行が同時に行われるため、「途中の処理結果が確認でき、デバッグが楽になる。さらには途中の処理結果に応じて分岐など、処理内容を変更することができる」(山崎氏)として、言語処理などRNNで有効な手法だとした。

Define-and-runとDefine-by-runの比較(クリックで拡大)

 Define-and-runは、TensorFlowやCaffe、MXNetなど多くのフレームワークで実装されている。Define-by-runは、先駆け的な存在であるChainerやPyTorchの他、TensorFlowでもプレビューバージョンの一部機能で対応を始めたという。

Define-and-runとDefine-by-runに対応する主なフレームワーク(クリックで拡大)

Copyright © ITmedia, Inc. All Rights Reserved.

RSSフィード

公式SNS

All material on this site Copyright © ITmedia, Inc. All Rights Reserved.
This site contains articles under license from AspenCore LLC.