티스토리 뷰
목차
차근차근 배운 것이 아니라 빠르게 결론에 도달하려다 깨달은 것은
지식에 구멍이 너무도 많다는 것이다.
오늘은 CNN에 대해 공부 중 그런 생각이 들었다.
왜 ReLU는 중간층에서 사용되고 Softmax는 출력층에서만 사용되는가.
애초에 Softmax 함수가 활성화 함수는 맞는가.
이 글은 위 질문에 대한 짧은 방황의 결과이다.
너무 쉬운 질문이라고 생각하면 안 읽어도 된다!
어쨌거나 글을 시작한 김에 활성화 함수와 ReLU, Softmax 함수 등에 대해 짧게 다루며
Softmax 함수 자체에 대해 짧게 생각해 보겠다.
활성화 함수(Activation Function)
활성화 함수란 무엇인가? 그 일반적인 정의와 역할은 다음과 같다.
활성화 함수는 뉴런이 입력받은 값(로짓, logits)을 조정하여 다음 층으로 전달하는 함수이다.
즉, 비선형성을 추가하여 신경망이 복잡한 패턴을 학습할 수 있도록 돕는 것이 활성화 함수의 핵심 역할이다.
두 가지가 중요하다. 입력 값을 조정하여 다음 층으로 전달하되, 비선형성을 추가하는 것.
수식으로 예를 들자면 신경망의 한 뉴런에서 다음과 같은 연산이 진행되는데,
여기서 $W$는 가중치, $X$는 입력값, $b$는 바이어스다.
이 값에 활성화 함수 $f(x)$를 적용하면 다음과 같은 최종 출력값을 얻게 되는데,
여기서 활성화 함수는 $z$를 변환하여 $a$를 출력하는 역할을 한다고 볼 수 있다.
물론 여기서 변환이란 비선형 변환을 가리킨다.
그러니까 받은 입력을 비선형성 없이 조정해 다음 층으로 전달하는 함수는 활성화 함수라고 부르지 않는다.
이는 비선형성 없는 신경망은 깊이와 상관없이 하나의 선형 변환으로 나타낼 수 있기 때문이 아닐까 싶다.
CNN에서는 대표적으로 ReLU(Rectified Linear Unit)와 Softmax가 많이 사용되는데,
그 역할은 각각 다음과 같다:
- ReLU는 합성곱 계층(Convolution Layer)과 완전 연결층(Fully Connected Layer)의
중간층(은닉층, Hidden Layer)에서 사용된다. - Softmax는 마지막 출력층(Output Layer)에서 사용되며, 확률값을 생성하는 역할을 한다.
역할이 명확하게 다르다. 여기선 확률값을 생성한다는 부분이 중요하다.
계속해서 두 활성화 함수에 대해 살펴보자.
ReLU(Rectified Linear Unit)
정의
ReLU는 입력 값이 0보다 크면 그대로 출력하고, 0 이하면 0으로 출력하는 함수이다.
그래프로 나타내면 다음과 같으며,
0 이하의 값은 0으로, 그 이상은 그대로 유지하는 특성을 보여준다.
역할
- 합성곱 계층(Conv Layer)과 완전 연결층의 은닉층(Hidden Layer)에서 주로 사용된다.
- 비선형성을 추가하여 신경망이 복잡한 패턴을 학습할 수 있도록 한다.
- 음수를 0으로 바꿔서, 기울기 소실(Vanishing Gradient) 문제를 완화한다.
- 계산이 단순해서 학습 속도가 빠르다.
정리하면, CNN의 합성곱 계층은 이미지의 특징을 추출하는 역할을 한다.
하지만 선형 활성화 함수(예: 항등 함수)를 사용하면 뉴런의 표현력이 부족해진다.
이때 ReLU를 사용하면 다음과 같은 이점을 얻을 수 있기 때문에:
- 입력값이 음수면 0이 되므로, 비중요한 특징을 자동으로 제거한다.
- 양수 값은 그대로 유지하므로, 중요한 패턴을 강조할 수 있다.
이미지의 특징을 강화하고, 불필요한 정보는 제거할 수 있게 된다.
Softmax 함수
정의
Softmax는 출력층(Output Layer)에서 확률값을 생성하는 함수이다.
입력값을 0~1 사이의 확률로 변환하며, 모든 클래스의 확률 합이 1이 되도록 정규화한다.
여기서:
- $z_i$: $i$번째 클래스의 로짓(logits, 신경망의 최종 출력값)
- $e^{z_i}$: 지수함수를 적용하여 양수로 변환
- $\sum_{j}e^{z_i}$: 전체 클래스의 지수 값의 합
이 된다. 계속해서 그래프로 나타내면 다음과 같다.
Softmax?
여담으로 이 함수에 소프트맥스(Softmax)라는 이름이 붙은 이유는
"Winner-Takes-All(WTA)" 모델의 부드러운(smooth) 버전이기 때문이다.
WTA모델은 입력 값 중 가장 큰 값만 +1로 설정하고 나머지는 0으로 만드는 방식이다.
즉, 가장 큰 입력 값을 가진 뉴런만 활성화된다.
하지만 이렇게 하면 출력이 너무 급격하게 변화하기 때문에, 학습이 어렵고 미분이 불가능한 문제점이 있었다.
소프트맥스는 이를 부드럽게(soft) 만들기 위해 확률 분포처럼 변환하는 역할을 하는데,
정의에서 적었듯 각 출력 값이 0과 1 사이의 확률 값이 되며, 합이 1이 되도록 정규화된다.
즉, WTA방식에서 "완전히 한 개만 선택"하는 것이 아니라,
상대적으로 더 높은 확률을 부여하는 방식으로 부드럽게(soft) 조정하는 것이라고 할 수 있다.
정리하면:
- 가장 큰 값을 강조하는 방식(Max)이지만, 부드럽게 조정(Soft)된 함수 → Softmax
- 일반적인 max 함수가 비연속적인 선택을 한다면, softmax는 확률적 선택을 하도록 변환하는 역할을 함
역할
- 출력층에서 사용되며, 분류(Classification) 문제를 해결하는 데 필수적이다.
- 각 클래스에 대한 확률을 출력하므로, 최종 분류 결과를 확률적으로 해석할 수 있다.
- 신경망이 학습하는 동안 출력값의 스케일을 일정하게 유지하도록 돕는다.
- 확률 합이 1이 되므로 확률적인 해석이 가능하다.
활성화 함수인가?
Softmax 함수도 입력 값을 조정하여 출력하는 함수이므로, 활성화 함수의 정의에는 포함될 수 있다.
하지만 Softmax는 비선형성을 추가하는 것이 아니라, 확률 값을 생성하는 역할을 한다.
더 정확하게 말하자면 다음과 같으며:
- Softmax 함수는 입력값을 변환하는 과정에서 비선형적인 변환을 수행하기는 하지만
- 일반적인 활성화 함수(ReLU, Sigmoid, Tanh 등)와 같은 비선형성을 추가하는 역할은 하지 않는다.
- 즉, 비선형 연산을 하긴 하지만, 신경망의 표현력을 증가시키는 목적이 아니다.
결론적으로 말하자면 Softmax함수는 활성화 함수의 정의를 만족하긴 하지만
일반적으로는 출력층에서 확률을 생성하는 정규화 함수로 간주된다.
이는 Softmax 함수가 개별 뉴런에 적용되는 것이 아니라, 출력층의 모든 뉴런을 동시에 고려하여 변환하기 때문이기도 하다.
그러므로 Softmax함수는 CNN의 마지막 단계, 즉 이미지가 어떤 클래스에 속하는지 예측하는 단계에서 사용되며
최고 확률을 가진 클래스를 최종 예측값으로 선택할 수 있기 때문에
다중 클래스 분류 문제(Multi-class Classification)에서 매우 효과적이다.
기타 활성화 함수
마지막으로 여기서 다루지 않은 활성화 함수에 대해 정리하고 글을 마치자.
활성화 함수 | 수식 | 특징 | 사용처 |
Sigmoid | $f(x)=\frac{1}{1+e^{-x}}$ | 출력값을 0~1 사이로 변환 기울기 소실 문제 발생 |
이진 분류(Binary Classification) |
Tanh | $f(x)=\frac{e^{x}-e^{-x}}{e^{x}+e^{-x}}$ | 출력값을 -1~1 사이로 변환 Sigmoid보다 나음 |
순환 신경망(RNN), 중간층 |
Leaky ReLU | $f(x)=$max$(0.01x, x)$ | ReLU의 단점(0으로 죽는 뉴런 문제) 개선 | CNN 은닉층 |
Swish | $f(x)=x\cdot\sigma(x)$ | Google이 제안한 최신 활성화 함수 ReLU보다 학습 성능이 좋음 |
최신 CNN 모델 |
'ML+DL > Vision AI' 카테고리의 다른 글
CNN에서 활성화 함수가 여러번 적용되는 이유 (0) | 2025.03.11 |
---|---|
비전 인공지능에서 백본(Backbone)이란? (0) | 2025.02.21 |
NMS(Non-Maximum Suppression) 알고리즘 이해하기 (0) | 2025.02.18 |
객체 탐지 평가 지표: Precision, Recall, mAP, F1 Score 완전 이해하기 (0) | 2025.02.18 |
컴퓨터 비전과 객체 인식: YOLO 모델과 평가 지표에 대한 이해 (0) | 2025.01.21 |
CNN의 한계와 어텐션 기법, 그리고 비전 트랜스포머 모델 (0) | 2025.01.15 |
- Total
- Today
- Yesterday
- 중남미
- 유럽여행
- 백준
- 알고리즘
- a6000
- 세계일주
- 지지
- 스트림
- 면접 준비
- 자바
- 파이썬
- 동적계획법
- 여행
- java
- BOJ
- Algorithm
- Backjoon
- 야경
- spring
- 칼이사
- 리스트
- 기술면접
- 맛집
- 유럽
- Python
- 스프링
- 세모
- 세계여행
- 남미
- RX100M5
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |