ブログ

【Word2vecなどの出力層高速化】巨大なソフトマックス関数の課題と重点サンプリングによる解決

分布仮説(distributional hypothesis)に基づくWord$2$vecなどの学習にあたっては、出力層が語彙の数に対応する分類問題に対応するので、そのまま取り扱うと巨大なソフトマックス関数の取り扱いが必要になります。当記事はこの課題の重点サンプリングを用いた解決策について取りまとめました。
「深層学習による自然言語処理」$4.3$節の「出力層の高速化」などを参考に当記事の作成を行いました。

・用語/公式解説
https://www.hello-statisticians.com/explain-terms

ソフトマックス関数の巨大化

交差エントロピー損失関数とソフトマックス関数

Word$2$vecや翻訳・文書要約・対話などの文章の生成タスクの文章の生成タスクの学習を行う際は、入力文$\mathbf{x} \in \mathcal{X}$と予測対象の単語$y \in \mathcal{Y}$を元に、下記のように交差エントロピー損失関数を定義する。
$$
\large
\begin{align}
l_{\boldsymbol{\theta}}^{\mathrm{softmax}}(\mathbf{x},y) = -\log{ \frac{\exp{(f_{\boldsymbol{\theta}}(\mathbf{x},y))}}{\displaystyle \sum_{\tilde{y} \in \mathcal{Y}} \exp{(f_{\boldsymbol{\theta}}(\mathbf{x},\tilde{y}))}} } \quad (1.1)
\end{align}
$$

文章の全体の生成における学習については$(1.1)$式を各単語について和を計算すれば良いが、式が複雑になるので以下では$1$つの単語の予測のみを取り扱う。ここで$(1.1)$式は条件付き確率分布$P(y|\mathbf{x})$やソフトマックス関数$\mathrm{softmax}(x)$を用いて下記のように表すこともできる。
$$
\large
\begin{align}
l_{\boldsymbol{\theta}}^{\mathrm{softmax}}(\mathbf{x},y) &= -\log{P(y|\mathbf{x})} \quad (1.2) \\
P(y|\mathbf{x}) &= \mathrm{softmax}(f_{\boldsymbol{\theta}}(\mathbf{x},y)) = \frac{\exp{(f_{\boldsymbol{\theta}}(\mathbf{x},y))}}{\displaystyle \sum_{\tilde{y} \in \mathcal{Y}} \exp{(f_{\boldsymbol{\theta}}(\mathbf{x},\tilde{y}))}} \quad (1.3)
\end{align}
$$

$(1.2)$式は負の対数尤度に一致するので、損失関数の最大化は対数尤度の最大化に対応する。また、$(1.3)$式はソフトマックス関数の定義式を含む。

分配関数の定義

前項「交差エントロピー損失関数とソフトマックス関数」$(1.1)$式の$y$の取り扱いにあたって、下記のように関数$s(y)$を定義する。
$$
\large
\begin{align}
s(y) = f_{\boldsymbol{\theta}}(\mathbf{x},y) \quad (1.4)
\end{align}
$$

また、下記のように分配関数(partition function)の$Z(\mathcal{Y})$を定義する。
$$
\large
\begin{align}
Z(\mathcal{Y}) = \sum_{\tilde{y} \in \mathcal{Y}} \exp{(s(\tilde{y}))} = \sum_{\tilde{y} \in \mathcal{Y}} \exp{(f_{\boldsymbol{\theta}}(\mathbf{x},\tilde{y})))} \quad (1.5)
\end{align}
$$

このとき$(1.1)$式は$(1.4), \, (1.5)$式を用いて下記のように表すことができる。
$$
\large
\begin{align}
l_{\boldsymbol{\theta}}^{\mathrm{softmax}}(\mathbf{x},y) &= -\log{ \frac{\exp{(f_{\boldsymbol{\theta}}(\mathbf{x},y))}}{\displaystyle \sum_{\tilde{y} \in \mathcal{Y}} \exp{(f_{\boldsymbol{\theta}}(\mathbf{x},\tilde{y}))}} } \quad (1.1) \\
&= -\log{ \frac{\exp{(s(y))}}{Z(\mathcal{Y})} } \\
&= -s(y) + \log{Z(\mathcal{Y})} \quad (1.6)
\end{align}
$$

パラメータに関する勾配

$(1.6)$式の両辺をパラメータベクトル$\boldsymbol{\theta} \in \mathbb{R}^{p}$で方向微分すると下記が得られる。
$$
\large
\begin{align}
\nabla l_{\boldsymbol{\theta}}^{\mathrm{softmax}}(\mathbf{x},y) &= – \nabla s(y) + \nabla \log{Z(\mathcal{Y})} \quad (1.6)’ \\
\nabla &= \frac{\partial}{\partial \boldsymbol{\theta}} = \left(\begin{array}{c} \displaystyle \frac{\partial}{\partial \theta_{1}} \\ \vdots \\ \displaystyle \frac{\partial}{\partial \theta_{p}} \end{array} \right)
\end{align}
$$

ここで$(1.6)’$式の第$2$項の$\nabla \log{Z(\mathcal{Y})}$は合成関数の微分の公式を元に下記のように変形できる。
$$
\large
\begin{align}
\nabla \log{Z(\mathcal{Y})} &= \sum_{\tilde{y} \in \mathcal{Y}} \frac{\exp{(s(\tilde{y}))}}{Z(\mathcal{Y})} s'(\tilde{y}) \\
&= \sum_{\tilde{y} \in \mathcal{Y}} p(\tilde{y}) s'(\tilde(y)) \\
&= \mathbb{E}_{Y \sim p}[s'(Y)] \quad (1.7)
\end{align}
$$

$(1.7)$式を元に$(1.6)’$式は下記のように表せる。
$$
\large
\begin{align}
\nabla l_{\boldsymbol{\theta}}^{\mathrm{softmax}}(\mathbf{x},y) &= – \nabla s(y) + \nabla \log{Z(\mathcal{Y})} \quad (1.6)’ \\
&= – \nabla s(y) + \mathbb{E}_{Y \sim p}[s'(Y)] \quad (1.8)
\end{align}
$$

$(1.8)$式の計算にあたって$\mathcal{Y}$が巨大な場合は、$\mathbb{E}_{Y \sim p}[s'(Y)]$は全ての語彙に対して計算する必要があることで計算量が大きくなる。この際に$\mathcal{Y}$に比例しない計算量で近似を行う手法にはいくつかあるが、次節では重点サンプリングを用いた手法を確認する。

重点サンプリングを用いた出力層の高速化

モンテカルロ法

$(1.8)$式における$\mathbb{E}_{Y \sim p}[s'(Y)]$のモンテカルロ法を用いた近似式は下記のように表せる。
$$
\large
\begin{align}
\mathbb{E}_{Y \sim p}[s'(Y)] & \simeq \frac{1}{n} \sum_{i=1}^{n} s'(\tilde{y}_{i}) \quad (2.1) \\
\tilde{y}_{1}, \, \cdots , & \, \tilde{y}_{n} \sim p \quad (2.2)
\end{align}
$$

ここで$(2.2)$式の$p$は$(1.3)$式に対応するので、ここでの$\tilde{y}_{i}$のサンプリングを行うにあたっては分配関数$Z$の計算が必要である。よって、次項では$p$を用いずにサンプリングを行う重点サンプリングを確認する。

重点サンプリング

対象の分布からの無作為抽出が難しい場合に重点サンプリング(importance sampling)はよく用いられる。ここでは$(1.3)$式で表される$p$の代わりに提案分布$q$を用いて重点サンプリングを行うことを考える。このとき$\mathbb{E}_{Y \sim p}[s'(Y)]$は下記のように表すことができる。
$$
\large
\begin{align}
\mathbb{E}_{Y \sim p}[s'(Y)] &= \sum_{\tilde{y} \in \mathcal{Y}} s'(\tilde{y})p(\tilde{y}) \\
&= \sum_{\tilde{y} \in \mathcal{Y}} s'(\tilde{y}) \frac{p(\tilde{y})}{q(\tilde{y})} q(\tilde{y}) \\
&= \mathbb{E}_{Y’ \sim q} \left[ s'(Y) \frac{p(Y’)}{q(Y’)} \right] \quad (2.3)
\end{align}
$$

重点サンプリングの数式表記と計算例については下記でも取り扱った。

ここで$(2.3)$式に基づくモンテカルロ近似の式は下記のように表せる。
$$
\large
\begin{align}
\mathbb{E}_{Y \sim p}[s'(Y)] = \mathbb{E}_{Y’ \sim q} \left[ s'(Y) \frac{p(Y’)}{q(Y’)} \right] \simeq \frac{1}{n} \sum_{i=1}^{n} s'(\tilde{y}_{i}) \frac{p(\tilde{y}_{i})}{q(\tilde{y}_{i})} \quad (2.4)
\end{align}
$$

$(2.4)$式を用いることで提案分布$q$に基づくサンプリングを行える一方で、$(2.4)$式の$p(\tilde{y}_{i})$の計算には分配関数$Z$の計算が必要である。そこで次項では分配関数$Z$の近似値の取得について取り扱う。

分配関数の近似

単語の集合を$\mathcal{Y}$で表したので、語彙数は$|\mathcal{Y}|$で表せる。ここで下記のような一様分布$u$を定義する。
$$
\large
\begin{align}
u(x) = \frac{1}{|\mathcal{Y}|} \quad (2.5)
\end{align}
$$

$(2.5)$式で表した一様分布$u$に従う確率変数$X \sim u$について$\exp{(s(X))}$の期待値は下記のように表すことができる。
$$
\large
\begin{align}
\mathbb{E}_{X \sim u}[\exp{(s(X))}] = \frac{1}{|\mathcal{Y}|} \sum_{\tilde{x} \in \mathcal{Y}} \exp{(s(\tilde{x}))} \quad (2.6)
\end{align}
$$

ここで$(2.6)$式に$(1.5)$式を用いることで、下記のような変形を行うことができる。
$$
\large
\begin{align}
\mathbb{E}_{X \sim u}[\exp{(s(X))}] &= \frac{1}{|\mathcal{Y}|} \sum_{\tilde{x} \in \mathcal{Y}} \exp{(s(\tilde{x}))} \quad (2.6) \\
\mathbb{E}_{X \sim u}[\exp{(s(X))}] &= \frac{1}{|\mathcal{Y}|} Z(\mathcal{Y}) \\
Z(\mathcal{Y}) &= |\mathcal{Y}| \mathbb{E}_{X \sim u}[\exp{(s(X))}] \quad (2.7)
\end{align}
$$

上記の$(2.7)$式に対し、下記の導出を元に提案分布$q$を用いて重点サンプリングを行う。
$$
\large
\begin{align}
Z(\mathcal{Y}) &= |\mathcal{Y}| \mathbb{E}_{X \sim u}[\exp{(s(X))}] \quad (2.7) \\
&= |\mathcal{Y}| \mathbb{E}_{Y’ \sim q} \left[\exp{(s(Y’))} \frac{u(Y’)}{q(Y’)} \right] \\
&= |\mathcal{Y}| \mathbb{E}_{Y’ \sim q} \left[ \exp{(s(Y’))} \frac{1}{|\mathcal{Y}| q(Y’)} \right] \\
&= \frac{\cancel{|\mathcal{Y}|}}{\cancel{|\mathcal{Y}|}} \mathbb{E}_{Y’ \sim q} \left[ \frac{\exp{(s(Y’))}}{q(Y’)} \right] \\
&= \mathbb{E}_{Y’ \sim q} \left[ \frac{\exp{(s(Y’))}}{q(Y’)} \right] \\
& \simeq \frac{1}{n} \sum_{i=1}^{n} \frac{\exp{(s(\tilde{y}_{i}))}}{q(\tilde{y}_{i})} \\
&= \hat{Z} \quad (2.8)
\end{align}
$$

勾配の式の導出

$(1.3)$式、$(1.5)$式、$(2.8)$式に基づいて下記が成立する。
$$
\large
\begin{align}
p(y) &= \frac{\exp{(f_{\boldsymbol{\theta}}(\mathbf{x},y))}}{\displaystyle \sum_{\tilde{y} \in \mathcal{Y}} \exp{(f_{\boldsymbol{\theta}}(\mathbf{x},\tilde{y}))}} \quad (1.3)’ \\
&= \frac{\exp{(s(y))}}{Z(\mathcal{Y})} \quad (1.5)’ \\
& \simeq \frac{\exp{(s(y))}}{\hat{Z}} \quad (2.9)
\end{align}
$$

$(2.9)$式を元に下記が成立する。
$$
\large
\begin{align}
s'(y) \frac{p(y)}{q(y)} & \simeq s'(y) \frac{\exp{(s(y))}/\hat{Z}}{q(y)} \\
&= s'(y) \frac{\exp{(s(y))}/q(y)}{\hat{Z}} \\
&= s'(y) \frac{\displaystyle \frac{\exp{(s(y))}}{q(y)}}{\displaystyle \frac{1}{n} \sum_{i=1}^{n} \frac{\exp{(s(\tilde{y}_{i}))}}{q(\tilde{y}_{i})}} \quad (2.10)
\end{align}
$$

$(2.3), \, (2.4)$式の重点サンプリングの式に$(2.10)$式を適用すると、サンプル$\tilde{q}_{1}, \cdots , \tilde{q}_{n} \sim q$を元に下記が得られる。
$$
\large
\begin{align}
\mathbb{E}_{Y \sim p}[s'(Y)] &= \mathbb{E}_{Y’ \sim q} \left[ s'(Y) \frac{p(Y’)}{q(Y’)} \right] \quad (2.3) \\
& \simeq \frac{1}{n} \sum_{i=1}^{n} s'(\tilde{y}_{i}) \frac{p(\tilde{y}_{i})}{q(\tilde{y}_{i})} \times \left( \frac{1}{n} \sum_{i=1}^{n} \frac{\exp{(s(\tilde{y}_{i}))}}{q(\tilde{y}_{i})} \right)^{-1} \\
&= \frac{\displaystyle \sum_{i=1}^{n} s'(\tilde{y}_{i}) \frac{p(\tilde{y}_{i})}{q(\tilde{y}_{i})}}{\displaystyle \sum_{i=1}^{n} \frac{\exp{(s(\tilde{y}_{i}))}}{q(\tilde{y}_{i})}} \quad (2.11)
\end{align}
$$

$(2.11)$式を$(1.8)$式に代入することで下記が得られる。
$$
\large
\begin{align}
\nabla l_{\boldsymbol{\theta}}^{\mathrm{softmax}}(\mathbf{x},y) &= – \nabla s(y) + \mathbb{E}_{Y \sim p}[s'(Y)] \quad (1.8) \\
& \simeq – \nabla s(y) + \frac{\displaystyle \sum_{i=1}^{n} s'(\tilde{y}_{i}) \frac{p(\tilde{y}_{i})}{q(\tilde{y}_{i})}}{\displaystyle \sum_{i=1}^{n} \frac{\exp{(s(\tilde{y}_{i}))}}{q(\tilde{y}_{i})}} \quad (2.12)
\end{align}
$$

$(2.12)$式を用いることで、語彙数$|\mathcal{Y}|$の大きさに関わらず勾配の近似値の計算を行うことができる。

式の解釈

当記事で確認を行った導出は複雑かつ難解であるので、「語彙数$|\mathcal{Y}|$が大きくなる際の勾配計算の高速化」が主目的であることは常に念頭に置く必要がある。

語彙数$|\mathcal{Y}|$が大きくなると分配関数$Z(\mathcal{Y})$の計算量が増加するが、分配関数$Z(\mathcal{Y})$の計算なしでは$(2.1), \, (2.2)$式に基づいてモンテカルロ法をそのまま適用することができない。

上記に対し、「重点サンプリング」と「分配関数の近似」を用いて勾配の近似を行うというのが当節における導出の流れである。特に分配関数の近似にあたっては、ニューラルネットワークの出力層に対応する$s(\tilde{y}_{i})$を提案分布$q$からサンプリングされた$\tilde{y}_{i}$を元にいくつか計算することで、分配関数の大体の大きさを推測することができると解釈しておくとよい。ソフトマックス関数における分配関数$Z(\mathcal{Y})$の役割は値の正規化であり、$(2.8)$式のような近似で大まかな値を得ることができる。

また、提案分布$q$に$u$と同じく一様分布を用いる場合は$(2.8)$が下記のように表される。
$$
\large
\begin{align}
\hat{Z} \simeq \frac{1}{n} \sum_{i=1}^{n} |\mathcal{Y}| \exp{(s(\tilde{y}_{i}))} \quad (2.8)’
\end{align}
$$

上記を$1$つのサンプルを語彙数倍しサンプル数で割ったと解釈すると、サンプリング結果に基づく分配関数の近似式であることが理解しやすい。

基本行列(elementary matrix)の判定と基本行列による行基本操作の確認

行基本変形は基本行列(elementary matrix)の積による操作によって表すことができるなど、基本行列はよく出てくるので抑えておくと良いです。当記事では基本行列の定義や基本行列かどうかの判定、基本行列と行基本変形の対応について取り扱いました。
作成にあたっては「チャート式シリーズ 大学教養 線形代数」の第$3$節「行列の構造」を主に参考にしました。

・数学まとめ
https://www.hello-statisticians.com/math_basic

基本行列の概要

基本行列の定義

基本行列を下記の$[1]$〜$[3]$で定義する。

・$[1]$
基本行列$P_{ij}, \, i \neq j$を下記のように定義する。
$$
\large
\begin{align}
P_{ij} &= \left(\begin{array}{ccccccccccc} 1 & & & & & & & & & & \\ & \ddots & & & & & & & & & \\ & & 1 & & & & & & & & \\ & & & 0 & \cdots & \cdots & \cdots & p_{ij} & & & \\ & & & \vdots & 1 & & & \vdots & & & \\ & & & \vdots & & \ddots & & \vdots & & & \\ & & & \vdots & & & 1 & \vdots & & & \\ & & & p_{ji} & \cdots & \cdots & \cdots & 0 & & & \\ & & & & & & & & 1 & & \\ & & & & & & & & & \ddots & \\ & & & & & & & & & & 1 \end{array} \right) \quad (1) \\
p_{ij} &= p_{ji} = 1
\end{align}
$$

$(1)$式で$1$や$p_{ij}, p_{ji}$で表さなかった成分は全て$0$である。

・$[2]$
基本行列$P_i(c), \, c \neq 0$を下記のように定義する。
$$
\large
\begin{align}
P_i(c) &= \left(\begin{array}{ccccccc} 1 & & & & & & \\ & \ddots & & & & & \\ & & 1 & & & & \\ & & & p_{ii} & & & \\ & & & & 1 & & \\ & & & & & \ddots & \\ & & & & & & 1 \end{array} \right) \quad (2) \\
p_{ii} &= c
\end{align}
$$

$(2)$式で$1$や$p_{ii}$で表さなかった成分は全て$0$である。

・$[3]$
基本行列$P_{ij}(a), \, i \neq j, \, a \neq 0$を下記のように定義する。
$$
\large
\begin{align}
P_{ij}(a) &= \left(\begin{array}{ccccccc} 1 & & & & & & \\ & \ddots & & & & & \\ & & 1 & \cdots & p_{ij} & & \\ & & & \ddots & \vdots & & \\ & & & & 1 & & \\ & & & & & \ddots & \\ & & & & & & 1 \end{array} \right) \quad (3) \\
p_{ij} &= a
\end{align}
$$

$(2)$式で$1$や$p_{ij}$で表さなかった成分は全て$0$である。

基本行列であるかの判定

前項の「基本行列の定義」に合致するかで判定を行えば良い。

基本行列と行基本変形の対応

$[1] \,$ $m \times n$行列$A$の$i$行と$j$列を入れ替える操作は$m$次の基本行列$P_{ij}$を用いて$P_{ij}A$を計算することに一致する。
$[2] \,$ $m \times n$行列$A$の$i$行を$c$倍する操作は$m$次の基本行列$P_{ii}(c)$を用いて$P_{ii}(c)A$を計算することに一致する。
$[3] \,$ $m \times n$行列$A$の$i$行に$j$行の$a$倍を加える操作は$m$次の基本行列$P_{ij}(a)$を用いて$P_{ij}(a)A$を計算することに一致する。

基本行列の具体例の確認

以下、「チャート式シリーズ 大学教養 線形代数」の例題の確認を行う。

基本例題$038$

・$[1]$
$$
\large
\begin{align}
\left(\begin{array}{cc} 0 & 1 \\ 1 & 0 \end{array} \right)
\end{align}
$$

上記は基本行列$P_{12}$に対応する。

・$[2]$
$$
\large
\begin{align}
\left(\begin{array}{ccc} 1 & 0 & 0 \\ 1 & 1 & 0 \\ 0 & 0 & 1 \end{array} \right)
\end{align}
$$

上記は基本行列$P_{21}(1)$に対応する。

・$[3]$
$$
\large
\begin{align}
\left(\begin{array}{cccc} 2 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{array} \right)
\end{align}
$$

上記は基本行列$P_{11}(2)$に対応する。

・$[4]$
$$
\large
\begin{align}
\left(\begin{array}{cccc} 0 & 0 & 0 & 0 \\ 0 & 1 & 0 & 2 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{array} \right)
\end{align}
$$

上記は基本行列ではない。

基本例題$039$

$[1]$
$$
\large
\begin{align}
X &= \left(\begin{array}{cccc} 4 & -1 & 3 & 0 \\ 1 & 2 & -4 & 2 \end{array} \right) \\
P_{12} &= \left(\begin{array}{cc} 0 & 1 \\ 1 & 0 \end{array} \right)
\end{align}
$$

上記より$P_{12} X$は下記のように計算できる。
$$
\large
\begin{align}
P_{12} X &= \left(\begin{array}{cc} 0 & 1 \\ 1 & 0 \end{array} \right) \left(\begin{array}{cccc} 4 & -1 & 3 & 0 \\ 1 & 2 & -4 & 2 \end{array} \right) \\
&= \left(\begin{array}{cccc} 1 & 2 & -4 & 2 \\ 4 & -1 & 3 & 0 \end{array} \right)
\end{align}
$$

「行列の$1$行目と$2$行目を入れ替えることが、行列に基本行列$P_{12}$を左からかけることに対応する」ことが上記の例では確認できる。

列基本変形を用いた行列の簡約階段形(reduced echelon form)から標準形への変換

行列の標準形は階段形から行基本変形を行なって導出した簡約階段形(reduced echelon form)に列基本変形を行うことで得ることができます。当記事では列基本変形を用いた簡約階段形から標準形への変換などについて、概要と具体例を取り扱いました。
作成にあたっては「チャート式シリーズ 大学教養 線形代数」の第$3$節「行列の構造」を主に参考にしました。

・数学まとめ
https://www.hello-statisticians.com/math_basic

簡約階段形の概要

標準形の定義

$m \times n$行列$A$について$r=\mathrm{rank}A$であるとき、行列$A$に行基本変形と列基本変形を行うことで下記の行列$X$に変形することができる。
$$
\large
\begin{align}
X &= \left(\begin{array}{ccccccc} x_{11} & 0 & \cdots & 0 & 0 & \cdots & 0 \\ 0 & x_{22} & \cdots & 0 & 0 & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots & \vdots & \vdots & \vdots \\ 0 & 0 & \cdots & x_{rr} & 0 & \cdots & 0 \\ 0 & 0 & \cdots & 0 & 0 & \cdots & 0 \\ 0 & 0 & \cdots & 0 & 0 & \ddots & 0 \\ 0 & 0 & \cdots & 0 & 0 & \cdots & 0 \end{array} \right) \\
x_{ii} &= 1, \, i \leq r
\end{align}
$$

$A$に行基本変形と列基本変形を行うことで得られる上記の$X$の形式の行列を行列$A$の標準形という。

行列の標準形への変形

標準形の取得にあたっては行基本変形によって簡約階段形に変形し、簡約階段形に列基本変形を行えばよい。簡約階段形については下記で詳しく取り扱った。

簡約階段形から標準形を得るにあたっては列の入れ替えによって、対角成分に$r=\mathrm{rank}A$個の$1$を並べ、それ以外の列は掃き出し法の要領で全ての要素が$0$になるように変形すればよい。

簡約階段形の判定法と簡約階段化の手順の具体例の確認

以下、「チャート式シリーズ 大学教養 線形代数」の例題の確認を行う。

基本例題$044$

$(1)$
$$
\large
\begin{align}
\left(\begin{array}{cccc} 4 & -1 & 3 & 0 \\ 1 & 2 & -4 & 2 \end{array} \right)
\end{align}
$$

上記の行列は下記のように行基本変形を元に簡約階段化できる。
$$
\large
\begin{align}
\left(\begin{array}{cccc} 4 & -1 & 3 & 0 \\ 1 & 2 & -4 & 2 \end{array} \right) & \rightarrow \left(\begin{array}{cccc} 1 & 2 & -4 & 2 \\ 4 & -1 & 3 & 0 \end{array} \right) \rightarrow \left(\begin{array}{cccc} 1 & 2 & -4 & 2 \\ 0 & -9 & 19 & -8 \end{array} \right) \\
& \rightarrow \left(\begin{array}{cccc} 1 & 2 & -4 & 2 \\ 0 & 1 & \displaystyle -\frac{19}{9} & \displaystyle \frac{8}{9} \end{array} \right) \rightarrow \left(\begin{array}{cccc} 1 & 0 & \displaystyle \frac{2}{9} & \displaystyle \frac{2}{9} \\ 0 & 1 & \displaystyle -\frac{19}{9} & \displaystyle \frac{8}{9} \end{array} \right)
\end{align}
$$

上記について列基本変形を行うことで下記のような標準形が得られる。
$$
\large
\begin{align}
\left(\begin{array}{cccc} 1 & 0 & \displaystyle \frac{2}{9} & \displaystyle \frac{2}{9} \\ 0 & 1 & \displaystyle -\frac{19}{9} & \displaystyle \frac{8}{9} \end{array} \right) \rightarrow \left(\begin{array}{cccc} 1 & 0 & 0 & 0 \\ 0 & 1 & \displaystyle -\frac{19}{9} & \displaystyle \frac{8}{9} \end{array} \right) \rightarrow \left(\begin{array}{cccc} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \end{array} \right)
\end{align}
$$

重要例題$017$

InstructGPTの概要まとめ 〜GPT3、RLHF、RewardModel〜

近年大きな注目を集めるChatGPTの学習にあたっては、強化学習に基づくRLHF(Reinforcement Learning from Human Feedback)がfinetuningに用いられます。当記事では同様の枠組みを取り扱ったInstructGPTの概要をまとめました。
作成にあたってはInstructGPTの論文である「Training language models to follow instructions with human feedback」を主に参考にしました。

・用語/公式解説
https://www.hello-statisticians.com/explain-terms

・InstructGPT論文
・仕組みから理解するChatGPT(筆者作成)

前提の確認

Transformer

下記で詳しく取り扱った。
・直感的に理解するTransformer

GPT-3

下記で詳しく取り扱った。

PPOを用いた強化学習

PPO(Proximal Policy Optimization)は方策勾配法(Policy Gradient)の学習の安定化にあたって、繰り返し演算におけるパラメータの修正幅を制限する手法である。詳しくは下記で取り扱った。

InstructGPT

大まかな流れ

大まかな流れは下記のInstructGPT論文Figure$2$を元に理解すると良い。

InstructGPT論文 Figure$2$

上図より、InstructGPTの大まかな流れは下記の$3$つのステップで表される。

$1. \,$ プロンプトの入力例に対し人間が正解例を作成し、教師あり学習の形式でGPT-$3$のfinetuningを行う。
$2. \,$ 複数のプロンプトの出力結果に対し、人間がランク付けを行い、RewardModelを学習させる。
$3. \,$ 学習させたRewardModelを元にプロンプトの出力結果に対しRewardを出力し、この値に応じて文の生成における方策をPPOを用いて強化学習させる。

上記の『プロンプト』はGPT-$3$に対しfinetuningと方策の最適化を行なったInstructGPTの入出力に対応することに注意が必要である。以下では$1.$〜$3.$についてそれぞれ詳しく確認を行う。

$1.$ Supervised Fine-Tuning

InstructGPTでは学習済みのGPT-$3$に対し、教師ありFine-Tuning(SFT; Supervised Fine-Tuning)を行う。具体的には人間(labeler)がプロンプトの入力例に対し回答を作成し、その内容に基づいてFine-Tuningを行う。

SFTでは基本的に教師あり学習と同様の手順で学習を行うが、学習済みのGPT-$3$を用いることから教師なし学習を十分に行ったのちの処理であることは注意して抑えておくと良い。

$2.$ RewardModel

RewardModel論文

InstructGPTのRewardModelには「Learning to summarize from human feedback」のRewardModelと同様なものが用いられる。よって以下ではこのRewardModel論文を元に取りまとめを行う。

RewardModel論文 Figure$2$

上記はRewardModel論文のFigure$2$であるが、$2.$と$3.$はInstructGPT論文の図と概ね同様であることが確認できる。一方で、RewardModel論文の$2.$には下記の数式でRewardModelのlossの記載があることにも注意しておくと良い。
$$
\large
\begin{align}
\mathrm{loss} = \log{[\sigma(r_j-r_k)]} \quad (1)
\end{align}
$$

$(1)$式における$r_j$は人間が選んだもの、$r_k$はそうでないものがそれぞれ対応する。論文の本文では$(1)$式と同じlossが下記のように表される。
$$
\large
\begin{align}
\mathrm{loss}(r_{\theta}) = -\mathbb{E}_{(x,y_0,y_1,i) \sim D} \left[ \log{(\sigma[r_{\theta}(x,y_i)-r_{\theta}(x,y_{1-i})])} \right] \quad (1)’
\end{align}
$$

RewardModelのlossの解釈

当項では以下、前項の「RewardModel」のlossである$(1)$式がクロスエントロピーに対応することに関して確認を行う。二値分類におけるクロスエントロピー誤差関数は下記で表すベルヌーイ分布$\mathrm{Bern}(p)$の確率関数$f(x)$から導出できる。
$$
\large
\begin{align}
f(x) = p^{x} (1-p)^{1-x}
\end{align}
$$

上記をパラメータ$p$に関する尤度$L(p)$と見なすと、$-\log{L(p)}$は下記のように表せる。
$$
\large
\begin{align}
-\log{L(p)} &= -\log{(p^{x} (1-p)^{1-x})} \\
&= – x \log{p} \, – \, (1-x) \log{(1-p)} \quad (2)
\end{align}
$$

$(2)$式は二値分類におけるクロスエントロピー誤差関数に一致する。ここで$x=1$が観測されたと仮定すると$1-x=0$であるので、$(2)$式は下記のように表すことができる。
$$
\large
\begin{align}
-\log{L(p)} &= – 1 \cdot \log{p} \, – \, (1-1) \log{(1-p)} \quad (2)’ \\
&= -\log{p} \quad (3)
\end{align}
$$

ここで一般化線形モデル(GLM; Generalized Linear Model)と同様の要領で、$p$をニューラルネットワークの出力と対応させることを考える。RewardModel論文では下記のような式に基づいて確率パラメータ$p$の予測を行う。
$$
\large
\begin{align}
p &= \sigma(r_j-r_k) \quad (4) \\
\sigma(x) &= \frac{1}{1+\exp(-x)}
\end{align}
$$

$\sigma(x)$はシグモイド関数に対応する。$(4)$式の解釈にあたって、シグモイド関数の定義に基づいて下記のような変換を行う。
$$
\large
\begin{align}
p &= \sigma(r_j-r_k) \quad (4) \\
&= \frac{1}{1+\exp{[-(r_j-r_k)]}} \\
&= \frac{1}{1+\exp{(-r_j+r_k)}} \\
&= \frac{\exp{(r_j)}}{\exp{(r_j)}+\exp{(r_j-r_j+r_k)}} \\
&= \frac{\exp{(r_j)}}{\exp{(r_j)}+\exp{(r_k)}} \quad (5)
\end{align}
$$

$(5)$式は出力層で$r_j, r_k$が得られた際にソフトマックス関数を計算することに対応する。$(3),(5)$式より、$(1)$式がクロスエントロピー誤差関数であり、かつ報酬を出力するネットワークをソフトマックス関数と同様の式に基づいて学習させると解釈できる。

$3.$ Reinforcement learning

目的関数

InstructGPTにおける強化学習では強化学習によって得られる方策の$\pi_{\phi}^{\mathrm{RL}}$とSupervised Fine-Tuningによって得られた$\pi_{\phi}^{\mathrm{SFT}}$を元に、下記のような目的関数を用いて学習を行う。
$$
\large
\begin{align}
\mathrm{Objective}(\phi) = E_{(x,y) \sim D’} \left[ r_{\theta}(x,y) – \beta \log{\frac{\pi_{\phi}^{\mathrm{RL}}(y|x)}{\pi_{\phi}^{\mathrm{SFT}}(y|x)}} \right] + \gamma E_{x \sim D} \left[ \log{(\pi_{\phi}^{\mathrm{RL}}(x))} \right] \quad (6)
\end{align}
$$

上記の$D’$は新たなプロンプトの入力である$x$と強化学習の結果生成される$y$に対応し、$r_{\theta}(x,y)$はRewardModelの出力、$\displaystyle \beta \log{ \frac{\pi_{\phi}^{\mathrm{RL}}(y|x)}{\pi_{\phi}^{\mathrm{SFT}}(y|x)} }$はPPO論文などのKL penaltyにそれぞれ対応する。また、$D$はpre-trainingの際に用いたコーパスであり、$\displaystyle E_{x \sim D} \left[ \log{(\pi_{\phi}^{\mathrm{RL}}(x))} \right]$は元々のpre-trainの結果から大きく変わった結果が得られないように設定される。

ここで$\gamma$は事前学習+SFTの結果との一貫性に対応する係数であり、InstructGPT論文では$\gamma=0$のときを”PPO”、$\gamma \neq 0$のときを”PPO-ptx”と表す。また、InstructGPT論文ではInstructGPTが”PPO-ptx”に対応するとされる。

a per-token KL penalty

$$
\large
\begin{align}
\log{ \frac{\pi_{\phi}^{\mathrm{RL}}(y|x)}{\pi_{\phi}^{\mathrm{SFT}}(y|x)} } \quad (7)
\end{align}
$$

上記の式はKL penaltyの期待値の内部に対応するが、$y$が系列であるので以下、per-tokenの形式への変形を行う。式変形にあたって、$y=(y_1, \cdots , y_N)$のように表す。このとき、$y_i$より前の系列を$\mathbf{y}_{:i}$とおくと、$(7)$式は下記のように変形できる。
$$
\large
\begin{align}
\log{ \frac{\pi_{\phi}^{\mathrm{RL}}(y|x)}{\pi_{\phi}^{\mathrm{SFT}}(y|x)} } &= \log{ \frac{\displaystyle \prod_{i=1}^{N} \pi_{\phi}^{\mathrm{RL}}(y_{i}|x,\mathbf{y}_{:i})}{\displaystyle \prod_{i=1}^{N} \pi_{\phi}^{\mathrm{SFT}}(y_i|x,\mathbf{y}_{:i})} } \\
&= \sum_{i=1}^{N} \log{ \frac{\displaystyle \pi_{\phi}^{\mathrm{RL}}(y_{i}|x,\mathbf{y}_{:i})}{\displaystyle \pi_{\phi}^{\mathrm{SFT}}(y_i|x,\mathbf{y}_{:i})} } \quad (8)
\end{align}
$$

ここで$(8)$式の期待値を取ることでa per-token KL penaltyを表すことができる。また、上記では$i=1$のとき$\mathbf{y}_{:i}$は存在せず、$i=2$のとき$\mathbf{y}_{:i}=(y_1)$、$i \geq 3$のとき$\mathbf{y}_{:i}=(y_1, \cdots , y_{i-1})$が対応することに注意が必要である。

目的関数の勾配

以下、$(6)$式の勾配の計算について取り扱う。
$$
\large
\begin{align}
\mathrm{Objective}(\phi) = E_{(x,y) \sim D’} \left[ r_{\theta}(x,y) – \beta \log{\frac{\pi_{\phi}^{\mathrm{RL}}(y|x)}{\pi_{\phi}^{\mathrm{SFT}}(y|x)}} \right] + \gamma E_{x \sim D} \left[ \log{(\pi_{\phi}^{\mathrm{RL}}(x))} \right] \quad (6)
\end{align}
$$

まず、$\displaystyle E_{(x,y) \sim D’} \left[ r_{\theta}(x,y) \right]$の$\phi$に関する勾配の計算は$r_{\theta}(x,y)$が定数であることに基づいて、下記のように得られる。
$$
\large
\begin{align}
\nabla_{\phi} E_{(x,y) \sim D’} \left[ r_{\theta}(x,y) \right] = E_{(x,y) \sim D’} \left[ \sum_{i=1}^{N} r_{\theta}(x,y) \nabla_{\phi} \log{\pi_{\phi}^{\mathrm{RL}}(y_{i}|x,\mathbf{y}_{:i})} \right]
\end{align}
$$

上記は方策勾配法の基本的な勾配の計算と同様である。式の理解にあたっては収益$r_{\theta}(x,y)$の大きさに応じてパラメータ$\phi$の修正量を調整すると解釈すればよい。詳しい導出の流れや式の解釈は下記で取り扱った。

次にa per-token KL penaltyの勾配の計算を行う。式の簡略化にあたって、下記のように表した$(6), (8)$式に基づく$1$トークン分のKL penaltyの勾配を計算する。
$$
\large
\begin{align}
E_{(x,y) \sim D’} \left[ \log{ \frac{\displaystyle \pi_{\phi}^{\mathrm{RL}}(y_{i}|x,\mathbf{y}_{:i})}{\displaystyle \pi_{\phi}^{\mathrm{SFT}}(y_i|x,\mathbf{y}_{:i})} } \right] = \sum_{y_i} \pi_{\phi}^{\mathrm{RL}}(y_{i}|x,\mathbf{y}_{:i}) \log{ \frac{\displaystyle \pi_{\phi}^{\mathrm{RL}}(y_{i}|x,\mathbf{y}_{:i})}{\displaystyle \pi_{\phi}^{\mathrm{SFT}}(y_i|x,\mathbf{y}_{:i})} } \quad (9)
\end{align}
$$

$(9)$式の$\displaystyle \sum_{y_i}$の中の項に関して$\nabla_{\phi}$を用いて勾配は下記のように計算できる。
$$
\large
\begin{align}
& \nabla_{\phi} \left[ \pi_{\phi}^{\mathrm{RL}}(y_{i}|x,\mathbf{y}_{:i}) \log{ \frac{\displaystyle \pi_{\phi}^{\mathrm{RL}}(y_{i}|x,\mathbf{y}_{:i})}{\displaystyle \pi_{\phi}^{\mathrm{SFT}}(y_i|x,\mathbf{y}_{:i})} } \right] \\
&= \nabla_{\phi} \pi_{\phi}^{\mathrm{RL}}(y_{i}|x,\mathbf{y}_{:i}) \log{ \frac{\displaystyle \pi_{\phi}^{\mathrm{RL}}(y_{i}|x,\mathbf{y}_{:i})}{\displaystyle \pi_{\phi}^{\mathrm{SFT}}(y_i|x,\mathbf{y}_{:i})} } + \cancel{\pi_{\phi}^{\mathrm{RL}}(y_{i}|x,\mathbf{y}_{:i})} \cdot \left( \frac{\displaystyle \cancel{\pi_{\phi}^{\mathrm{RL}}(y_{i}|x,\mathbf{y}_{:i})}}{\displaystyle \cancel{\pi_{\phi}^{\mathrm{SFT}}(y_i|x,\mathbf{y}_{:i})}} \right)^{-1} \cdot \frac{\displaystyle \nabla_{\phi} \pi_{\phi}^{\mathrm{RL}}(y_{i}|x,\mathbf{y}_{:i})}{\displaystyle \cancel{\pi_{\phi}^{\mathrm{SFT}}(y_i|x,\mathbf{y}_{:i})}} \\
&= \nabla_{\phi} \pi_{\phi}^{\mathrm{RL}}(y_{i}|x,\mathbf{y}_{:i}) \left[ 1 + \log{ \frac{\displaystyle \pi_{\phi}^{\mathrm{RL}}(y_{i}|x,\mathbf{y}_{:i})}{\displaystyle \pi_{\phi}^{\mathrm{SFT}}(y_i|x,\mathbf{y}_{:i})} } \right] \quad (10)
\end{align}
$$

計算にあたってはSFTのパラメータ$\phi$が固定であることから定数であるとみなした。$(8)$式と$(10)$式を元に$(6)$式を見ると、$(10)$式の勾配の逆向きにパラメータ$\phi$をUpdateすることが確認できる。ここで$\displaystyle \frac{\displaystyle \pi_{\phi}^{\mathrm{RL}}(y_{i}|x,\mathbf{y}_{:i})}{\displaystyle \pi_{\phi}^{\mathrm{SFT}}(y_i|x,\mathbf{y}_{:i})}$の大きさに応じて勾配に基づく修正量を調整することが確認できるので、RLとSFTの確率が同様な場合は修正量が小さくなりペナルティが小さいと解釈できる。

InstructGPTまとめ

InstructGPTは①SFT、②RewardModel、③ReinforcementLearning(PPO, KL penalty)に基づいて学習済みのGPT-$3$に対し追加の学習を行う手法である。

【上級】データサイエンス 数学ストラテジスト 公式問題集 解答例まとめ Q.11〜20

「データサイエンス 数学ストラテジスト 上級」はデータサイエンスの基盤である、確率・統計、線形代数、微積分、機械学習、プログラミングなどを取り扱う資格試験です。当記事では「日本数学検定協会」作成の「公式問題集」の演習問題$11$〜$20$の解答例を取り扱いました。

・数学検定まとめ
https://www.hello-statisticians.com/math_certificate

演習問題

Q.11

$\overrightarrow{AB}$と$\overrightarrow{OH}$はそれぞれ下記のように表すことができる。
$$
\large
\begin{align}
\overrightarrow{AB} &= \overrightarrow{OB} – \overrightarrow{OA} \\
\overrightarrow{OH} &= t \overrightarrow{OA} + (1-t) \overrightarrow{OB}
\end{align}
$$

ここで$\overrightarrow{AB} \perp \overrightarrow{OH}$であるので、$\overrightarrow{AB} \cdot \overrightarrow{OH} = 0$が成立するが、下記のように変形できる。
$$
\large
\begin{align}
\overrightarrow{AB} \cdot \overrightarrow{OH} &= 0 \\
(\overrightarrow{OB} – \overrightarrow{OA}) \cdot (t \overrightarrow{OA} + (1-t) \overrightarrow{OB}) &= 0 \\
t &= \frac{70}{127}
\end{align}
$$

よって、$\overrightarrow{OH}$は下記のように表すことができる。
$$
\large
\begin{align}
\overrightarrow{OH} = \frac{70}{127} \vec{a} + \frac{57}{127} \vec{b}
\end{align}
$$

上記より$(4)$が正しい。

Q.12

下記のように式変形を行える。
$$
\large
\begin{align}
\lim_{n \to \infty} \left[ \log_{10}{(n+100)} – \log_{10}{(1000n+1)} \right] &= \lim_{n \to \infty} \log_{10}{\frac{n+100}{1000n+1}} \\
&= \lim_{n \to \infty} \log_{10}{\frac{1+100/n}{1000+1/n}} \\
&= \log_{10}{\frac{1}{1000}} \\
&= \log_{10}{10^{-3}} \\
&= -3
\end{align}
$$

上記より$(5)$が正しい。

Q.13

$$
\large
\begin{align}
y = \frac{6}{(e^{x}+1)(e^{x}+3)}
\end{align}
$$

$e^{x}>0$より、$0 \leq x \leq 1$で$y>0$である。よって、図形の面積を$S$とおくと、$S$は下記のように立式できる。
$$
\large
\begin{align}
S = \int_{0}^{1} \frac{6}{(e^{x}+1)(e^{x}+3)} dx \quad [1]
\end{align}
$$

上記に対し、$t=e^{x}$のような変数変換を行う。このとき$\displaystyle \frac{dt}{dx}=e^{x}$より、$\displaystyle \frac{dt}{t}=dx$が成立する。また、$x$と$t$の区間は下記のように対応する。

$x$ $0 \longrightarrow 1$
$t$ $1 \longrightarrow e$

よって$[1]$式は下記のように値を得ることができる。
$$
\large
\begin{align}
S &= \int_{0}^{1} \frac{6}{(e^{x}+1)(e^{x}+3)} dx \quad [1] \\
&= \int_{1}^{e} \frac{6}{t(t+1)(t+3)} dt \\
&= \int_{1}^{e} \left[ \frac{2}{t} – \frac{3}{t+1} + \frac{1}{t+3} \right] dt \\
&= \left[ 2\log{|t|} – 3\log{|t+1|} + \log{|t+3|} \right]_{1}^{e} \\
&= \left( 2\log{e} – 3\log{(e+1)} + \log{(e+3)} \right) – \left( 2\log{1} – 3\log{(1+1)} + \log{(1+3)} \right) \\
&= 2 – 3\log{(e+1)} + \log{(e+3)} + \log{2}
\end{align}
$$

上記より$(3)$が正しい。

・解説
途中計算では下記のような部分分数分解を行いました。
$$
\large
\begin{align}
\frac{6}{t(t+1)(t+3)} = \frac{2}{t} – \frac{3}{t+1} + \frac{1}{t+3}
\end{align}
$$

上記の分解を発見するにあたっては、$\displaystyle \frac{6}{t(t+1)(t+3)} = \frac{a}{t} + \frac{b}{t+1} + \frac{c}{t+3}$とおき、両辺が一致するように$a, b, c$の値を得れば良いです。
$$
\large
\begin{align}
\frac{a}{t} + \frac{b}{t+1} + \frac{c}{t+3} &= \frac{a(t+1)(t+2) + bt(t+3) + ct(t+1)}{t(t+1)(t+3)} \\
&= \frac{(a+b+c)t^{2} + (4a+3b+c)t + 3a}{t(t+1)(t+3)}
\end{align}
$$

上記より$a+b+c=0, 4a+3b+c=0, 3a=6$が成立するので、$a=2, b=-3, c=1$を得ることができます。

・解説
部分分数分解は下記で詳しく取り扱いました。

Q.14

$$
\large
\begin{align}
f(x) = \int_{0}^{x} f(t) \sin{(x-t)} dt + ax + b \quad [1]
\end{align}
$$

$\sin{(x-t)} = \sin{x}\cos{t} – \cos{x}\sin{t}$より、$[1]$式は下記のように変形できる。
$$
\large
\begin{align}
f(x) &= \int_{0}^{x} f(t) \sin{(x-t)} dt + ax + b \quad [1] \\
&= \int_{0}^{x} f(t) (\sin{x}\cos{t} – \cos{x}\sin{t}) dt + ax + b \\
&= \sin{x} \int_{0}^{x} f(t) \cos{t} dt – \cos{x} \int_{0}^{x} f(t) \sin{t} dt + ax + b \quad [2]
\end{align}
$$

$[2]$式の両辺を$x$で微分すると下記が得られる。
$$
\large
\begin{align}
f'(x) &= \left[ \sin{x} \int_{0}^{x} f(t) \cos{t} dt – \cos{x} \int_{0}^{x} f(t) \sin{t} dt + ax + b \right] \quad [2]’ \\
&= \cos{x} \int_{0}^{x} f(t) \cos{t} dt + \cancel{f(x)\sin{x}\cos{x}} + \sin{x} \int_{0}^{x} f(t) \sin{t} dt – \cancel{f(x)\sin{x}\cos{x}} + a \\
&= \cos{x} \int_{0}^{x} f(t) \cos{t} dt + \sin{x} \int_{0}^{x} f(t) \sin{t} dt + a
\end{align}
$$

上記の両辺を$x$で微分すると下記が得られる。
$$
\large
\begin{align}
f^{”}(x) &= -\sin{x} \int_{0}^{x} f(t) \cos{t} dt + f(x) \cos^{2}{x} + \cos{x} \int_{0}^{x} f(t) \sin{t} dt + f(x) \sin^{2}{x} \\
&= – \left[ \sin{x} \int_{0}^{x} f(t) \cos{t} dt – \cos{x} \int_{0}^{x} f(t) \sin{t} dt \right] + (\cos^{2}{x} + \sin^{2}{x})f(x) \\
&= -(f(x) – ax – b) + f(x) = ax + b
\end{align}
$$

$f^{”}(x) = ax+b$の両辺を$x$で積分すると下記が得られる。
$$
\large
\begin{align}
f'(x) = \frac{a}{2}x^{2} + bx + C_1
\end{align}
$$

ここで$f'(0)=a$より、$C_1=a$が得られるので、$f'(x)$は下記のように表せる。
$$
\large
\begin{align}
f'(x) = \frac{a}{2}x^{2} + bx + a
\end{align}
$$

$f'(x) = \frac{a}{2}x^{2}+bx+a$の両辺を$x$で積分すると下記が得られる。
$$
\large
\begin{align}
f(x) = \frac{a}{6}x^{3} + \frac{b}{2}x^{2} + ax + C_2
\end{align}
$$

ここで$f(0)=b$なので$C_2=b$が得られる。よって、$f(x)$は下記のように表せる。
$$
\large
\begin{align}
f(x) = \frac{a}{6}x^{3} + \frac{b}{2}x^{2} + ax + b
\end{align}
$$

上記より、$(3)$が正しい。

Q.15

$$
\large
\begin{align}
A+B &= \left(\begin{array}{cc} 2 & 2 \\ -3 & 3 \end{array} \right) \quad [1] \\
A-B &= \left(\begin{array}{cc} 4 & 2 \\ 1 & -3 \end{array} \right) \quad [2]
\end{align}
$$

$[1]+[2]$より下記が得られる。
$$
\large
\begin{align}
(A+B) + (A-B) &= \left(\begin{array}{cc} 2 & 2 \\ -3 & 3 \end{array} \right) + \left(\begin{array}{cc} 4 & 2 \\ 1 & -3 \end{array} \right) \\
2A &= \left(\begin{array}{cc} 6 & 4 \\ -2 & 0 \end{array} \right) \\
A &= \left(\begin{array}{cc} 3 & 2 \\ -1 & 0 \end{array} \right)
\end{align}
$$

同様に$[1]-[2]$より下記が得られる。
$$
\large
\begin{align}
(A+B) – (A-B) &= \left(\begin{array}{cc} 2 & 2 \\ -3 & 3 \end{array} \right) – \left(\begin{array}{cc} 4 & 2 \\ 1 & -3 \end{array} \right) \\
2B &= \left(\begin{array}{cc} -2 & 0 \\ -4 & 6 \end{array} \right) \\
B &= \left(\begin{array}{cc} -1 & 0 \\ -2 & 3 \end{array} \right)
\end{align}
$$

よって行列の積$AB$は下記のように得られる。
$$
\large
\begin{align}
AB &= \left(\begin{array}{cc} 3 & 2 \\ -1 & 0 \end{array} \right) \left(\begin{array}{cc} -1 & 0 \\ -2 & 3 \end{array} \right) \\
&= \left(\begin{array}{cc} -7 & 6 \\ 1 & 0 \end{array} \right)
\end{align}
$$

上記より$(2)$が正しい。

Q.16

$$
\large
\begin{align}
A = \left(\begin{array}{ccc} 0 & 1-i & 1 \\ 1+i & 0 & 1-i \\ 1 & 1+i & 0 \end{array} \right)
\end{align}
$$

上記に対し、固有多項式$F_{A}(\lambda)=\det{(\lambda I_{3}-A)}$は下記のように計算できる。
$$
\large
\begin{align}
F_{A}(\lambda) &= \det{(\lambda I_{3}-A)} = \left| \begin{array}{ccc} -\lambda & 1-i & 1 \\ 1+i & -\lambda & 1-i \\ 1 & 1+i & -\lambda \end{array} \right| \\
&= -\lambda^{3} + (1+i)^{2} + (1-i)^{2} – \left[ -\lambda – 2 \lambda(1+i)(1-i) \right] \\
&= -\lambda^{3} + 1+i^2+\cancel{2i} + 1+i^2-\cancel{2i} + \lambda + 2 \lambda(1-i^2) \\
&= -\lambda^{3} + \cancel{1}-\cancel{1}+ + \cancel{1}-\cancel{1} + \lambda + 2 \lambda \cdot (1+1) \\
&= -\lambda^{3} + 5 \lambda
\end{align}
$$

よって、固有方程式$F_{A}(\lambda)=\det{(\lambda I_{3}-A)}=0$は下記のように解ける。
$$
\large
\begin{align}
F_{A}(\lambda) = -\lambda^{3} + 5 \lambda &= 0 \\
\lambda(\lambda^2-5) &= 0 \\
\lambda &= 0, \, \pm \sqrt{5}
\end{align}
$$

ここで$\lambda_{1}<\lambda_{2}<\lambda_{3}$であるので、$\lambda_{1}=-\sqrt{5}, \, \lambda_{2}=0, \, \lambda_{3}=\sqrt{5}$である。よって$\displaystyle \frac{\lambda_{1}}{2} + \frac{\lambda_{2}}{3} + \frac{\lambda_{3}}{4}$は下記のように計算することができる。
$$
\large
\begin{align}
\frac{\lambda_{1}}{2} + \frac{\lambda_{2}}{3} + \frac{\lambda_{3}}{4} &= -\frac{\sqrt{5}}{2} + \frac{\sqrt{5}}{4} \\
&= -\frac{\sqrt{5}}{4}
\end{align}
$$

したがって$(5)$が正しい。

・解説
$3$次以上の正方行列の行列式の計算にあたっては余因子展開を用いることが多い一方で、この問題では余因子展開を用いると$i$の取り扱いにあたって式が複雑になります。一般に$n$次の正方行列の行列式の計算にあたって出てくる項の数は$n!$個であるので、$3$次の場合はうまく使い分けると良いです。

Q.17

$$
\large
\begin{align}
X = \left(\begin{array}{cc} x & y \\ z & u \end{array} \right)
\end{align}
$$

上記のように$X$を表すと、$AX=XA$は下記のように表すことができる。
$$
\large
\begin{align}
AX &= XA \\
\left(\begin{array}{cc} a & b \\ c & d \end{array} \right) \left(\begin{array}{cc} x & y \\ z & u \end{array} \right) &= \left(\begin{array}{cc} x & y \\ z & u \end{array} \right) \left(\begin{array}{cc} a & b \\ c & d \end{array} \right) \\
\left(\begin{array}{cc} ax+bz & ay+by \\ cx+dz & cy+du \end{array} \right) &= \left(\begin{array}{cc} ax+cy & bx+dy \\ az+cu & bz+du \end{array} \right) \quad [1]
\end{align}
$$

$[1]$式より下記の連立方程式が得られる。
$$
\large
\begin{align}
\cancel{ax}+bz &= \cancel{ax}+cy \quad [2] \\
ay+by &= bx+dy \quad [3] \\
cx+dz &= az+cu \quad [4] \\
cy+\cancel{du} &= bz+\cancel{du} \quad [5]
\end{align}
$$

ここで$[2], [5]$式より、$bz=cy$が得られるが、この式が任意の$y,z$で成立する必要十分条件は$b=c=0$である。また、$b=c=0$を$[3], [4]$式に代入すると$a=d$が得られる。したがって$(4)$が正しい。

・解説
$a=d, \, b=c=0$は行列$A$が単位行列の定数倍を表すことも合わせて抑えておくと良いです。

Q.18

下記のように極限値を得ることができる。
$$
\large
\begin{align}
\lim_{x \to 0} \frac{\sin{bx}}{\sin{ax}} &= \lim_{x \to 0} \frac{\sin{bx}}{bx} \cdot \frac{ax}{\sin{ax}} \cdot \frac{b}{a} \\
&= 1 \cdot 1 \cdot \frac{b}{a} \\
&= \frac{b}{a}
\end{align}
$$

よって$(3)$が正しい。

・解説
この問題では$\displaystyle \lim_{\theta \to 0} \frac{\sin{\theta}}{\theta}=1$を用いました。$\displaystyle \lim_{\theta \to 0} \frac{\sin{\theta}}{\theta}=1$の導出は下記で取り扱ったので合わせて確認しておくと良いです。

Q.19

$$
\large
\begin{align}
f(x,y) = \tan^{1}{(ax+by+1)}, \quad a \neq 0, \, b \neq 0
\end{align}
$$

$2$変数関数$f(x,y)$のマクローリン展開は下記のように表せる。
$$
\begin{align}
f(x,y) = f(0,0) + \frac{1}{1!} \left( x \frac{\partial}{\partial x} + y \frac{\partial}{\partial y} \middle) f(x,y) \right|_{x=0,y=0} + \frac{1}{2!} \left( x \frac{\partial}{\partial x} + y \frac{\partial}{\partial y} \middle)^{2} f(x,y) \right|_{x=0,y=0} + \cdots
\end{align}
$$

上記より$xy$の係数は$\displaystyle \frac{\partial^{2}}{\partial x \partial y} f(x,y) \Bigr|_{x=0,y=0}$を計算することで得られる。ここで$\displaystyle (\tan^{-1}{x})’ = \frac{1}{1+x^2}$であるので、$xy$の係数は下記のように得られる。
$$
\large
\begin{align}
\frac{\partial^{2}}{\partial x \partial y} f(x,y) \Bigr|_{x=0,y=0} &= \frac{-2ab(ax+by+1)}{[1+(ax+by+1)]^{2}} \Bigr|_{x=0,y=0} \\
&= \frac{-2ab \cdot (0+0+1)}{[1+(0+0+1)]^{2}} \\
&= -\frac{2ab}{4} = -\frac{ab}{2}
\end{align}
$$

・解説
$\displaystyle (\tan^{-1}{x})’ = \frac{1}{1+x^2}$の導出は下記で取り扱いました。

Q.20

$$
\large
\begin{align}
2020 \times \frac{\displaystyle \int_{0}^{1} (1-x^{20})^{100} dx}{\displaystyle \int_{0}^{1} (1-x^{20})^{101} dx} \quad [1]
\end{align}
$$

$\displaystyle I_{n} = \int_{0}^{1} (1-x^{20})^{n} dx, \, n \geq 1$とおくと、部分積分法により下記のように漸化式が得られる。
$$
\large
\begin{align}
I_{n} &= \int_{0}^{1} (1-x^{20})^{n} dx \\
&= \left[ x(1-x^{20})^{n} \right]_{0}^{1} – \int_{0}^{1} x \cdot n(1-x^{20})^{n-1} \cdot (-20x^{19}) dx \\
&= 20n \int_{0}^{1} x^{20}(1-x^{20})^{n-1} dx \\
&= 20n \int_{0}^{1} (1-x^{20})^{n-1} dx – 20n \int_{0}^{1} (1-x^{20}) (1-x^{20})^{n-1} dx \\
&= 20n \int_{0}^{1} (1-x^{20})^{n-1} dx – 20n \int_{0}^{1} (1-x^{20})^{n} dx \\
&= 20n I_{n-1} – 20n I_{n} \\
(20n+1) I_{n} &= 20n I_{n-1} \\
I_{n} &= \frac{20n}{20n+1} I_{n-1} \quad [2]
\end{align}
$$

$[2]$式に$n=101$を代入すると下記が得られる。
$$
\large
\begin{align}
I_{101} &= \frac{20 \cdot 101}{20 \cdot 101 + 1} I_{101-1} \quad [2]’ \\
I_{101} &= \frac{2020}{2021} I_{100} \quad [3]
\end{align}
$$

$[3]$式より、$[1]$式は下記のように計算できる。
$$
\large
\begin{align}
2020 \times \frac{\displaystyle \int_{0}^{1} (1-x^{20})^{100} dx}{\displaystyle \int_{0}^{1} (1-x^{20})^{101} dx} &= 2020 \times \frac{I_{100}}{I_{101}} \\
&= 2020 \cdot I_{100} \cdot \frac{2021}{2020 I_{100}} \\
&= 2021
\end{align}
$$

上記より$(5)$が正しい。

PPO(Proximal Policy Optimization)まとめ

方策勾配法の学習の安定化にあたっては、TRPO(Trust Region Policy Optimization)やPPO(Proximal Policy Optimization)のようにステップ幅の調整が解決策になります。当記事ではPPOについて詳しく取りまとめを行いました。
「ゼロから作るDeep Learning④ー強化学習編」の$10.2.3$の「TRPO・PPO」やTRPO、PPOの論文などを参考に作成を行いました。

・用語/公式解説
https://www.hello-statisticians.com/explain-terms

・TRPO論文
・PPO論文

前提の確認

方策勾配法まとめ

方策勾配法の目的関数や勾配

軌道$\tau$の収益$G(\tau)$を最大にするような方策$\pi_{\theta}(A_t|S_t)$を得るにあたっては、下記の目的関数を$p$次元ベクトル$\theta$について最大化すればよい。
$$
\large
\begin{align}
J(\theta) &= \mathbb{E}_{\tau \sim \pi_{\theta}}[G(\tau)] \quad (1.1) \\
\theta & \in \mathbb{R}^{p}
\end{align}
$$

上記で定義した$J(\theta)$の勾配ベクトルは下記のように表される。
$$
\large
\begin{align}
\nabla_{\theta} J(\theta) = \mathbb{E}_{\tau \sim \pi_{\theta}} \left[ \sum_{t=0}^{T} G(\tau) \nabla_{\theta} \log{\pi_{\theta}(A_t|S_t)} \right] \quad (1.2)
\end{align}
$$

詳しい導出は下記で取り扱った。

REINFORCEMENT、ベースライン、Actor-Critic

$(1.1)$式では収益$G(\tau)$を元に目的関数$J(\theta)$を定義し、勾配ベクトル$\nabla_{\theta} J(\theta)$を$(1.2)$式で表した。$(1.2)$式は収益$G(\tau)$に基づいて軌道の重み付けを行なったと大まかに解釈できるが、本来的には状態$S_t$後の収益のみを用いるのがより適切である。このように$(1.2)$式の$G(\tau)$については様々な表し方が考えられるので、$(1.2)$式を$G(\tau)$を一般化した$\Phi_{t}$を用いて下記のように再定義する。
$$
\large
\begin{align}
\nabla_{\theta} J(\theta) = \mathbb{E}_{\tau \sim \pi_{\theta}} \left[ \sum_{t=0}^{T} \Phi_{t} \nabla_{\theta} \log{\pi_{\theta}(A_t|S_t)} \right] \quad (1.3)
\end{align}
$$

上記の一例であるベースライン付きREINFORCEは、$\Phi_{t}$を下記のように定義する。
$$
\large
\begin{align}
\Phi_{t} &= G_{t} – b(S_t) \quad (1.4) \\
G_t &= R_t + \gamma R_{t+1} + \gamma^{2} R_{t+2} + \cdots + \gamma^{T-t} R_{T} \quad (1.5)
\end{align}
$$

ここで上記の収益$G_t$にQ関数$Q(S_t,A_t)$、ベースライン$b(S_t)$に価値関数を用いると$\Phi_{t}$はアドバンテージ関数$A(S_t,A_t)$に一致する。
$$
\large
\begin{align}
\Phi_{t} &= Q(S_t,A_t) – V(S_t) \\
&= A(S_t,A_t) \quad (1.6)
\end{align}
$$

アドバンテージ関数は状態$S_t$における行動$A_t$の評価を単体で行うことができるように定義される関数である。また、オーソドックスなREINFORCEやActor-Criticなどベースライン付きREINFORCE以外の$\Phi_{t}$の定義は下記で詳しく取りまとめた。

TRPO

TRPOの最適化問題は下記のように表される。
$$
\large
\begin{align}
\mathrm{maximize}_{\theta} &: \, \mathbb{E}_{t} \left[ \frac{\pi_{\theta}(a_t|s_t)}{\pi_{\theta_{\mathrm{old}}}(a_t|s_t)} A_{t} \right] \quad (1.7) \\
\mathrm{subject \, to} &: \, \mathbb{E}_{t} \left[ KL[\pi_{\theta_{\mathrm{old}}}(\cdot|s_t),\pi_{\theta}(\cdot|s_t)] \right] \leq \delta \quad (1.8) \\
\theta & \in \mathbb{R}^{p}, \, \theta_{\mathrm{old}} \in \mathbb{R}^{p}
\end{align}
$$

$(1.7)$式を$(1.8)$式の制約を元に最適化するにあたって、TRPOでは共役勾配法と直線探索を用いる。詳細は下記で取り扱った。

$(1.8)$式の制約により、繰り返し演算における変化の幅の上限値を設定することが可能で学習の安定化が実現できる一方で、計算コストがやや大きい。PPOはこの計算コストを解決した手法である。

PPO

PPOの目的関数と学習の流れ

Clipped Surrogate Objective

TRPOにおける目的関数(Objective function)を”conservative policy iteration”に基づいて$L^{CPI}(\theta)$とおくと、$L^{CPI}(\theta)$は確率の比率である$r_{t}(\theta)$を用いて、下記のように表すこともできる。
$$
\large
\begin{align}
L^{CPI}(\theta) &= \mathbb{E}_{t} \left[ \frac{\pi_{\theta}(a_t|s_t)}{\pi_{\theta_{\mathrm{old}}}(a_t|s_t)} A_{t} \right] = \mathbb{E}_{t} \left[ r_{t}(\theta) A_t \right] \quad (2.1) \\
r_{t}(\theta) &= \frac{\pi_{\theta}(a_t|s_t)}{\pi_{\theta_{\mathrm{old}}}(a_t|s_t)} \quad (2.2)
\end{align}
$$

$(2.1)$式に対して、PPOでは下記のような目的関数の$L^{CPI}(\theta)$を用いる。
$$
\large
\begin{align}
L^{CLIP}(\theta) &= \mathbb{E}_{t} \left[ \min \left( r_{t}(\theta)A_t, \, \mathrm{clip}(r_{t}(\theta), 1-\varepsilon, 1+\varepsilon)A_t \right) \right] \quad (2.3)
\end{align}
$$

$(2.3)$式は$\min$の内側に下記の二つの項を持つ。
$$
\large
\begin{align}
& r_{t}(\theta)A_t \\
& \mathrm{clip}(r_{t}(\theta), 1-\varepsilon, 1+\varepsilon)A_t
\end{align}
$$

第$1$項を選ぶ場合、$(2.3)$式は$(2.1)$式に一致するので$L^{CLIP}(\theta)$は$L^{CPI}(\theta)$に一致する。

第$2$項は$r_{t}$の変化を$1-\varepsilon$以上$1+\varepsilon$以下に抑える関数である。第$2$項があることで、一度のパラメータのUpdateにおけるパラメータの変化が大きくなり過ぎないように制約を課すことができる。

$(2.3)$式は下記の図を元に理解すると良い。

PPO論文 Figure$1$

図の理解にあたっては、「$1-\varepsilon$と$1+\varepsilon$のどちらを用いるかはアドバンテージ関数$A_t$の符号による」ことに注意する必要がある。アドバンテージ関数が正であるときは$1+\varepsilon$を用い、負の場合は$1-\varepsilon$を用いる。

Adaptive KL Penalty Coefficient

PPO論文では目的関数$L^{CPI}(\theta)$(conservative policy iteration)に加えて、下記のような目的関数$L^{KLPEN}(\theta)$に基づいた実験の結果の記載がある。
$$
\large
\begin{align}
L^{KLPEN}(\theta) &= \mathbb{E}_{t} \left[ \frac{\pi_{\theta}(a_t|s_t)}{\pi_{\theta_{\mathrm{old}}}(a_t|s_t)} A_{t} \, – \, \beta \mathrm{KL}\left[ \pi_{\theta_{\mathrm{old}}}(\cdot|s_t), \pi_{\theta}(\cdot|s_t) \right] \right] \quad (2.4) \\
d &= \mathbb{E}_{t} \left[ \mathrm{KL}\left[ \pi_{\theta_{\mathrm{old}}}(\cdot|s_t), \pi_{\theta}(\cdot|s_t) \right] \right] \quad (2.5)
\end{align}
$$

目的関数$L^{KLPEN}(\theta)$の”KLPEN”は”KL penalty”の略である。また、$\beta$の値は固定(fixed)する場合と、$(2.5)$式の$d$の値に基づいて適応的に(Adaptive)変化させる方法の二通りが取り扱われる。

適応的な手法を用いる場合はハイパーパラメータのd_targの値を元に、下記のようなプログラムに基づいて$\beta$の値を変化させる。

beta = 
d_targ = 

for i in range(n_epoch):
    d = calc_KL()
    if d < d_targ/1.5:
        beta = beta/2
    elif d > d_targ*1.5:
        beta = beta*2

上記の処理は$(2.5)$式に基づいて計算を行ったKLダイバージェンスの値が小さければペナルティの係数$\beta$を小さくし、KLダイバージェンスの値が大きければペナルティの係数$\beta$を大きくすることに対応する。よって、「確率分布の変動が大きい場合にペナルティを大きくする」と解釈することができる。また、betaの初期値もハイパーパラメータであるが、アルゴリズムがすぐに適応するので値は重要でないとPPO論文に記載がある。

PPOの学習の流れ

$(2.3), (2.4)$式の目的関数を元に、PPOの学習の流れは下記のように表される。

PPO論文 Algorithm$1$

PPO論文における実験

PPO論文では下記の数式に基づいてそれぞれ実験が行われる。

PPO論文 $6.1$ Comparison of Surrogate Objectives より

上記のClippingは「Clipped Surrogate Objective」、KL penaltyは「Adaptive KL Penalty Coefficient」で取り扱った内容にそれぞれ対応する。このそれぞれの目的関数を用いて、OpenAI Gymで実装されているHalfCheetah、Hopper、InvertedDoublePendulum、InvertedPendulum、Reacher、Swimmer、Walker2dの$7$つのsimulated robotic tasksについて学習を行った結果が下記である。

PPO論文 Table$1$

上記は$7$つのタスクのスコアの正規化された平均であり、$\epsilon=0.2$のClippingが最も良い結果であることが確認できる。また、Adaptive KLの$\beta$の初期値はここでは$\beta=1$に設定される。

PPO論文 Figure$3$

また、論文のFigure$3$ではPPOに加えてA$2$CやTRPOなど、その他アルゴリズムの学習の結果についてまとめられているので合わせて確認しておくと良い。紫がPPOであり、相対的に良い結果であることが確認できる。

・注意事項
PPO論文では「$\epsilon=0.2$のClipping」が最も良い結果とされるが、InstructGPT/ChatGPTでは「Clipped Surrogate Objective」ではなく、「Adaptive KL Penalty Coefficient」に基づく目的関数が用いられることに注意が必要である。

TRPO(Trust Region Policy Optimization)まとめ

方策勾配法の学習の安定化にあたっては、TRPO(Trust Region Policy Optimization)やPPO(Proximal Policy Optimization)のようにステップ幅の調整が解決策になります。当記事ではTRPOとPPOについて取りまとめました。
「ゼロから作るDeep Learning④ー強化学習編」の$10.2.3$の「TRPO・PPO」やTRPO、PPOの論文などを参考に作成を行いました。

・用語/公式解説
https://www.hello-statisticians.com/explain-terms

・TRPO論文
・PPO論文

前提の確認

方策勾配法まとめ

方策勾配法の目的関数や勾配

軌道$\tau$の収益$G(\tau)$を最大にするような方策$\pi_{\theta}(A_t|S_t)$を得るにあたっては、下記の目的関数を$p$次元ベクトル$\theta$について最大化すればよい。
$$
\large
\begin{align}
J(\theta) &= \mathbb{E}_{\tau \sim \pi_{\theta}}[G(\tau)] \quad (1.1) \\
\theta & \in \mathbb{R}^{p}
\end{align}
$$

上記で定義した$J(\theta)$の勾配ベクトルは下記のように表される。
$$
\large
\begin{align}
\nabla_{\theta} J(\theta) = \mathbb{E}_{\tau \sim \pi_{\theta}} \left[ \sum_{t=0}^{T} G(\tau) \nabla_{\theta} \log{\pi_{\theta}(A_t|S_t)} \right] \quad (1.2)
\end{align}
$$

詳しい導出は下記で取り扱った。

REINFORCEMENT、ベースライン、Actor-Critic

$(1.1)$式では収益$G(\tau)$を元に目的関数$J(\theta)$を定義し、勾配ベクトル$\nabla_{\theta} J(\theta)$を$(1.2)$式で表した。$(1.2)$式は収益$G(\tau)$に基づいて軌道の重み付けを行なったと大まかに解釈できるが、本来的には状態$S_t$後の収益のみを用いるのがより適切である。このように$(1.2)$式の$G(\tau)$については様々な表し方が考えられるので、$(1.2)$式を$G(\tau)$を一般化した$\Phi_{t}$を用いて下記のように再定義する。
$$
\large
\begin{align}
\nabla_{\theta} J(\theta) = \mathbb{E}_{\tau \sim \pi_{\theta}} \left[ \sum_{t=0}^{T} \Phi_{t} \nabla_{\theta} \log{\pi_{\theta}(A_t|S_t)} \right] \quad (1.3)
\end{align}
$$

上記の一例であるベースライン付きREINFORCEは、$\Phi_{t}$を下記のように定義する。
$$
\large
\begin{align}
\Phi_{t} &= G_{t} – b(S_t) \quad (1.4) \\
G_t &= R_t + \gamma R_{t+1} + \gamma^{2} R_{t+2} + \cdots + \gamma^{T-t} R_{T} \quad (1.5)
\end{align}
$$

ここで上記の収益$G_t$にQ関数$Q(S_t,A_t)$、ベースライン$b(S_t)$に価値関数を用いると$\Phi_{t}$はアドバンテージ関数$A(S_t,A_t)$に一致する。
$$
\large
\begin{align}
\Phi_{t} &= Q(S_t,A_t) – V(S_t) \\
&= A(S_t,A_t) \quad (1.6)
\end{align}
$$

アドバンテージ関数は状態$S_t$における行動$A_t$の評価を単体で行うことができるように定義される関数である。また、オーソドックスなREINFORCEやActor-Criticなどベースライン付きREINFORCE以外の$\Phi_{t}$の定義は下記で詳しく取りまとめた。

共役勾配法

対称行列$A$と$A$の固有ベクトルを$\mathbf{v}_{1}, \, \mathbf{v}_{2}$と定義する。ここで$\mathbf{d}_{1}=\mathbf{v}_{1}$とおくとき、対称行列$A$について$\mathbf{d}_{1}$と共役であるベクトル$\mathbf{d}_{2}$は、下記の式に基づいて得られる。
$$
\large
\begin{align}
\mathbf{d}_{2} = \mathbf{v}_{2} – \frac{\mathbf{v}_{1}^{\mathrm{T}} A \mathbf{v}_{2}}{\mathbf{v}_{1}^{\mathrm{T}} A \mathbf{v}_{1}} \mathbf{v}_{1} \quad (1.7)
\end{align}
$$

TRPOでは最適化における各ステップでの修正の方向の計算にあたって、通常の勾配ベクトルではなく上記に基づいて計算を行なった$\mathbf{d}_{2}$を用いる。共役勾配法の式の詳しい解釈に関しては下記で詳しく取り扱った。

直線探索

$$
\large
\begin{align}
\mathbf{x}_{k+1} &= \mathbf{x}_{k} – \alpha_{k} \nabla f(\mathbf{x}_{k}) \quad (1.8) \\
\mathbf{x}_{k} & \in \mathbb{R}^{p} \\
\nabla &= \left(\begin{array}{c} \displaystyle \frac{\partial}{\partial x_1} \\ \vdots \\ \displaystyle \frac{\partial}{\partial x_p} \end{array} \right)
\end{align}
$$

上記の$(1.8)$式は勾配降下法の式であるが、このような式の$\alpha_{k}$を$f(\mathbf{x}_{k} – \alpha_{k} \nabla f(\mathbf{x}_{k}))$が最大値を取るように設定するのが直線探索(line search)である。

直線探索のプログラム作成にあたってはnp.argmaxなどを用いるとプログラムをシンプルに作成できる。詳しくは下記で取り扱った。

フィッシャー情報行列

$p$次元パラメータベクトル$\theta \in \mathbb{R}^{p}$を用いて尤度関数を$L(\theta|x)$のように定義するとき、フィッシャー情報行列(FIM; Fisher Information Matrix)の$I(\theta)$は下記のように定義される。
$$
\large
\begin{align}
I(\theta) &= E \left[ \frac{\partial}{\partial \theta} \log{L(\theta|x)} \frac{\partial}{\partial \theta^{\mathrm{T}}} \log{L(\theta|x)} \right] \\
&= E \left[ \left(\begin{array}{c} \displaystyle \frac{\partial \log{L(\theta|x)}}{\partial \theta_{1}} \\ \vdots \\ \displaystyle \frac{\partial \log{L(\theta|x)}}{\partial \theta_{p}} \end{array} \right) \left(\begin{array}{ccc} \displaystyle \frac{\partial \log{L(\theta|x)}}{\partial \theta_{1}} & \cdots & \displaystyle \frac{\partial \log{L(\theta|x)}}{\partial \theta_{p}} \end{array} \right) \right]
\end{align}
$$

詳しくは下記で取り扱った。

Hessian-Free Optimization

$$
\large
\begin{align}
\nabla = \frac{\partial}{\partial \theta} = \left(\begin{array}{c} \displaystyle \frac{\partial}{\partial \theta_1} \\ \vdots \\ \displaystyle \frac{\partial}{\partial \theta_p} \end{array} \right)
\end{align}
$$

上記のように方向微分の演算子$\nabla$を定義するとき、ヘッセ行列$H$とベクトル$\mathbf{u}$の積$H \mathbf{u}$について下記のような近似が成立する。
$$
\large
\begin{align}
H \mathbf{u} & \simeq \frac{\nabla f(\theta + \varepsilon \mathbf{u}) – \nabla f(\theta)}{\varepsilon} \quad (1.10)
\end{align}
$$

上記の式の導出については下記で詳しく取り扱った。

TRPO

TRPOの目的関数と制約

TRPO(Trust Region Policy Optimization)では下記のように目的関数(objective function)と制約を定義する。
$$
\large
\begin{align}
\mathrm{maximize}_{\theta} &: \, \mathbb{E}_{t} \left[ \frac{\pi_{\theta}(a_t|s_t)}{\pi_{\theta_{\mathrm{old}}}(a_t|s_t)} A_{t} \right] \quad (2.1) \\
\mathrm{subject \, to} &: \, \mathbb{E}_{t} \left[ KL[\pi_{\theta_{\mathrm{old}}}(\cdot|s_t),\pi_{\theta}(\cdot|s_t)] \right] \leq \delta \quad (2.2) \\
\theta & \in \mathbb{R}^{p}, \, \theta_{\mathrm{old}} \in \mathbb{R}^{p}
\end{align}
$$

$(2.1)$式は$(1.1)$式の$G(\tau)$をアドバンテージ関数で置き換え、さらに重点サンプリング(importance sampling)を行うにあたって式変形を行なったものである。$(2.1)$式のように定義する目的関数をTRPOやPPOの論文ではsurrogate objectiveということも抑えておくと良い。

上記の最適化にあたっては、重点サンプリングを元に目的関数の近似値を計算し、近似値の計算結果を元に共役勾配法直線探索(line search)に基づく繰り返し演算を行う。詳細は次項以降で取り扱う。

最適化問題の定式化

前項の「TRPOの目的関数と制約」の$(2.1), \, (2.2)$式を下記のように式の簡略化を行う。
$$
\large
\begin{align}
\mathrm{Maximize} & : \, L(\theta) \quad (2.1)’ \\
\mathrm{subject \, to} & : \, \overline{D}_{KL}(\theta_{\mathrm{old}}, \theta) \leq \delta \quad (2.2)’ \\
\theta & \in \mathbb{R}^{p}, \, \theta_{\mathrm{old}} \in \mathbb{R}^{p}
\end{align}
$$

TRPOでは上記の最適化問題を下記のように制約式ではなくペナルティを用いて再定義する。
$$
\large
\begin{align}
\mathrm{Maximize} & : \, L(\theta) – \lambda \overline{D}_{KL}(\theta_{\mathrm{old}}, \theta) \quad (2.3)
\end{align}
$$

制約やペナルティに用いられるKLダイバージェンスは下記のように二次近似(quadratic approximation)を行う。
$$
\large
\begin{align}
\overline{D}_{KL}(\theta_{\mathrm{old}}, \theta) & \simeq \frac{1}{2} (\theta_{\mathrm{old}}, \theta)^{\mathrm{T}} A (\theta_{\mathrm{old}} – \theta) \quad (2.4) \\
A_{ij} &= \frac{\partial^{2}}{\partial \theta_{i} \partial \theta_{j}} \overline{D}_{KL}(\theta_{\mathrm{old}}, \theta) \quad (2.5) \\
\theta & \in \mathbb{R}^{p}, \, \theta_{\mathrm{old}} \in \mathbb{R}^{p}
\end{align}
$$

フィッシャー情報行列は前節の$(1.9)$式のように定義されることが一般的であるが、TRPO論文では$(2.5)$式によって$A$の要素の推定が行われる。同様に目的関数$L(\theta)$について一次近似を行い方向微分を計算すると、$Ax=g$形式の方程式が得られるので、共役勾配法を用いて解けばよい。

共役勾配法と線形探索

「共役勾配法」「Hessian-Free Optimization」で確認した計算に基づいてパラメータ$\theta \in \mathbb{R}^{p}$をUpdateする方向の$\mathbf{d}_{t+1}$が得られた際に、$\theta_{t+1} = \theta_{t} + \beta \mathbf{d}_{t+1}$によって$\theta_{t+1}$の計算を行う。この際に制約式における$\delta$は下記に対応する。
$$
\large
\begin{align}
\delta = \overline{D}_{KL}(\theta_{\mathrm{old}}, \theta) \simeq \frac{1}{2}(\beta \mathbf{d}_{t+1})^{\mathrm{T}} A (\beta \mathbf{d}_{t+1}) = \frac{1}{2} \beta^{2} \mathbf{d}_{t+1}^{\mathrm{T}} A \mathbf{d}_{t+1} \quad (2.6)
\end{align}
$$

$(2.6)$式を$\beta$について解くと下記が得られる。
$$
\large
\begin{align}
\delta & \simeq \frac{1}{2} \beta^{2} \mathbf{d}_{t+1}^{\mathrm{T}} A \mathbf{d}_{t+1} \quad (2.6) \\
\beta^{2} & \simeq \frac{2 \delta}{\mathbf{d}_{t+1}^{\mathrm{T}} A \mathbf{d}_{t+1}} \\
\beta & \simeq \sqrt{\frac{2 \delta}{\mathbf{d}_{t+1}^{\mathrm{T}} A \mathbf{d}_{t+1}}} \quad (2.7)
\end{align}
$$

したがって、線形探索にあたっての$\beta$による探索幅の最大値を$\displaystyle \sqrt{\frac{2 \delta}{\mathbf{d}_{t+1}^{\mathrm{T}} A \mathbf{d}_{t+1}}}$に設定することで、$(2.2)$式の制約の範囲で線形探索を行うことができる。

フィッシャー情報行列(FIM; Fisher Information Matrix)の式定義

フィッシャー情報行列(FIM; Fisher Information Matrix)は多変数スカラー関数の二次近似(quadratic approximation)を行う際に計算を行う行列です。当記事ではフィッシャー情報行列の定義式について取りまとめました。
当記事は「Wikipedia:フィッシャー情報量」などを参考に作成を行いました。
https://ja.wikipedia.org/wiki/フィッシャー情報量

・用語/公式解説
https://www.hello-statisticians.com/explain-terms

フィッシャー情報量の定義

確率関数や確率密度関数を$f(x|\theta)=P(X=x|\theta)$のように定義するとき、パラメータ$\theta$の尤度$L(\theta|x)$は下記のように表せる。
$$
\large
\begin{align}
L(\theta|x) = f(x|\theta)
\end{align}
$$

このとき、対数尤度$\log{L(\theta|x)}$を元にスコア関数$V(x|\theta)$を下記のように定義する。
$$
\large
\begin{align}
V(x|\theta) = \frac{\partial}{\partial \theta} \log{L(\theta|x)}
\end{align}
$$

上記で定義した対数尤度やスコア関数を元に、フィッシャー情報量$I(\theta)$は下記のように定義される。
$$
\large
\begin{align}
I(\theta) &= E \left[ V(x|\theta)^{2} \right] \\
&= E \left[ \left( \frac{\partial}{\partial \theta} \log{L(\theta|x)} \right)^{2} \right]
\end{align}
$$

フィッシャー情報行列の定義

下記のように$p$次元パラメータベクトル$\boldsymbol{\theta} \in \mathbb{R}^{p}$と、方向微分の演算子$\nabla$を定義する。
$$
\large
\begin{align}
\boldsymbol{\theta} &= \left(\begin{array}{c} \theta_{1} \\ \vdots \\ \theta_{p} \end{array} \right) \\
\nabla &= \left(\begin{array}{c} \displaystyle \frac{\partial}{\partial \theta_{1}} \\ \vdots \\ \displaystyle \frac{\partial}{\partial \theta_{p}} \end{array} \right)
\end{align}
$$

このときフィッシャー情報行列を$I(\boldsymbol{\theta})$と定義すると、尤度関数$L(\boldsymbol{\theta}|x)$に基づいて$I(\boldsymbol{\theta})$は下記のように表される。
$$
\large
\begin{align}
I(\boldsymbol{\theta}) &= E \left[ \nabla \log{L(\boldsymbol{\theta}|x)} \nabla^{\mathrm{T}} \log{L(\boldsymbol{\theta}|x)} \right] \\
&= E \left[ \frac{\partial}{\partial \boldsymbol{\theta}} \log{L(\boldsymbol{\theta}|x)} \frac{\partial}{\partial \boldsymbol{\theta}^{\mathrm{T}}} \log{L(\boldsymbol{\theta}|x)} \right] \\
&= E \left[ \left(\begin{array}{c} \displaystyle \frac{\partial \log{L(\boldsymbol{\theta}|x)}}{\partial \theta_{1}} \\ \vdots \\ \displaystyle \frac{\partial \log{L(\boldsymbol{\theta}|x)}}{\partial \theta_{p}} \end{array} \right) \left(\begin{array}{ccc} \displaystyle \frac{\partial \log{L(\boldsymbol{\theta}|x)}}{\partial \theta_{1}} & \cdots & \displaystyle \frac{\partial \log{L(\boldsymbol{\theta}|x)}}{\partial \theta_{p}} \end{array} \right) \right]
\end{align}
$$

【上級】データサイエンス 数学ストラテジスト 公式問題集 解答例まとめ Q.1〜10

「データサイエンス 数学ストラテジスト 上級」はデータサイエンスの基盤である、確率・統計、線形代数、微積分、機械学習、プログラミングなどを取り扱う資格試験です。当記事では「日本数学検定協会」作成の「公式問題集」の演習問題$1$〜$10$の解答例を取り扱いました。

・数学検定まとめ
https://www.hello-statisticians.com/math_certificate

演習問題

Q.1

$$
\large
\begin{align}
x^{2} + \frac{1}{x^2} = 10
\end{align}
$$

上記の式は下記のように変形できる。
$$
\large
\begin{align}
x^{2} + \frac{1}{x^2} &= 10 \\
\left( x + \frac{1}{x} \right)^{2} – 2 &= 10 \\
\left( x + \frac{1}{x} \right)^{2} &= 12
\end{align}
$$

ここで$x>1$より、$\displaystyle x + \frac{1}{x} = 2 \sqrt{3}$が成立するが、下記のように変形を行える。
$$
\large
\begin{align}
x + \frac{1}{x} &= 2 \sqrt{3} \\
x^{2} – 2 \sqrt{3} x + 1 &= 0 \\
x &= \sqrt{3} \pm \sqrt{3-1} = \sqrt{3} \pm \sqrt{2}
\end{align}
$$

$x>1$なので$x=\sqrt{2}+\sqrt{3}$が成立する。

・解説
$x>1$を元に$\pm$を外す際に注意が必要です。$\displaystyle x + \frac{1}{x} > 1$や$\sqrt{3}-\sqrt{2}<1$を途中計算で用いました。

Q.2

$n$角形の$1$つの点に対し、線分が対角線である点は$n-3$、辺である点は$2$つ存在する。ここで$n-3=2$であれば$p=q$である。よって$n=5$であれば良い。

・解説
問題集の解答では$2$点選ぶことを${}_{n} C_{2}$で表現されますが、このように表すと式がやや複雑です。$1$点はどの点を選んでも他の点に関する取り扱いは同じであることに着目することで計算を簡略化することが可能です。

Q.3

$$
\large
\begin{align}
y &= \log_{2}{\frac{1}{x}} \\
&= \log_{2}{x^{-1}} \\
&= -\log_{2}{x}
\end{align}
$$

上記より$(3)$のグラフが正しい。

Q.4

$$
\large
\begin{align}
\sqrt{10}x^2 – 2x + k = 0
\end{align}
$$

上記の方程式の解が$\sin{\theta}, \, \cos{\theta}$であるとき、二次方程式の解と係数の関係より下記が成立する。
$$
\large
\begin{align}
\sin{\theta} + \cos{\theta} &= \frac{2}{\sqrt{10}} \quad [1] \\
\sin{\theta} \cos{\theta} &= \frac{k}{\sqrt{10}} \quad [2]
\end{align}
$$

ここで$(1)$式の両辺の$2$乗は下記のように変形できる。
$$
\large
\begin{align}
(\sin{\theta} + \cos{\theta})^{2} &= \frac{2^2}{\sqrt{10}^2} \quad [1]’ \\
\sin^{2}{\theta} + \cos^{2}{\theta} + 2 \sin{\theta} \cos{\theta} &= \frac{2}{5} \\
1 + 2 \sin{\theta} \cos{\theta} &= \frac{2}{5} \\
2 \sin{\theta} \cos{\theta} &= -\frac{3}{5} \\
\sin{\theta} \cos{\theta} &= -\frac{3}{10} \quad [3]
\end{align}
$$

$[2], \, [3]$式より下記のように$k$の値が得られる。
$$
\large
\begin{align}
\frac{k}{\sqrt{10}} &= -\frac{3}{10} \\
k &= -\frac{3}{\sqrt{10}}
\end{align}
$$

上記より、元の二次方程式は下記のように表せる。
$$
\large
\begin{align}
\sqrt{10}x^2 – 2x + -\frac{3}{\sqrt{10}} &= 0 \\
10x^2 – 2 \sqrt{10} x + -3 &= 0
\end{align}
$$

二次方程式の解の公式より、上記の方程式の解は下記のように得られる。
$$
\large
\begin{align}
x &= \frac{\sqrt{10} \pm \sqrt{\sqrt{10}^{2} + 10 \cdot 3}}{10} \\
&= \frac{\sqrt{10} \pm 2 \sqrt{10}}{10} \\
&= -\frac{\sqrt{10}}{10}, \, \frac{3 \sqrt{10}}{10}
\end{align}
$$

上記より$(1)$が正しい。

Q.5

$$
\large
\begin{align}
\left( \frac{2}{x} \right)^{\log_{e}{2}} &= \left( \frac{3}{y} \right)^{\log_{e}{3}} \quad [1] \\
3^{-\log_{e}{x}} &= 2^{-\log_{e}{y}} \quad [2]
\end{align}
$$

上記に対し、$\displaystyle X=\frac{1}{x}, \, Y=\frac{1}{y}$のようにおくと、$[1], \, [2]$式は下記のように表せる。
$$
\large
\begin{align}
(2X)^{\log_{e}{2}} &= (3Y)^{\log_{e}{3}} \quad [1]’ \\
3^{\log_{e}{X}} &= 2^{\log_{e}{Y}} \quad [2]’
\end{align}
$$

上記の$[1]’$式の両辺の自然対数を取ると、下記が得られる。
$$
\large
\begin{align}
(2X)^{\log_{e}{2}} &= (3Y)^{\log_{e}{3}} \quad [1]’ \\
\log_{e}{2} \log_{e}{(2X)} &= \log_{e}{3} \log_{e}{(3Y)} \\
\log_{e}{2} (\log_{e}{2} + \log_{e}{X}) &= \log_{e}{3} (\log_{e}{3} + \log_{e}{Y}) \quad [1]^{”}
\end{align}
$$

同様に$[2]’$式の両辺の自然対数を取ると、下記が得られる。
$$
\large
\begin{align}
3^{\log_{e}{X}} &= 2^{\log_{e}{Y}} \quad [2]’ \\
\log_{e}{X} \log_{e}{3} &= \log_{e}{Y} \log_{e}{2} \\
\log_{e}{Y} &= \frac{\log_{e}{3}}{\log_{e}{2}} \log_{e}{X} \quad [2]^{”}
\end{align}
$$

ここで$[2]^{”}$式を$[1]^{”}$式に代入することで下記のように変形できる。
$$
\large
\begin{align}
\log_{e}{2} (\log_{e}{2} + \log_{e}{X}) &= \log_{e}{3} (\log_{e}{3} + \log_{e}{Y}) \quad [1]^{”} \\
\log_{e}{2} (\log_{e}{2} + \log_{e}{X}) &= \log_{e}{3} \left( \log_{e}{3} + \frac{\log_{e}{3}}{\log_{e}{2}} \log_{e}{X} \right) \\
\frac{1}{\log_{e}{2}} \cancel{\left( (\log_{e}{2})^{2} – (\log_{e}{3})^{2} \right)} \log_{e}{X} &= -\cancel{\left( (\log_{e}{2})^{2} – (\log_{e}{3})^{2} \right)} \\
\log_{e}{X} &= -\log_{e}{2} \\
\log_{e}{X} &= \log_{e}{2^{-1}} \\
X &= \frac{1}{2}
\end{align}
$$

上記を$[2]^{”}$式に代入することで下記が得られる。
$$
\large
\begin{align}
\log_{e}{Y} &= \frac{\log_{e}{3}}{\log_{e}{2}} \log_{e}{X} \quad (2)^{”} \\
\log_{e}{Y} &= \frac{\log_{e}{3}}{\log_{e}{2}} \cdot -\log_{e}{2} \\
\log_{e}{Y} &= -\log_{e}{3} \\
\log_{e}{Y} &= \log_{e}{3^{-1}} \\
Y &= \frac{1}{3}
\end{align}
$$

ここで$\displaystyle X=\frac{1}{x}, \, Y=\frac{1}{y}$であるので、$x=2, y=3$である。よって$x^2+y^2=13$であるので$(1)$が正しい。

Q.6

$$
\large
\begin{align}
f(x) = x|x-3|
\end{align}
$$

上記より、$x<3$のとき$f(x)=-x(x-3)=-x^2+3x, \, f'(x)=-2x+3$、$3 \leq x$のとき$f(x)=x(x-3)=x^2-3x, \, f'(x)=2x-3$である。よって$f'(2)-f'(4)$は下記のように計算できる。
$$
\large
\begin{align}
f'(2) – f'(4) &= (-2 \cdot 2 + 3) – (2 \cdot 4 – 3) \\
&= -1 – 5 \\
&= -6
\end{align}
$$

上記より$(1)$が正しい。

Q.7

$$
\large
\begin{align}
f(x) = \int_{-1}^{x} (t^2-t-2) dt
\end{align}
$$

$g(t)=t^2-t-2$の原始関数を$G(t)$とおくと、$f'(x)$は下記のように得ることができる。
$$
\large
\begin{align}
f'(x) &= \frac{d}{dx} \int_{-1}^{x} g(t) dt \\
&= \frac{d}{dx} (G(x)-G(-1)) \\
&= g(x) \\
&= x^2 – x – 2 \\
&= (x+1)(x-2)
\end{align}
$$

上記より、関数$f(x)$は$x=-1$で極大値$M$、$x=2$で極小値$m$を取る。$M$と$m$はそれぞれ下記のように計算できる。
$$
\large
\begin{align}
M &= f(-1) = \int_{-1}^{-1} (t^2-t-2) dt \\
&= 0 \\
m &= f(2) = \int_{-1}^{2} (t^2-t-2) dt \\
&= \left[ \frac{1}{3}t^{3} – \frac{1}{2}t^{2} – 2t \right]_{-1}^{2} \\
&= \left( \frac{8}{3} – 2 – 4 \right) – \left( -\frac{1}{3} – \frac{1}{2} + 2 \right) \\
&= \frac{16-36+2+3-12}{6} \\
&= -\frac{27}{6} \\
&= -\frac{9}{2}
\end{align}
$$

上記より$(4)$が正しい。

Q.8

$\displaystyle X \sim \mathrm{Bin} \left( 90, \frac{1}{3} \right)$であるので、期待値$E[X]$と標準偏差$SD[X]=\sqrt{V[X]}$はそれぞれ下記のように計算できる。
$$
\large
\begin{align}
E[X] &= 90 \times \frac{1}{3} \\
&= 30 \\
SD[X] &= \sqrt{V[X]} \\
&= \sqrt{90 \times \frac{1}{3} \times \frac{2}{3}} \\
&= \sqrt{20} = 2 \sqrt{5}
\end{align}
$$

上記より、$(5)$が正しい。

Q.9

$$
\large
\begin{align}
I_{A} &= -\log_{2}{p_{A}} \\
p_{A} &= \frac{2}{10} \times \frac{1}{9} \\
&= \frac{1}{45}
\end{align}
$$

上記より選択情報量$I_{A}$は下記のように計算できる。
$$
\large
\begin{align}
I_{A} &= -\log_{2}{\frac{1}{45}} \\
&= \log_{2}{(3^{2} \times 5)} \\
&= 2 \log_{2}{3} + \log_{2}{5} \\
&= 2 \times 1.585 + 2.322 \\
&= 5.492
\end{align}
$$

よって$(3)$が正しい。

Q.10

$$
\large
\begin{align}
\vec{a} = \left(\begin{array}{c} 3 \\ -2 \\ 1 \end{array} \right), \quad \vec{b} = \left(\begin{array}{c} -6 \\ k \\ -2 \end{array} \right)
\end{align}
$$

$\vec{a}$と$\vec{b}$が平行のとき、$-2\vec{a} = \vec{b}$が成立する必要がある。このとき$k=4$である。逆に$k=4$のとき$\vec{a}$と$\vec{b}$が平行であるので、$k_1=4$が必要十分である。

$\vec{a} \perp \vec{b}$のとき、$\vec{a} \cdot \vec{b} = 0$より下記が成立する。
$$
\large
\begin{align}
\vec{a} \cdot \vec{b} &= 0 \\
-18 – 2k -2 &= 0 \\
k &= -10
\end{align}
$$

よって$k_2=-10$である。したがって$(3)$が正しい。

統計検定準1級 問題解説 ~2016年6月実施 選択問題及び部分記述問題 問9~

過去問

過去問題は統計検定公式が問題と解答例を公開しています。こちらを参照してください。

[1]解答

$\boxed{\mathsf{12}}$ : $④$

$(A)$ 触媒,$(B)$ 温度,$(A\times B)$ 触媒と温度の交互作用 と表すことにする.交互作用を誤差にプールすると,$S’_E = S_E + S_{A\times B} = 346 + 168 = 514$ .$\phi’ E = \phi _E + \phi_{A\times B} = 13$ であるから,$V’_E = 514/13 = 39.54$ .これは$V_E = 38.4$ より大きいので,触媒,温度それぞれの $F$ 値はいずれも小さくなる.

$①$. : それぞれの $F$ 値は小さくなるため,$F$ 値の和も変化する.誤り.
$②$:$F$ 値と残差の自由度が変化するため $P$ 値も変化する.誤り.
$③$:$②$ と同様.誤り.
$④$:正しい.
$⑤$:残差の自由度は変化する.誤り.

[2]解答

$\boxed{\mathsf{13}}$ : $④$
触媒と温度の交互作用は有意でないため,$① \sim ③$ は誤り.
触媒について,$F_A = 0.624 < F_{0.05}(2,9) = 4.26$ であるから,有意水準 $5\%$ で触媒の効果は有意でない.温度については,$F_B = 4.370 > F_{0.05}(2,9) = 4.26$ であり,有意水準 $5\%$ で有意である.温度についての表をみると,最適温度は $450°c$ ,点推定値は $88\%$ であることがわかる.
したがって,正しいのは $④$ .

注意
[1] に交互作用は有意でないと判断したと記述があるため,$① \sim ③$ は誤り.
$④$,$⑤$ については,有意水準 $1\%$ で考えると触媒,温度のどちらも有意でない.選択肢の中から適切なものを選ぶ必要があるため,有意水準$5\%$ で考えた結果を採用している.