머신러닝, 딥러닝 ML, DL/이론

[Deep Learning] 2. 신경망, 활성화 함수(시그모이드 Sigmoid, 렐루 Relu)

킹남지 2021. 7. 24. 20:42
반응형

퍼셉트론에서는 가중치 값 (예시에서 $w1, w2, b$) 를 직접 설정했습니다.

반면에 신경망(인공 신경망이라고도 부름)에서는 가중치 매개변수의 적절한 값을 데이터로부터 '학습'해서 정합니다.

 

신경망

신경망의 구조는 아래와 같습니다.

.

Input Layer - Hidden Layer - Output Layer

(   입력층   -      은닉층     -     출력층    )

앞서 봤던 퍼셉트론의 구조와 비슷합니다.

 

퍼셉트론을 다시 수식으로 한번 표현해보겠습니다.

$y = \begin{pmatrix}0\;(b + w1x1 + w2x2 \leq 0 )\\1\;(b + w1x1 + w2x2 > 0)\end{pmatrix}$

(b는 편향 w1, w2는 가중치)

 

이때 함수 $h$ 를

$h(x) = \begin{pmatrix}0\;(x \leq 0 )\\1\;(x > 1)\end{pmatrix}$ 로 정의하면 위의 수식은

 

$y = h(b + w1x1 + w2x2)$ 로 나타낼 수 있습니다.

 

활성화 함수

 

앞에서 $h(x)$를 굳이 사용해서 표현한 이유는 활성화 함수에 대한 이야기를 하기 위해서입니다.

활성화 함수는 입력 신호의 총합이 활성화를 일으키는지를 정하는 역할을 합니다.

가중치가 달린 입력 신호와 편향의 총합을 계산하고 이를 $a$ 라고 하겠습니다.

$a = b + w1x1 + w2x2$ 로 표현하고, 그러면 위의 식은 $y = h(a)$ 로 표현 가능합니다.

그림으로 나타내면 위와 같이 나타낼 수 있습니다.

 

이전 시간에 본 임계값을 경계로 출력이 바뀌는 함수를 계단 함수(step function) 이라고 합니다.

0을 기준으로 하는 계단 함수

계단 함수와 같은 단순한 함수말고, 다른 함수를 보겠습니다.

(계단 함수는 미분 가능한 지점에서 미분 값이 0이기 때문에 사용하지 않습니다.)

 

시그모이드 함수

이번에는 시그모이드 함수(sigmoid function)을 보겠습니다.

시그모이드 함수의 식은

$h(x) = \frac{1}{1+e^{-x}}$ 입니다.

 

시그모이드 함수

시그모이드 함수의 그래프를 그려보면 위와 같습니다.

시그모이드 함수를 활성화 함수로 사용하면

출력이 연속적으로 변하며, 0 ~ 1사이의 실수(ex : 0.1123, 0.5565, 0.9972)가 출력될 것입니다.

(더 공부를 하면 알게되겠지만 시그모이드는 극단으로 향할수록 미분 값이 0이 되는 문제점이 있습니다.)

 

비선형 함수

이 전에도 비선형 함수의 중요한 점을 알았지만 시그모이드 함수가 나온 겸 

비선형 함수로 층을 쌓아야하는 이유를 수식적으로 표현해보겠습니다.

 

예시로 $h(x) = cx$를 활성화 함수로 사용한 3층 네트워크를 보면 바로 알 수 있습니다. ($c$는 임의의 값)

$y(x) = h(h(h(x)))$ 로 나타낼 수 있겠죠 즉, $y = c*c*c*x$입니다.

 

즉 $y(x) = ax$ 이때 $a=c^3$이라고 하면 똑같은 식이 됩니다.

이러면 $g(x) = ax$ 를 활성화 함수로 사용한 단층 네트워크와 같고 여러 층으로 쌓는 의미가 없다는 것을 확인할 수 있습니다.

 

따라서 층을 쌓아서 뭔가 효과를 얻고 싶다면 활성화 함수로 비선형 함수를 채택해야합니다.

 

렐루(ReLU) 함수

이번에는 ReLU(Rectified Linear Unit) 함수를 보겠습니다. 

실제로 ReLU와 유사한 함수를 많이 이용합니다. 

 

먼저 렐루 함수를 수식으로 나타내겠습니다.

 

$h(x) = \begin{pmatrix}x\;(x > 0 )\\0\;(x \leq 0)\end{pmatrix}$ 

 

정말 간단합니다 0보다 큰 값은 입력을 그대로 0보다 작은 값이 0입니다.

ReLU

그림으로 나타내면 위와 같습니다.

ReLU또한 0 보다 작은 부분에서 미분 값이 0이 되는 문제가 있습니다.

그런 문제를 해결하기 위해 LeakyReLU, ELU, PReLU, swish, mish 등 ReLU와 유사한 함수 많이 사용합니다.

 

관심이 있으신 분들은 최근 나온 swish와 mish에 대한 내용을 한번 보셔도 좋습니다. (링크 참고)

https://eehoeskrap.tistory.com/440

 

[Deep Learning] Activation Function : Swish vs Mish

활성화 함수(Activation Function)는 입력을 받아 활성, 비활성을 결정하는데 사용되는 함수이다. 어떤 활성화 함수를 사용하느냐에 따라 그 출력 값이 달라지기 때문에 적절한 활성화 함수를 사용하

eehoeskrap.tistory.com

 

ReLU 또한 비선형 함수입니다. $x = 0$ 부분만 봐도 선형성을 가진다고 할 수 없습니다 !

이번 포스팅에서는 활성화 함수까지만 알아보겠습니다.

 

읽어주셔서 감사합니다^^

 

 

[참고자료]

[1] 밑바닥부터 시작하는 딥러닝1 (사이토 고키)

반응형