G検定の勉強中にメモした走り書きを公開するよ。やっとディープラーニングにたどり着いたよ。
まっててね、バーニーおじさん!
#5-1 ニューラルネットワークとディープラーニング
##1.ディープラーニングの基本
###1.1 多層パーセプトロン
【多層パーセプトロン】 とは、ニューラルネットワークの基本形
入力と出力の関係性が、隠れ層の中に表現されている
(入力と出力の関係性が、隠れ層の中に重みとして表現されている)
隠れ層は、入力と出力を対応づける関数に相当している
入力を受け取って、出力を吐き出す関係性を表しているだけで、関数のようなもの。
ニューラルネットワークの原点は、【単純パーセプトロン】という隠れ層のないモデル
これは、線形分類しかできない
隠れ層を追加する事で、非線形分類ができるようになった
###1.2 ディープラーニングとは
隠れ層を更に追加していけば、より複雑な問題を解くことができるようになるはず!
ディープラーニングとは、隠れ層を増やしたニューラルネットワーク
層が「深い」から深層学習と言われる。
機械学習には、いろいろな手法があるが、ディープラーニングは、その中の一つ
ディープラーニングはニューラルネットワークを応用した手法
ディープラーニングを行うニューラルネットワークのモデルを、ディープニューラルネットワークと呼ぶ
##2.既存のニューラルネットワークにおける問題
【誤差逆伝播法】
モデルの予測結果と実際の正解値との誤差をネットワークに逆向きにフィードバックさせる形でネットワークの重みを更新していく方法
ネットワークが深くなると、誤差が最後まで正しく反映されなくなってしまう。
・理由
【シグモイド関数】の特性
活性化関数としてシグモイド関数を使っていたが、シグモイド関数の微分は最大値が0.25にしかならない。1より大分小さい。
隠れ層を遡るごとに、(活性化関数の微分がかけ合わさる)伝播していく誤差はどんどん小さくなっていく。
このことを、勾配消失問題と呼ぶ。
勾配消失問題は、ニューラルネットワークを深層にする上での大きな妨げ。
#5-2.ディープラーニングのアプローチ
###1.事前学習によるアプローチ
2006年 トロント大学 ジェフリーヒントン
オートエンコーダー(自己符号化器)
###1.1オートエンコーダ
可視層と隠れ層の2層からなるネットワーク
入力層と出力層がセットになった物
オートエンコーダに与えられる入力は、
可視層(入力層)→隠れ層→可視層(出力層)の順に伝播し、出力される
「入力と出力が同じになる」
隠れ層には、「入力情報が圧縮されたもの」が反映される
※注意すべき点
入力層(可視層)の次元よりも、隠れ層の次元を小さくしておくこと
入力されたデータは隠れ層で要約されて、要約を元に、出力でもとのデータと同じになるように再現される。
要約がまちがっていれば、もとのデータと同じにならない。
入力層→隠れ層 エンコード
隠れ層→出力層 デコード
###1.2 積層オートエンコーダ
オートエンコーダを積み重ねる事で、ディープニューラルネットワークにする
ディープーオートエンコーダーをつくる
積層オートエンコーダという手法
ジェフリーヒントンが考えた手法
やりかた
それまでのディープニューラルネットワークでは、一気に全ての層を学習していた
積層オートエンコーダでは、
入力層に近い層から順番に学習させるという、逐次的な方法をとった
・例えば
一つ目のオートエンコーダAにて、可視層→隠れ層→可視層の学習をし、重みの調整を行う。次に、オートエンコーダAの隠れ層をオートエンコーダBの可視層として利用する。可視層(オートエンコーダAの隠れ層)→隠れ層→可視層
順番に学習していく
それぞれの隠れ層の重みが調整されるので、全体で見ても重みが調整されたネットワークができる。
このオートエンコーダを順番に学習していく手順の事を「事前学習」と呼ぶ
###1.3 ファインチューニング
オートエンコーダを積み重ねても、ラベルを出力することはできない
オートエンコーダでできるのは、入力から大事な情報だけを抽出するという教師なし学習の手法
そこで、積層オートエンコーダでは、
オートエンコーダを積み重ねた最後にロジスティック回帰層(シグモイド関数あるいはソフトマックス関数による出力層)を足すことで、教師あり学習を実現しています。
ただし、回帰問題においてはロジスティック回帰層ではなく、線形回帰層を足す事となる。
これにより、ネットワーク全体は隠れ層が複数あるディープニューラルネットワークが実現できる。
最後に足した、ロジスティック回帰層にも 重みの調整が必要
事前学習を終えたら、ロジスティック回帰層を足して、
仕上げにディープニューラルネットワーク全体で学習を行う。
事前学習で隠れ層の重み調整が終わっているので、一気に学習しても上手くいく
この最後の仕上げのことを「ファインチューニング」と言う
積層オートエンコーダは事前学習とファインチューニングの工程で構成される
###1.4 深層信念ネットワーク
2006年 ジェフリーヒントン 深層信念ネットワークという手法も提唱
教師なし学習(オートエンコーダに相当する層)に制限付きボルツマンマシンという手法を用いている。
###2.事前学習なしのアプローチ
事前学習は、全体の学習に必要な計算コストが非常に高くつく
という欠点があった。
今では、事前学習を行わず、勾配消失問題の原因であった活性化関数を工夫するというテクニックで実現している。
#5-3 ディープラーニングを実現するには
###1.CPUとGPU
第三次AIブームの要因 ハードウェアの進歩
・ムーアの法則
半導体の性能と集積は、18ヶ月ごとに2倍になる
半導体の性能・集積が鍵を握る
###1.1 CPUとGPU
コンピュータにはCPUとGPUの二つの演算処理装置がある。
CPU・・・コンピュータ全般の作業を処理する役割を担う
GPU・・・画像処理に関する演算を担う
大規模な並列演算処理に特化している
###1.2 GPGPU
ディープラーニングでは、テンソル(行列やベクトル)による計算が主になるので、同じような計算処理が大規模で行われる
この作業にはGPUが適している
GPUは画像処理に最適化されている
画像以外の計算に使えるように改良されたGPUを作った
GPGPU(ジェネラルパーパスコンピューティングオンGPU)と言う
NVIDIAが開発をリードしている。
グーグルはテンソル計算処理に最適化した演算処理装置を開発
TPU(テンソルプロセッシングユニット)と呼ぶ
###2.ディープラーニングのデータ量
ディープラーニングの学習とは、モデルが持つパラメータの最適化
パラメータが増えれば計算量も増える
アレックスネットでのパラメータ数は6千万個
必要なデータ数はどれくらいかという指標はないが目安はある
###バーニーおじさんのルール
モデルのパラメータ数の10倍のデータ数が必要
実際はデータ数が少なくてすむようなテクニックを適用する。