ディープラーニングの基礎講習会に行ってきたのでメモ

技術系読みもの

いま、とっても話題の機械学習。その中でも、ディープラーニングは画像をはじめとして強力な解析ツールになりつつあります。
私も、少しは知っておいたほうがいいだろうな、と思い、「ディープラーニングの基礎」的なタイトルの講習会に参加してきました。割と勉強になりました。メモを残します。

【講座の内容】

• ディープラーニング(深層学習)の理論と実践方法を学ぶ
• 人工知能と機械学習の歴史
• ニューラルネットワークの基礎
• ニューラルネットワークの深層化
• 畳み込みニューラルネットワークを用いた実践を行う
• 画像認識、CAEへの応用
• PythonとTensorFlowを用いた実習演習を行う

【講師】講師は(当時)京都大学の尾上先生。自然言語解析によるネットワークの可視化やデータの可視化が専門で、ニューラルネットワーク専門というわけではない。研究以外にも、Google Developer Group神戸支部のスタッフとして、TensorFlowを使ったデータサイエンスの勉強会をしている。 先生がGoogleびいきのため、Google関係の話が多めであった。

先生はMacBookを使っていて、Windowsでしか仕事をしない私は「ふえぇ…IT系だぁ…」ってなった記憶がある。

【ここ数年のディープラーニングのトレンド 】

ニューラルネットワークやディープラーニングは、一般人にも使える技術になりつつある。ディープラーニングの技術が発達してきたのは5年程前からで、ここ一年でも劇的に環境は変化している。ディープラーニングを使う人が増え、ハード・ソフト面で充実してきており、GoogleのTensor Flowも機能が大幅に増えている。


■ソフトウェア(フレームワーク)

ニューラルネットワークのフレームワークは、TensorFlow→Googleの開発している低層フレームワークKeras(ケラス)→高層フレームワーク。ChainerMN→Prefered Networks(PFN)の開発する、スパコン環境で分散学習できるようなフレームワーク。近年インパクトのある研究成果を上げている。
上記のようなフレームワークを用いてニューラルネットワークの開発を行うよりも、もっとカジュアルに使いたい場合、クラウドを使うのが一番良い。一例としてGoogle Cloud Platformを挙げて解説。モデルとデータをアップロードしてGoogleのインフラで機械学習計算が可能。API(学習済みモデル)が多数用意されており、これらを用いることで学習済みのモデルに自分のデータを加えて使うことができる。
■メジャーな深層学習のフレームワーク (※いずれもオープンソース )

• Caffe
ここ一年で一番聞かなくなったBerkeley Vision and Learning Centerにより開発
• Chainer
国内だと一番人気Preferred Networks社(PFN)により開発
• TensorFlow
国際的に使われているGoogleが開発に使っているコードを航海している(ドッグフードと呼ばれる)。
※いずれもPythonで利用Pythonはあくまでスクリプト言語なので計算速度は遅いが、行列言語はC+などで実装されているものが使われているので問題ないと考えられている。

pythonの良い所は、標準ライブラリが整っているところ科学技術計算をするライブラリ(numpy / scipy)や、可視化(matplotlib)がある。また、webベースでPythonを記述し可視化する「Jupyter Notebook」というものもある。研究者同士で情報共有する際に使われる。ライブラリのおかげで、多くの行数を記述する必要がないところも、Pythonが使われている理由。

■ハードウェア(プロセッサー)の話


機械学習を効率化するハードウェアとしてGPGPUが挙げられる。GPUは本来、PCゲーム用のグラフィックハードウェアであるが、行列演算が得意という特性から、ニューラルネットワークの行列計算の効率化に利用されている。近年はGPGPUに、機械学習用の機能が強化されたものがNVIDIAから販売されている。現在はNVIDIA一強の情勢であるが、GPUではなくTPU(Googleの開発するプロセッサ※)を使うような例もある。※TPUは成果をGoogleに共有する必要がある。


【人工知能の歴史】

よくある話。AIは三度のブームがあり、それぞれの間に長い冬の期間があったという。

• 第1次AIブーム (1950年代)理論の基礎が築かれた時代(ゲームAI、定理証明に利用)。ニューラルネットワークの基礎となった、形式ニューロン(=人工ニューロン)を用いた単純パーセプトロンが考案される。
• 第2次AIブーム (1980年代)ハードウェアが発展してきた時代(エキスパートシステム、第五世代コンピュータ)。バックプロパゲーション(出力の結果から戻って学習する)アルゴリズムが、単純パーセプトロンに中間層を加え多層化した多層パーセプトロンを可能とする。中間層を加えることでより高度がしたが、計算量が多すぎるために深層学習には至らず、ブームが去った。
• 第3次AIブーム (現在)GUPやマルチコアCPUが普及し計算能力が向上、より多層の多層パーセプトロンが計算可能になり、ディープラーニング(=深層学習)が生まれる。また、ビッグデータが蓄積され、学習データが豊富に得られる事からブームが到来している。

【ニューラルネットワークとは】機械学習、ニューラルネットワーク、ディープラーニングなどの用語の関係がよくわからなくなることが多いが、・機械学習(=マシンラーニング)  - ニューラルネットワーク    -ディープラーニングという関係にある。
機械学習の方法にはニューラルネットワーク以外にも様々あるが、画像解析の特徴量の学習を機械に行わせることができるニューラルネットワークが特に注目されている。
ニューラルネットワークは、人間の脳のニューロンを模擬したネットワーク構造の学習モデル。

入力同士の内積に、活性化関数(=伝達関数)を掛けて推測結果を出力する(Expected)。しかし、Expected値が実際の解 (Actual) と異なる場合、結果から活性化関数をどのような値にすればよいのか(重みを決める)を試行錯誤する(バックプロパゲーション)。

演算は組み込みの関数を組み合わせて計算式を書く。ニューラルネットワークは、シナプスの結合の重みづけを最適化する最適化問題。

活性化関数は、下記の三種類が良く使われる。y1 = tf.sigmoid(x)←昔よく使われていたy2 = tf.nn.relu(x)←最近よく使われるy3 = tf.tanh(x)←単純な計算で使われる?誤差関数「softmax_cross_entropy」train_stepを変化させることで変数を変えて、誤差を小さくしていうという計算をする。
その後、プログラミング言語Pythonの講習が1時間程度行われた。
初学者にオススメの書籍として、下記を先生は紹介されていた。

Pythonに詳しい方が書いた本らしく、内容も網羅的なのでよいとのこと。
Pythonは、下記リンクから、Download Python 3.6.4をクリックして導入する。https://www.python.org/downloads/

PythonのバージョンはPython2およびPython3があるが、簡単な操作であればバージョンの違いはないとのこと。今回はPython3を用いた。後で調べた感じだと、Python2は限界があるからPython3が良いとかなんとか。

Pythonの学習は、Pycharmというフリーの環境を用いて実施。・Pycharmで新規プロフェクトを作成・新規pythonファイルを作成して記載する・Shift+F10で実行

論理式は通常のプログラミング言語(C言語等)と大して変わらない。また、ブロック認識はすべてインデントで認識されており、インデントのずれている状態で実行するとエラーが出たりするので注意。

といったように、簡単なPythonを使ったところまでやった。あとは独学でなんとかなるだろという意気込み。

まずはこのあたりを読み漁りながら、実務に応用していきたい。

技術系読みもの
この記事を書いた人

某自動車メーカー勤務、主に計算系の基礎研究と設計応用に従事してます。
自動車に関する技術や、シミュレーション、機械学習に興味のある方に役に立ちそうなことを書いてます。

Montenegro Hasimotoをフォローする
シェアする
橋本総研.com

コメント

タイトルとURLをコピーしました