아키텍처/블록: Swish
ㅁ 아키텍처/블록
ㅇ 정의:
– 신경망의 구조적 요소로, 모델의 성능과 효율성을 결정짓는 구성 요소.
ㅇ 특징:
– 모델의 계층적 설계와 데이터 흐름을 정의하며, 다양한 블록과 활성화 함수가 포함됨.
ㅇ 적합한 경우:
– 특정 작업에 맞는 모델 최적화를 위해 설계된 경우.
ㅇ 시험 함정:
– 블록의 역할과 활성화 함수의 차이를 혼동하는 경우.
ㅇ 시험 대비 “패턴 보기” 예시:
– “아키텍처/블록은 모델의 성능을 결정하지 않는다.” (X)
– “활성화 함수는 블록의 일부로 포함될 수 있다.” (O)
================================
1. Swish
ㅇ 정의:
– Google에서 제안한 활성화 함수로, 입력 값과 sigmoid 함수를 곱한 형태를 가짐.
ㅇ 특징:
– 비선형 활성화 함수로, ReLU보다 더 부드러운 곡선을 가지며 학습 성능을 향상시킬 수 있음.
– f(x) = x * sigmoid(x)로 정의됨.
ㅇ 적합한 경우:
– 딥러닝 모델에서 ReLU보다 더 나은 성능을 기대할 때 사용.
– 특히, 깊은 네트워크에서의 학습 안정성을 높이고자 할 때.
ㅇ 시험 함정:
– Swish와 sigmoid 함수의 역할을 혼동하거나, ReLU와의 차이를 명확히 이해하지 못하는 경우.
ㅇ 시험 대비 “패턴 보기” 예시:
– “Swish는 입력 값과 sigmoid 함수의 합을 사용한다.” (X)
– “Swish는 ReLU보다 부드러운 활성화 곡선을 제공한다.” (O)
ㅁ 추가 학습 내용
Swish 함수와 그 변형 형태에 대한 학습 노트:
1. **Swish 함수의 정의**:
– Swish 함수는 활성화 함수로, 수식은 다음과 같다: f(x) = x * sigmoid(x).
– sigmoid(x)는 1 / (1 + exp(-x))로 정의된다.
– Swish는 입력값 x와 sigmoid(x)의 곱으로 이루어져 있어, 비선형성을 제공하면서도 입력값의 정보가 보존된다.
2. **Hard-Swish 함수**:
– Hard-Swish는 Swish 함수의 변형된 형태로, 계산 효율성을 높이기 위해 만들어졌다.
– 수식은 다음과 같다: f(x) = x * ReLU6(x + 3) / 6.
– 여기서 ReLU6(x) = min(max(0, x), 6)로 정의된다.
– Hard-Swish는 Swish와 유사한 성능을 제공하면서도 계산량이 줄어들어 모바일 환경 등 제한적인 계산 능력을 가진 환경에서 사용하기 적합하다.
3. **Swish 함수와 ReLU 비교**:
– **ReLU**: f(x) = max(0, x). 간단하고 계산이 빠르며, 딥러닝 모델에서 널리 사용된다. 하지만 음수 입력에 대해 출력이 0으로 고정되므로, 정보 손실이 발생할 수 있다.
– **Swish**: 음수 입력에서도 작은 값으로 출력이 가능하며, ReLU와 달리 부드러운 곡선 형태를 가진다. 이는 모델이 더 복잡한 패턴을 학습하는 데 도움을 줄 수 있다.
– Swish는 특히 깊은 네트워크에서 성능 향상을 보이며, 모델의 학습 안정성과 일반화 능력을 개선하는 데 유리하다.
4. **적용 사례**:
– Swish 함수는 이미지 분류, 자연어 처리 등 다양한 딥러닝 모델에서 사용되며, 특히 깊은 신경망 구조에서 효과적이다.
– Hard-Swish는 MobileNetV3와 같은 경량화된 모델에서 사용되며, 계산 효율성과 성능 간의 균형을 제공한다.
5. **Swish가 더 적합한 상황**:
– Swish는 깊은 네트워크에서 더 나은 성능을 보이므로, 복잡한 데이터셋이나 패턴을 학습해야 하는 상황에서 적합하다.
– 또한, 음수 입력에서도 정보를 보존할 수 있어, 데이터 분포가 음수 영역을 포함하는 경우 유리하다.
이 내용을 바탕으로 Swish 함수와 변형된 형태를 시험 대비용으로 정리하면 학습에 도움이 될 것입니다.