独学 vs with 家庭教師
AIは,データから背後に隠れた法則を学習します。これは,人間で例えると、生まれた瞬間から問題集を解き続けて独学で能力を高めていくことに似ています.AIと私たちとの違いは,非常に高い学習能力を持っているため,独学でもある程度の成長が可能であるという点です.それでも,人間と同様に優秀な家庭教師がいるAIと独学だけのAIを比較すると,前者の方が高い能力であることが期待できます.
知識蒸留とは
大きなモデル(教師モデル)が学んだ知識を、小さなモデル(生徒モデル)に伝える手法を知識蒸留と言います.
教師モデルが持つ豊富な情報を活用することで、生徒モデルの性能を向上させることができるのです.これにより,限られた計算リソースを持つデバイスでも,高度なAIモデルの能力を活用することが可能になります.
蒸留って具体的に何するの?
理科の実験で蒸留というのをやった気がするのですが,ここでいう蒸留とは温度付きソフトマックスの温度パラメータを調節し,いい感じの確率分布を生徒に伝えるということです.
温度付きソフトマックス実装
tの値を変更することで,確率分布を操作することができます.
import numpy as np
from scipy.stats import norm
from matplotlib import pyplot as plt
def softmax(x):
y = np.exp(x) / np.sum(np.exp(x), axis=1, keepdims=True)
return y
def softmaxWithTemperature(x, t):
y = softmax(x / t)
return y
n_classes = 10
left = np.linspace(0, n_classes-1, n_classes)
p = np.array([[norm.pdf(x=i, loc=4.5, scale=1) for i in range(n_classes)]],
dtype=np.float32)
labels = []
sofmax_p = []
t = 0.7
label = "T=" + str(t)
softmax_p = softmaxWithTemperature(p, t)
plt.bar(left, softmax_p.squeeze(),label=label)
plt.legend()
plt.show()
知識蒸留実装