[CNN] Activation Function(활성화 함수)

조치연·2025년 4월 18일
1

CNN

목록 보기
4/11
post-thumbnail

안녕하세요. 오늘은 활성화 함수에 대해 공부하려고 합니다.


📚 Activation Function(활성화 함수)

활성화 함수란, 인공 신경망에서 입력받은 신호의 가중치 합을 출력 신호로 반환하는 함수입니다.

인공 신경망을 구성하는 각 뉴런은 Net Input Function과 Activation Function으로 구성되어 있습니다.
Net Input Function은 가중치 합을 계산하는 함수입니다.
활성화 함수는 Net Input Function에서 반환한 값을 출력 신호로 반환합니다.

"활성화 함수는 왜 필요한가?"

가중치 W와 입력값 X를 단순히 내적하면, 회귀와 다른 부분이 없습니다.
활성화 함수를 적용하면 모델의 비선형성이 높아집니다.
흔히, 머신러닝은 정형 데이터에서 성능이 좋고, 딥러닝은 비정형 데이터에서 성능이 좋다고 말합니다.
이는 딥러닝 모델의 비선형성이 상대적으로 높기 때문입니다.

아래와 같은 데이터에서 왼쪽은 선형 모델이 예측한 결과이고, 오른쪽은 비선형 성향이 있는 모델이 예측한 결과입니다. 데이터가 비선형인 경우 당연히 비선형 성향이 있는 모델이 잘 예측할 것입니다.

하지만, 비선형 함수는 상대적으로 과적합 문제가 심하다는 점을 인지해야 합니다.
딥러닝이 뛰어난 성과를 내는 Computer Vision, Language .. 분야의 데이터는 비정형 데이터입니다.


✅ Sigmoid

활성화 함수는 현재도 다양하게 나오고 있지만, 거의 처음에는 Sigmoid(시그모이드) 함수를 사용했습니다.
시그모이드 함수는 로지스틱 회귀에서 쓰이는 함수입니다.(이진 분류)

시그모이드 함수 공식은 다음과 같습니다.

x, 즉 입력 값이 커질수록 시그모이드 함수의 반환값은 1에 가까워지며, 입력 값이 작아질수록 0에 가까워집니다. 입력 값이 0이면 0.5를 반환합니다. 이는 0~1까지의 수를 반환함을 의미하며, 확률값을 나타냅니다.

딥러닝에서 가중치를 업데이트할 때, 경사 하강법을 이용합니다.
경사 하강법은 손실함수를 해당 가중치로 미분하여 업데이트 하는 방법을 의미합니다.
하지만, 시그모이드를 활성화 함수로 사용하게 되는 경우, 값이 매우 커지거나 작아지는 경우 Gradient Vanishing(그래디언트 손실)이 오게 됩니다.
이는 시그모이드 함수를 미분한 함수를 통해 알 수 있습니다.

이러한 이유로 현재는 은닉층에서 활성화 함수로 시그모이드 함수를 거의 사용하지 않습니다.
시그모이드 함수는 최종적으로 값을 반환하는 경우(이진 분류)에 사용합니다.
즉, Output Layer에서 사용합니다.


✅ Hyperbolic Tangent(Tanh)

이후에 활성화 함수로 하이퍼볼릭 탄젠트 함수가 나왔습니다.

하이퍼볼릭 탄젠트 함수의 공식은 다음과 같습니다.

하이퍼볼릭 탄젠트와 시그모이드의 차이라고 한다면, 반환값이 0~1 사이였던 시그모이드에 비해 하이퍼볼릭 탄젠트는 반환값이 -1~1이라는 점입니다. 하이퍼볼릭 탄젠트는 입력 값이 커질수록 1에 가까워지며, 작아질수록 -1에 가까워집니다.

하이퍼볼릭 탄젠트는 시그모이드와는 다르게 음의 값도 표현할 수 있으며, 시그모이드에 비해 수렴이 빠르다는 장점이 있습니다.

하지만, 하이퍼볼릭 탄젠트도 Gradient Vanishing 문제로 은닉층에서 거의 사용되지 않습니다.
(제가 공부하고 있는 CNN에서는 거의 사용하지 않는다고 하지만, 찾아보니 RNN에서는 사용하는 모양입니다.)



✅ ReLU(Rectified Linear Unit)

렐루는 현대 딥러닝에서 많이 사용하고 있는 활성화 함수입니다.
렐루는 입력 값이 0보다 작거나 같으면 0으로 반환해주며, 0보다 크면 값을 그대로 출력합니다. 렐루를 직관적인 식과 수학적인 식으로 표현하면 다음과 같습니다.

렐루는 기존의 Gradient Vanishing 문제를 효과적으로 해결하였습니다.
하지만, 렐루는 0보다 작거나 같은 값에 대해 항상 0을 출력하기 때문에 음의 값을 표현할 수 없습니다.
따라서 이를 해결하기 위해 Leaky ReLU와 같은 변형 함수가 만들어졌습니다. 그럼에도 렐루 함수를 사용해도 성능상 큰 차이가 없다고 합니다.



✅ Softmax

소프트맥스는 다중 분류에서 사용되는 활성화 함수입니다.
CNN을 공부하면, 이미지 분류를 하게 될텐데 이때 다중분류인 경우가 많습니다.
시그모이드는 이진 분류에 특화된 반면, 소프트맥스는 이진, 다중 분류를 포괄합니다.

이게 가능한 이유는 소프트맥스는 입력 값을 지수 형태로 바꾼 후 이를 전체 입력 값을 지수 형태로 바꾼 모든 값의 합으로 나누기 때문입니다.

소프트맥스는 은닉층에서 사용되는 활성화 함수는 아니고, 출력층에서 다중 분류시 사용되는 활성화 함수입니다.

오늘은 활성화 함수에 대해 공부해봤습니다.
이번에 공부한 활성화 함수 외에도 여러 함수가 있다는 것을 공부하면서 알게 되었습니다.
나중에 시간이 되면 다른 활성화 함수도 공부해보겠습니다.🙄



📜 Reference

딥러닝 CNN 완벽 가이드 - TFKeras 버전
3. 활성화 함수: 종류와 선택 기준
MIT introduction to deep learning
Understanding the Vanishing Gradient Problem and the Role of Activation Functions
Reproducibility in Deep Learning and Smooth Activations

profile
세종대학교 지능기전공학과 23

0개의 댓글