방명록
- VGGNet, GoogLeNet(Inception), ResNet, Transfer Learning2024년 03월 06일 06시 22분 06초에 업로드 된 글입니다.작성자: 재형이반응형
- 이번 강의를 통해서는 다양한 모델들을 간단하게 리뷰해보면서 개발자가 어떤 생각을 가지고 디자인을 했을까?라고 생각할 수 있는 계기가 되었습니다
- 생각하면서 느꼈던 것은 꼭 수식적인 증명(물론 논문을 발표할 때는 필요하겠지만)뿐만 아니라 상상하는 대로 모델을 바꿀 수 있고 실제로 성능도 더 좋아질 수도 있다는 걸 느꼈습니다
- 그래서 딥러닝 연구 분야는 창의력, 사고력이 굉장히 중요한 분야이구나라는 생각을 했습니다
- 감사합니다
1. VGGNet
- VGGNet은 ILSVRC (Large Scale Visual Recognition Challenge)라는 이미지 넷(Image Net)의 사물 인식 대회에서 2014년에 2등을 했었던 모델이다
- 근데 왜 1등도 아니고 2등을...?
- 왜냐하면 단순한 구조로 좋은 성능을 보여주었기 때문이다!! (간단한게 최고, 복잡한거 싫어 ㅜㅜ)
- VGGNet-16은 13개의 conv layer와 3개의 FC로 이루어져 있다 (변형된 모델로 VGGNet- 19도 있다)
- 138,000,000(약 1억 4천)개의 W 갯수와 500MB의 저장 공간을 필요로하는 모델이다}
- VGGNet의 가장 큰 특징은 작은 크기의 필터를 사용해도 layer의 깊이가 깊어지면 입력값의 넓은 부분을 참고하는 기능을 수행할 수 있다는 것이다 → 넓은 영역을 참고하기 위해 큰 필터를 사용할 필요 없이 3X3 필터만 사용해도 충분!
- Receptive Field(RF)는 얼만큼의 영역을 수용하고 있는가를 나타내는 지표이다. 값이 클수록 많은 영역을 참고하고 있다는 의미이다
- 예시1) 7X7 필터 한번과 3X3 필터 세 번의 RF 비교
- 그리고 이렇게 작은 크기의 필터를 여러번 사용함으로써 얻을 수 있는 이점
- RF를 늘리는 효과
- 구해야할 W가 적어짐 (메모리 사용량 감소)
- 더 많은 비선형 Activation을 통과함으로써 비선형성이 증가하여 더 복잡한 그래프를 표현할 수 있게 됨
2. GoogLeNet (Inception)
- 이제는 사람의 능력을 뛰어넘었다;;
- 구글에서 개발하였으며 22층짜리 신경망을 사용하였고 인셉션 모듈이라는 것을 사용했다
- 개별적인 Layer는 100개 이상이지만 Inception 모듈이 9개 존재해서 이걸 포함해서 22개의 층이라는 것
- 5,000,000(5천만)개의 W 갯수를 가진다
2-1. 인셉션 모듈
- Inception module
- split-transform-merge strategy
- 다양한 크기의 필터를 사용해서 다양한 특징을 추출
- 1×1, 3×3, 5×5 kernels
- split-transform-merge strategy
- Bottleneck structure
- 1x1 Conv: 필터의 크기가 1
- Dimensionality Reduction 효과
- 입력의 필터 크기 보다 Conv의 필터 수가 작을 때
- 연산량을 줄이고, 신경망을 더욱 깊게 쌓을 수 있음
- 비선형성(nonlinearity) 증가
- 인셉션 모듈에서 1X1 Conv 필터를 사용함으로써 얻을 수 있는 이점
- 연산량을 줄이기 때문에 필요 메모리 수가 줄어듬
- Conv Ops가 줄어듬
2-2. 학습 보조기 (Auxiliary Classifiers)
- Vanishing Gradient 문제를 해결하기 위한 도구
- 학습할 때만 사용하고 추론 단계에서는 사용하지 않는다
2-3. GoogLeNet (Inception V1)의 특징
- Inception 모듈 사용
- Parallel filters concatenation
- Bottleneck architecture
- 가중치의 수를 줄임
- 비선형성을 증가시킴
- 모델 구성의 새로운 패러다임
- 단순히 layer를 쌓아 올리는 구조가 아닌, 모듈/블록 구조를 사용
3. ResNet
- 처음으로 사람의 능력을 뛰어넘은 모델이다
- 깊은 신경망(152 layers… ) 학습이 가능하게 하는 skip connections 구조
- Batch Normalization을 적용
- 분류기 학습을 위한 FC를 구현하지 않고, GAP(Global Average Pooling)을 수행
3-1. Skip Connection
- layer의 입력을 layer의 출력에 바로 연결
- H(x) = F(x) + x
- Residual 구조
- 일반적인 신경망: H(x)를 얻기 위해 학습을 수행
- ResNet:
- 𝐻(𝑥) = 𝐹(𝑥) + 𝑥 에서 𝐹(𝑥) = 𝐻(𝑥) − 𝑥 와 같다
- 잔차(𝐹(𝑥) = 𝐻(𝑥) − 𝑥)를 최소화하는 방향으로 수행
- 즉, 출력값과 입력값의 차이를 최소화하려는 방향으로 학습을 진행한다
- 인공신경망이 깊어질수록 본래의 자아를 잃어가는 것이 아닐까...? 본래의 모습을 잃지 않도록 x를 더해주는 것...?
- Residual 구조의 효과
- 깊은 층을 가지고 있지만 Gradient vanishing이 발생하지 않고 학습이 잘 됨
4. EfficientNet
- depth, width, resolution을 동시에 고려한 compound scaling을 통해 ConvNet기반 이미지 분류 성능을
개선한 모델 - 개선방향 : depth, width, resolution 동시에 키워서 성능 개선
- width(필터의 개수 늘림)
- depth(레이어 수 늘림)
- resolution(이미지 해상도 키움)
- 연산은 줄이고, 정확도는 높임
5. Transfer Learning cf) Fine Tuning
- 기존의 만들어진 모델을 사용하여 새로운 모델을 만드는 방법
- 학습을 빠르게 하며 예측 성능을 더 높임
- 이미 잘 훈련된 모델이 있고, 특히 해당 모델과 유사한 문제를 해결 시 효과적
model_conv = torchvision.models.resnet18(pretrained=True) for param in model_conv.parameters(): param.requires_grad = False # Parameters of newly constructed modules have requires_grad=True by default num_ftrs = model_conv.fc.in_features model_conv.fc = nn.Linear(num_ftrs, 2) model_conv = model_conv.to(device) criterion = nn.CrossEntropyLoss() # Observe that only parameters of final layer are being optimized as # opposed to before. optimizer_conv = optim.SGD(model_conv.fc.parameters(), lr=0.001, momentum=0.9) # Decay LR by a factor of 0.1 every 7 epochs exp_lr_scheduler = lr_scheduler.StepLR(optimizer_conv, step_size=7, gamma=0.1) # 출처: https://pytorch.org/tutorials/beginner/transfer_learning_tutorial.html
- 이미 학습된 resnet-18 모델이 프레임워크로 제공되기 때문에 사용할 수 있다
- pretrained=True → 이미 학습된 모델 사용
- param.requires_grad=False → 가중치 업데이트 False
- model_conv.fc=nn.Linear(num_ftrs,2)는 FC로 2개를 출력하고 있다 → 카테고리 두개로 분류를 하고 싶다
cf) Fine Tuning
- 사전 학습된 모델을 새로운 문제에 적용하기 위해 일부 가중치를 조절하는 학습 과정
- 미세조정(Fine tuning)은 사전학습(pre-training) 모델을 사용하여 새로운 문제에 적용할 수 있도록 조정하는 과정이다
반응형'인공지능 > 인공지능 기초' 카테고리의 다른 글
Embedding (2), NLP (1) (2) 2024.03.08 신경망 성능 향상, 1D conv, Embedding (1) (2) 2024.03.07 CNN 연산, Conv, Pooling, 컴퓨터 비젼 (0) 2024.03.05 분류 알고리즘, 회귀 알고리즘 (0) 2024.03.04 군집 알고리즘 (0) 2024.03.03 다음글이 없습니다.이전글이 없습니다.댓글