N_ha
  • Home
  • Posts

二値分類におけるBinary Cross Entropyの勾配計算とモデル更新

数学
機械学習
深層学習

作成日 2025年7月18日金曜日

更新日 2025年7月27日日曜日

二値分類タスクを機械学習を用いて解く際には、ロジスティック回帰や(最終層の活性化関数を(標準)シグモイド関数とした)深層学習などが利用される。

これらのモデルを勾配降下法で学習するためには、損失関数である Binary Cross Entropy の勾配を計算する必要があるので、その計算をする。

対数の底は情報理論の文脈では 222 を用いるが、勾配計算の微分の文脈では便宜上 eee を用いる(最終的な結果が定数倍変わってしまうが、学習率に吸収されるため勾配計算では問題ない)。

定義

入力と目的変数

入力を x\bm{x}x 、目的変数を yyy とすると以下のように表される。

x=(x1x2…xn)∈Rny∈{0,1}\begin{aligned} \bm{x} &= \begin{pmatrix} x_1 & x_2 & \dots & x_n \end{pmatrix} \in \mathbb{R}^n\\ y &\in \left\{0, 1\right\}\\ \end{aligned}xy​=(x1​​x2​​…​xn​​)∈Rn∈{0,1}​

ここで、入力とはロジスティック回帰の場合は特徴量のベクトル、深層学習の場合は隠れ層の最終層(出力層の直前の層)の出力のベクトルを指す。

重みとバイアス

線形結合の重みを w\bm{w}w 、バイアスを bbb とすると以下のように表される。

w=(w1w2…wn)∈Rnb∈R\begin{aligned} \bm{w} &= \begin{pmatrix} w_1 & w_2 & \dots & w_n \end{pmatrix} \in \mathbb{R}^n\\ b &\in \mathbb{R}\\ \end{aligned}wb​=(w1​​w2​​…​wn​​)∈Rn∈R​

予測モデル

(標準)シグモイド関数を σ:R→(0,1)\sigma:\mathbb{R} \to (0,1)σ:R→(0,1) とすると、ロジット zzz と予測確率 ttt は以下のように表される。

ここで、(0,1)(0,1)(0,1) は開区間 {x∈R∣0<x<1}\{x\in\mathbb{R}|0<x<1\}{x∈R∣0<x<1} を表す。

z=xw+b=x1w1+x2w2+⋯+xnwn+bt=σ(z)=11+exp⁡(−z)=11+e−z\begin{aligned} z &= \bm{x} \bm{w} + b\\ &= x_1 w_1 + x_2 w_2 + \dots + x_n w_n + b\\ t &= \sigma(z) = \frac{1}{1 + \exp(-z)} = \frac{1}{1 + e^{-z}} \end{aligned}zt​=xw+b=x1​w1​+x2​w2​+⋯+xn​wn​+b=σ(z)=1+exp(−z)1​=1+e−z1​​

交差エントロピーの意味

目的変数 yyy の確率変数を YYY 、予測値 y^\hat{y}y^​ の確率変数を Y^\hat{Y}Y^ とすると、 YYY の分布 ppp と Y^\hat{Y}Y^ の分布 qqq は 、b∈{0,1}b \in \{0, 1\}b∈{0,1} を用いて以下のように表される。

p(b)=p(Y=b∣x)={yb=11−yb=0=by+(1−b)(1−y)q(b)=q(Y^=b∣x)={tb=11−tb=0=bt+(1−b)(1−t)\begin{aligned} p(b) &= p(Y=b|\bm{x})\\ &= \begin{cases} y & b=1\\1-y & b=0 \end{cases}\\ &= by + (1 - b)(1 - y)\\ q(b) &= q(\hat{Y}=b|\bm{x})\\ &= \begin{cases} t & b=1\\1-t & b=0 \end{cases}\\ &= bt + (1 - b)(1 - t) \end{aligned}p(b)q(b)​=p(Y=b∣x)={y1−y​b=1b=0​=by+(1−b)(1−y)=q(Y^=b∣x)={t1−t​b=1b=0​=bt+(1−b)(1−t)​

ppp と qqq の交差エントロピー H(p,q)H(p, q)H(p,q) は以下のように表される。

H(p,q)=Eb∼p[Iq(b)]=Eb∼p[−log⁡(q(b))]=−∑b∈{0,1}p(b)log⁡(q(b))=−(p(1)log⁡(q(1))+p(0)log⁡(q(0)))=−(ylog⁡(t)+(1−y)log⁡(1−t))\begin{aligned} H(p, q) &= E_{b\sim p}\left[I_{q}(b)\right]\\ &= E_{b\sim p}\left[-\log\left(q(b)\right)\right]\\ &= -\sum_{b\in\{0,1\}} p(b) \log\left(q(b)\right)\\ &= -\left(p(1) \log(q(1)) + p(0) \log(q(0))\right)\\ &= -\left(y \log(t) + (1 - y) \log(1 - t)\right) \end{aligned}H(p,q)​=Eb∼p​[Iq​(b)]=Eb∼p​[−log(q(b))]=−b∈{0,1}∑​p(b)log(q(b))=−(p(1)log(q(1))+p(0)log(q(0)))=−(ylog(t)+(1−y)log(1−t))​

ここで、 Iq(b)I_{q}(b)Iq​(b) は分布 qqq による確率変数 bbb の自己情報量を表し、 Eb∼p[Iq(b)]E_{b\sim p}\left[I_{q}(b)\right]Eb∼p​[Iq​(b)] は確率変数 bbb が分布 ppp に従うときの Iq(b)I_{q}(b)Iq​(b) の期待値を表す。

交差エントロピー H(p,q)H(p, q)H(p,q) は、以下のように変形できる。

H(p,q)=Eb∼p[Iq(b)]=Eb∼p[Iq(b)]−Eb∼p[Ip(b)]+Eb∼p[Ip(b)]=Eb∼p[Iq(b)−Ip(b)]+Eb∼p[Ip(b)]=D(p∣∣q)+Hb∼p(b)\begin{aligned} H(p, q) &= E_{b\sim p}\left[I_{q}(b)\right]\\ &= E_{b\sim p}\left[I_{q}(b)\right] - E_{b\sim p}\left[I_{p}(b)\right] + E_{b\sim p}\left[I_{p}(b)\right]\\ &= E_{b\sim p}\left[I_{q}(b) - I_{p}(b)\right] + E_{b\sim p}\left[I_{p}(b)\right]\\ &= D(p||q) + H_{b\sim p}(b)\\ \end{aligned}H(p,q)​=Eb∼p​[Iq​(b)]=Eb∼p​[Iq​(b)]−Eb∼p​[Ip​(b)]+Eb∼p​[Ip​(b)]=Eb∼p​[Iq​(b)−Ip​(b)]+Eb∼p​[Ip​(b)]=D(p∣∣q)+Hb∼p​(b)​

ここで、 Hb∼p(b)H_{b\sim p}(b)Hb∼p​(b) は確率変数 bbb が分布 ppp に従うときの bbb のエントロピーを表し、 D(p∣∣q)D(p||q)D(p∣∣q) は分布 ppp と分布 qqq の KL ダイバージェンスを表す。

KL ダイバージェンス D(p∣∣q)D(p||q)D(p∣∣q) は分布 ppp と分布 qqq の距離(遠さ)やズレを表す指標とされる。

エントロピー Hb∼p(b)H_{b\sim p}(b)Hb∼p​(b) は分布 qqq によらず一定であるため、交差エントロピー H(p,q)H(p, q)H(p,q) を最小化することは、KL ダイバージェンス D(p∣∣q)D(p||q)D(p∣∣q) を最小化することと同じであり、分布 ppp に近い分布 qqq を求めることができる。

損失関数

交差エントロピー H(p,q)=−(ylog⁡(t)+(1−y)log⁡(1−t))H(p, q) = -\left(y \log(t) + (1 - y) \log(1 - t)\right)H(p,q)=−(ylog(t)+(1−y)log(1−t)) を yyy と ttt の関数として表したものを損失関数とする。

損失関数 L:{0,1},(0,1)→RL:\{0,1\},(0,1) \to \mathbb{R}L:{0,1},(0,1)→R は以下のように表される。

L(y,t)=−(ylog⁡(t)+(1−y)log⁡(1−t))\begin{aligned} L(y, t) &= -\left(y \log(t) + (1 - y) \log(1 - t)\right)\\ \end{aligned}L(y,t)​=−(ylog(t)+(1−y)log(1−t))​

勾配計算

重み w\bm{w}w の勾配 ∂L∂w(y,t)\frac{\partial L}{\partial \bm{w}}(y, t)∂w∂L​(y,t) とバイアス bbb の勾配 ∂L∂b(y,t)\frac{\partial L}{\partial b}(y, t)∂b∂L​(y,t) を計算する。

それぞれ、以下のように変形できる。

∂L∂w(y,t)=∂z∂w∂t∂z∂L∂t(y,t)∂L∂b(y,t)=∂z∂b∂t∂z∂L∂t(y,t)\begin{aligned} \frac{\partial L}{\partial \bm{w}}(y, t) &= \frac{\partial z}{\partial \bm{w}} \frac{\partial t}{\partial z} \frac{\partial L}{\partial t}(y, t)\\ \frac{\partial L}{\partial b}(y, t) &= \frac{\partial z}{\partial b} \frac{\partial t}{\partial z} \frac{\partial L}{\partial t}(y, t)\\ \end{aligned}∂w∂L​(y,t)∂b∂L​(y,t)​=∂w∂z​∂z∂t​∂t∂L​(y,t)=∂b∂z​∂z∂t​∂t∂L​(y,t)​

それぞれの値を求める。

∂L∂t(y,t)=∂∂t(−(ylog⁡(t)+(1−y)log⁡(1−t)))=−(yt−1−y1−t)=−(y(1−t)−(1−y)tt(1−t))=−(y−yt−t+ytt(1−t))=−(y−tt(1−t))=t−yt(1−t)∂t∂z=∂∂zσ(z)=∂∂z(11+e−z)=∂∂z(1+e−z)−1=−(1+e−z)−2⋅∂∂z(1+e−z)=−(1+e−z)−2⋅e−z⋅∂∂z(−z)=−(1+e−z)−2⋅e−z⋅(−1)=e−z(1+e−z)2=11+e−z⋅e−z1+e−z=11+e−z⋅e−z+1−11+e−z=11+e−z⋅(1+e−z)−11+e−z=11+e−z⋅(1−11+e−z)=t(1−t)∂z∂w=∂∂w(xw+b)=x∂z∂b=∂∂b(xw+b)=1\begin{aligned} \frac{\partial L}{\partial t}(y, t) &= \frac{\partial}{\partial t}\left(-\left(y \log(t) + (1 - y) \log(1 - t)\right)\right)\\ &= -\left(\frac{y}{t} - \frac{1 - y}{1 - t}\right)\\ &= -\left(\frac{y(1 - t) - (1 - y)t}{t(1 - t)}\right)\\ &= -\left(\frac{y - yt - t + yt}{t(1 - t)}\right)\\ &= -\left(\frac{y - t}{t(1 - t)}\right)\\ &= \frac{t - y}{t(1 - t)}\\ \frac{\partial t}{\partial z} &= \frac{\partial}{\partial z}\sigma(z)\\ &= \frac{\partial}{\partial z}\left(\frac{1}{1 + e^{-z}}\right)\\ &= \frac{\partial}{\partial z}\left(1 + e^{-z}\right)^{-1}\\ &= -\left(1 + e^{-z}\right)^{-2} \cdot \frac{\partial}{\partial z}\left(1 + e^{-z}\right)\\ &= -\left(1 + e^{-z}\right)^{-2} \cdot e^{-z} \cdot \frac{\partial}{\partial z}(-z)\\ &= -\left(1 + e^{-z}\right)^{-2} \cdot e^{-z} \cdot (-1)\\ &= \frac{e^{-z}}{\left(1 + e^{-z}\right)^2}\\ &= \frac{1}{1 + e^{-z}} \cdot \frac{e^{-z}}{1 + e^{-z}}\\ &= \frac{1}{1 + e^{-z}} \cdot \frac{e^{-z} + 1 - 1}{1 + e^{-z}}\\ &= \frac{1}{1 + e^{-z}} \cdot \frac{\left(1 + e^{-z}\right) - 1}{1 + e^{-z}}\\ &= \frac{1}{1 + e^{-z}} \cdot \left(1 - \frac{1}{1 + e^{-z}}\right)\\ &= t(1 - t)\\ \frac{\partial z}{\partial \bm{w}} &= \frac{\partial}{\partial \bm{w}}\left(\bm{x} \bm{w} + b\right)\\ &= \bm{x}\\ \frac{\partial z}{\partial b} &= \frac{\partial}{\partial b}\left(\bm{x} \bm{w} + b\right)\\ &= 1 \end{aligned}∂t∂L​(y,t)∂z∂t​∂w∂z​∂b∂z​​=∂t∂​(−(ylog(t)+(1−y)log(1−t)))=−(ty​−1−t1−y​)=−(t(1−t)y(1−t)−(1−y)t​)=−(t(1−t)y−yt−t+yt​)=−(t(1−t)y−t​)=t(1−t)t−y​=∂z∂​σ(z)=∂z∂​(1+e−z1​)=∂z∂​(1+e−z)−1=−(1+e−z)−2⋅∂z∂​(1+e−z)=−(1+e−z)−2⋅e−z⋅∂z∂​(−z)=−(1+e−z)−2⋅e−z⋅(−1)=(1+e−z)2e−z​=1+e−z1​⋅1+e−ze−z​=1+e−z1​⋅1+e−ze−z+1−1​=1+e−z1​⋅1+e−z(1+e−z)−1​=1+e−z1​⋅(1−1+e−z1​)=t(1−t)=∂w∂​(xw+b)=x=∂b∂​(xw+b)=1​

これらを代入して、重み w\bm{w}w の勾配とバイアス bbb の勾配を求める。

∂L∂w(y,t)=x⋅t(1−t)⋅t−yt(1−t)=(t−y)x∂L∂b(y,t)=1⋅t(1−t)⋅t−yt(1−t)=t−y\begin{aligned} \frac{\partial L}{\partial \bm{w}}(y, t) &= \bm{x} \cdot t(1 - t) \cdot \frac{t - y}{t(1 - t)}\\ &= (t - y)\bm{x}\\ \frac{\partial L}{\partial b}(y, t) &= 1 \cdot t(1 - t) \cdot \frac{t - y}{t(1 - t)}\\ &= t - y \end{aligned}∂w∂L​(y,t)∂b∂L​(y,t)​=x⋅t(1−t)⋅t(1−t)t−y​=(t−y)x=1⋅t(1−t)⋅t(1−t)t−y​=t−y​

勾配降下法

勾配降下法で学習を行う場合を考える。

学習率を η\etaη とすると、重み w\bm{w}w とバイアス bbb の更新は、以下のように行う。

w←w−η∂L∂w(y,t)=w−η(t−y)xb←b−η∂L∂b(y,t)=b−η(t−y)\begin{aligned} \bm{w} &\leftarrow \bm{w} - \eta \frac{\partial L}{\partial \bm{w}}(y, t)\\ &= \bm{w} - \eta (t - y)\bm{x}\\ b &\leftarrow b - \eta \frac{\partial L}{\partial b}(y, t)\\ &= b - \eta (t - y) \end{aligned}wb​←w−η∂w∂L​(y,t)=w−η(t−y)x←b−η∂b∂L​(y,t)=b−η(t−y)​

重み付け

正例に対する重みを α\alphaα とすると、重み付き損失関数 Lα(y,t):{0,1},(0,1)→RL_\alpha(y, t):\{0,1\},(0,1) \to \mathbb{R}Lα​(y,t):{0,1},(0,1)→R は以下のように表される。

Lα(y,t)=−(αylog⁡(t)+(1−y)log⁡(1−t))\begin{aligned} L_\alpha(y, t) &= -\left(\alpha y \log(t) + (1 - y) \log(1 - t)\right)\\ \end{aligned}Lα​(y,t)​=−(αylog(t)+(1−y)log(1−t))​

ここで、 α>1\alpha > 1α>1 のときは正例に対して重みを大きくし、再現率を高め、 α<1\alpha < 1α<1 のときは負例に対して重みを大きくし、適合率を高める。 α\alphaα の値はデータセットに含まれる正例の割合を p1p_1p1​ とすると、 α=1−p1p1=1p1−1\alpha = \frac{1 - p_1}{p_1} = \frac{1}{p_1} - 1α=p1​1−p1​​=p1​1​−1 とすることが多い。

重み w\bm{w}w の勾配 ∂Lα∂w(y,t)\frac{\partial L_\alpha}{\partial \bm{w}}(y, t)∂w∂Lα​​(y,t) とバイアス bbb の勾配 ∂Lα∂b(y,t)\frac{\partial L_\alpha}{\partial b}(y, t)∂b∂Lα​​(y,t) を計算する。

L(y,t)L(y, t)L(y,t) の際と同様に、それぞれ、以下のように変形できる。

∂Lα∂w(y,t)=∂z∂w∂t∂z∂Lα∂t(y,t)∂Lα∂b(y,t)=∂z∂b∂t∂z∂Lα∂t(y,t)\begin{aligned} \frac{\partial L_\alpha}{\partial \bm{w}}(y, t) &= \frac{\partial z}{\partial \bm{w}} \frac{\partial t}{\partial z} \frac{\partial L_\alpha}{\partial t}(y, t)\\ \frac{\partial L_\alpha}{\partial b}(y, t) &= \frac{\partial z}{\partial b} \frac{\partial t}{\partial z} \frac{\partial L_\alpha}{\partial t}(y, t)\\ \end{aligned}∂w∂Lα​​(y,t)∂b∂Lα​​(y,t)​=∂w∂z​∂z∂t​∂t∂Lα​​(y,t)=∂b∂z​∂z∂t​∂t∂Lα​​(y,t)​

∂Lα∂t(y,t)\frac{\partial L_\alpha}{\partial t}(y, t)∂t∂Lα​​(y,t) を求める。

∂Lα∂t(y,t)=∂∂t(−(αylog⁡(t)+(1−y)log⁡(1−t)))=−(αyt−1−y1−t)=−(αy(1−t)−(1−y)tt(1−t))=(1−y)t−αy(1−t)t(1−t)\begin{aligned} \frac{\partial L_\alpha}{\partial t}(y, t) &= \frac{\partial}{\partial t}\left(-\left(\alpha y \log(t) + (1 - y) \log(1 - t)\right)\right)\\ &= -\left(\frac{\alpha y}{t} - \frac{1 - y}{1 - t}\right)\\ &= -\left(\frac{\alpha y(1 - t) - (1 - y)t}{t(1 - t)}\right)\\ &= \frac{(1 - y)t - \alpha y(1 - t)}{t(1 - t)} \end{aligned}∂t∂Lα​​(y,t)​=∂t∂​(−(αylog(t)+(1−y)log(1−t)))=−(tαy​−1−t1−y​)=−(t(1−t)αy(1−t)−(1−y)t​)=t(1−t)(1−y)t−αy(1−t)​​

これと先に求めた値を代入して、重み w\bm{w}w の勾配とバイアス bbb の勾配を求める。

∂Lα∂w(y,t)=x⋅t(1−t)⋅(1−y)t−αy(1−t)t(1−t)=((1−y)t−αy(1−t))x∂Lα∂b(y,t)=1⋅t(1−t)⋅(1−y)t−αy(1−t)t(1−t)=(1−y)t−αy(1−t)\begin{aligned} \frac{\partial L_\alpha}{\partial \bm{w}}(y, t) &= \bm{x} \cdot t(1 - t) \cdot \frac{(1 - y)t - \alpha y(1 - t)}{t(1 - t)}\\ &= \left((1 - y)t - \alpha y(1 - t)\right)\bm{x}\\ \frac{\partial L_\alpha}{\partial b}(y, t) &= 1 \cdot t(1 - t) \cdot \frac{(1 - y)t - \alpha y(1 - t)}{t(1 - t)}\\ &= (1 - y)t - \alpha y(1 - t) \end{aligned}∂w∂Lα​​(y,t)∂b∂Lα​​(y,t)​=x⋅t(1−t)⋅t(1−t)(1−y)t−αy(1−t)​=((1−y)t−αy(1−t))x=1⋅t(1−t)⋅t(1−t)(1−y)t−αy(1−t)​=(1−y)t−αy(1−t)​