2024. 12. 3. 16:53ㆍDataScience
과제를 풀이하던 중, 어떤 분류 모델을 활용하는 것이 좋을지 생각할 필요가 있어 찾아보게 되었다.
1. ResNet
정말 많이 들어본 것 같다. 활용했던 모델은 ResNet18이었는데, 네이밍 그대로 ResNet을 18개 겹쳐둔 학습이라서 그렇다고 한다.
특히, 224 * 224* 3 사이즈의 이미지를 활용한다고 한다.
그래서, 학습을 시행하려면 원래 주어진 데이터의 수정이 필요해지면서 반드시 Transform과정을 거치게 되겠다.
(근데 왜 224 * 224 * 3이지? 굳이 숫자에 집착하는 것은 아니다만, 단순히 궁금해졌다.
일단 첫번째 step에서 7 x 7로 만든다고 했으니까 7의 배수인 것도 ok. $224 = 7 \cdot 32 = 7 \cdot 2^5$ 니까 뭔가 관계가 있을법 하기도 하다)
한편, ResNet은 Residual neural network의 줄임말이라고 한다. 한국어로는 잔차 신경망이다.
위 그림에서 알 수 있는 재미있는 점은, $l-2$번째 레이어에서 $l$번째 레이어로 이동하면서, $l-1$번째 레이어를 스킵할 수 있다는 것이 되겠다.
잔차라고 하면, 보통은 어떠한 것을 빼주었을 때 남은 값을 뜻하는데,
이 경우라면, 다음과 같은 상황을 상정해 볼 수 있겠다.
$$H(x) = W \phi(x) + b \\ (W: Weight, x : Input, b : Bias)$$
즉, 다음 스텝으로 넘어갈 때, 저러한 방식으로 Output값이 바뀌게 되는데, Input과 Output의 차이를 잔차라고 생각하면 되겠다.
그렇다면, $F(x) = H(x) - x$로 두게 된다면? 이 $F(x)$가 최소가 되는 방향으로 학습이 진행된다고 보면 좋을 것 같다.
조금 더 추가적으로 말해보면, 여기서 $F(x)$가 여기서 말하는 잔차에 해당이 되겠다.
2. EfficientNet
먼저 좋은 점이라고 한다면, Size가 변동이 크더라도, Compound Scaling을 통해서 학습에 적합하게 transform이 가능하다는 것이다.
공부를 하다보니, 원형이 되는 논문을 발견했는데, 관심이 있으시다면 한번 보시는 것을 권장 드린다.
https://arxiv.org/abs/1905.11946
위 논문을 읽으면서 알게 된 점은, EfficientNet의 경우, Parameter를 줄이면서 연산량을 적게 한다는 것으로 받아들일 수 있었다.
상정할 수 있는 상황이라면, 리소스가 아주 충분하지 않은 상황에서도 괜찮은 성능을 보일 수 있다고 느꼈다.
물론, 높은 버전의 EfficientNet도 있지만, 가장 기본 성능인 B0에서도 꽤 괜찮은 성능인 것을 파악할 수 있다.
마지막으로, 어떠한 상황에 사용하는 것이 좋은지 GPT에게 물어본 결과 다음과 같은 표를 제시해줬다.
(GPT야 고맙다 ... )
특성 | ResNet | EfficientNet |
데이터 크기 | 중간에서 큰 데이터셋 대규모 데이터셋 | 고해상도 데이터 |
데이터 복잡도 | 단순하거나 일반적인 이미지 데이터 | 복잡한 데이터(조명, 각도, 배경 다양성) |
모델의 효율성 | 계산량 많음 | 파라미터 효율적, 연산량 적음 |
고해상도 지원 | 제한적 | 고해상도 데이터에 강점 |
직관성 | 간단하고 직관적 | 복잡하고 NAS 기반 |
학습 리소스 | GPU 메모리 소비 많음 | 메모리 및 연산 효율적 |
응용 사례 | 의료 데이터, 일반 분류 | 모바일, 임베디드, 위성, 복잡한 분류 |
이런 결과를 토대로, EfficientNet을 활용하게 되었다.
'DataScience' 카테고리의 다른 글
Sigmoid / Tanh / ReLU에 대한 공부 (0) | 2024.11.26 |
---|