「ReLU」「活性化関数」「max(0,x)」「非線形性」が、何のためにあるのか分からない。
ReLU(x)=max(0,x)。負は0・正はそのまま通す。微分は x>0 で1、x≤0 で0。「効く/効かない」の非対称性をネットに持ち込む。
法人税の非対称性に形がよく似ている。税額 = 税率 × max(0, 課税所得)。黒字なら所得に比例して税が増え、赤字なら税額は0で打ち止め(負の税は出ない)。
この「正の側だけ比例して効き、負の側はピタッと止まる」非対称性が ReLU の本質。これがあるから、ネットは単なる比例計算を超えて複雑なパターンを表現できる。
ただし完全一致ではない。純粋な ReLU は黒字域の傾きが1だが、税額は傾きが税率(例 0.3)。「赤字は0で打ち止め」という形は同じで、傾きの大きさだけが違う。
どちらも「赤字(負)はゼロで打ち止め、黒字(正)は比例して効く」という形は同じ。 違うのは黒字側の傾きだけ(税額は税率0.3、ReLUは1)。この非対称性が ReLU の本質。
⚠️ 税額は傾きが税率、ReLU は傾き1。形(赤字は0)は同じだが完全一致ではない、という例示。
この簿記アナロジーが、Karpathy のオリジナル200行のどの行に当たるか。
def relu(self):
return Value(max(0, self.data), (self,), (float(self.data > 0),))max(0, x) で負は0・正はそのまま。局所勾配 float(self.data > 0) は正で1.0・負で0.0=黒字だけ効く非対称性。
出典: karpathy / microgpt.py (本体は原文ママ、コメントのみ日本語に補足)