세 가지와 이름 하나
인공 뉴런은 신경망을 이루는 가장 단순한 단위고, 이름만큼 신비한 물건은 아니야. 하는 일은 세 가지뿐이야. 입력 벡터 x를 받고, 학습된 가중치 벡터 w를 곱한 뒤 학습된 편향 b를 더하고, 비선형 활성화 함수 f를 적용해. 끝이야. 딥러닝의 나머지는 전부 이 뉴런을 많이 쌓고 역전파에 맡기는 일이야.
수식으로 쓰면 y = f(w · x + b)야. PyTorch에서는 단일 출력 nn.Linear(in_features, 1)에 활성화 함수를 붙인 형태지. 수상돌기, 시냅스, 축삭 같은 생물학적 비유는 느슨한 비유일 뿐이야. 실제 뉴런은 학습된 선형 사영에 비선형성을 더한 계산이야.
활성화 함수가 중요한 이유
비선형 활성화 함수가 없으면 각 층은 이전 층에 대한 선형 함수가 돼. 아무리 여러 층을 쌓아도 결국 하나의 선형 함수로 합쳐져 버려. 선형층이 1개든 20개든 XOR은 풀 수 없어. 하지만 ReLU를 더한 층 1개로는 풀 수 있어. 활성화 함수가 존재하는 가장 중요한 이유가 바로 이거야. 깊이를 의미 있게 만들어 주거든.
형태 읽기
순전파의 모든 변수 옆에 형태를 적는 습관을 들여. x: [B, in_features], w: [out_features, in_features], y: [B, out_features]. PyTorch를 처음 배우는 한 달 동안 만나는 버그 대부분은 형태 불일치에서 생겨. 그리고 그중 대부분은 주석에 형태를 적는 순간 사라져.