LoginSignup
0
0

More than 3 years have passed since last update.

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

Posted at

ふくだ学習録とは?

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

読了した本

データベースエンジニア養成読本 [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!!!

0
0
0

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
  3. You can use dark theme
What you can do with signing up
0
0