Rainbow Engine

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

機械学習 (Machine Learning)

多層パーセプトロンのアルゴリズムをご紹介(Excel計算のオマケ付き)

投稿日:2022年10月22日 更新日:

 

<目次>

多層パーセプトロンのアルゴリズムをご紹介(Excel計算のオマケ付き)
 【前提①】多層パーセプトロンとは?
 多層パーセプトロンの流れを整理
  ●STEP1:分布の種類を仮定(シグモイド関数)【Excel】
  ●STEP2:尤度関数を設定
  ●STEP3:片方パラメータ(重みw)を固定して「バイアスb」を推定
  ●STEP4:もう片方のパラメータ(バイアスb)を固定して「重みw」を推定
  ●STEP5:尤度関数の最大値(=傾き0=偏微分が0)を求める【Excel】
 【オマケ】多層パーセプトロンをExcelで計算

多層パーセプトロンのアルゴリズムをご紹介(Excel計算のオマケ付き)

【前提①】多層パーセプトロンとは?

●結論
  • ニューラルネットワークのモデルの種類の1つで、入力層と出力層の間に「隠れ層」があり「非線形分類」ができるのが特徴です。
●背景
  • 基本的な論理ゲート(AND、OR、NOT)は1本の線で分類(発火する/しない)を表現可。
  • しかしXORは特殊な回路で、1本の線では表現できません(線形分離不可)
(図100)XOR回路のイメージ

  • 基本的なモデルである「単純パーセプトロン」や「ロジスティック回帰」はあくまで「線形分類」です。
  • しかし、基本の論理ゲートを組み合わせる事でXOR回路を実現可能です。
  • 論理ゲート(破線部)をニューロンに見立てる(h1、h2)ことで「非線形分類」のモデルが作れます。
(図101)

  • このような入力と出力以外の層があるニューラルネットワークモデルを「多層パーセプトロン」と呼びます。
  • 入力層と出力層の間にある層を「隠れ層」と呼びます。
(図102①)線形分類から非線形分類へ

(図102②)
⇒この3層のモデルについて、次の節で流れを整理します。

 

●多層パーセプトロンモデルの出力式
ニューロンは、入力を「M個」、隠れ層を「J個」、出力を「K個」とします。

 

・隠れ層→出力層の式(\(k\)番目のニューロン)は
\(y_{k} = g(\boldsymbol{v_{k}}^\mathsf{T} \cdot \boldsymbol{h}+c_{k})\)

 

・入力層→隠れ層の式(全体)は
\( \boldsymbol{y} = g(\boldsymbol{V} \boldsymbol{h} + \boldsymbol{c}) \)

 

・入力層→隠れ層の式(\(j\)番目のニューロン)は
\(h_{j} = f(\boldsymbol{w_{j}}^\mathsf{T} \cdot \boldsymbol{x}+b_{j})\)

 

・隠れ層→出力層の式(全体)は
\( \boldsymbol{h} = f(\boldsymbol{W} \boldsymbol{x} + \boldsymbol{b}) \)

 

この時活性化関数\( f( \cdot ) \)、\( g( \cdot ) \)は活性化関数で、\( y, V, c, h, W, b \)はそれぞれ以下の通り。

\( \boldsymbol{x} = \begin{pmatrix} x_1 \\ \vdots \\ x_j \\ \vdots \\ x_{M} \end{pmatrix} \)

\( \boldsymbol{h} = \begin{pmatrix} h_1 \\ \vdots \\ h_j \\ \vdots \\ h_{J} \end{pmatrix} \boldsymbol{W} = \begin{pmatrix} w_{11} & \cdots & w_{1m} & \cdots & w_{1M} \\ \vdots \\ w_{j1} & \cdots & w_{jm} & \cdots & w_{jM} \\ \vdots \\ w_{J1} & \cdots & w_{Jm} & \cdots & w_{JM} \end{pmatrix} \boldsymbol{b} = \begin{pmatrix} b_1 \\ \vdots \\ b_j \\ \vdots \\ b_{J} \end{pmatrix} \)

\( \boldsymbol{y} = \begin{pmatrix} y_1 \\ \vdots \\ y_k \\ \vdots \\ y_{K} \end{pmatrix} \boldsymbol{V} = \begin{pmatrix} v_{11} & \cdots & v_{1j} & \cdots & v_{1J} \\ \vdots \\ v_{k1} & \cdots & v_{kj} & \cdots & v_{kJ} \\ \vdots \\ v_{K1} & \cdots & v_{Kj} & \cdots & v_{KJ} \end{pmatrix} \boldsymbol{c} = \begin{pmatrix} c_1 \\ \vdots \\ c_k \\ \vdots \\ c_{K} \end{pmatrix} \)

(図111)

目次にもどる

多層パーセプトロンの流れを整理

●STEP1:分布の種類を仮定(シグモイド関数)【Excel】

多層パーセプトロンの「出力層\( y \)」と「隠れ層\( h \)」活性化関数は「2値分類⇒シグモイド、多クラス分類⇒ソフトマックス」を使い分ける。

・2個のクラスに分類する場合 ⇒\( \quad \sigma(x) = \frac{1}{1+e^{-x}} \)
・K個のクラスに分類する場合 ⇒\( \quad softmax(x_{i}) = \frac{e^xi}{\sum^{K}_{j=1} e^{xj}} \) \( \quad (i=1,2,…,K) \)
⇒\( \sum^{K}_{j=1} e^{x_j} = 1\)であり、確率として表現できる点がポイントです。

●STEP2:尤度関数を設定

⇒省略

\( \quad\quad L(\boldsymbol{w},\boldsymbol{v},b,c| \boldsymbol{x_n})= \displaystyle \prod_{n=1}^N {y_n}^{t_n} (1-y_n)^{1-t_n} \)

\( \quad\quad L(\boldsymbol{W},\boldsymbol{V},\boldsymbol{b},\boldsymbol{c} | \boldsymbol{x_n}) = \displaystyle \prod_{n=1}^N \prod_{k=1}^K y_{nk}^{t_{nk}} \)

●STEP3:片方パラメータ(重みw)を固定して「バイアスb」を推定

●STEP4:もう片方のパラメータ(バイアスb)を固定して「重みw」を推定

・①誤差関数(尤度関数の対数)
\( E(\boldsymbol{W},\boldsymbol{V},\boldsymbol{b},\boldsymbol{c}|\boldsymbol{x_n}) \)
\( \quad= -\frac{1}{N} \log L(\boldsymbol{W},\boldsymbol{V},\boldsymbol{b},\boldsymbol{c}|\boldsymbol{x_n}) \)
  • ⇒(a)「2値分類」の場合

\( \quad= -\frac{1}{N} \sum^{N}_{n=1} \lbrace {t_n}\log{y_n} +  (1-t_n) \log (1-y_n) \rbrace \)

  • ⇒(b)「多クラス分類」の場合

\( \quad= -\frac{1}{N} \sum^{N}_{n=1} \sum^{K}_{k=1} t_{nk} \log y_{nk} \)

・②勾配降下法

まずは簡単のため \( \boldsymbol{v_{k}}, c_{k}, \boldsymbol{w_{j}}, b_{j} \)の勾配を求めます。このとき、\( \boldsymbol{p} = W \boldsymbol{x}+\boldsymbol{b} \)、\( \boldsymbol{q} = V \boldsymbol{h}+\boldsymbol{c} \)と置きます。

==================

\( \boldsymbol{v_k}^{(i+1)} \)
\( \quad=\boldsymbol{v_k}^{(i)}-\eta \frac{\partial E(W,V,\boldsymbol{b},\boldsymbol{c})}{\partial \boldsymbol{v_k}} \)
\( \quad=\boldsymbol{v_k}^{(i)}-\eta \frac{\partial E}{\partial q_{k}} \frac{ \partial q_{k}}{\partial \boldsymbol{v_{k}} } \)

このとき、\( \frac{\partial q_{k}}{\partial \boldsymbol{v_{k}}} = \boldsymbol{h} \)であるため、

\( \quad=\boldsymbol{v_k}^{(i)}-\eta \frac{\partial E}{\partial q_{k}} \boldsymbol{h} \)

また、\( \frac{\partial E}{\partial q_{k}}= – \frac{1}{N} \sum^{N}_{n=1} (t_{nk}-y_{nk}) \)であるため、

\( \quad=\boldsymbol{v_k}^{(i)}-\eta \lbrace – \frac{1}{N} \sum^{N}_{n=1} (t_{nk}-y_{nk}) \rbrace \boldsymbol{h} \)
\( \quad=\boldsymbol{v_k}^{(i)}+\eta \frac{1}{N} \sum^{N}_{n=1} (t_{nk}-y_{nk}) \boldsymbol{h} \)

==================

\( c_k^{(i+1)} \)

\( \quad=c_k^{(i)}-\eta \frac{\partial E(W,V,\boldsymbol{b},\boldsymbol{c})}{\partial c_{k}} \)
\( \quad=c_k^{(i)}-\eta \frac{\partial E}{\partial q_{k}} \frac{ \partial q_{k}}{\partial c_{k} } \)

このとき、\( \frac{\partial q_{k}}{\partial c_{k}} = 1 \)であるため、

\( \quad=c_k^{(i)}-\eta \frac{\partial E_{n}}{\partial q_{k}} \)
また、\( \frac{\partial E}{\partial q_{k}}= – \frac{1}{N} \sum^{N}_{n=1} (t_{nk}-y_{nk}) \)であるため、
\( \quad=c_k^{(i)}-\eta \lbrace – \frac{1}{N} \sum^{N}_{n=1} (t_{nk}-y_{nk})  \rbrace \)
\( \quad=c_k^{(i)}+\eta \frac{1}{N} \sum^{N}_{n=1} (t_{nk}-y_{nk}) \)

==================

\( \boldsymbol{w_j}^{(i+1)} \)

\( \quad=\boldsymbol{w_j}^{(i)}-\eta \frac{\partial E(W,V,\boldsymbol{b},\boldsymbol{c})}{\partial \boldsymbol{w_j}} \)

\( \quad=\boldsymbol{w_j}^{(i)}-\eta \frac{\partial E}{\partial p_{j}} \frac{\partial p_{j}}{\partial \boldsymbol{w_j}} \)

このとき、\( \frac{\partial p_{j}}{\partial \boldsymbol{w_{j}}} = \boldsymbol{x} \)であるため、

\( \quad=\boldsymbol{w_j}^{(i)}-\eta \frac{\partial E}{\partial p_{j}} \boldsymbol{x} \)

また、偏微分の連鎖律より\( \frac{\partial E}{\partial p_{j}} = \frac{\partial E}{\partial q_{1}} \frac{\partial q_{1}}{\partial p_{j}} + \frac{\partial E}{\partial q_{2}} \frac{\partial q_{2}}{\partial p_{j}} + \cdots + \frac{\partial E}{\partial q_{k}} \frac{\partial q_{k}}{\partial p_{j}} = \sum^{K}_{k=1}  \frac{\partial E}{\partial q_{k}} \frac{\partial q_{k}}{\partial p_{j}} \)であり、
更に、合成関数の微分より、\( \frac{\partial q_{k}}{\partial p_{j}} = \frac{\partial ( \boldsymbol{v_{k}} \boldsymbol{h} + c_{k} )}{\partial p_{j}} = \frac{\partial ( \boldsymbol{v_{k}} f(\boldsymbol{p}) + c_{k} )}{\partial p_{j}} \)となり、隠れ層の\(j\)番目の成分のみが残るため\( \frac{\partial ( \boldsymbol{v_{k}} f(\boldsymbol{p}) + c_{k} )}{\partial p_{j}} = v_{kj} f^{\prime}(p_{j}) \)となる。

よって\( \frac{\partial E}{\partial p_{j}} =  \sum^{K}_{k=1}  \frac{\partial E}{\partial q_{k}} \frac{\partial q_{k}}{\partial p_{j}} =  \sum^{K}_{k=1}  \frac{\partial E}{\partial q_{k}} v_{kj} f^{\prime}(p_{j}) =  f^{\prime}(p_{j}) \sum^{K}_{k=1}  \frac{\partial E}{\partial q_{k}} v_{kj} \)であるため、元の式に代入すると
\( \quad=\boldsymbol{w_j}^{(i)}-\eta f^{\prime}(p_{j}) \sum^{K}_{k=1}  \frac{\partial E}{\partial q_{k}} v_{kj} \boldsymbol{x} \)

\( f^{\prime}(p_{j}) \)はシグモイド関数やソフトマックス関数の微分により\( f(p_{j})(1-f(p_{j})) \)なので、

\( \quad=\boldsymbol{w_j}^{(i)}-\eta f(p_{j})(1-f(p_{j})) \sum^{K}_{k=1}  \frac{\partial E}{\partial q_{k}} v_{kj} \boldsymbol{x} \)
==================
\( b_j^{(i+1)} \)

\( \quad=b_j^{(i)}-\eta \frac{\partial E(W,V,\boldsymbol{b},\boldsymbol{c})}{\partial b_j} \)

\( \quad=b_j^{(i)}-\eta \frac{\partial E}{\partial p_{j}} \frac{\partial p_{j}}{\partial b_j} \)

 

このとき、\( \frac{\partial p_{j}}{\partial b_{j}} = 1 \)であるため、

\( \quad=b_j^{(i)}-\eta \frac{\partial E}{\partial p_{j}} \)

\( \quad=b_j^{(i)}-\eta f(p_{j})(1-f(p_{j})) \sum^{K}_{k=1}  \frac{\partial E}{\partial q_{k}} v_{kj} \)

(図112)

よって、 \( \boldsymbol{V} = ( \boldsymbol{v_1}, \boldsymbol{v_2}, \cdots, \boldsymbol{v_K} )^\mathsf{T}, \boldsymbol{c} = (c_1,c_2,\cdots,c_K), \boldsymbol{W} = ( \boldsymbol{w_1}, \boldsymbol{w_2}, \cdots, \boldsymbol{w_J} )^\mathsf{T}, \boldsymbol{b} = (b_1,b_2,\cdots,b_J) \)の勾配は次のように求まります。

\( \boldsymbol{V}^{(i+1)} \)
\( \quad=\boldsymbol{V}^{(j)}+\eta \frac{1}{N} \sum^{N}_{n=1} ( \boldsymbol{t_{n}}-\boldsymbol{y_{n}})  \boldsymbol{h} \)

 

\( \boldsymbol{c}^{(i+1)} \)
\( \quad=\boldsymbol{c}^{(i)}+\eta \frac{1}{N} \sum^{N}_{n=1} ( \boldsymbol{t_{n}}-\boldsymbol{y_{n}}) \)

\( \boldsymbol{W}^{(i+1)} \)

\( \quad=\boldsymbol{W}^{(i)}+\eta \frac{1}{N} \sum^{N}_{n=1} \frac{\partial E}{\partial W} \)
\( \quad=\boldsymbol{W}^{(i)}+\eta \frac{1}{N} \sum^{N}_{n=1} \begin{pmatrix} dw_{11} & \cdots & dw_{1m} & \cdots & dw_{1M} \\ \vdots \\ dw_{j1} & \cdots & dw_{jm} & \cdots & dw_{jM} \\ \vdots \\ dw_{J1} & \cdots & dw_{Jm} & \cdots & dw_{JM} \end{pmatrix} \)
\( \quad=\boldsymbol{W}^{(i)}+\eta \frac{1}{N} \sum^{N}_{n=1} \begin{pmatrix} d\boldsymbol{w_{1}} \\ \vdots \\ d\boldsymbol{w_{j}} \\ \vdots \\ d\boldsymbol{w_{J}} \end{pmatrix} \)
\( \quad=\boldsymbol{W}^{(i)}+\eta \frac{1}{N} \sum^{N}_{n=1} \begin{pmatrix} \frac{\partial E}{\partial p_{1}} \\ \vdots \\ \frac{\partial E}{\partial p_{j}} \\ \vdots \\ \frac{\partial E}{\partial p_{J}} \end{pmatrix} \boldsymbol{x}^\mathsf{T}\)
\( \quad=\boldsymbol{W}^{(i)}+\eta \frac{1}{N} \sum^{N}_{n=1} \begin{pmatrix} f(p_{1})(1-f(p_{1})) \sum^{K}_{k=1}  \frac{\partial E}{\partial q_{k}} v_{k1} \\ \vdots \\ f(p_{j})(1-f(p_{j})) \sum^{K}_{k=1}  \frac{\partial E}{\partial q_{k}} v_{kj} \\ \vdots \\ f(p_{J})(1-f(p_{J})) \sum^{K}_{k=1}  \frac{\partial E}{\partial q_{k}} v_{kJ} \end{pmatrix} \boldsymbol{x}^\mathsf{T} \)
\( \quad=\boldsymbol{W}^{(i)}+\eta \frac{1}{N} \sum^{N}_{n=1} f(\boldsymbol{p})(\boldsymbol{I}-f(\boldsymbol{p})) \odot \boldsymbol{V}^\mathsf{T} \begin{pmatrix} \frac{\partial E}{\partial q_{1}} \\ \vdots \\ \frac{\partial E}{\partial q_{k}} \\ \vdots \\ \frac{\partial E}{\partial q_{K}} \end{pmatrix} \boldsymbol{x}^\mathsf{T} \)

\( \boldsymbol{b}^{(i+1)} \)

\( \quad=\boldsymbol{b}^{(i)}+\eta \frac{1}{N} \sum^{N}_{n=1} f(\boldsymbol{p})(\boldsymbol{I}-f(\boldsymbol{p})) \odot \boldsymbol{V}^\mathsf{T} \begin{pmatrix} \frac{\partial E}{\partial q_{1}} \\ \vdots \\ \frac{\partial E}{\partial q_{k}} \\ \vdots \\ \frac{\partial E}{\partial q_{K}} \end{pmatrix} \)

 

・③確率的勾配降下法
\( \boldsymbol{V}^{(i+1)} \)
\( \quad=\boldsymbol{V}^{(i)}+\eta ( \boldsymbol{t_{n}}-\boldsymbol{y_{n}})  \boldsymbol{h} \)

 

\( \boldsymbol{c}^{(i+1)} \)
\( \quad=\boldsymbol{c}^{(i)} +\eta ( \boldsymbol{t_{n}}-\boldsymbol{y_{n}}) \)

 

\( \boldsymbol{W}^{(i+1)} \)
\( \quad=\boldsymbol{W}^{(i)}+\eta f(\boldsymbol{p})(\boldsymbol{I}-f(\boldsymbol{p})) \odot \boldsymbol{V}^\mathsf{T} \begin{pmatrix} \frac{\partial E}{\partial q_{1}} \\ \vdots \\ \frac{\partial E}{\partial q_{k}} \\ \vdots \\ \frac{\partial E}{\partial q_{K}} \end{pmatrix} \boldsymbol{x}^\mathsf{T} \)

 

\( \boldsymbol{b}^{(i+1)} \)
\( \quad=\boldsymbol{b}^{(i)} +\eta f(\boldsymbol{p})(\boldsymbol{I}-f(\boldsymbol{p})) \odot \boldsymbol{V}^\mathsf{T} \begin{pmatrix} \frac{\partial E}{\partial q_{1}} \\ \vdots \\ \frac{\partial E}{\partial q_{k}} \\ \vdots \\ \frac{\partial E}{\partial q_{K}} \end{pmatrix} \)

(図113)

●STEP5:尤度関数の最大値(=傾き0=偏微分が0)を求める【Excel】

→繰り返しにより求める

 

(参考)
尤度関数や最尤推定の考え方や内容を知りたい方は、下記記事も併せてご覧ください。

目次にもどる

【オマケ】多層パーセプトロンをExcelで計算

上記で【Excel】印を付けた部分について、Excel上で計算したファイルを添付します。検算等にご活用ください。
(図121)

目次にもどる 

Adsense審査用広告コード


Adsense審査用広告コード


-機械学習 (Machine Learning)
-

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

no image

AzureのMachine Learning(機械学習)の始め方

  <目次> (1) AzureのMachine Learning(機械学習)の始め方  (1-0) やりたいこと  (1-1) STEP1:(事前準備)ワークスペースの作成  (1-2) …

no image

ディープラーニングの論理回路とは?Pythonのサンプルプログラムもご紹介

  <目次> (1) ディープラーニングの論理回路とは?Pythonのサンプルプログラムもご紹介  (1-1) ニューラルネットワークとは?  (1-2) 論理回路とは?  (1-3) AN …

no image

ディープラーニングのパーセプトロンとは?Pythonで実装したサンプルもご紹介

  <目次> (1) ディープラーニングのパーセプトロンとは?Pythonで実装したサンプルもご紹介  (1-1) パーセプトロンとは?  (1-2) 処理の流れ  (1-3) サンプルプロ …

no image

numpy.dotの使い方について(次元別の仕様を整理)

  <目次> (1) numpy.dotの使い方について(次元別の仕様を整理)  (1-1) numpy.dotの次元別の挙動  (1-2) numpy.dotの次元別の挙動(詳細)  (1 …

matmulとdotの違いについて(Pythonのnumpy・tensorflow)

  <目次> matmulとdotの違いについて(Pythonのnumpy・tensorflow)  (1-1) 両者の違い  (1-2) 両者の違い(実機確認) matmulとdotの違い …

  • English (United States)
  • 日本語
Top