📌 이 글은 권철민님의 딥러닝 CNN 완벽 가이드를 바탕으로 정리한 내용입니다.


목차

  1. Activation function
    1. Activation function를 왜 적용해야 할까? : 딥러닝 네트워크에 비선형성을 적용하기 위함
  2. 딥러닝 모델에서의 Activation function 적용 : Sigmoid, ReLU, Softmax
    1. Sigmoid 함수의 특성 : 이진 분류의 최종 Classification layer에서 쓰인다.
      1. Sigmoid 함수의 Vanishing gradient 문제
      2. 회귀를 이용한 분류에서 사용되는 Sigmoid
    2. Hyperbolic tangent
    3. ReLU(Recified Linear Unit) : 대표적인 은닉층의 활성화 함수
      1. input이 0보다 작을 때, 0으로 출력
      2. input이 0보다 클 때, 그대로 input 출력
      3. Vanishing gradient 문제가 발생하지 않는다.
    4. Softmax : Multi Classification의 최종 Activation function로 쓰인다. 개별 출력값의 총합이 1

Activation function

Sigmoid, Hyperbolic tangent, ReLU

전통적으로 딥러닝에서 사용되는 활성화 함수는 시그모이드 함수이다.

시그모이드 함수의 단점을 보완한게 Hyperbolic Tangent이고,

현재는 2012년에 나온 Rectified Linear Unit를 일반적으로 사용한다.

 

z가 입력값이고 입력값이 커지면 0에 수렴한다.

 

ReLU는 앞 두개와 다르게 뭔가 정제되고 Linear 하게 보인다.


Activation function을 왜 적용해야 할까?

Activation function의 주요 목적은 DNN의 비선형성에 적용하기 위함이다. 

선형성과 비선형성

 

위와 같이 빨간색과 초록색을 판별해야 할 때, Boundary 축을 왼쪽 그림처럼 선형으로 긋게 되면 오류가 많이 발생한다.

반면 비선형으로 Boundary를 그으면 잘 구분할 수 있다. 비선형적인 데이터셋을 잘 반영할 수 있게 한다.

 

그러나 비선형성이 모든 예측 분류에 좋은 것은 아니다.

비선형성은 필연적으로 오버피팅 되기 쉽기 때문이다.

 

따라서 네트워크 상의 비선형성을 적용하기 위해서 Activation function이 중요하다는 것을 기억해두자.


딥러닝 모델에서의 Activation function 적용

3가지 대표적인 Activation function

 

대부분 은닉층의 활성화 함수는 ReLU를 적용한다.

Sigmoid(시그모이드)는 은닉층에 거의 사용되지 않는다. 이진분류 시 마지막 출력층에 사용된다.

Softmax는 이것이 자동차입니까, 강아지입니까, 고양이입니까 라는 다중 분류시 마지막 출력층에 사용된다.

목적이나 특성에 맞게끔 함수를 적용시켜줘야 때문이다. 이제 각각의 함수의 특성에 대해 알아보자. 


Sigmoid(시그모이드) 함수 특성

Sigmoid는 Binary classification의 가장 마지막 레이어의 Activation function으로 주로 사용된다. 

Hidden Layer의 Activation function으로는 Gradient 의 소실(Vanishing Gradient) 등의 이슈로 더이상 사용되지 않는다. 

Sigmoid

 

식을 보면 x값이 계속 증가하면 1에 가까워진다.

x값이 커져도 출력값이 크게 변하지 않으므로 미분 값이 거의 0으로 수렴한다.

 

이게 왜 문제일까?


Sigmoid의 Vanishing Gradient 문제

Vanishing Gradient

DNN에서 Feed forword와 Backpropagation할 때 Gradient를 계산해서 Weight를 업데이트 한다.

그런데 Gradient를 계산할 때, Sigmoid도 미분을 하게 된다.

그런데 Sigmoid도 미분하게 되면 Sigmoid가 0이 된다. 그러면 Gradient도 0이 된다.

 

즉, output이 음수 값으로 나오는 것들을 0에 가깝게 표현하기 때문에, Weight값이 변하지가 않는 것처럼 보인다. Gradient vanishing 현상이 일어난다. 층이 계속 깊어질수록 이런 현상이 나와서 층을 추가해도 의미가 없게 된다. 더이상 학습이 안 되는 것이다.

 

그렇게 때문에 Sigmoid는 Hidden layer에 쓰이지 않고, Binary classification의 가장 마지막 레이어의 Activation function으로 주로 사용된다.


회귀를 이용한 분류에서 사용되는 Sigmoid

그래서 시그모이드의 특성인 0또는 1값을 반환하는 특성을 잘 이용한 이진 분류의 최종 분류 예측에 시그모이드가 사용된다. 예를 들어 암이냐, 암이 아니냐 같은 문제에 사용된다.


Hyperbolic tangent

Hyperbolic tangent

Hyperbolic tangent는 -1 ~ 1 사이의 값을 출력한다.

그러나 이것도 Sigmoid 처럼 미분을 하면 0으로 수렴하기 때문에 Activation 함수로 은닉층에 쓰기에는 문제가 있다.


ReLU (Recified Linear Unit)

ReLU

 

ReLU는 대표적인 Hidden Layer의 Activation function이다.

입력값이 0보다 작으면 0으로 출력하고, 입력값이 0보다 크면 그대로 입력값을 출력한다.

 

또한 x가 증가할 때 출력값인 y도 똑같이 증가하므로, 미분이 0으로 떨어지지 않는다.

Vanishing Gradient 문제를 해결한 것이 바로 ReLU이다.

 

이렇게 은닉층의 활성화함수로 대표적으로 사용되는 함수가 바로 ReLU이다.


Softmax

Softmax는 sigmoid와 유사하게 Score 값을 0~1로 변환하지만, 다른 점은 개별 출력 값의 총 합이 1이 되도록 맵핑하는 것이다. 즉, 아래 그림과 같이 각각의 output에 대해서 확률처럼 나타난다.

 

Softmax

 

이런 특성을 갖고 여러 종류의 output을 분류하는 Multi Classification에서 최종 레이어의 Activation function으로 사용된다.  

 

argmax가 예를 들어 t1(0.1), t2(0.8), t3(0.01)중에서 가장 큰 값의 인덱스를 고른다.

car 인지, boat 인지, cat인지의 문제일 때, t2인 boat의 인덱스를 고른다.

 

이렇게 Softmax는 Multi Classification의 Activation function으로 쓰인다.

'🖼 Computer Vision > CNN' 카테고리의 다른 글

CNN - Cross Entropy  (0) 2022.01.20
CNN - Loss function  (0) 2022.01.20
CNN - Backpropagation의 Gradient 적용 메커니즘  (0) 2022.01.19
CNN - Backpropagation  (0) 2022.01.19
CNN - Deep Neural Network  (0) 2022.01.19
복사했습니다!