2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

はじめに

Deep Learningの基本知識をメモしました。

ニューラルネットワーク

  • ニューラルネットワーク(多層パーセプトロン):パーセプトロンを複数組み合わせることで、重み(パラメータ)の数が増えて、分類だけでなく複雑なタスクを扱えるようになる。← 線形代数により計算

Deep Learning

  • 深層ニューラルネットワーク(Deep Neural Network):狭義だと、ニューラルネットワークの層が4層以上の場合。← これを用いた機械学習の手法をDeep Learningと呼ぶ。

Deep Learningの利点・欠点
利点
・ 特徴量の自動抽出
欠点
・ 大量の学習データが必要(層の深さ・ノード数が増えるほどパラメータが増加し、パラメータの数∝必要なデータ数)
・ 計算量が膨大(GPUを利用する必要あり)
・ ブラックボックス(結果の解釈ができない)

ネットワークの種類

  • CNN(Convolutional Neural Network):画像認識・物体検出で利用。脳の神経系を模した通常のニューラルネットワーク層(全結合層:層ごとの全てのノードが結合)に、眼の神経系を模した畳み込み層を繋げている。再帰構造。

  • RNN(Recurrent Neural Network):時系列データ(順序関係があるデータ、言語・音声・動画・株価変動など)に対して用い、文章分類・文章生成・機械翻訳・音声認識などに利用。

多層ニューラルネットワークの構造例(Keras)

  • Flattenによる画像のベクトル化

  • 活性化関数:ニューロンの電気信号の入力が一定以上で、隣のニューロンに電気信号を流す。計算スピード、学習スピードが左右。決定境界が曲線(非線形)。例として、ReLu, tanh, シグモイド関数等。← 仮に活性化関数が線形だと、分類性能は線形判別機であるパーセプトロンと同じ。

  • Optimizers: 様々な勾配下降法のアルゴリズムがまとまったモジュール(SGD, Rmsprop, Adam, AdaDelta, AdaGradなど)。学習効率・最適解への収束・鞍点(ある方向から見ると極大値、別方向から見ると極小値=最小値でない)の脱出

SGD(確率的勾配下降法)
学習データをサンプリングして行う勾配下降法で、ミニバッチ学習やオンライン学習で利用。サンプリングする学習データによって、誤差関数が変化(サンプリングされる学習データがある意味パラメータ)。

バッチ学習では、毎度同じ誤差関数によって重みを更新する最急降下法を用いる。

  • batchsize:ミニバッチというかたまりに含めるサンプル数。← ミニバッチ学習

  • epoch数:パラメータが多い場合、学習回数を増やす。

  • 順伝搬計算:予測を行うための処理で、入力が左から右へ伝播。入力層からの値と重みの積の合計値を算出。出力層のうち、最大値となるのがクラスの予測結果。

  • 逆伝播計算:学習を行うための処理で、順伝播とは逆方向。この学習方法は、誤差逆伝播法(Back Propagation)と呼ばれ、右から左へパラメータの修正幅を決定。

  • softmax関数:出力層への入力(実数)を確率(0 ~ 1)に変換する活性化関数。

  • cross_entropy誤差関数:ニューラルネット特有の誤差関数。

$$
C = - \frac{1}{n} \sum (y \log p_i + (1-y) \log (1-p_i))
$$

  • 重みの修正幅:連鎖率を利用して、出力層につながるパラメータだけでなく、手前の層のパラメータも調整可能。

$$
\Delta \omega_i = - \eta \frac{\partial J(\omega)}{\partial \omega_i} \
J(\omega) = \frac{1}{2} \sum (y_i - f(x_i))^2
$$

学習結果の確認

  • グラフの出力
  • 混同行列の出力(どれと間違えたか)
  • 正答率

モデルの重みの保存・復元

学習させたモデルのパラメータ(重み)を保存することで、再利用できる。

補足

  • テンソル:RGB画像などの、3次元以上の行列。

学習方法の種類

バッチ学習 オンライン学習 ミニバッチ学習
メモリ効率・計算効率
収束の正確性
  • バッチ学習(一括学習):全サンプルを一気に用いて誤差関数の勾配を算出。機械学習アルゴリズムで利用。DeepLearningで扱うデータは大規模なので、計算時間・メモリの観点から向かない。新しいデータを取得した時、ゼロから学習を再開しないとだめ。
  • オンライン学習(逐次学習):一つのサンプルから誤差関数の勾配を算出。学習終了後、新しいサンプルを得た時に、学習済みモデルに追加で学習可能。大規模データには適しているが、解が最適化に収束しづらいという欠点あり。(← ノイズ・外れ値の影響を受けやすいため)
  • ミニバッチ学習:小分けしたデータの塊ごとに、誤差関数の勾配を算出。多くの場合で用いられる。
2
2
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
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?