본문 바로가기
C.W.K.
Stream
Lesson 02 of 05 · published

활성함수: 선형층 사이에 비선형성 넣기

~8 min · activation, relu, sigmoid, non-linearity

Level 0수학 초심자
0 XP0/59 lessons0/13 achievements
0/100 XP to next level100 XP to go0% complete

선형층 사이에 굽힘을 넣기

편향을 포함한 affine 층을 여러 개 이어도 중간에 비선형 연산이 없으면 전체는 affine 변환 하나로 합쳐져. 깊이만 늘고 표현할 함수 종류는 안 늘어. 활성함수가 그 합성을 꺾어서 복잡한 경계를 표현하게 해.

용도에 따라 다른 활성

활성성질자주 쓰는 자리
ReLU. 싸고 빠르지만 음수 구간 기울기가 0.합성곱망과 MLP 은닉층. 죽은 뉴런이 생길 수 있어.
GELU입력 크기에 따라 부드럽게 게이트.Transformer feed-forward 블록.
SiLU. 매끈하고 음수도 조금 통과.현대 비전·언어 구조.
sigmoid(0,1) 범위. 큰 절댓값에서 포화.적절한 목적함수와 짝지은 이진 확률 출력이나 게이트.
tanh(-1,1) 범위. 이것도 큰 절댓값에서 포화.중심이 0인 게이트와 순환 상태 변환.
softmax벡터 전체를 합 1인 분포로 정규화.범주형 logits와 어텐션 가중치. 은닉층의 원소별 활성은 아님.

출력이 확률 모양이라고 자동으로 calibration 되는 건 아니야. 활성함수는 수학적 범위나 정규화를 정하고, calibration은 학습된 시스템에서 따로 측정하는 성질. 손실이 logits를 기대하는지도 확인하고 적용 위치를 골라.

현대 기본값은 하나가 아니다

ReLU는 싸고 양수 쪽 포화를 피해서 깊은 합성곱망을 실용적으로 만드는 데 한몫했어. Transformer와 다른 현대 구조에서는 GELU와 SiLU도 흔해. 2012년 ImageNet 돌파도 ReLU 혼자 만든 영웅담이 아님. 아키텍처, GPU, 더 큰 데이터, ReLU, 최적화, 증강, 정규화가 함께 맞물린 결과야.

활성함수는 아키텍처 안에서 골라. 표현력, 기울기 흐름, 하드웨어 비용, 출력 의미, 실제 측정값을 같이 봐야 해.

Code

여러 활성함수의 값과 기울기 비교하기·python
import torch
import torch.nn.functional as F

x = torch.linspace(-5, 5, 11)

print("입력 :", x)
print("relu  :", F.relu(x))
print("sigmoid:", torch.sigmoid(x))
print("tanh  :", torch.tanh(x))
print("gelu  :", F.gelu(x))

External links

Exercise

ReLU, sigmoid, GELU를 같은 좌표축에서 범위로 그리고 도함수도 함께 비교해. 각 함수의 포화 구간과 0 근처 동작이 기울기 흐름에 어떤 차이를 만드는지 적어.
Hint
ReLU는 0에서 미분 불가능하지만 프레임워크가 한쪽 값을 정해 사용해. sigmoid는 큰 절댓값에서 포화하고, GELU는 입력을 부드럽게 게이트해. 용도와 구조에 따라 골라.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.