0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【備忘】深層学習の誤差逆伝播法を理解したい

0
Last updated at Posted at 2026-10-18

🟥1.理解したい動機

 趣味で2Dアクション迷路探索ゲームを自作しており、作中で敵キャラを動かしたい。やはり敵キャラは、敵キャラ自身が周囲の状況を知り、頭脳を使って考えて行動してほしい。行動パターンが単純だと攻略の定石パターンがすぐに見つかりゲームとして面白くない。
image.png
 定石パターンを隠す為には、敵キャラの行動パターンの分岐を総当たりで計算する方法や、行動パターンを複数定義する方法があるが、私はその両者にゲーム作りの楽しさを感じず、プログラム作成作業がメンドクサイと感じる。
 経験上、メンドクサイと感じた瞬間、ゲーム作りは停滞するので、避けねばならない。
 敵キャラに頭脳を持たせる方法は、ChatGPT等のAPIを使うのは費用が掛かり、オープンウェイトのローカルLLMを使うのパソコン性能が必要で、両方とも手軽さがない。
 そこで、自作ゲームの敵キャラの頭脳には、脳の仕組みをモデル化したニューラルネットワークと深層学習を使ってみたいと思う。
 YouTubeの視聴と、AIとの対話で、ニューラルネットワークのモデルは理解した。しかし、深層学習の仕組みは難易度が高い。具体的には「誤差逆伝播法」による「パラメータの重みづけ訂正の方法」が難点だ。
 本記事では、「誤差逆伝播法」による「パラメータの重みづけ訂正の方法」について自分なりに理解した内容を備忘として記す。
 ちなみに「伝搬」は物理用語なので「伝播」が正となる

教材(YouTube動画)

ニューラルネットワークの仕組み | Chapter 1, 深層学習(ディープラーニング)

深層学習の仕組み, 勾配降下 | Chapter 2, 深層学習(ディープラーニング)

絶対に理解させる誤差逆伝播法【深層学習】

🟥2.ニューラルネットワークの入門知識

2-1.順伝播(=Forward)のモデル図

 一般的に見るモデル図は、「活性化関数の表記」やバイアス値追加の為の「"1"の表記」が抜けているので、補完した簡易モデル図を作成した。
image.png

2-2.活性化関数について

2-2-1.活性化関数の種類

 活性化関数は複数存在するが、「Sigmoid関数」「ReLU関数」の二つに絞る。数年前の解説資料は、Sigmoid関数がよく扱われていたが、勾配消失問題が発生するので、現在はReLU関数の利用が主流となる。

【補足】
 活性化関数の表記に関し、Sigmoid関数はf(x),σ(x)やS(x)の表記がある一方で、ReLU関数はf(x)でほぼ統一している。
 今回、活性化関数の表記をf(x)に統一しようかと思ったが、両者の区別に迷うので、Sigmoid関数はσ(x)として、ReLU関数はf(x)とした。

Sigmoid関数

Sigmoid関数:σ(x) = 1/(1 + e⁻ᵡ)
\displaylines{
Sigmoid関数 
σ(x) = \frac{1}{1 + e^{-x}}\\
}

ReLU関数

ReLU関数:f(x) = max(0,x)
 入力値 x ≦ 0 の時、「0」を出力し
 入力値 x > 0 の時、入力値「x」をそのまま出力する。
\displaylines{
ReLU関数 f(x) = \max(0, x)
}

image.png

2-2-2.活性化関数の適用

 活性化関数は中間層の各層に適用する。
 出口層は活性化関数を適用しない場合もある。(ややこしい)
 また、中間層と出力層の全てに同一関数を適用するわけでない。活性化関数の「Sigmoid関数」と「ReLU関数」の適用パターンを大別すると以下4種類になる。数年前の説明資料はNo.1が多かったが、現在の主流はNo.2や4となる。

No. 中間層 出力層 備考
1 Sigmoid関数 Sigmoid関数 勾配消失問題が発生しやすい
2 ReLU関数 Sigmoid関数 ReLU関数で勾配消失問題を抑える
3 ReLU関数 ReLU関数 使わない
4 ReLU関数 関数を適用しない これを使う場合もある

【感想】
 数年前の私は、Sigmoid関数一択だと思っていたが、活性化関数の主流が変化してReLU関数を適用すると聞いて、てっきりNo.3になると思っていたが、よくよくPython等のプログラム本文を読むと、内容がNo.2やNo.4だと知る。
 解説にはそこまで書いてないので、これは理解のトラップ(罠)だと感じた。

2-2-3.活性化関数の参考リンク

🟥3.ニューラルネットワークの順伝播の流れ

3-1.入力層→中間層(重み付け+バイアス)

b₁,b₂ :バイアス 
z₁= w₁₁x₁ + w₂₁x₂ + w₃₁x₃ + b₁
z₂= w₁₂x₁ + w₂₂x₂ + w₃₂x₃ + b₂
\displaylines{
b_1,b_2 :バイアス\\ 
z_1 = w_{11}x_1 + w_{12}x_2 + w_{13}x_3 + b_1\\
z_2 = w_{21}x_1 + w_{22}x_2 + w_{23}x_3 + b_2
}

3-2.中間層(重み付け+バイアス)→中間層(活性化関数)

f(x):活性化関数
h₁,h₂ :活性化関数を適用後の中間層
h₁ = f(z₁) = f(w₁₁x₁ + w₂₁x₂ + w₃₁x₃ + b₁)
h₂ = f(z₂) = f(w₁₂x₁ + w₂₂x₂ + w₃₂x₃ + b₂)

3-3.中間層(活性化関数)→出力層(重み付け+バイアス)

c₁,c₂ :バイアス 
s₁ = v₁₁h₁ + v₂₁h₂ + c₁
s₂ = v₁₂h₁ + v₂₂h₂ + c₂

3-4.出力層(重み付け+バイアス)→出力層(活性化関数)

f(x):活性化関数
y₁,y₂ :活性化関数を適用後の出力層
y₁ = f(s₁) = f(v₁₁h₁ + v₂₁h₂ + c₁)
y₂ = f(s₂) = f(v₁₂h₁ + v₂₂h₂ + c₂)

🟥4.誤差逆伝播法の準備

4-1.出力層(活性化関数)と教師データ→誤差

 出力層(活性化関数)と教師データとの差から「誤差」を算出する。
 

t₁,t₂ :教師データ 
δy₁,δy₂ :誤差
δy₁ = y₁ - t₁
δy₂ = y₂ - t₂
\displaylines{
t_1,t_2 : 教師データ\\
δ_{y1},δ_{y2}:誤差\\
 δ_{y1} = y_1-t_1\\
 δ_{y2} = y_2-t_2\\
 }

4-2.活性化関数を微分

 傾き(勾配)を求める為、活性化関数を微分する。
 以下に「Sigmoid関数の微分」と「ReLU関数の微分」を示す。

4-2-1. Sigmoid関数の微分

Sigmoid関数:σ(x) = 1/(1 + e⁻ᵡ)の微分
σ'(x) = σ(x)(1-σ(x)) = (1/(1 + e⁻ᵡ))*(1-1/(1 + e⁻ᵡ))
\displaylines{
Sigmoid関数:σ(x) =\frac{1}{1 + e^{-x}}の微分\\
σ'(x) = σ(x)(1-σ(x)) = (\frac{1}{1 + e^{-x}})(1-\frac{1}{1+e^{-x}})
}

image.png

参考

4-2-2. ReLU関数の微分

ReLU関数の微分:f(x) = max(0,x)
 入力値 x ≦ 0 の時、「0」を出力し
 入力値 x > 0 の時、入力値「x」をそのまま出力する式なので

 x ≦ 0 の時、f’(x) = 0
 x > 0 の時、f’(x) = 1
\displaylines{
 x ≦ 0 の時、f'(x) = 0\\
 x > 0 の時、f’(x) = 1\\
}

image.png

4-3.損失関数(=誤差関数)から損失値Eを出す。

 損失関数(=誤差関数)は複数種類があるが、一般的には「平均二乗誤差(MSE)」で計算する。

E = \frac{1}{2}\sum_{i=1}^{n} (y_i-t_i)^2=\frac{1}{2}\sum_{i=1}^{n} δ_{yi}^2

以下の式もあるが、あまり使わない。

\displaylines{
E = \frac{1}{n}\sum_{i=1}^{n} (y_i-t_i)^2 
or E = \frac{1}{2n}\sum_{i=1}^{n} (y_i-t_i)^2
}

具体的な計算例は以下となる。

E = 1/2*(δy₁² + δy₂²) = 1/2*((y₁ - t₁)² + (y₂ - t₂)²)
E = \frac{1}{2}(δ_{y1}^2 + δ_{y2}^2)=\frac{1}{2}[(y_1 - t_1)^2 + (y_2 - t_2)^2]

 損失値Eは2乗の総和を計算しておりE≧0となる。このEはモデルの評価指標の値であり、損失値は小さければ小さい程、誤差が小さくなり良質なモデルとなる。
 Eの値を最小にする計算を考える。

【補足】
 損失関数式に於いて2で割っている理由は、次項で説明するが、2乗の項(yᵢ - tᵢ)²を微分(偏微分)すると2の係数が前に出て2(y - t)となり、2と1/2が相殺して1となり、編微分の計算結果がスッキリになる為となる。一般的にはこの「2」で割る方を利用する場合が多い。また、総数「n」で割る利点は、E≦1になって計算が楽になる。
 式が一つの定まらないが、どの式を選んでも、傾き(勾配)の「向き」自体は変わらない為、深層学習の結果に影響しない(らしい)。

4-4.学習率(学習係数)ηと繰り返し学習

 深層学習は、Eの値を最小にする計算を扱う。wやvの「重み係数」が適切な数値になれば。教師データと同じ解が得られて、Eが最小となる。
 しかし、現状は適切な重み係数は分からない。そこで、重み係数を誤差逆伝播法によって、教師データとの誤差を「少しずづ」小さくする。「少し」「ずつ」のやり方は、
 「少し」は学習率(学習係数)ηとして、数値はη=0.1や0.01に誤差変化量(=勾配)を掛け合わせ、
 「ずつ」は繰り返し学習となり、例えば10000回を実施する。

for i=0;i<10000;i++{
 新しい重み=古い重み-η×勾配
}

\displaylines{
v_{ji}^{new}=v_{ji}^{old}-η\frac{∂E}{∂v_{ji}}\\
c_i^{new}=c_i^{old}-η\frac{∂E}{∂c_i}\\

w_{ji}^{new}=w_{ji}^{old}-η\frac{∂E}{∂w_{ji}}\\
b_i^{new}=b_i^{old}-η\frac{∂E}{∂b_i}\\
}

🟥5.誤差逆伝播法のモデルと計算

5-1.誤差逆伝播法のモデルの解説図

 ニューラルネットワーク(順伝播=Forward)のモデル図は散見されるが、「順伝播」と「逆伝播(=誤差逆伝播)」を一つまとめた、誤差逆伝播法の流れを含むモデル図は少ない。あってもちょっと難しい。やはり理解の為には自分で作るしかないので以下の様に作成した。難解だったが、理解の補助となった。

image.png

【参考】

 ↓途中までが理解の補助となったが、後半が難しい。

5-2.損失値Eの偏微分と連鎖律

 誤差伝播法の計算では損失値Eを重み(wやv)で編微分した導関数を利用する。すなわち、

\frac{∂E(w,v)}{∂w_{ji}} , \frac{∂E(w,v)}{∂v_{ji}}

 の様に編微分した導関数が必要である。更にこの導関数は連鎖律で算出する。連鎖律は微分の合成関数の拡張となるが、やや難しいので、少しだけ記載。

\displaylines{
損失値Eを導く式が、wとvの合成関数とした場合\\
E(α,β) , α=α(w) , β=β(v)\\
E(α,β) = E(α(w),β(v))\\
ここでEをwとvで偏微分する導関数の式を連鎖律で示すと以下となる\\
\frac{∂E}{∂w}=\frac{∂E}{∂α}\frac{∂α}{∂w}\\
\frac{∂E}{βv}=\frac{∂E}{∂β}\frac{∂β}{∂v}\\
}

5-3.損失値Eを重みvで偏微分する。

 損失値$E$を重み$v_{ji}$で編微分する。偏微分の導関数は、以下の通り連鎖律で式を結合する。

\frac{∂E}{∂v_{ji}}=\frac{∂E}{∂δ_{yi}}\frac{∂δ_{yi}}{∂y_i}\frac{∂y_i}{∂s_{i}}\frac{∂s_i}
{∂v_{ji}}\\

 連鎖律は、以下の4つの式を微分した導関数を利用する。

E =\frac{1}{2}\sum_{i=1}^{n} δ_{yi}^2= \frac{1}{2}\sum_{i=1}^{n} (y_i-t_i)^2 をδ_{yi}で微分\tag{1}
δ_{yi}=(y_i-t_i) をy_iで微分\tag{2}
y_i=σ(s_i) をs_iで微分\tag{3}
s_i = v_{1i}h_1+v_{2i}h_2+c_i をv_{ji}で微分\tag{4}

5-4.損失値Eを重みvで偏微分の連鎖律の具体的計算例

5-4-1.具体的計算

イメージが出来るように具体的な計算例を用いる。$E$を$v_{12}$で微分を目指す。まずは式(1)(2)を計算する。

\displaylines{
E = \frac{1}{2}\sum_{i=1}^{2} (y_i-t_i)^2 = \frac{1}{2}\ ((y_1-t_1)^2+(y_2-t_2)^2)= \frac{1}{2}\ (δ_{y1}^2+δ_{y2}^2)\\
δ_{y1}=(y_1-t_1)\\
このEをδ_{y2}の関数とみなしδ_{y2}で偏微分、\\
また、δ_{y2}をy_2の関数と見なしてy_2で偏微分して連鎖律で結合すると\\
\frac{∂E}{∂y_2}=[\frac{∂E}{∂δ_{y2}}][\frac{∂δ_{y2}}{∂y_2}]  = [\frac{1}{2}×2δ_{y2}]×[1] =δ_{y2}\\
}

次に式(3)と(4)を計算する。

\displaylines{
y_2=σ(s_2) と s_2=v_{12}h_1+v_{22}h_2+c_2をv_{12}で偏微分した場合\\

y_2'=\frac{∂y_2}{∂v_{12}}=\frac{∂y_2}{∂s_2}\frac{∂s_2}{∂v_{12}}=
\frac{∂σ(s_2)}{∂s_2}\frac{∂s_2}{∂v_{12}}\\
=σ'(s_2)・s_2'=σ(s_2)(1-σ(s_2))・h_1\\
}

以上の結果、(1)(2)(3)(4)を結合する。

\frac{∂E}{∂v_{12}}=[\frac{∂E}{∂δ_{y2}}\frac{∂δ_{y2}}{∂y_2}][\frac{∂y_2}{∂s_2}\frac{∂s_2}{∂v_{12}}]=δ_{y2}・σ'(s_2)・h_1

5-4-2.重みvに対する計算結果のまとめ

\displaylines{
\frac{∂E}{∂v_{11}}=\color{red}{\frac{∂E}{∂δ_{y1}}\frac{∂δ_{y1}}{∂y_1}}\frac{∂y_1}{∂s_1}\frac{∂s_1}{∂v_{11}}=\color{red}{δ_{y1}}・σ'(s_1)・h_1\\

\frac{∂E}{∂v_{12}}=\color{red}{\frac{∂E}{∂δ_{y2}}\frac{∂δ_{y2}}{∂y_2}}\frac{∂y_2}{∂s_2}\frac{∂s_2}{∂v_{12}}=\color{red}{δ_{y2}}・σ'(s_2)・h_1\\

\frac{∂E}{∂v_{21}}=\color{red}{\frac{∂E}{∂δ_{y1}}\frac{∂δ_{y1}}{∂y_1}}\frac{∂y_1}{∂s_1}\frac{∂s_1}{∂v_{21}}=\color{red}{δ_{y1}}・σ'(s_1)・h_2\\

\frac{∂E}{∂v_{22}}=\color{red}{\frac{∂E}{∂δ_{y2}}\frac{∂δ_{y2}}{∂y_2}}\frac{∂y_2}{∂s_2}\frac{∂s_2}{∂v_{22}}=\color{red}{δ_{y2}}・σ'(s_2)・h_2\\

\frac{∂E}{∂c_1}=\color{red}{\frac{∂E}{∂δ_{y1}}\frac{∂δ_{y1}}{∂y_1}}\frac{∂y_1}{∂s_1}\frac{∂s_1}{∂c_1}=\color{red}{δ_{y1}}・σ'(s_1)・1\\

\frac{∂E}{∂c_2}=\color{red}{\frac{∂E}{∂δ_{y2}}\frac{∂δ_{y2}}{∂y_2}}\frac{∂y_2}{∂s_2}\frac{∂s_2}{∂c_2}=\color{red}{δ_{y2}}・σ'(s_2)・1\\
}

5-5.損失値Eを重みwで偏微分する。

 損失値$E$を重み$w_{ji}$で編微分する。偏微分の導関数は、以下の通り連鎖律で式を結合する。

\frac{∂E}{∂w_{ji}}=
[\frac{∂E}{∂δ_{y1}}\frac{∂δ_{y1}}{∂y_1}\frac{∂y_1}{∂s_{1}}\frac{∂s_1}
{∂h_i}+
\frac{∂E}{∂δ_{y2}}\frac{∂δ_{y2}}{∂y_2}\frac{∂y_2}{∂s_{2}}\frac{∂s_2}
{∂h_i}][\frac{{∂h_i}}{∂δ_{zi}}\frac{∂δ_{zi}}{∂w_{ji}}]\\

 連鎖律は、以下の6つの式を微分した導関数を利用する。

E =\frac{1}{2}\sum_{i=1}^{n} δ_{yi}^2= \frac{1}{2}\sum_{i=1}^{n} (y_i-t_i)^2 をδ_{yi}で微分\tag{1}
δ_{yi}=(y_i-t_i) をy_iで微分\tag{2}
y_i=σ(s_i) をs_iで微分\tag{3}
s_i = v_{1i}h_1+v_{2i}h_2+c_i をh_iで微分\tag{4}
h_i = f(z_i) をz_iで微分\tag{5}
z_i = w_{ji}x_1 + w_{ij}x_2 + w_{ij}x_3 + b_iをw_{ji}で微分\tag{6}


5-6.損失値Eを重みwで偏微分の連鎖律の具体的計算例

5-6-1.損失値Eを重みwで偏微分の連鎖律の具体的計算例

 具体的な計算例を用いる。$E$を$w_{12}$で微分を目指す。まずは式(1)(2)を計算する。

\displaylines{
E = \frac{1}{2}\sum_{i=1}^{2} (y_i-t_i)^2 = \frac{1}{2}\ ((y_1-t_1)^2+(y_2-t_2)^2)= \frac{1}{2}\ (δ_{y1}^2+δ_{y2}^2)\\
δ_{y1}=(y_1-t_1) , δ_{y2}=(y_2-t_2)\\
ここで、重みwは重みvとは違って、y_1とy_2の両方に影響するので両方計算が必要\\

y_1側:Eをδ_{y1}の関数とみなし、また、δ_{y1}をy_1の関数と見なして\\
Eをy_1で偏微分する場合、\\
\frac{∂E}{∂y_1}=[\frac{∂E}{∂δ_{y1}}][\frac{∂δ_{y1}}{∂y_1}]  = [\frac{1}{2}×2δ_{y1}]×[1] =δ_{y1}\\

y_2側:Eをδ_{y2}の関数とみなし、また、δ_{y2}をy_2の関数と見なして\\
Eをy_2で偏微分する場合、\\
\frac{∂E}{∂y_2}=[\frac{∂E}{∂δ_{y2}}][\frac{∂δ_{y2}}{∂y_2}]  = [\frac{1}{2}×2δ_{y2}]×[1] =δ_{y2}\\
}

次に式(3)と(4)を計算する。ここでも、y₁とy₂の両方に影響するので両方計算が必要

\displaylines{
y_1側:y_1=σ(s_1) と s_1=v_{11}h_1+v_{21}h_2+c_1をh_2で偏微分した場合\\
y_1'=\frac{∂y_1}{∂h_2}=\frac{∂y_1}{∂s_1}\frac{∂s_1}{∂h_2}=\frac{∂σ(s_1)}{∂s_1}\frac{∂s_1}{∂h_2}\\
=σ'(s_1)・s_1'=σ(s_1)(1-σ(s_1))・v_{21}\\

y_2側:y_2=σ(s_2) と s_2=v_{12}h_1+v_{22}h_2+c_2をh_2で偏微分した場合\\
y_2'=\frac{∂y_2}{∂h_2}=\frac{∂y_2}{∂s_2}\frac{∂s_2}{∂h_2}=\frac{∂σ(s_2)}{∂s_2}\frac{∂s_2}{∂h_2}\\
=σ'(s_2)・s_2'=σ(s_2)(1-σ(s_2))・v_{22}\\

}

次に式(5)と(6)を計算する。

\displaylines{
h_2 = f(z_2) をz_2で微分し、またz_2=w₁₂x₁ + w₂₂x₂ + w₃₂x₃ + b₂を\\
w_{12}で微分して連鎖律で結合すると\\
\frac{∂h_2}{∂w_{12}}=\frac{∂h_2}{∂z_2}\frac{∂z_2}{∂w_{12}}
= f'(z_2)・x_1\\
}

以上の結果、(1)(2)(3)(4)(5)(6)を結合する。

\displaylines{
\frac{∂E}{∂w_{12}}=
[
\frac{∂E}{∂δ_{y1}}\frac{∂δ_{y1}}{∂y_1}\frac{∂y_1}{∂s_1}\frac{∂s_1}{∂h_2}+
\frac{∂E}{∂δ_{y2}}\frac{∂δ_{y2}}{∂y_2}\frac{∂y_2}{∂s_2}\frac{∂s_2}{∂h_2}
]
[\frac{∂h_2}{∂z_2}\frac{∂z_2}{∂w_{12}}]=\\

\frac{∂E}{∂δ_{y1}}\frac{∂δ_{y1}}{∂y_1}\frac{∂y_1}{∂s_1}\frac{∂s_1}{∂h_2}
\frac{∂h_2}{∂z_2}\frac{∂z_2}{∂w_{12}}+
\frac{∂E}{∂δ_{y2}}\frac{∂δ_{y2}}{∂y_2}\frac{∂y_2}{∂s_2}\frac{∂s_2}{∂h_2}
\frac{∂h_2}{∂z_2}\frac{∂z_2}{∂w_{12}}=\\
[δ_{y1}・σ'(s_1)・v_{21}+δ_{y2}・σ'(s_2)・v_{22}][f'(z_2)・x_1]=\\
δ_{y1}・σ'(s_1)・v_{21}・f'(z_2)・x_1 + δ_{y2}・σ'(s_2)・v_{22}・f'(z_2)・x_1
}

5-6-2.重みwに対する計算結果のまとめ

\displaylines{
\frac{∂E}{∂w_{ji}}=[δ_{y1}・σ'(s_1)・v_{1i}+δ_{y2}・σ'(s_2)・v_{2i}][f'(z_i)・x_j]\\
\\
\frac{∂E}{∂w_{11}}=[δ_{y1}・σ'(s_1)・v_{11}+δ_{y2}・σ'(s_2)・v_{12}][f'(z_1)・x_1]\\
\frac{∂E}{∂w_{21}}=[δ_{y1}・σ'(s_1)・v_{11}+δ_{y2}・σ'(s_2)・v_{12}][f'(z_1)・x_2]\\
\frac{∂E}{∂w_{31}}=[δ_{y1}・σ'(s_1)・v_{11}+δ_{y2}・σ'(s_2)・v_{12}][f'(z_1)・x_3]\\
\\
\frac{∂E}{∂w_{12}}=[δ_{y1}・σ'(s_1)・v_{21}+δ_{y2}・σ'(s_2)・v_{22}][f'(z_2)・x_1]\\
\frac{∂E}{∂w_{22}}=[δ_{y1}・σ'(s_1)・v_{21}+δ_{y2}・σ'(s_2)・v_{22}][f'(z_2)・x_2]\\
\frac{∂E}{∂w_{32}}=[δ_{y1}・σ'(s_1)・v_{21}+δ_{y2}・σ'(s_2)・v_{22}][f'(z_2)・x_3]\\
\\
\frac{∂E}{∂b_1}=[δ_{y1}・σ'(s_1)・v_{11}+δ_{y2}・σ'(s_2)・v_{12}][f'(z_1)・1]\\
\frac{∂E}{∂b_2}=[δ_{y1}・σ'(s_1)・v_{21}+δ_{y2}・σ'(s_2)・v_{22}][f'(z_2)・1]\\
}

🟥6.所管

 数週間かけて、勉強して作成した記事が以上となる。
 変数の添え字が多いと理解できないので、簡易モデルは、入力層3要素→中間層1層で2要素→出力層2要素とした。
 一方で、変数が少ないと拡張が困難となり、実践投入が出来ないので、中間層は2層が良かったが、おそらく2層にしたら勉強に挫折して記事にならなかった。
 
 勉強の途中で、芋づる式に以下も薄く学んだ。きっかけがあれば記事にしたいと思う。

  • CNN(畳込NN):画像認識・物体認識に強い、
  • RNN(再帰NN):順番に処理(文章生成や音声認識)
  • Transformer:単語と単語の関係や、文章全体で処理。

 肝心のゲーム制作はどうなったかと言うと、誤差伝播法をプログラム化する作業に怖気(オジケ)づいたので、やってない。
 要はメンドクサイと思ってしまったのだ。
 AIに任せれば、良いプログラムを出力知っているが、そちらもやる気が起きない。
 困ったもんだ。
 

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?