メメメモモ

プログラミング、筋トレ、ゲーム、etc

ゼロから作るDeep Leaningの読書メモ1

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

2章 パーセプトロン

パーセプトロンは、複数の信号を入力として受け取り、一つの信号を出力します。

パーセプトロンを表す式は以下のようになります。

[tex:

]

バイアス と 重み を調整すると、論理回路のAND/NAND/OR を実装することができました。

XOR は、バイアス と 重み の調整で実装することができませんでした。しかし、AND/NAND/ORの組み合わせ(多層パーセプトロン)で実装することができました。

3章 ニューラルネットワーク

パーセプトロンは、 人の手によって重みを設定する必要がありました。

ニューラルネットワークは、適切な重みパラメータをデータから自動で学習することができます。

パーセプトロンの式を以下のように書き直します。

[tex:

]

ここで、 h(x) は 活性化関数 と呼ばれます。

活性化関数には以下の関数が使われます。

  • ステップ関数
  • シグモイド関数
  • ReLU

ニューラルネットワークは、分類問題 と 回帰問題 に用いることができます。どちらに用いるかで、出力層の活性化関数を変更します。

回帰問題 では 恒等関数 分類問題 では ソフトマックス関数 を使います。

出力層のニューロンの数は、解くべき問題に応じて決めます。例えば、手書き数字を 0〜9 の数字のどれに分類するかを決める場合は、10個のニューロンを設定することになります。

入力層のニューロンの数については、例えば 28 x 28 の画像を読み込む場合は 784 個になります。

4章 ニューラルネットワークの学習

学習 とは、訓練データから最適な重みパラメータの値を自動で獲得することを指します。機械学習の学習では、人の考えた特徴量を用います。一方で、ニューラルネットワークの学習では、人の手を介さずにデータをそのまま用います。

損失関数 とは、 学習を行う上での指標です。損失関数 には、 2乗和誤差 と 交差エントロピー誤差 がよく用いられます。

勾配法 とは、 損失関数の値が最も小さくなる重みパラメータを探し出す手法です。微分を用います。

ミニバッチ学習 とは、 訓練データから無作為に一部のデータを取り出して、学習させる方法です。計算量を減らすために行います。

過学習 とは、訓練データ以外のデータを正しく認識できない状態です。訓練データ以外のテストデータに対しての精度を確認する必要もあります。