見出し画像

📏「ごぶごぶ」の数学、シグモイド関数とエントロピーの解説

シャノンのエントロピーを表す曲線がありますか?


シャノンのエントロピーは、情報理論において情報の不確実性やランダム性を定量化するために使われる指標です。エントロピーの値は、情報源が生成するメッセージの平均情報量を示します。通常、エントロピー H(X) は以下の式で表されます:


ここで、p(xi​) はメッセージ xi​ の出現確率を表し、b は対数の底で、底が 2 の場合はビット単位での情報量を、底が e の場合はナット単位での情報量を意味します。

シャノンのエントロピーを視覚的に表す一般的な曲線は、2つの出来事の確率が変化するときのエントロピーの変化を示すものです。例えば、あるイベントが起こる確率を p とし、起こらない確率を 1−p とした場合、このエントロピーの式は以下のようになります:


この式を用いて、p が 0 から 1 まで変化するときのエントロピーの変化をグラフに描くことができます。このグラフは、p=0.5 のときに最大値をとり、p=0 または p=1 のときに最小値(0)をとることを示します。これは、出来事が完全に不確実(50/50 の確率で発生する)のときに情報のエントロピーが最大になり、出来事が確実に発生するまたは発生しない(確率が 0 または 1)のときにエントロピーが最小(情報量がない)になることを意味します。


このグラフは、確率 p が 0 から 1 まで変化するときのシャノンのエントロピー H(p) の変化を示しています。エントロピーは、p=0.5 のときに最大値を取り、この点で情報の不確実性が最大になります。一方、p=0 または p=1 に近づくにつれてエントロピーは 0 に近づき、これは情報の不確実性が最小になることを意味します。 ​

0.5は50%という意味ですか?

はい、その通りです。グラフに示されたエントロピーが最大になる点、つまりp=0.5 のときは、2つの出来事の確率がそれぞれ 50% であることを意味します。これは、2つの可能性が完全に等しい確率で起こる状況であり、その結果として情報の不確実性(またはランダム性)が最大になります。

エントロピーが最大になるのは、情報を受け取ったときに得られる「新しい情報量」が最大になる状況です。つまり、2つの可能性が等しく起こり得る場合、その出来事の結果を知ることができる情報は最大の価値を持ちます。逆に、出来事が確実に起こるか、全く起こらない場合(p=0 または p=1)、情報のエントロピーは 0 になり、その情報は新しいものではなくなります。これは、予測可能な結果からは何も新しいことは学べないということを示しています。

ごぶごぶ、というやつですね

はい、その通りです。「ごぶごぶ」という表現は、もし日本の関西地方の方言である「五分五分」(ごぶごぶ)が意味する「半々」「五割五割」の確率を指しているなら、これはシャノンのエントロピーの概念にぴったり合います。確率が50%(半々)である状況は、情報理論におけるエントロピーが最大になる点を表し、この状態が最も不確実性が高く、新しい情報が最も多く得られる状態を意味します。言い換えれば、情報の価値が最大になるのは、その情報が事前に予想できない、つまり「ごぶごぶ」の状態のときです。

シグモイド関数は50%のときになにをあらわしてますか?


シグモイド関数は、特定の入力値に対して0から1までの出力を生成する関数です。この関数はロジスティック関数としても知られており、機械学習の分野でよく使用されます。シグモイド関数の式は次のように表されます。


シグモイド関数の出力が0.5(50%)の場合、これは入力値�xが0の時を指します。この出力値は、シグモイド関数が分類問題において使用される際に特に重要です。出力が0.5の場合、それは入力された特徴が正クラスか負クラスかを区別するのに「不確実」であることを示しています。つまり、モデルがそのデータポイントがどちらのクラスに属するかを50%の確率でしか判断できないことを意味します。この閾値(0.5)は、しばしばデフォルトの判断基準として使用され、出力がこれより大きい場合は正クラス、小さい場合は負クラスに分類されます。


import numpy as np
import matplotlib.pyplot as plt

def sigmoid(x):
    return 1 / (1 + np.exp(-x))

# Create a range of values from -10 to 10 to demonstrate the sigmoid function
x = np.linspace(-10, 10, 100)
y = sigmoid(x)

# Plotting the sigmoid function
plt.figure(figsize=(8, 4))
plt.plot(x, y, label="Sigmoid Function")
plt.title("Sigmoid Function")
plt.xlabel("x")
plt.ylabel("Sigmoid(x)")
plt.grid(True)
plt.legend()
plt.show()


お願い致します