softmax 연산
- 모델의 출력을 확률로 해석할 수 있게 변환해주는 연산
- 출력물의 모든 값을 고려함
- 분류(classification) 문제를 풀 때 선형모델과 softmax 함수 결합하여 특정 vector가 어떤 class에 속할 확률 예측
- softmax(o) = softmax(Wx+b)
def softmax(vec):
# denumerator : 각 출력 vector
denumerator = np.exp(vec - np.max(vec, axis=-1, keepdims=True)
# numerator : 각 출력 vector들의 합에 exponential 연산 수행
numerator = np.sum(denumerator, axis=-1, keepdims=True)
val = denumerator / numerator
return val
- 추론을 할 때는 one-hot vector 사용
활성함수(activation function)
- 활성함수는 실수 차원 위에 정의된 비선형 함수
- 해당 주소에 있는 출력값만을 고려함
- 선형 모델 -> 비선형모델 변환 가능
- 대표적인 예시로는 sigmoid 함수, hyperbolic tangent 함수, ReLU 함수
신경망을 수식으로 분해해보자
- 신경망은 선형모델과 활성함수(activation function)을 합성한 함수. 비선형모델
- 이 때 X는 nxd행렬로 전체 데이터를 나타내고, O는 nxp로 출력을 나타냄
- x와 o를 이어주는 선은 dxp 가중치행렬 W. 이를 통해 출력 벡터의 차원이 바뀜
- z는 변형시킨 vector를 잠재(hidden) vector인 Neuron으로 나타낸 것.
- σ는 활성함수를 나타냄.
- 다층(multi-layer) 퍼셉트론(MLP)는 신경망이 여러 층 합성된 함수
- 다층 구조를 이용함으로써 임의의 연속함수 근사 가능
- 층이 깊을수록 목적함수를 근사하는데 필요한 뉴런(노드)의 숫자가 빨리 줄어들어 효율적인 학습 가능
- l = 1, 2, ... , L까지 순차적인 신경망 계산을 순전파(forward propagation)
역전파 알고리즘 (backpropagation)
- 딥러닝에서 주로 사용
- 더 많은 parameter들에 대해 경사하강법 적용
- 각 층에서 계산된 gradient가 아래층으로(역순) 전달되면서 gradient 값 update
- 합성함수 미분법인 연쇄법칙(chain-rule) 기반 자동미분(auto-differentiation) 사용
+) Deep Learning에서의 Neuron을 Tensor.
memory 사용량은 back propagation > forward propagation