본문 바로가기
딥러닝

04. 딥러닝 신경망(Neural Network) - 활성화 함수, 계단 함수, 시그모이드 함수, ReLU의 모든 것

by Go! Jake 2021. 5. 1.

 

신경망 (Neural Network)

앞 서 퍼셉트론의 개념인 입력 신호와 가중치 그리고 임계점에 대해서 배웠고 퍼셉트론의 한계점, 다층 퍼셉트론을 통한 극복 방법을 배웠다. 지금까지 배운 가중치는 사람이 '직접' 설정했다면, 신경망은 가중치 매개변수의 적절한 값을 데이터로부터 자동으로 학습하는 성질을 가지고 있다.

 

- 이전 글: 03. 퍼셉트론의 한계와 다층 퍼셉트론

 

  해당 포스팅은 '밑바닥부터 시작하는 딥러닝'과 기타 인터넷 자료를 요약한 자료입니다.

 

 

 

1. 신경망의 구성

신경망구조
출처: https://www.researchgate.net/figure/Artificial-neural-network-architecture-ANN-i-h-1-h-2-h-n-o_fig1_321259051

신경망(Neutal networks)은 동물의 뇌의 동작을 모사하여 데이터 간의 숨은 관계를 인지하는 알고리즘이다. 신경망은 여러 노드의 집합으로 형성되어 있는 데, 뇌의 뉴런을 대략적으로 모델링하고 있다. 실제 뉴런끼리 연결되는 시냅스 부위에서,  하나의 뉴런에서 다른 뉴런으로 시그널을 보내는 것을 연상하면 이해가 쉽다.

 

이전 시간에 다룬 퍼셉트론 개념을 사용하면, 신경망은 이러한 퍼셉트론을 여러 개 가진 하나의 집합적인 단위 개념이다.

위 그림에서 가장 왼쪽 줄을 입력층(Input layer), 맨 오른쪽 줄을 출력층(Output layer), 중간 줄을 은닉층(Hidden layers)이라고 한다.

 

뉴런은 특히 딥러닝에서 다층으로 구성되어 있다. Preceding layer와 Following layer를 통해 즉각적으로 연결된 구조를 가지고 있다. 입력 층에서는 외부 데이터를 받고, 출력 층에서는 최종 결과 값을 표출한다. 이 사이에 은닉층이 존재하지 않거나 또는 여러 은닉층이 존재한다. 또한 각 노드는 가중치가 있으며 이는 하나의 노드에서 다른 노드로의 영향도를 결정한다.

 

2. 활성화 함수

활성화 함수는 입력 신호의 총합으로 출력 신호로 변환하는 함수이다. 이는 이전 글에서 배운, 편향을 포함한 퍼셉트론에서 편향과, 노드, 그리고 가중치를 계산한 총합 값과 같다. 활성화 함수는 이 총합이 활성화를 일으키는지 계산한다.

 

1) 가중치가 곱해진 입력 신호의 총합을 계산한다.

2) 그 합을 활성화 함수에 입력해 결과를 낸다.

 

따라서, 활성화 함수는 아래의 식으로 표현될 수 있다.

 

[식 3.3]

 

계단 함수 (Step function) vs. 시그모이드 함수 (Sigmoid function)

  식 3.3과 같이, 활성화 함수는 임계값을 경계로 출력이 바뀌는데, 이러한 함수를 계단 함수라고 한다.

다음은 신경망에서 자주 이용하는 활성화 함수인 시그모이드 함수 (sigmoid function)를 나타낸 식이다. 시그모이드 함수 중 logistic sigmoid function을 소개하면 아래와 같다.

 

[식 3.4 시그모이드 함수]

신경망에서는 활성화 함수로 시그모이드 함수를 이용하여 신호를 변환하고, 그 변환된 신호를 다음 뉴런에 전달한다. 퍼셉트론과 신경망의 주된 차이는 활성화 함수의 차이뿐이다. 

 

스텝함수/시그모이드함수
출처: https://dnd.or.kr/ViewImage.php?Type=F&aid=630796&id=F2&afn=196_DND_17_3_83&fn=_0196DND

시그모이드 함수는 입력된 데이터를 주로 0과 1 사이의 값으로 출력하는 비선형 함수이며 미분 가능한 연속성을 가진 함수이다. 수치적 근사를 할 수 있다는 점에서 계단 함수와 다르다. 추후 딥러닝에서 활성화 함수로 유용하게 사용되는 데, 이는 생물학적 신경망의 활성화 (activation potential) 개념에서 영향을 받았다. 활성화를 표현할 때 1) 신경망은, 낮은 입력에 대해서는, 여러 뉴런이 임계점을 넘지 않기 때문에 매우 낮은 반응을 하며, 2) 중간 수준의 입력에서는 선형성을 가지며 활동하며, 3) 높은 수준의 입력에서는 ceiling effect로 불리는, 정체기를 가지고 있기 때문이다. 또한 시그모이드 함수는 작은 입력의 변화에도 반응할 수 있다는 특징이 있다. Psychophysiology 분야에서는 Yerkes-Dodson Law로 알려져 있다.

 

비선형 함수

계단 함수와 시그모이드 함수의 주요 공통점으로 둘 모두 비선형 함수라는 점이 있다. 신경망에서는 활성화 함수를 사용할 때 비선형 함수를 사용해야 한다. 선형인 경우 신경망의 층을 깊게 하는 의미가 없기 때문이다. 즉, 선형 함수는 아무리 깊더라도 '은닉층이 없는 네트워크'로도 기능이 동일하기 때문이다. 예를 들어, h(x) = cx를 활성화 함수로 사용하는 경우 3층 네트워크를 구성한다면, y(x) = h(h(h(x)))가 되며, y(x) = c*c*c*x가 되지만 실제로는 y(x) = a*x와 같은 식이다. 즉 은닉층이 없는 네트워크로 표현된다. 따라서, 층을 쌓는 구성을 위해 반드시 비선형 함수를 사용해야 한다.

 

 

 

 

시그모이드 함수 vs. ReLU

시그모이드 함수는 신경망 분야에서 오래전부터 이용해왔으나, 최근에는 ReLU (Rectified Linear Unit) 함수를 주로 이용한다. ReLU는 입력이 0을 넘으면 그 입력을 그대로 출력하고, 0 이하이면 0을 출력하는 함수이다.

 

ReLU함수그래프
출처: https://www.mygreatlearning.com/blog/relu-activation-function/

수식으로는 아래와 같이 쓸 수 있다.

[식 3.5 ReLU 함수]

 

  ReLU 함수는 신경망에서 시그모이드 함수에 비해 몇 가지 주요 이점이 있다. 계산하기 빠르고, 음수 입력에 반응하여 계속 변하지는 않는다는 점에서 생물학적 신경망의 활성화와 유사하다. 추가로, 양수 입력에 대해서 ReLu 함수는 기울기 1을 가지고 있는 반면 시그모이드 함수의 기울기는 0으로 수렴하게 된다. 이는 시그모이드 활성화 함수를 훈련을 느리게 한다는 특징이 된다. 이는 기울기 Vanishing graident problem로 알려져 있다. ReLU 함수는 기울기가 작아지지 않기 때문에 학습 프로세스가 느려지지 않는다.

    다만, 음수 입력에 대해 기울기 0을 가지는 부분은 zero gradient problem으로 알려진, 유사한 문제가 있는 데, 이는 선형 항을 추가하여 보상할 수 있다.

 

 

시그모이드 함수의 활용 예시

시그모이드 함수가 중요한 머신 러닝의 주요 분야는 로지스틱 회귀 모델이다. binary event에서 가능성을 예측할 때 사용된다. 예를 들어 죽거나 살거나, 아프거나 괜찮거나, 거짓이거나 진실이거나 등이다. 

 

여기서는 종양의 크기 (tumor size (cm))과 전이가 얼마나 되었는 지에 대한 상관관계를 예측해 보자.

 

종양크기상관관계
출처: https://deepai.org/machine-learning-glossary-and-terms/sigmoid-function

종양 크기와 전이 여부에 대한 측정은 위와 같다. 이 때 가능성에 대해 예측하기 위하여 시그모이드 함수를 사용한다.

 

 

시그모이드 함수 식
[식 3.6]

m과 b에 대한 최적값을 입력하면 종양 크기와 전이 여부 데이터에 맞는 시그모이드 함수를 찾을 수 있다. m = 1.87, b= -5.47을 사용하면 아래와 같다.

 

 

 

종양 크기 상관 관계 그래프2
출처: https://deepai.org/machine-learning-glossary-and-terms/sigmoid-function

종양 크기를 3cm로 설정하면 아래와 같다. 직관적으로 어느 정도 맞음을 알 수 있다.

3cm일 때 시그모이드 함수 값

종양 크기를 6cm로 설정하면 아래와 같다. 기존 데이터는 4cm 이상인 경우 퍼진 것으로 모르고 높은 수치를 가지는 것으로 예측하고 있음을 알 수 있다.

6cm일 때 시그모이드 함수 값

정리
  • 신경망은 동물의 뇌의 동작을 모사하여 데이터 간의 숨은 관계를 인지하는 알고리즘이다. 입력층, 출력층, 은닉층으로 구성되어 있다.
  • 활성화 함수는 입력 신호의 총합을 출력 신호로 변환하는 함수이다.
  • 시그모이드 함수는 입력된 데이터를 주로 0과 1 사이의 값으로 출력하는 비선형 함수이며 미분 가능한 연속성을 가진 함수이다.
  • ReLU 함수는 0을 넘으면 그 입력을 그대로 출력하고, 0 이하이면 0을 출력하는 함수이다.
  • 신경망에서는 최근 ReLU 함수를 자주 사용한다.

 

Reference

Sigmoid Function - an overview | ScienceDirect Topics

Sigmoid Function Definition | DeepAI

 

 

- 다음글: 05. 딥러닝 신경망 구현의 기초 - 출력층, 항등함수, 소프트맥스함수, 분류, 회귀

 

 

댓글