부스트캠프 AI Tech 4기

10. 딥러닝 학습방법

StoneSeller 2022. 9. 23. 18:57

신경망(neural network)

  • 신경망은 선형모델 + 활성화함수(activation function)의 결합으로 이루어져 있다. → 비선형
  • 선형 모델을 각 행벡터 ${O_{i}}$는 데이터 $x_{i}$와 가중치 행렬 ${W}$사이의 행렬곱과 절편 ${b}$ 벡터의 합으로 표현된다고 가정하면 아래 수식과 같이 표현할 수 있다.

$$ {O}={X}{W} + b $$

 

소프트맥스 함수

  • 모델의 출력을 확률로 해석할 수 있게 변환해주는 연산이다.

출력벡터 ${O}$에 softmax 함수를 합성하면 확률벡터가 되므로 특정 클래스 $k$에 속할 확률로 해석할 수 있다.

 

추론을 할 때는 원-핫(One-hot) 벡터최댓값을 가진 주소만 1로 출력하는 연산을 사용하기 때문에 softmax 함수를 사용하지 않는다. → 학습을 할 때 softmax함수를 사용한다.

 

소프트맥스 vs 활성화 함수(activation function)

소프트맥스는 출력물의 모든 값을 고려하여 출력한다면, 활성화함수는 다른 주소의 출력값은 고려하지 않고 해당 주소의 출력값만 고려한다. 그래서 벡터를 input으로 받지 않고 실수값을 input으로 받는다.

→ 선형모델로 나온 결과값에 활성화 함수를 취해준것을 잠재벡터(hidden vector)라고 한다.

 

활성화 함수

  • 비선형함수
  • Sigmoid, tanh, ReLU 함수 등이 있다.

활성화 함수 왜 사용할까?

  • 선형 layer를 아무리 깊게 쌓아도 선형식을 계속 쌓는 것이기에 비선형 관계를 표현할 수 없다.
    그래서 활성화 함수를 사용해 비선형 관계를 표현할 수 있도록 해주는 것이다.
  • 왜 비선형으로 바꿔주어야 할까?
    데이터의 복잡도가 높아지고 차원이 높아지게 되면 데이터의 분포는 단순 선형 형태가 아닌 비선형(Non-Linearity) 형태를 가지기 때문이다.

왜 층을 여러 개를 쌓을까?

  • 이론적으로는 2층 신경망으로도 임의의 연속함수를 근사할 수 있다.(universal approximation theorem)
    그러나 이론일 뿐, 실제적으로는 2층으로는 높은 성능을 내기 어렵다.
  • 층이 깊을수록 목적함수를 근사하는데 필요한 뉴런(노드)의 숫자가 훨씬 빨리 줄어들어 좀 더 효율적으로 학습이 가능하다.
    (층이 얇으면 필요한 뉴런의 숫자가 기하급수적으로 늘어나서, 넓은(가로로, wide) 신경망이 되어야한다.)
  • 층이 깊을수록 좀 더 복잡한 함수를 근사할 수는 있지만, 최적화가 쉽다는 이야기는 아니다. 층이 깊어질수록 딥러닝은 학습하기가 어렵다.(Residual Block)

 

딥러닝 학습원리: 역전파(Backpropagation)

  • 선형회귀분석에서 경사하강법을 통해, 선형모델의 계수 $\beta$의 gradient vector를 계산해서 parameter를 update한다.
  • 딥러닝에서도 똑같다.
    각 층에 존재하는 파라미터들에 대한 미분을 계산해서 파라미터를 업데이트한다.
    행렬들의 원소들의 모든 개수만큼 경사하강법이 적용되기때문에 선형모델의 경사하강법보다 훨씬 더 많은 계산이 이루어지게 된다.
    → 딥러닝에서는 한 층에서 계산하는 원리이기 때문에 선형모델처럼 한 번에 계산할 수는 없다. 따라서 역전파 알고리즘을 통해 역순으로 순차적으로 계산해주어야 한다.

 

  • 역전파 알고리즘은 chain-rule 기반 자동미분을 사용한다.
    딥러닝은 선형모델과 활성화함수의 합성함수이기 때문에 gradient를 계산하려면 chain-rule이 필요하다.
    chain-rule을 적용한 학습방법으로 backpropagation을 사용하는 것이다.

 

 

 


부스트캠프 AI Tech 교육 자료를 참고하였습니다.

 

 

728x90