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