본문 바로가기
IT/ML_용어

[ML][용어] tanh 함수(하이퍼볼릭 탄젠트 함수)

by Moons0827 2025. 10. 10.
반응형


tanh 함수는 -1~1 범위의 비선형 함수로, 평균이 0에 가까워 학습이 안정적이지만, 경사 소실 문제와 ReLU 대비 계산 비용이 높은 한계가 있습니다.


 

1. tanh 함수의 정의

하이퍼볼릭 탄젠트 함수는 입력값을 -1과 1 사이의 값으로 압축하는 S자 형태의 비선형 함수입니다.
수학적으로 정의하면 다음과 같습니다.

​여기서, 입력이 클수록 출력은 1에 가까워지며, 입력이 작을수록 출력은 -1에 가까워집니다.

즉, 가 매우 큰 양수면 e^x기 압도적으로 커져서 (x →  f(x) =

반대로  매우 큰 음수 e^-x가 압도적으로 커져서 (x → - f(x) = -



2. 주요 특징

1) 비선형성

tanh 함수는 비선형 함수를 제공하므로, 신경망이 복잡한 패턴을 학습할 수 있게 해줍니다.

2) 출력 범위

Sigmoid 함수가 0~1 범위를 가지는 것과 달리, tanh는 -1~1 범위를 가집니다.
평균값이 0에 가까워서 학습 시 데이터 분포를 균형 있게 유지하는 데 유리합니다.

 

3) 경사 소실 문제

입력의 절댓값이 커질수록 기울기(gradient)가 0에 가까워집니다. 따라서, 역전파 과정에서 기울기가 줄어드는 경사 소실 문제가 발생할 수 있습니다.

4) 중심성 (Zero-centered)

tanh 함수는 양수와 음수를 모두 출력하기 때문에 평균이 0에 가까우며, 이로 인해 학습 과정에서 편향이 누적되지 않고 보다 안정적으로 진행됩니다. 이는 항상 양수만 출력하는 sigmoid 함수와 구별되는 중요한 특징입니다.”

5) 계산 비용

tanh 함수는 지수 연산(exp)을 포함하기 때문에 ReLU에 비해 계산 과정이 다소 복잡하고 속도가 느립니다.


3. ReLU 함수 코드 사용 예시

import torch
import torch.nn as nn

# tanh 활성화 함수 정의
tanh = nn.Tanh()

# 입력 텐서 정의
input_tensor = torch.tensor([-2.0, -1.0, 0.0, 1.0, 2.0])

# tanh 함수 적용
output_tensor = tanh(input_tensor)

print("입력:", input_tensor)
print("출력:", output_tensor)
 
입력: tensor([-2., -1.,  0.,  1.,  2.])
출력: tensor([-0.9640, -0.7616,  0.0000,  0.7616,  0.9640])
반응형

'IT > ML_용어' 카테고리의 다른 글

[ML][용어] One-Hot Encoding (원-핫 인코딩)  (0) 2024.10.25
[ML][용어] Gradient Boosting Machine (GBM)  (4) 2024.10.22
[ML][용어] ReLU 함수  (2) 2024.10.15
[ML][용어] Sigmoid 함수  (1) 2024.10.11
[ML][용어] GELU 함수  (1) 2024.10.07

댓글