딥러닝 이해
중요개념
- 신경망
- softmax
- 활성함수
- 역전파 알고리즘
목표
선형모델은 단순한 데이터를 해석할 때는 유용하지만 분류문제나 좀 더 복잡한 패턴의 문제를 풀 때는 예측성공률이 높지 않습니다. 이를 개선하기 위한 비선형 모델인 신경망을 공부합시다.
신경망의 구조와 내부에서 사용되는 softmax, 활성함수, 역전파 알고리즘에 대해 알아봅시다.
권고사항
딥러닝은 여러 층의 선형모델과 활성함수에 대한 합성함수로 볼 수 있으며, 이 합성함수의 그래디언트를 계산하기 위해서 연쇄법칙을 적용한 역전파 알고리즘을 사용합니다. 이와 같은 딥러닝의 원리를 꼭 이해하고 넘어가도록 합시다.
※ 고민합시다!
분류 문제에서 softmax 함수가 사용되는 이유가 뭘까요?
softmax 함수의 결과값을 분류 모델의 학습에 어떤식으로 사용할 수 있을까요?
신경망 수식으로 분해하기
그림 해석
- O는 출력 벡터를 모아놓은 행렬, X는 입력 벡터를 모아놓은 데이터 행렬, W는 차원을 바꿔주는 가중치 행렬, b는 절편행렬
- 출력벡터의 차원이 d에서 p로 바뀝니다.
그림 해석
- d개의 변수로 p개의 선형모델을 만들어서 p개의 잠재변수를 설명하는 모델
- 각각의 화살표는 가중치 행렬값이라고 볼 수 있다.
소프트맥스 연산
- 소프트맥스(softmax) 함수는 모델의 출력을 확률로 해석할 수 있게 변환해주는 연산입니다.
- 분류 문제를 풀 때 선형모델과 소프트맥스 함수를 결합하여 예측합니다.
- 추론을 할 때는 원-핫(one-hot) 벡터로 최대값을 가진 주소만 1로 출력하는 연산을 사용하기 때문에 추론 시 softmax를 사용하지 않는다는 점을 유의해야 합니다.(학습 시에만 softmax 사용)
활성함수
- 신경망은 선형모델과 활성함수(activation function)를 합성한 함수입니다.
- 활성함수는 softmax함수와 다르게 해당 주소의 출력값만 고려해 계산하기 때문에 입력 시 벡터가 아니라 실수값만 가지고 고려한다.
- 활성함수를 통해 선형모델의 출력물을 비선형모델로 변환할 수 있다. 이렇게 변형이 된 출력물 벡터를 히든 벡터(잠재 벡터)라고 하고 보통 뉴런이라고 부릅니다. 이렇게 뉴런으로 이루어진 모델을 신경망(neural network)라고 합니다.
- 활성함수는 R위에 정의된 비선형(non-linear)함수로서 딥러닝에서 매우 중요한 개념입니다.
- 모델에 활성함수가 없다면 딥러닝은 선형모형과 차이점이 없습니다.
- 시그모이드 함수나 tanh함수는 전통적으로 많이 쓰이던 활성함수지만 딥러닝에선 ReLU함수를 많이 쓰고 있습니다.
- 다층(multi-layer) 퍼셉트론(MLP)은 신경망이 여러층 합성된 함수입니다.
- MLP의 파라미터는 L개의 가중치 행렬로 이루어져 있습니다.
- 파라미터를 1부터 L까지 순차적으로 신경망을 계산하는 과정(연산)을 순전파(forward propagation)이라고 부른다.
여러 층을 쌓는 이유
- 이론적으로는 2층 신경망으로도 임의의 연속함수를 근사할 수 있습니다.
- (But) 층이 깊을수록 목적함수를 근사하는데 필요한 뉴런(노드)의 숫자가 훨씬 빨리 줄어들어 좀 더 효율적으로 학습이 가능합니다.
- 층이 깊으면 적은 파라미터로 더 복잡한 함수를 표현할 수 있습니다.
- 층이 얇으면 필요한 뉴런의 숫자가 기하급수적으로 늘어나서 넓은 신경망이 생성됩니다.
- 층이 깊다고 해서 최적화가 더 쉽다고 할 수는 없습니다. (최적화에 더 신경을 많이 써야 합니다.)
딥러닝 학습원리: 역전파 알고리즘
- 딥러닝은 역전파(back propagation) 알고리즘을 이용하여 각 층에 사용된 파라미터를 학습합니다.
- 각 층 파라미터의 그래디언트 벡터는 윗층부터 역순으로 계산하게 됩니다.
역전파 알고리즘 원리 이해하기
- 역전파 알고리즘은 합성함수 미분법인 연쇄법칙(chain-rule)기반 자동미분(auto-differentiation)을 사용합니다.
- 각 뉴런(노드)의 텐서 값을 컴퓨터가 기억해야 미분계산이 가능하기 때문에 back propagation 알고리즘의 메모리 사용량이 많습니다.
참고 예시 : 2층 신경망