この記事のまとめ:
- CourseraのDeep Learning専攻のNeural Networks and Deep Learningコース Week 4の要点をまとめ、数式を一つ一つ解いてみました。
背景
前回に引き続き、CourseraのDeep Learning専攻のNeural Networks and Deep LearningコースのWeek 4について、備忘録として文字に起こして理解を深めようと思います。
Week 4の概要
ざっくりいうとNeural Networks and Deep Learningコースは次のような4週構成になっており、Week 3は隠れ層が1層のニューラルネットワークを扱いましたが、Week 4はニューラルネットワークを一般化して任意の隠れ層の数を扱います。Week 3が理解できていれば大差ありません。
- Week 1:Deep Learningの前提的な話
- Week 2:ロジスティック回帰、使用する数式表現、Pythonの使い方
- Week 3:隠れ層の少ないニューラルネットワーク、活性化関数、ランダム初期化
- Week 4:隠れ層が多いニューラルネットワーク(=Deep Learning)
隠れ層の多いニューラルネットワーク
Week 3では間に1層の隠れ層 (Hidden Layer)があるニューラルネットワークを扱いましたが、Week 4では任意の数の隠れ層を扱います。図で表すと次のおりです。
出力層 (Output layer)を含めて 層の多層ニューラルネットワークについて、 層目のニューロンの数を として学習を行います。学習方法の流れはWeek 3で行ったものとほとんど同じですが、各層での処理を一般化することで、各層の処理を一つ一つ記述せず、forループの処理で記述できるようにします。Week 3の内容が理解できていれば、理解はたやすいです。
順伝搬 (Forward Propagation)
順伝搬においては、各層では次の処理を行います。
-
入力:
- 層からの順伝搬:
-
出力
- 層への順伝搬:
- 層の逆伝搬へのキャッシュ:
上記出力用の順伝搬は計算は次の通りに表せます。
なお、入力層の入力データと出力層の出力 は、一般化するために次のようにしております。
また、 は層目の活性化関数を表しており、各層で任意の活性化関数を選択します。
上式の通り、順伝搬では 層から を受け取り、 層に を渡します。 また、逆伝搬の処理を減らすために をキャッシュしておきます。
逆伝搬 (2Bbackward Propagation)
逆伝搬においては、各層では次の処理を行います。
- 入力:
- 層からの逆伝搬:
- 層の順伝搬からのキャッシュ:
- 処理:
- 重みの傾き:
- バイアスの傾き:
- 出力
- 層への逆伝搬:
逆伝搬における各層の処理は一般化すると次のように表すことができます。
Week 4の要点はこの手順を理解することです。この流れでWeek 3で行ったのと同様の手順ですべての隠れ層の重み、バイアスを更新すれば隠れ層が多くなっても特別なことを考える必要がありません。
今回は以上です。 最後まで読んでいただき、ありがとうございます。
コメントを投稿