ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装
- 作者: 斎藤康毅
- 出版社/メーカー: オライリージャパン
- 発売日: 2016/09/24
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (18件) を見る
2章 パーセプトロン
パーセプトロンは、複数の信号を入力として受け取り、一つの信号を出力します。
パーセプトロンを表す式は以下のようになります。
[tex:
]
バイアス と 重み を調整すると、論理回路のAND/NAND/OR を実装することができました。
XOR は、バイアス と 重み の調整で実装することができませんでした。しかし、AND/NAND/ORの組み合わせ(多層パーセプトロン)で実装することができました。
3章 ニューラルネットワーク
パーセプトロンは、 人の手によって重みを設定する必要がありました。
ニューラルネットワークは、適切な重みパラメータをデータから自動で学習することができます。
パーセプトロンの式を以下のように書き直します。
[tex:
]
ここで、 h(x) は 活性化関数 と呼ばれます。
活性化関数には以下の関数が使われます。
- ステップ関数
- シグモイド関数
- ReLU
ニューラルネットワークは、分類問題 と 回帰問題 に用いることができます。どちらに用いるかで、出力層の活性化関数を変更します。
回帰問題 では 恒等関数 分類問題 では ソフトマックス関数 を使います。
出力層のニューロンの数は、解くべき問題に応じて決めます。例えば、手書き数字を 0〜9 の数字のどれに分類するかを決める場合は、10個のニューロンを設定することになります。
入力層のニューロンの数については、例えば 28 x 28 の画像を読み込む場合は 784 個になります。
4章 ニューラルネットワークの学習
学習 とは、訓練データから最適な重みパラメータの値を自動で獲得することを指します。機械学習の学習では、人の考えた特徴量を用います。一方で、ニューラルネットワークの学習では、人の手を介さずにデータをそのまま用います。
損失関数 とは、 学習を行う上での指標です。損失関数 には、 2乗和誤差 と 交差エントロピー誤差 がよく用いられます。
勾配法 とは、 損失関数の値が最も小さくなる重みパラメータを探し出す手法です。微分を用います。
ミニバッチ学習 とは、 訓練データから無作為に一部のデータを取り出して、学習させる方法です。計算量を減らすために行います。
過学習 とは、訓練データ以外のデータを正しく認識できない状態です。訓練データ以外のテストデータに対しての精度を確認する必要もあります。