과제를 풀이하던 중, 어떤 분류 모델을 활용하는 것이 좋을지 생각할 필요가 있어 찾아보게 되었다.

 

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의 줄임말이라고 한다. 한국어로는 잔차 신경망이다.

잔차신경망(https://ko.wikipedia.org/wiki/%EC%9E%94%EC%B0%A8_%EC%8B%A0%EA%B2%BD%EB%A7%9D)

 

 

위 그림에서 알 수 있는 재미있는 점은, $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: Rethinking Model Scaling for Convolutional Neural Networks

Convolutional Neural Networks (ConvNets) are commonly developed at a fixed resource budget, and then scaled up for better accuracy if more resources are available. In this paper, we systematically study model scaling and identify that carefully balancing n

arxiv.org

 

위 논문을 읽으면서 알게 된 점은, EfficientNet의 경우, Parameter를 줄이면서 연산량을 적게 한다는 것으로 받아들일 수 있었다.

상정할 수 있는 상황이라면, 리소스가 아주 충분하지 않은 상황에서도 괜찮은 성능을 보일 수 있다고 느꼈다.

 

물론, 높은 버전의 EfficientNet도 있지만, 가장 기본 성능인 B0에서도 꽤 괜찮은 성능인 것을 파악할 수 있다.

 

마지막으로, 어떠한 상황에 사용하는 것이 좋은지 GPT에게 물어본 결과 다음과 같은 표를 제시해줬다.

(GPT야 고맙다 ... )

특성  ResNet EfficientNet
데이터 크기 중간에서 큰 데이터셋 대규모 데이터셋 고해상도 데이터
데이터 복잡도 단순하거나 일반적인 이미지 데이터  복잡한 데이터(조명, 각도, 배경 다양성)
모델의 효율성  계산량 많음  파라미터 효율적, 연산량 적음
고해상도 지원  제한적 고해상도 데이터에 강점
직관성 간단하고 직관적 복잡하고 NAS 기반
학습 리소스 GPU 메모리 소비 많음 메모리 및 연산 효율적
응용 사례  의료 데이터, 일반 분류  모바일, 임베디드, 위성, 복잡한 분류

 

 

이런 결과를 토대로, EfficientNet을 활용하게 되었다.

 

 

 

  

  

 

'DataScience' 카테고리의 다른 글

Sigmoid / Tanh / ReLU에 대한 공부  (0) 2024.11.26

기계학습 과정에서, 활성화 함수 (Activation Function)이 출력을 결정하는만큼 핵심적이라고 말할 수 있겠다.

특히, 기존의 Linear한 결과를, Non-linear로 바꿈으로서 패턴의 단순화를 방지할 수 있는 것을 도와준다고 생각할 수 있다.

 

 

1. 형태

 

Sigmoid Function의 경우에는 

$$\sigma(x) = \frac{1} {1 + \exp ^{-x}}$$

 

HyperTangent의 경우에는 

$$tanh(x) = \frac{\exp^{x} - \exp^{-x}} {\exp^{x} + \exp^{-x}}$$

 

ReLU

$$ReLU = max_{x \in \mathbb{R}}(0, x)$$

 

 

2. 특성

Sigmoid function

- $\sigma(x) \in [0, 1]$

- Differential for any $x \in \mathbb{R}$

- Non-linear

 

단점

- Gradient가 0에 가까워질 때, 학습률이 몹시 낮아지기 때문에 학습에 많은 시간이 소요된다

- 계산 코스트가 exponential을 계산해야하기때문에 높다

 

 

다음으로, Hypertangent의 특징은 다음과 같다

- $tanh(x) \in [-1,1]$, 중심잡힌 데이터를 얻을 수 있음

- Differential for any $x \in \mathbb{R}$

- Non-linear

 

단점

- Gradient가 0에 가까워질 때, 학습률이 몹시 낮아지기 때문에 학습에 많은 시간이 소요된다

- 계산 코스트가 exponential을 계산해야하기때문에 높다

 

 

ReLU

- function value is contained in $[0, \infty]$

- Non-linear

- Not continuous at $x = 0$

- 미분값이 간단하므로, 다른 activation function에 비해 계산이 용이

 

단점

- 값이 음수가 되는 경우에는 이후 값이 항상 0으로 귀결

- Output이 비대칭이라는 단점이 존재

 

이러한 ReLU를 보완하기 위해서, Leaky ReLU, Parametrix ReLU (PReLU), Exponential Linear Unit (ELU) 등이 나오게 되었다.

해당 함수들은 x = 0일때 전부 0의 값을 반환하지만, 음수의 값에서도 Truely하게 0이 나오지 않게끔 조정하면서 음수 값을 살리는 방향으로 학습이 이루어진다

 

 

3. 선택 기준

출력층

- 이진 분류 : Sigmoid 함수가 적합

- 다중 클래스 분류 : Softmax 함수를 사용하는 것이 일반적

 

은닉층

- 깊은 신경망 : ReLU 및 그 변형이 선호됨

- 순환 신경망 : tanh 함수가 주로 사용

 

학습 안정성

- 기울기 소실 문제 : ReLU가 Sigmoid 및 tanh 보다 효과적

 

계산 효율성

- ReLU가 Sigmoid 및 tanh에 비해 계산 비용이 낮아 대규모 신경망에서 유리

'DataScience' 카테고리의 다른 글

다양한 모델에 대한 고찰 (ResNet, EfficientNet etc..)  (1) 2024.12.03

+ Recent posts