[프로그래머스 인공지능 미니 데브코스] 수업 정리 -18- [Deep Learning: 신경망의 기초 - 심층학습기초 III]

3yeong·2022년 8월 26일
0

컨볼루션 신경망 사례연구

AlexNet
VGGNet
GoogLeNet
ResNet

영상분류(image classification)

과거에는 매우 어렵고 도전적인 문제였음

  • ImageNet
    2만 2천 여 부류에 대해 부류별로 수백~수만장의 사진을 인터넷에서 수집하여 1500만여 장의 사진을 구축하고 공개 (현재, 부류와 개수가 추가됨)

  • ILSVRC(imageNet Large Scale Visual Recognition Competition) 대회(CVPR학술대화에서 개최)
    1000가지 부류에 대해 분류, 검출, 위치 지정 문제 : 1순위와 5순위 오류 성능 대결
    120만장의 훈련집합, 5만장의 검증집합, 15만장의 테스트 집합
    우승 : AlexNet(2012) -> Clarfi(2013) -> GooLeNet & VGGNet(2014) -> ResNet(2015)

  • 우승한 모델은 코드와 학습된 가중치를 공개함으로써 널리 사용되는 표준 신경망 됨

AlexNet

구조

  • 컨볼루션층 5개와 완전 연결(fully connected) 층 3개
    8개 층에 290400-186624-64896-43264-4096-4096-1000개의 노드 배치
  • 컨볼루션층은 200만개, FC 층은 6500만개 가량의 매개변수
    FC층에 30배 많은 매개변수 -> 향후 CNN은 FC 층의 매개변수를 줄이는 방향으로 발전
  • 당시 GPU의 메모리 크기 제한으로 인해 GPU#1 GPU#2로 분할하여 학습 수행
    3번째 컨볼룰션 층은 GPU#1과 GPU#2의 결과를 함께 사용
  • 컨볼루션 층 큰 보폭으로 다운 샘플링

AlexNet이 학습에 성공한 요인

  • 외적 요인
    ImageNet이라는 대규모 사진 데이터
    GPU를 사용한 병렬처리

  • 내적요인

  1. 활성함수로 ReLU 사용
  2. 지역 반응 정규화(local response normalization) 기법 적용
    : 인간 신경망 측면억제(lateral inhibition) 모방, ReLU활성화 규제
    : 1, 3번째 최대 풀링 전 적용
  3. 과잉적합 방지하는 여러 규제 기법 적용
    : 데이터 확대(잘라내기와 반전으로 2048배로 확대),
    : 드롭아웃(완전연결층에서 사용)
  • 테스트 단계에서 앙상블 적용
    입력된 영상을 잘라내기와 반전을 통해 증가하고 증가된 영상들의 예측 평균으로 최종 인식
    2~3%만큼 오류율 감소 효과

VGGNet

VGGNet의 핵심 아이디어

3x3의 작은 커널을 사용
신경망을 더욱 깊게 만듦
컨볼루션층 8~16개를 두어 AlexNet에 비해 2~3배 깊어짐

VGG-16(CONV 13층 + FC 3층)

작은 커널의 이점

  1. GoogLeNet의 인셉션 모듈처럼 이후 깊은 신경망 구조에 영향
  2. 큰 크기의 커널은 여러 개의 작은 크기 커널로 분해될 수 있음
    -> 매개 변수의 수는 줄어들면서 신경망은 깊어지는 효과

1x1 커널

  • 신경망 속의 신경망(network in network(NN))에서 유래
    VGGNet은 적용 실험을 하였지만 최종 선택하지는 않음

  • 차원 통합

  • 차원 축소 효과
    c2 > c3 : 차원 축소(연산량 감소)

-예)
mxn의 특징 맵 8개에 1x1 커널을 4개 적용 -> mxn의 특징 맵 4개 출력
즉, 8xmxn 텐서에 8x1x1 커널을 4개 적용하여 4xmxn 텐서를 출력하는 셈

GoogLeNet

GoogLeNet의 핵심은 인셉션 모듈(inception module)

  • 수용장의 다양한 특징을 추출하기 위해 NIN의 구조를 확장하여 복수의 병렬적인 컨볼류션 층을 가짐
    -NIN 구조
  1. 기존 컨볼루션 연산을 MLPConv 연산으로 대체
    -> 커널대신 비선형 함수를 활성함수로 포함하는 MLP를 사용하여 특징 추출 유리함
  2. 신경망의 미소 신경망(micro neural network)가 주어진 수용장의 특징을 추상화 시도
  3. 전역 평균 풀링(global average pooling)사용

NIN이 사용하는 전역 평균 풀링

  • VGGNet의 완전 연결층
    : 1억2천2백만 개의 매개변수를 가짐(VGGNet의 전체의 85%) -> 과잉적합의 원인
  • NIN의 전역 평균 풀링
    : MLPConv가 부류 수만큼 특징 맵을 생성하면, 특징 맵 각각을 평균하여 출력 노드에 입력 -> 이 방식으로 매개변수를 줄임

GoogLeNet은 NIN 개념을 확장한 신경망

  • 인셉션 모듈
    마이크로 네트워크로 Mlpconv 대신 네 종류의 컨볼루션 연산 사용 -> 다양한 특징 추출
    1x1 컨볼루션을 사용하여 차원 축소 (dimension reduction)
    -> 매개변수의 수 (=특징 맵의 수)를 줄임 + 깊은 신경망
    -> max pooling 은 pooling 후 1x1으로 줄임
    3x3, 5x5 같은 다양한 크기의 컨볼루션을 통해서 다양한 특징들을 추출

인셉션 모듈을 9개 결합한 GoogLeNet

  • 매개변수가 있는 층 22개 없는 층 (풀링) 5개로 총 27개층

  • 완전 연결층은 1개에 불과
    1백만 개의 매개변수를 가지며, VGGNet의 완전 연결층에 비하면 1%에 불과

  • 보조 분류기(auxlilary classifier)
    원 분류기의 오류 역전파 결과와 보조 분류기의 오류 역전파 결과를 결합하여 경사 소멸 문제 완화
    학습할 때 도우미 역할을 하고, 추론할 때 제거된

ResNet

잔류 (잔차) 학습(residual learning)이라는 개념을 이용하여 성능 저하를 피하면서 층 수를 대폭 늘림
원래 컨볼루션 신경망
잔류 학습은 지름길 연결된 x를 더한 F(x) + x에 T를 적용, F(x)는 잔류(잔차)
y= T(F(x)+x)

지름길 연결을 두는 이유는?

  • 깊은 신경망도 최적화가 가능해짐
  1. 단순한 학습의 관점의 변활를 통한 신경망 구조 변화
    단순 구조의 변경으로 매개변수 수에 영향이 없음
    덧셈 연산만 증가하므로 전체 연산량 증가도 미비함
  • 깊어진 신경망으로 인해 정화도 개선 가능함
  • 경사 소멸 문제 해결

VGGNet과 비교

  • 같은 점
    3x3 커널 사용
  • 다른 점
    잔류 학습 사용
    전역 평균 풀링 사용(FC층 제거)
    배치 정규화 적용(드롭아웃 적용 불필요)

생성모델

생성모델이란?

모델학습 단계가 할 일예측 단계가 할 일지도여부
분별 모델P(yX)추정f X -> y
생성 모델P(X), P(Xy), P(X,y)추정f : 씨앗 -> X 또는 f : 씨앗, y -> X, f : 씨앗 -> X, y

실제 상황에서 생성모델

  • 현실에 내재한 데이터 발생 분포 P(data)(x) -> 알아낼 수 없음
  • P(X)를 모방하는 모델의 확률 분호 P(X;세타)
    P(X)를 명시적으로 추정하는 것도 어려움
    현대 기계학습은 주로 딥러닝 모델을 사용하여 확률 분포를 암시적으로 표현

GAN

핵심

신경망 두개가 적대적으로 학습을 한다.
1. 생성기(generator)와 분별기(discriminator)의 대립구도
G는 가짜 샘플 생성(위조지폐범)
D는 가짜와 진짜를 구별(경찰)
2. GAN의 목표는 위조 지폐범의 승리
(G가 만들어내는 샘플을 D가 구별하지 못하는 수준까지 학습)

실습

GoogleNet

  • 특징
    Inception Modedule
    Auxiliary Classifier
    Global Average Pooling

Inception Modedule

총 9개의 인셉션 모듈 포함
Conv 레이어를 sparse하게 연결 & 행렬 연산은 dense하게 처리
1x1 컨볼루션 장점
: 특성 맵의 갯수를 줄이기 위함 = channel 수 감소
: 연산량 감소
: 비선형성

Auxiliary Classifier(보조 분류기)

네트워크가 깊어지면서 vanishing gradient 문제를 줄이기 위해 추가
Gradient canishing
: 역전파 과정에서 가중치 업데이트를 위해 사용되는 gradient가 점점 작아져서 0이 되어가는 것
두 개의 보조 분류기를 추가
테스트 단계에서 사용되지 않고 학습과정에서만 사용

Global Average Pooling

Fully Connected 층 대신 global average pooling 을 사용
전 층에서 나온 특징 맵들을 각각 평균낸 것을 이어서 1차원 벡터를 생성
FC층을 사용했을 때에 비해 가중치의 개수를 상당히 줄일 수 있음

profile
초보 컴공

0개의 댓글