[밑시딥1] 활성화함수가 중요한 이유 – 3장 신경망

신경망에서 활성화함수가 왜 중요할까요?

신경망은 입력층 은닉층 출력층으로 이루어져 있고, 이런 각각의 퍼셉트론층에 비선형성을 부여하는 것이 필요하기 때문입니다. 이것을 가능하게 해주는 것이 활성화함수입니다.

퍼셉트론에 비선형성을 부여하는 게 왜 중요한가?

퍼셉트론에 비선형성을 부여하기 위해 활성화함수를 사용한다는 것은 많이 들어보셨을 겁니다. 선형적인 퍼셉트론을 수백 수만층 쌓아봐야 한 층의 퍼셉트론과 다를 바가 없기 때문입니다. (선형적인 퍼셉트론 100층은 결국 1층의 퍼셉트론으로 표현가능하기 때문에) 그런데 앞서 배웠던 AND, NAND, OR 게이트로 XOR게이트를 만드는 과정은 활성화함수 없이 비선형적인 함수를 표현했습니다. 이게 어떻게 가능했을까요?

사실 AND, NAND, OR, XOR 전부 비선형함수입니다.

이를 이해하기 위해 AND 게이트를 단층퍼셉트론으로 구현한 코드를 봅시다.

def AND(x1, x2):
	w1, w2, theta = 0.5, 0.5, 0.7
	tmp = x1 * w1 + x2 * w2
	if tmp <= theta:
		return 0
	elif tmp >theta:
		return 1

가중치(w)와 입력값(x)를 연산하는 로직 외에도 임계값(theta)를 넘으면 1, 그렇지 않으면 0인 로직이 존재합니다. 그렇습니다. 구현했던 AND게이트 안에는 활성화함수가 포함되어 있던 것입니다.

임계값을 넘는지 안넘는지에 따라 다르게 작동시켰던 저 부분이 바로 활성화함수에 해당합니다.

  1. 비선형성을 더 잘 부여하기위해
  2. 신경망에서 학습을 잘시키고 vanishing gradient를 줄이기 위해

위의 두가지 이유로 다양한 활성화 함수가 나오게 됩니다.

아래는 유명한 활성화함수인 시그모이드와 ReLU 입니다.

시그모이드(Sigmoid) 함수

시그모이드 함수는 다음과 같은 수식으로 표현됩니다:

f(x) = 1 / 1 + e-x

특징

  1. 출력 범위: 시그모이드 함수의 출력 범위는 (0, 1)로 제한되어 있습니다. 이는 확률과 같이 0과 1 사이의 값이 필요한 경우에 유용하며, 특히 이진 분류 문제의 출력층에서 많이 사용됩니다.
  2. 부드러운 그래디언트: 시그모이드 함수는 부드러운 S자 형태의 곡선을 가지고 있어, 작은 변화에도 그래디언트가 존재합니다. 이는 그래디언트 기반의 최적화 알고리즘에서 중요합니다.

ReLU(Rectified Linear Unit) 함수

ReLU 함수는 다음과 같은 수식으로 표현됩니다:

f(x) = max(0, x)

특징

  1. 계산 효율성: ReLU는 최대 함수를 사용하여 계산하기 때문에, 시그모이드나 하이퍼볼릭 탄젠트(Tanh) 함수에 비해 계산상의 이점이 있습니다. 이는 신경망의 학습 속도를 향상시킵니다.
  2. 희소성(Sparsity): ReLU는 음수 입력에 대해 0을 출력합니다. 이는 활성화된 뉴런의 수를 자연스럽게 줄이고, 결과적으로 희소한 표현을 생성합니다. 희소성은 많은 기계 학습 문제에서 유용하게 활용될 수 있습니다.
  3. 기울기 소실 문제 감소: 전통적인 시그모이드나 Tanh 함수는 입력 값의 절대값이 클 때 그래디언트가 매우 작아지는 기울기 소실(Vanishing Gradient) 문제를 겪습니다. 반면, ReLU는 양수 입력에 대해 그래디언트가 일정하게 유지되므로, 이러한 문제를 어느 정도 해결합니다.

Leave a Comment