[밑바닥부터 시작하는 딥러닝] Ch 3.2 비선형 함수

비선형 함수

앞서 살펴보았던 계단 함수와 시그모이드 함수의 중요한 공통점은 둘 다 비선형 함수라는 것입니다. 시그모이드 함수는 곡선, 게단 함수는 계단처럼 구부러진 직선으로 나타나며, 동시에 비선형 함수로 분류됩니다. 

 

💡활성화 함수를 설명할 때 비선형 함수와 선형 함수라는 용어가 자주 등장합니다. 함수란 어떤 값을 입력하면 그에 따른 값을 돌려주는 변환기입니다. 이 변환기에 무언가 입력했을 때 출력이 입력의 상수배만큼 변하는 함수를 선형 함수라고 합니다. 수식으로는 $f(x) = ax +b$이고, 이때 a와 b는 상수입니다. 그래서 선형 함수는 곧은 1개의 직선이 됩니다. 한편, 비선형 함수는 문자 그대로 '선형이 아닌'  함수입니다. 즉, 직선 1개로는 그릴 수 없는 함수를 말합니다. 

 

신경망에서는 활성화 함수로 비선형 함수를 사용해야 합니다. 다르게 말하면 선형 함수를 사용해서는 안 됩니다. 왜냐하면 선형 함수를 이용하면 신경망의 층을 깊게하는 의미가 없어지기 때문입니다. 

 

 선형 함수의 문제는 층을 아무리 깊게 해도 '은닉층이 없는 네트워크'로도 똑같은 기능을 할 수 있다는데에 있습니다. 예시를 들어 설명해보겠습니다. 선형 함수인 $h(x) = cx$를 활성화 함수로 사용한 3층 네트워크를 떠올려보세요. 이를 식으로 나타내면 $y(x) = h(h(h(x)))$가 됩니다. 이 계산은 $y(x) = c *c *c* x$처럼 곱셈을 세 번 수행하지만, 실은 $y(x) = ax$와 똑같은 식입니다. $a =x c^3$이라고만 하면 끝이죠. 즉, 은닉층이 없는 네트워크로 표현할 수 있습니다. 이 예처럼 선형 함수를 이용해서는 여러 층으로 구성하는 이점을 살릴 수 없습니다. 그래서 층을 쌓는 혜택을 얻고 싶다면 활성화 함수로는 반드시 비선형 함수를 사용해야 합니다. 


ReLU 함수

지금가지 활성화 함수로서 계단 함수와 시그모이드 함수를 소개했습니다. 시그모이드 함수는 신경망 분야에서 오래전부터 이용해왔으나, 최근에는 RELU $(Rectified Linear Unit)$ 함수를 주로 이용합니다. ReLU는 입력이 0을 넘으면 그 입력을 그대로 출력하고, 0이하이면 0을 출력하는 함수입니다. 

ReLU 그래프

 

수식은 아래와 같습니다.

 

그래프와 수식에서 볼 수 있듯이 ReLU는 간단한 함수입니다. 구현은 아래와 같이 쉽게 구현할 수 있습니다. 

def relu(x):
	return np.maximum(0, x)

 

여기에서는 넘파이의 maximum 함수를 사용했습니다. maximum은 두 입력 중 큰 값을 선택해 반환하는 함수입니다. 

 

앞으로는 시그모이드 함수를 활성화 함수로 사용하지만, 후반부에서는 주로 ReLU 함수를 사용할 것입니다. 

 

이 글은 밑바닥부터 시작하는 딥러닝 책을 보며 공부하여 작성한 글입니다.

한빛미디어에서 출간한 '밑바닥부터 시작하는 딥러닝'의 코드를 담고 있습니다.