ニューラルネットワーク
ニューラルネットワークとは
人間の脳には多数のニューロン(神経細胞)が存在しており、それぞれのニューロンは他のニューロンから信号を受け取り、さらに他のニューロンへ信号を受け渡しています。
この信号の流れによって、脳は情報処理を行っています。
この脳の仕組みをコンピュータ内に実現したものがニューラルネットワークです。
ニューラルネットワークの歴史
第一次ブーム
ニューラルネットワークの歴史は1950年代までさかのぼります。
1958年に米国の心理学者Frank Rosenblatt氏が単純パーセプトロンというニューラルネットワークを発明したことが最初のブームと言われています。
単純パーセプトロンとは線形識別問題により、入力データを2クラスに分類するモデルとなります。
このモデルは入力層と出力層の2層からなります。
イメージとしては2クラスの境界線をニューラルネットワークが学習して引いていくというものになります。
しかし、単純パーセプトロンには線形分離可能な問題しか解けないという欠点があることがわかり、最初のブームは終焉を迎えます。
第二次ブーム
その後、1986年に米国の心理学者David Rumelhart氏らが発明した誤差逆伝播法を用い、
入力層と出力層の間に新たな層を設けた3層構造のニューラルネットワークを形成するという手法で単純パーセプトロンの欠点を解決したことにより再びブームが訪れます。
この手法によってできたモデルを多層パーセプトロンといいます。
誤差逆伝播法とは正解と出力値の誤差を正解に近づくように前の層の重みを修正していく学習法です。
ですが、多層パーセプトロンモデルにも過学習や勾配消失といった問題があることがわかり、ブームは再度終焉を迎えました。
第三次ブーム
そして、2006年から過学習や勾配消失を解決する手法(ReLU関数、Dropout等)の発明やディープラーニングなどにより再度盛り上がりを見せ、今日に至ります。
ディープラーニングとは
ディープラーニングとは多層パーセプトロンモデルの入力層と出力層との間の層(隠れ層)の数を2層以上としたニューラルネットワーク(ディープニューラルネットワーク)を使用して学習をすることを言います。
第二次ブームの頃から多層のディープニューラルネットワークを使用すれば学習の精度を上げられるだろうと考えられていましたが、当時は学習するのに十分なデータを得られなかったことと、層を多くすることで増えた計算量に耐えられるマシンも無かったこと等が原因で研究としてはほとんど行われていませんでした。
しかし、近年ではインターネットの普及等により大量のデータを得ることが比較的容易になったことやGPUによる並列計算の普及などにより、その精度が立証され、自動運転や医療機器に至るまでさまざまな分野で使用されるようになりました。
GPUとは
GPUとはCPUよりも多くのコアを搭載しており、並列処理を得意としているプロセッサです。
GPUは大量の単純な計算をするのに優れており、ゲームなどのグラフィックに使われることが多かったのですが最近ではディープラーニングの計算処理にも使われるようになってきています。
便利なフレームワーク
今後ディープラーニングはますます身近なものとなってくるでしょう。
また、ニューラルネットワークを構築するためのフレームワークも存在しますので、それらを使うことで誰でも簡単にディープラーニングを体験することができます。
以下に代表的なフレームワークをいくつか紹介します。
Tensorflow
Googleが開発する人工知能・機械学習向けライブラリです。実際にGoogle社内で使われていたものをオープンソース化したものとなります。
モデルの設計や学習アルゴリズムの選択の柔軟性が高く、さまざまな計算アルゴリズムも標準で提供されています。
Chainer
Preferred Networksが開発するニューラルネットワークを実装するためのライブラリです。
特徴としてはDefine-by-Run(ニューラルネットワークの構築と計算を同時に行う方法)方式を採用しており、処理速度も速いです。
Keras
上でも説明したTensorflow等のラッパーライブラリです。ニューラルネットワークの構築を更に簡単に実装することができます。
複雑なネットワークの構築には向いていません。
さいごに
今回はニューラルネットワークについて紹介しました。
ディープラーニングには画像処理に強いCNNや時系列処理に強いRNNなどもありますので次回以降紹介していけたらと思います。
- 当ページの人物画像はNIGAOE MAKERで作成しました。