LoginSignup
0

More than 3 years have passed since last update.

posted at

【ふくだ学習録】ゼロから作るDeepLearning part5【10日目】

ふくだ学習録とは?

ふくだが学習したことの備忘録。
目に見える形で残すことによってやる気を出す個人的な作戦です。
他人に見せるように書いているわけではないので、すごく読みにくいです。

読了した本

データベースエンジニア養成読本 [DBを自由自在に活用するための知識とノウハウ満載!]

ゼロから作るDeepLearningを読んで

勾配法とは?

損失関数が最小値になるパラメータを導き出すための方法の1つ。
現在の場所で、関数値が最小値になる方向(ベクトル)を探し、その方向に一定値進める。
その後、再度その地点で関数値が最小値になる方向を探し、その方向へ一定値進める。
それを繰り返して、損失関数が最小になるパラメータを見つけていく方法。

学習率とは?

勾配法を用いた際に、一回の移動でどれだけ移動するかどうかを表した数値。
大きすぎても小さすぎてもよくないため、正しく学習できているかを都度確かめながら、学習値の値を変更していく必要がある。

ハイパーパラメータとは?

重みパラメータなどの、訓練データから自動で獲得される数値ではなく、人間で設定しなければならない値。

確率的勾配法とは?

確率的に無作為に選び出したデータに対して、勾配降下法を行うこと。SGDという名前で実装されることが一般的。

エポックとは?

訓練データを使い切るまでの回数に対応する単位。
例えば訓練データが10000個あって、100個のミニパッチで学習をする場合は、100回繰り返せば全ての訓練データを見たことになる。(厳密には、ランダムでデータを選ぶことになるので、全てのデータを見ているわけではない)
この場合、1エポック=100回となる。

逆伝播とは?

学習フェーズにおいて、重みパラメータを正確にしていく(各重みパラメータに関する損失関数の勾配を求める)際、微分を連鎖律という考え方で積み重ねていき、逆算していく。その「微分を積み重ねていくこと」を逆伝播と呼ぶ。

ニューラルネットワークの学習全体像

前提
ニューラルネットワークは、適応可能な重みとバイアスがあり、この重みとバイアスを訓練データに適応するように調整することを「学習」と呼ぶ。ニューラルネットワークの学習は次の4つの手順で行う。

ステップ1(ミニバッチ)
訓練データの中からランダムに一部のデータを呼び出す。

ステップ2(勾配の算出)
各重みパラメータに関する損失関数の勾配を求める。

ステップ3(パラメータの更新)
重みパラメータを勾配方向に微小量だけ更新する。

ステップ4(繰り返し)
ステップ1、2、3を繰り返す。

Momentum、AdaGrad、Adamとは?

最適なパラメータを求めていくための手法方法のこと。

【学習メモ】ゼロから作るDeep Learning【6章】

重みの初期値に関して

重みの初期値を正しく設定することで、学習のスピードが上がる。
重みの初期値は、活性化関数の種類によって設定仕分ける。

sigmoid関数やtanh関数の場合(左右対称かつ、中心付近が線形関数に近いもの)
1/√n

ReLU関数の場合
2/√n

※それぞれnはノードの個数

Batch Normalizationとは?

各層のアクティベーションが適度な広がりを持つように、強制的にアクティベーション分布を調整する手法。
ミニバッチでの入力データを、平均0、分散1のデータ集合に変換することで、アクティベーション分布を広げる、
活性化関数の前(もしくは後)に挿入することで使用する。

検証データとは?

ハイパーパラメータのチューニングを行うためのデータセット。

ハイパーパラメータの最適化手順

ステップ0
ハイパーパラメータの範囲を設定する

ステップ1
設定されrたハイパーパラメータの範囲から、ランダムにサンプリングする。

ステップ2
ステップ1でサンプリングされたハイパーパラメータの値を使用して学習を行い、検証データで認識精度を評価する。(ただしエポックは小さく設定)

ステップ3
ステップ1とステップ2をある回数(100回など)繰り返し、それらの認識精度の結果から、ハイパーパラメータの範囲を狭める。

ベイス最適化とは?

最適化を効率良く行なっていくための手法の1つ。

ベイズ最適化入門

CNNとは?

畳み込みニューラルネットワークのこと。
「畳み込み層」「プーリング層」がある。

代表的なCNN

LeNet
手書き数字認識を行うネットワーク。
1998年に考案された「初めてのCNN」。

AlexNet
画像認識のCNN。
LetNetを進化させたもの。

演算精度のビット削減

ニューラルネットワークでの演算を行う際、数値精度(何ビットのデータで数値を表現するのかということ)に関しては16ビットの半精度浮動小数点数で十分問題なく学習できる。
理由は、ニューラルネットワークにはロバスト性(データに多少のノイズが入っても出力結果が変わりにくい性質)があるから。

今日の一言

「ゼロから作るDeepLearning」読み終えた!
終盤は駆け足になってしまったけど、どういう理論でディープラーニングというものが成り立っているのか理解できた!

でも実際にそれをどんな形で利用していくべきか、または利用する方法に関しては、学ぶことができなかったので、自分でアプリ作ってみて、そこで機械学習させてみる!(使うとしたら一旦TensorFlowでいいのかな?って感じしてるけど、どうなんやろ。。。?)

次はcakePHP!!!

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
0