#author("2021-10-18T03:45:37+00:00","default:mizutu","mizutu")
[[AI推進準備室]] > AIrepVol4
* 「私的AI研究会」レポート VOL.4 [#pf30101a]
#contents
RIGHT:&size(12){※ 最終更新:2021/10/18 };

** ディープラーニングのフレームワーク [#k4f478b2]
 ディープラーニングはニューラルネットワークの技術の延長上にあるため、その理解にはニューラルネットワークそのものの理解が欠かせない。~
*** ニューラルネットワーク概要 [#wb8c8a4f]
- ニューラルネットワークの構造~
#ref(ai_rep4_01_m.jpg,left,around,80%,ai_rep4_01_m.jpg)
・ニューラルネットワークは、複数ニューロンが集まった“層”と呼ばれる構造を内部にもつ。~
・最初の層は、入力層と呼ばれ、データが入力される層になり、最後の層は、出力層と呼ばれ、結果を出力する層になる。~
 0~9までの手書き文字画像を判別するニューラルネットワーク”を考えてみると、入力層の各ニューロンは、手書き文字画像の1ピクセルを入力値として取り、出力層は、入力画像が0?9それぞれの値である確率を出力することになる。~
・入力層と出力層の間の層は、隠れ層(または中間層)と呼ばれる。この隠れ層のデザインの自由度は高く、その自由度の高さがニューラルネットワークの優れた表現能力の要因となっている。~
~
 → [[ニューラルネットワークの「基礎の基礎」を理解する ~ディープラーニング入門|第1回>+https://www.imagazine.co.jp/%E3%83%8B%E3%83%A5%E3%83%BC%E3%83%A9%E3%83%AB%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E3%82%92%E7%90%86%E8%A7%A3%E3%81%99%E3%82%8B%E3%80%80%EF%BD%9E%E3%83%87%E3%82%A3%E3%83%BC%E3%83%97/]]より~

-''「define and run」''~
・ニューラルネットワーク(線で繋がっていることから計算グラフとも呼ばれる)を構築してからデータを流すアルゴリズム。~
・ディープラーニングフレームワークで最も有名な「TensorFlow」や「Keras」はこの方式を採用している。~
・ネットワークを固定してからデータを流すため、最適化が容易というメリットがあるが、データによってネットワーク自体を動的に変化させるような構造をとることができない。~

- ''「define by run」''~
・データを流しながら計算グラフを構築する方式をとるアルゴリズム。~
・ディープラーニングが考案された初期は、主に画像処理を畳み込みニューラルネットワークCNN)で行ってたが、自然言語処理や時系列データ処理といった再帰型ニューラルネットワーク(RNN) が利用されるようなアルゴリズムが増えてきた。~
・ループ毎に計算グラフ構造が変化することも考慮したアルゴリズムが多い RNN では define by run 方式の方が直感的な記述が可能になる。~
・動的な計算グラフ生成は値を見ながら動作させることが可能なので、デバッグがしやすいという大きなメリットを持つ。~
・define by run 方式は Chainerを作った PFN(Preferred Networks社)がまず採用した。そして Facebook がその Chainer をフォークして「PyTorch」を作ったということで「Chainer」と「PyTorch」は define by run方式。~
~
 → [[ディープラーニング初心者がPyTorchを選んだ3つの理由>+https://watlab-blog.com/2020/01/26/pytorch/]]より~

*** 代表的なフレームワークの概要 [#y8828358]
- ''Tensorflow''
・Tensorflow はエンドツーエンドかつオープンソースの深層学習のフレームワークであり、Googleによって2015年に開発・公開された。~
・Tensorflow は名前の通り、様々なタスクにデータのフローを流しこみ、プログラムを作成するためのフレームワーク。~
・Tensorflow にはニューラルネットワークなどの機械学習のアプリケーションに適用できる多くのシンボリックな数学ライブラリが用意されている。~
・Tensorflow の「Tensor」は数学の概念の一つで、行列の一般化(n次元化)したものを意味する。~

- ''Keras''~
・Keras は Python で書かれた高レベルのニューラルネットワーク向けの効果的な API。~
・このオープンソースの深層学習ライブラリは、ディープニューラルネットワークを使った高速な実装ができるように設計されており、CNTK、Tensorflow、Theanoなどがバックエンドとして動作する。~
・Keras は Google のエンジニアである François Chollet氏によって作り出され、モジュール化やユーザーフレンドリーで、拡張性があることを重視してる。低レベルの計算は処理せずバックエンドの別のライブラリに渡す。~
・2017年に、Keras は Tensorflow に導入された。ユーザーは tensorflow.kerasモジュールからアクセスできる。Kerasライブラリは今まで通り独立して動作することもできる。~

- '' PyTorch''
・PyTorch は比較的新しい、Torchベースの深層学習フレームワーク。~
・Facebook の AIグループによって開発され、2017年にGithubのオープンソースとして公開された。~
・PyTorchはシンプルで使いやすいことで有名。また、柔軟性、メモリの効率的な使用、動的な計算グラフなどについても高い評価を得ている。~
・さらに、Pythonを利用すると、コーディングをより管理しやすく、処理速度が速くなる。~

 → [[TensorflowとKeras、PyTorchの比較>+https://www.tdi.co.jp/miso/tensorflow-keras-pytorch]]より~

*** 代表的なフレームワークの人気度 [#n8737dbd]
- Googleトレンドで各ディープラーニングのフレームワーク毎に検索インタレストを調べた結果。(日本のみで縦軸は月の合計)~
#ref(ai_rep4_02_m.jpg,left,around,80%,ai_rep4_02_m.jpg)
※ 2019年12月「Chainer」のメジャーアップデート終了 米 Facebookが主導する深層学習フレームワーク「PyTorch」へ順次移行が発表された。~

 → [[ディープラーニング初心者がPyTorchを選んだ3つの理由>+https://watlab-blog.com/2020/01/26/pytorch/]]より~


** 更新履歴 [#afe446e0]
- 2021/10/18 初版

* 参考資料 [#s720530e]
- ディープラーニングのフレームワーク~
・[[TensorflowとKeras、PyTorchの比較>+https://www.tdi.co.jp/miso/tensorflow-keras-pytorch]]~
・[[ディープラーニング初心者がPyTorchを選んだ3つの理由>+https://watlab-blog.com/2020/01/26/pytorch/]]~
・[[PyTorchとは?特徴やメリット、PyTorchのインストール方法まで紹介>+https://ai-kenkyujo.com/about-pytorch/]]~
・[[PyTorch 入門!人気急上昇中のPyTorchで知っておくべき6つの基礎知識>+https://www.codexa.net/pytorch-python/]]~
・[[2020年版 Deep Learning ライブラリの選び方>+https://pystyle.info/comparison-of-deep-learning-libraries/]]~
・[[ディープラーニングによる画像認識の仕組みを徹底解説>+https://ai-kenkyujo.com/imagerecognition/]]~

- 連載 ディープラーニング入門  全4回 < 植田 佳明 氏>
・[[第1回 ニューラルネットワークの「基礎の基礎」を理解する>+https://www.imagazine.co.jp/%E3%83%8B%E3%83%A5%E3%83%BC%E3%83%A9%E3%83%AB%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E3%82%92%E7%90%86%E8%A7%A3%E3%81%99%E3%82%8B%E3%80%80%EF%BD%9E%E3%83%87%E3%82%A3%E3%83%BC%E3%83%97/]]~
・[[第2回 畳み込みネットワークの「基礎の基礎」を理解する>+https://www.imagazine.co.jp/%E7%95%B3%E3%81%BF%E8%BE%BC%E3%81%BF%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E3%81%AE%E3%80%8C%E5%9F%BA%E7%A4%8E%E3%81%AE%E5%9F%BA%E7%A4%8E%E3%80%8D%E3%82%92%E7%90%86%E8%A7%A3%E3%81%99/]]~
・[[第3回 再帰型ニューラルネットワークの「基礎の基礎」を理解する>+https://www.imagazine.co.jp/%E5%86%8D%E5%B8%B0%E5%9E%8B%E3%83%8B%E3%83%A5%E3%83%BC%E3%83%A9%E3%83%AB%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E3%81%AE%E3%80%8C%E5%9F%BA%E7%A4%8E%E3%81%AE%E5%9F%BA%E7%A4%8E%E3%80%8D/]]~
・[[第4回 ディープラーニングの実装「基礎の基礎」>+https://www.imagazine.co.jp/%E3%83%87%E3%82%A3%E3%83%BC%E3%83%97%E3%83%A9%E3%83%BC%E3%83%8B%E3%83%B3%E3%82%B0%E3%81%AE%E5%AE%9F%E8%A3%85%E3%80%8C%E5%9F%BA%E7%A4%8E%E3%81%AE%E5%9F%BA%E7%A4%8E%E3%80%8D%e3%80%80%EF%BD%9E%E3%83%87/]]~


#br