feji.me

シグモイド関数の合計とmax(z,0)との比較

September 22, 2020

第3章ニューラルネットワークの基礎

相対エントロピーをデータ平均に置き換えhの期待値がシグモイド関数の和の形で表せることを示しました。

hJ,x[i]=s=1Nσ(z+0.5s)σ(X):=1eX+1\langle h \rangle_{J,\vec{x}[i]}=\sum_{s=1}^N\sigma(z+0.5-s) \\ \sigma(X) := \frac{1}{e^{-X}+1}

これをプロットする。

import numpy as np
from matplotlib import pyplot as plt
from matplotlib import cm

Ns = [1, 5, 10, 100]

def sigmoid_sum(x, n):
    sum = 0
    for i in np.arange(1, n+1):
        sum += 1/(np.exp(-x - 0.5 + i) + 1)
    
    return sum

fig = plt.figure()
ax = fig.add_subplot(111)
plt.xlabel('z')
plt.ylabel(r'$\sum_{s=1}^N \sigma(z+0.5-s)$')
plt.title('sum of sigmoid function')
z1 = np.linspace(-10, 10, 100)
for i, j in enumerate(Ns):
    ax.plot(z1, sigmoid_sum(z1, j), color=cm.coolwarm(0.1 + 0.5/j), label=f'N={j}')
y = [max(0,i) for i in z1]
ax.plot(z1, y, label=r'max(z,0)', color='orange')
ax.legend()
plt.show()

sigmoid-compare image