* 해당 포스트는 기초적인 딥러닝을 다루므로, 전문적인 지식을 탐구하기엔 부족할 수 있습니다.
또한, 전자공학 또는 컴퓨터공학에 사용되는 기초적 배경지식을 전제로 합니다.
질문과 비판, 오류 정정 등 모든 댓글 환영합니다.
2023.09.19 - [딥러닝/기초 이론] - #0. INTRO
2023.10.09 - [딥러닝/기초 이론] - #1. 머신러닝 VS 딥러닝
2023.10.10 - [딥러닝/기초 이론] - #2. 인공신경망
#2. 인공신경망
* 해당 포스트는 기초적인 딥러닝을 다루므로, 전문적인 지식을 탐구하기엔 부족할 수 있습니다. 또한, 전자공학 또는 컴퓨터공학에 사용되는 기초적 배경지식을 전제로 합니다. 질문과 비판,
bongjukim.tistory.com
지난 시간에서는 딥러닝의 가장 기본 구조가 되는 인공신경망에 대해 알아보았다. hidden layer를 단순히 많이 쌓는다고 해도 우리가 원하는 목표를 이루기에는 턱없이 부족하기에, 우리는 활성화 함수를 사용해야 한다고 했다.
이번 시간에는 활성화 함수가 무엇이고, 어떻게 쓰이는지, 종류에는 어떤게 있는지 살펴보자.
활성화 함수의 의의?
활성화 함수란, 인공신경망에서의 입력값을 변환하여 출력하는 함수를 말한다.
지난 시간의 설명과 같이, hidden layer를 여러 층 쌓았음에도 선형 함수로만 나타내졌던 한계를 해결하기 위해 우리는 활성화 함수를 사용한다고 했다.
그럼, 왜 비선형 함수를 써야할까? 선형 함수는 쓰면 안될까?

※ 딥러닝 또는 컴퓨터 비전에 대해 어느 정도 지식이 있으신 분이라면, 위의 예시는 오버피팅에 해당할 수 있다고 생각하실 수 있습니다. 하지만, 여기서는 비선형함수의 중요성을 직관적으로 알기 위한 예시이므로, 불편하셔도 넓은 아량으로 양해바랍니다.
위의 예시가 비선형 함수의 장점을 설명해준다.
파란색과 빨간색을 완벽히 구분하려고 할 때, 우리는 선형함수, 즉 하나의 직선으로는 두 색을 절대 구분하지 못한다. 하지만, 비선형함수를 사용한다면 매우 쉽게 두 색을 완벽히 구분할 수 있다.
이 때, 비선형함수는 선형함수에 비해 매우 복잡하게 그려지는 것을 알 수 있다. 결국 우리는 간단한 것을 더욱 복잡하게 만들기 위해 활성화함수를 사용한다(우리는 사람처럼 복잡하게 계산하여 정교하게 정답을 도출하는 것을 목표로 했으니까).
[선형 * 선형 = 선형]이고, [선형 * 비선형(활성화함수) = 비선형]인 것은 우리의 자랑스러운 공학도라면 당연히 알테니까 넘어가겠다.
활성화 함수의 종류
활성화 함수의 종류로는 시그모이드(sigmoid), 탄젠트하이퍼볼릭(tanh), 렐루(ReLU), 리키 렐루(leaky ReLU), 소프트맥스(softmax) 함수 등이 있다.
- 시그모이드(sigmoid) 함수


- 가장 처음 활성화 함수로 사용된 함수로, [0,1]의 출력 범위를 가진다.
- x값이 0 근처일 때, 값의 변화가 급격히 일어나기 때문에 근소한 값의 변화를 잘 캐치한다.
- x값이 0에서 점점 멀어질수록 값이 포화(saturation)된다.
- 미분형을 봤을 때, x값이 0에서 점점 멀어질수록 기울기가 소실된다(= gradient vanishing).
- x값이 0일 때의 출력이 0이 아니기 때문에(not zero-centered), 업데이트 속도가 느려진다.


위의 수식 풀이의 뜻을 정확히 알기 위해선, 후에 backpropagation과 loss에 대해 공부를 해야한다. 직관적으로 이해하고 싶다면, 해당 사이트를 통해서 공부해보자.
- 탄젠트하이퍼볼릭(tanh) 함수

- sigmoid 함수의 한계였던, not zero-centered의 문제를 해결하였다.
- 하지만, 여전히 0에서 멀어질수록 포화(saturation)의 문제는 존재한다.
- 렐루(ReLU) 함수


- sigmoid의 함수의 한계였던 포화(saturation) 문제를 해결하였다.
- 출력값은 0 또는 기존의 입력값(양수), 미분 출력값도 0 또는 1(양수)이기 때문에 지그재그 현상은 여전히 남아있다.
- 하지만, sigmoid와 비교했을 때 업데이트 속도가 현저히 빠르다.
- 음수 입력 시 0을 반환하므로, 가중치의 업데이트가 진행되지 않는다.
"아니, sigmoid도 지그재그 현상때문에 업데이트 속도 느리다메ㅡㅡ 이거도 똑같은데 왜 속도가 더 빨라?"

간단하게 생각해보자. y=exp(x)를 계산하는게 복잡하고 힘들까, y=x를 계산하는게 복잡하고 힘들까? 이는 사람에게도, 컴퓨터에게도 마찬가지로 y=exp(x)를 계산하는게 더 복잡하고 힘들다. 이는 자료구조와 알고리즘을 학습한 우리 자랑스러운 공학도라면 자세히 알 것이지만, 일반적으로 생각해도 전자가 더 힘들 것이라고는 생각 가능하므로 넘어가자.
- 이외의 함수들
현대의 수많은 과학자들은 not zero-centered의 문제, 포화(satruation)의 문제, 계산량의 문제를 해결하기 위해 ReLU의 변형인 leaky ReLU(음수일 경우 거의 0에 가까운 음수를 출력함), ELU(exp형태의 그래프) 등 여러 활성화 함수들을 개발해냈다.

현대의 활성화 함수
하지만, 구관이 명관이라고 하지 않는가. 결국 제일 많이 쓰이는 것은 hidden layer에서는 ReLU함수가, output layer에서는 2가지의 분류에서는 sigmoid함수가, 다중 분류에서는 softmax함수(sigmoid와 형태는 똑같음)이다.
조금만 자세히 설명하자면,
hidden layer의 층이 많을수록 계산은 복잡해지고, 연산량은 많아지므로 최대한 간단한 함수, 즉 ReLU를 쓴다.
output layer에서는 :
2가지의 분류(이진분류)의 경우, 0에서 1까지의 범위로 출력이 나타나므로, 2개의 출력 노드에서 나오는 각각의 출력값이 정답일 확률로 간주가 가능한 sigmoid를 쓴다. (ex. 1번(강아지) = 0.88, 2번(고양이) = 0.54)
다중 분류의 경우, sigmoid와 마찬가지로 0에서 1까지의 범위로 출력이 나타나지만, k개의 출력 노드에서 나오는 각각의 출력값이 정답일 확률이며, 각각의 출력값을 더하면 1이 되는 softmax를 쓴다. (ex. 1번(강아지) = 0.77, 2번(고양이) = 0.11, 3번(사람) = 0.1, 4번(코끼리) = 0.02)
이번 시간에는 활성화 함수에 대해 알아보았는데, 필자의 포스트만을 보고 공부한 독자분들이라면, 의문이 들 수 있다.
왜냐하면, 각 활성화 함수마다 미분형을 제시했고, 이 미분형이 가중치 업데이트에 매우 중요한 영향을 미친다는 말은 했지만, 정작 미분형이 어떻게 영향을 미친다는건지는 설명을 하지 않았기 때문이다.
활성화 함수는 1차적으로, 선형 함수를 비선형 함수로 활성화시켜준다는 점에서 의의가 있고, 2차적으로는 가중치 업데이트를 좀 더 정교하고, 쉽게 만들어준다는 점에서 의의가 있다.
다음 시간에는 대체 가중치가 어떻게 업데이트가 된다는건지, 그리고 가중치가 업데이트를 하기 위해 어떤 방법이 사용되는지 설명하는 LOSS FUNCTION과 OPTIMIZATION에 대해서 알아보도록 하자.
keyword) 활성화함수, ACTIVATION FUNCTION, SIGMOID, RELU, TANH, 가중치 업데이트
'딥러닝 > 기초 이론' 카테고리의 다른 글
#4. 손실함수(Loss Function) (2) | 2024.02.16 |
---|---|
#2. 인공신경망 (2) | 2023.10.10 |
#1. 머신러닝 VS 딥러닝 (0) | 2023.10.09 |
#0. INTRO (0) | 2023.09.19 |