第5章 ディープラーニングの概要
5.1 ディープラーニングとは
入力層と出力層で構成される単純パーセプトロンでは線形分類しか行うことができないが、入力層と出力層の間に隠れ層を追加した多層パーセプトロンを用いることで非線形分類を行うことができる。
多層パーセプトロンでは多くの隠れ層を追加することによって勾配消失問題が発生し学習がうまくいかなくなることがある。
ニューラルネットワークの隠れ層を増やすことによって隠れ層を遡ることに伝播していく誤差がどんどん小さくなりゼロに近づく勾配消失問題が発生します。また隠れ数を増やすことにより計算コストが高くなるため計算処理に優れた演算処理が必要となりました。
ニューラルネットワークの隠れ層を増やすことで、より複雑な関数を表現することができる。しかしを増やすだけでは誤差逆伝播法で勾配が消失してしまう。そこで事前学習やファインチューニングの手法を用いることで、深層でも誤差が適切に逆伝播されるようになった
多層パーセプトロンを用いたニューラルネットワークに置いて、隠れ層が深いニューラルネットワークをディープニューラルネットワーク(DNN) と呼びます。
DNN は人間や動物の脳神経回路をモデルとしたアルゴリズムを多層構造化したもので大規模で高次元なデータを処理することができます。 DNN はハードウェアの問題だけではなく勾配消失などといった問題点を抱えています。
5.2 ディープラーニングの手法
5.2.1 自己符号化器について
オートエンコーダを多層化すると勾配消失問題が生じるため複雑な問題を解決することは困難だった。ジェフリー・ヒントンは各層を単層のオートエンコーダに分割し入力層から繰り返し学習する積層オートエンコーダを提唱し、汎用的な オートエンコーダの利用可能にした。
オートエンコーダとは入力層と出力層からなる可視層と隠れ層の2層からなるニュートラルネットワークです。
入力層と出力層に同じデータを用いることで隠れ層には入力の情報が圧縮された情報が反映される。
積層オートエンコーダに線形回帰素を追加すれば回帰を行うニューラルネットワークになり、ロジスティック回帰層を追加すれば分類を行うニューラルネットワークとなる。
オートエンコーダを積み重ねるだけでは特徴を抽出することができない教師なし学習であるため、ロジスティック回帰層を足し、最後にネットワーク全体で学習を行い教師あり学習を実現します。積層オートエンコーダは事前学習とファインチューニングを行うことで構成されます。
ジェフリー・ヒントンは事前学習の手段として積層オートエンコーダを提唱した同年、制限付きボルツマンマシンを積み重ねた深層信念ネットワークも提唱している。
制限付きボルツマンマシンは可視層と隠れ層の2層からなり、ユニット同士は違う層のユニットのみを接続することができるという制限がある。層同士の関係を確率モデルとして表すことができ入力データを再現できる。
オートエンコーダを追加されたものを積層エンコーダといい、ジェフリー・ヒントンが入力層に近い層から順番に学習させる逐次的な方法として提唱した。各層を順番に学習していくことでそれぞれの隠れ層の重みが調整されるため、全体的に見ても重みが調整されたネットワークが出来上がる。このオートエンコーダを順番に学習することを事前学習と呼ぶ
事前学習は有用な手法であったが各層の重みを最適化するため全体の学習に必要な計算コストが高いという欠点がある。ディープラーニングの研究が発展するにつれ事前学習を使用する機会が少なくなった。勾配消失問題の原因である活性化関数を工夫することで事前学習を行わなくともよい手法が見つかった。
深層信念ネットワークは2006年にジェフリー・ヒントンによって提唱された。それ自体は教師ラベルを必要としない教師なしの手法である。多層のネットワークである深層信念ネットワークの各層を制限付きボルツマンマシン都市とみなして、層ごとに学習することで深層信念ネットワークを学習することができる
5.3 ディープラーニングの計算デバイスとデータ量
GPU は映像や3DOG などの同一画面に同じ演算を一挙に行う。大規模な並列演算処理を行うことができる。画像処理以外にも、テンソルによる計算が主になるディープランニングの計算に最適された GPU のことを GPGPUと呼ぶ。ディープラーニングの実装用のライブラリーのほぼ全てが NVIDIA社製のGPU上で
計算をサポートされている。 Google 社はテンソル計算処理に最適化された演算処理装置である TPU(Tensor Processing Unit) を開発している
ディープラーニングを利用する上で、 GPU は重要な計算資源である。 GPU は CPU と比較した時、同じ演算を一挙に行うという点で優れており、ディープランニングのように幾度とないループ処理を高速に行うことに優れている。一方 のCPU は様々な種類のタスクを順番に処理という処理をするという点で優れている。
GPU は画像処理などの演算を行う役割を狙っています。大規模な並列演算処理を行う点で優れています。
ディープランニングでは、行列計算やベクトルの計算(テンソル)が主になり、大規模な並行演算処理が必要となります。そこで画像処理以外に使用し、ディープランニングの計算に特化した GPGPU が開発されました。
第三次 AI ブームにおいて大規模な行列計算を並列で行うことができる GPGPU の演算処理の向上がディープランニングの急速な盛り上がりを支えました。
ディープランニングの学習の目的は、モデルが持つパラメーターを最適化することです。そのためディープニューラルネットワークではネットワークが深くなればなるほどその最適化すべきパラメーター数も増えるので必要な計算量も増加します。
データ量の目安となる経験則が存在し、「バーニーおじさんのルール」という経験則によるとモデルのパラメータ数の10倍のデータ数が必要であるとされています。
この経験則によるとアレックスネットと呼ばれるモデルのパラメータ数は6000万個のため必要なデータ数は6億となります。
ディープラーニングの学習には、一般的に豊富な計算資源が必要となりますが、一部の大企業除いて大規模な計算環境を整えるにはコストの面から困難であるため、共有可能な環境を整備することが必要となっています。
学習時には大量のデータをメモリにロードし、反復しながら精度を高めていく計算が必要であるため計算性能が重要視されます。
ディープランニングの学習には一般的に豊富な計算資源が必要となりますが、一部の大企業を除いて大規模な計算環境を整えるには、コストの面から困難であるため、共有可能なクラウドサービスなどの環境を整備する必要があります。
クラウドサービスでは必要な量に応じてリソースを素早く増減することができます
ディープランニングの計算プラットフォームとして半導体メーカー NDIVIA が提供する GPU コンピューティング向け総合環境である CUDA が挙げられる 。C 言語独自拡張しているため C 言語のプログラミングの経験があれば扱いやすく NDIVIA 社のGPU に最適化されている。TensorやChainerといったフレームワークは CUDA のアクセスをサポートしている。