DS Study/밑바닥부터 시작하는 딥러닝 1

[밑시딥1] [2] 활성화함수 (Activation Function)

23학번이수현 2024. 7. 26. 17:15

0.Review

- [1] 퍼셉트론에서 설명한 퍼셉트론이 다음과 같은 식이라는 것을 알고 있다.

- 임계값 theta를 우변으로 한번 넘겨보자. 

- 여기서 b는 편향(bias)를 의미한다

즉, b = -theta 를 의미한다. /

 

2. 활성화 함수(Activation Function)

퍼셉트론 식에서 Heaviside Function을 이용해주면 다음과 같이 식 변형이 가능하다.

 

cf) Heaviside Function?

- 즉, h() 안에 있는 수치에 따라서 Return 값이 0 또는 1이 결정된다.

- 여기서 h()를 활성화 함수(Activation Function)이라고 정의한다. 

- 이를 신경망으로 나타내면 다음과 같다.

 

- 밑시딥 1 에 나온 더 다양한 활성화함수에 대해서 알아보자.

 

2.1. 시그모이드 (Sigmoid)

- 시그모이드 함수의 특징은 다음과 같다.

1. S자 형태 (매끄러움)
- 이 매끄러움이 신경망 학습에 매우 중요한 역할

- 입력에 따라 출력이 연속적으로 변화함

 

2. 비선형 함수(Non-linear Function)

- 비선형 함수이기 때문에 학습하는데 효과적임(선형 함수는 학습이 어려움 이 이유에 대해선 뒤에 언급)

 

3. f'(x)

 

- 미분했을 때, 연산이 곱셈과, 뺄셈으로만 이루어져 있기 때문에, 계산이 빠름(역전파)

 

- Code 구현

import numpy as np

def sigmoid(x):
    return 1/(1+np.e**(-x))

 

 

2.2. ReLU 함수

 

- ReLU는 입력이 0보다 크면 그 입력을 그대로, 0 이하면 0을 출력하는 함수이다. cf) Sigmoid의 단점을 해결해줬음)

- 코드 구현

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

 

3. 선형 함수(Linear Function)의 문제점?

- 만약 f(x) = ax 라고 가정하자, 그러면 은닉층이 3층인 식은 다음과 같이

- f(f(f(x))) = a^3x가 되버린다. 

- 즉, 학습을 하더라도 1차가 되어버리기 때문에 미분을 하게 될경우 0차가 되어 학습에 지장이 되어버린다. 

- 그래서 딥러닝의 활성화 함수는 반드시 비선형 함수를 쌓아야 한다.