| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
- list
- dataframe
- c#
- matplotlib
- PySpark
- numpy
- Google Excel
- GIT
- django
- hive
- math
- Redshift
- SQL
- string
- PostgreSQL
- 파이썬
- Github
- gas
- Excel
- Google Spreadsheet
- Python
- Java
- PANDAS
- google apps script
- Tkinter
- Presto
- array
- Apache
- Kotlin
- Today
- Total
달나라 노트
Activation Function 활성화 함수 (Sigmoid, Tanh, ReLU) 본문
y = wx + b를 통해 딥러닝을 진행하면 상황에 따라 출력값의 숫자가 매우 커지는 경우가 있을 수 있습니다.
이런 상황이 지속되면 컴퓨터의 계산 가능한 범위를 넘어서는 크기의 숫자가 나올 수도 있습니다.
또한 단순한 y = wx + b와 같은 연산만 반복하게 되면 input과 output의 관계성이 선형으로만 정의되어 단조로운 선형(Linearity) 패턴만 가지게 될 수 있습니다.
이렇게되면 복잡한 패턴을 가지는 현실의 다양한 패턴들을 구체화하기 어려울 수 있죠.
그래서 Deep Learning의 핵심 중 하나는 비선형(Non-Linearity) 패턴을 구현하는 주는 것입니다.
위같은 현상을 방지하면서 인공 신경망을 거칠 때 마다 나오는 output 값을 특정 범위 내로 제한하여 output값이 목표값에 더 잘 가까워질 수 있도록 도와주는 것이 활성화 함수(Activation Function)입니다.
활성화 함수는 y = wx + b의 결과값인 y를 그대로 사용하지 않고 y값을 얼마나 활성화할지를 결정하는 함수입니다.
마치 신경에서 신호가 전달될 때 모든 세기의 신호가 전달되는게 아니라 역치 이상의 신호만 다음 뉴런으로 전달되는 것과 같은 맥락이죠.
각 Activation Function에 대한 자세한 내용은 다른 글에서 알아보고 이 글에서는 대표적인 Activation Function와 각각의 Activation Function을 어떻게 사용하는지, 그리고 각각의 간단한 특징을 알아봅니다.
* Sigmoid
Sigmoid 순전파
y = 1 / (1 + e^(-x))
Sigmoid 역전파
xb = yb * у * (1 - у)
Sigmoid 사용 예시
y = wx + b # 순전파
y = 1 / (1 + e^(-y)) # sigmoid 순전파
yb = y - t # 역전파
yb = yb * y * (1 - y) # sigmoid 역전파
Activation Function은 위 식에서처럼
순전파에서는 y = wx + b의 결과값 y를 sigmoid라는 식을 통해 y값을 한번 더 변경하여 계산 결과를 특정 값으로 변형합니다.
역전파에서는 t(목표값)과의 차이인 yb를 sigmoid 역전파 식을 통해 yb값을 한번 더 변경하여 계산 결과를 특정 값으로 변형합니다.
이렇게 Activation Function은 어떤 계산의 결과를 특정 값으로 변형시키는 역할을 합니다.
Sigmoid는 활성화 함수를 거치면 값이 0~1 사이의 값으로 변환되므로 다양성이 좀 줄어드는 단점이 있습니다.
그래서 잘 사용되지는 않습니다.
* tanh
Tanh 순전파
y = tanh(x)
Tanh 역전파
xb = yb * (1 + y) * (1 - y)
Tanh 사용 예시
y = wx + b # 순전파
y = tanh(y) # tanh 순전파
yb = y - t # 역전파
yb = yb * (1 + y) * (1 - y) # tanh 역전파
Activation Function은 위 식에서처럼
순전파에서는 y = wx + b의 결과값 y를 tanh라는 식을 통해 y값을 한번 더 변경하여 계산 결과를 특정 값으로 변형합니다.
역전파에서는 t(목표값)과의 차이인 yb를 tanh 역전파 식을 통해 yb값을 한번 더 변경하여 계산 결과를 특정 값으로 변형합니다.
이렇게 Activation Function은 어떤 계산의 결과를 특정 값으로 변형시키는 역할을 합니다.
Tanh는 Sigmoid와 비슷하게 활성화 함수를 거치면 값이 -1~1 사이의 값으로 변환되므로 다양성이 좀 줄어드는 단점이 있습니다.
그래서 잘 사용되지는 않습니다.
* ReLU
ReLU 순전파
y = x * (x > 0)
ReLU 역전파
xb = yb * (y > 0)
ReLU 사용 예시
y = wx + b # 순전파
y = y * (y > 0) # ReLU 순전파
yb = y - t # 역전파
yb = yb * (y > 0) # ReLU 역전파
Activation Function은 위 식에서처럼
순전파에서는 y = wx + b의 결과값 y를 ReLU라는 식을 통해 y값을 한번 더 변경하여 계산 결과를 특정 값으로 변형합니다.
역전파에서는 t(목표값)과의 차이인 yb를 ReLU 역전파 식을 통해 yb값을 한번 더 변경하여 계산 결과를 특정 값으로 변형합니다.
이렇게 Activation Function은 어떤 계산의 결과를 특정 값으로 변형시키는 역할을 합니다.
ReLU는 Sigmoid, Tanh와는 달리 0보다 큰 값에 대해서는 그 값을 그대로 return합니다.
따라서 모든 output값을 -1~1 사이의 값으로 만들어버리는 Sigmoid, Tanh와는 달리 ReLU는 양수값에서 더 큰 다양성을 띕니다.
단, 음수값에 대해서는 ReLU가 음수값을 다 0으로 만들어버린다는 점이 있긴 합니다. 이것을 음수 값에 대해 죽은 뉴런(Dead Neuron)이라고 표현합니다.
이러한 이유로 현재는 ReLU가 자주 사용되는 Activation Function 중 하나입니다.
'AI > Deep Learning' 카테고리의 다른 글
| 가중치(W, Weight)와 편향(B, Bias) (0) | 2025.11.12 |
|---|---|
| Sampling과 Resampling (feat. 복원 추출/비복원 추출) (0) | 2025.11.11 |
| Cost Function 손실 함수 (1) | 2025.11.11 |
| 정규화(Normalization), 표준화(Standardization)란? (0) | 2025.11.08 |
| Deep Learning에서 Feature, Class란? (0) | 2025.11.08 |