컨볼루션 신경망 사례 연구

 

영상 분류(image classification)

 

  • ImageNet
    • 약 2만 2천여 부류에 대해 데이터를 수집해 이를 공개하며 image classfication을 발전시키는데 크게 기여한 데이터셋
  • ILSVRC 대회(CVPR 학술대회 개최)
    • 1000가지 부류에 대해 분류, 검출, 위치 지정 문제 : 1순위와 5순위 오류 성능 대결
    • 우승
      • AlexNet(2012) -> Clarifi 팀 (2013) -> GooLeNet&VGGNet(2014) -> ResNet(2015) -> SENet(2017)
    • 우승한 모델은 코드와 학습된 가중치를 공개함으로써 널리 사용되는 표준 신경망이 됨

(이 모든 것의 이전에는 LeNet이 있었다... LeNet을 기초로 알고 있자!)


AlexNet

 

  • 구조
    • 컨볼루션층 5개와 완전 연결(Fully Connected(FC)) 층 3개
      • 8개 층에 290400 - 186624 - 64896 - 43264 - 4096 - 4096 - 1000개 노드 배치
    • 컨볼루션층은 200만개, FC층은 6500만개 가량 매개변수
      • FC층에 30배 많은 매개변수 -> 향후 FC층의 매개변수를 줄이는 방향으로 발전
    • 당시 GPU 메모리 크기 제한으로 GPU#1(색과 관련없는 특징 추출), GPU#2(색과 관련된 특징 추출)로 분할해 학습 수행
      • 3번째 컨볼루션 층은 두 대 GPU 결과를 함께 사용 (inter-GPU connections)
      • 컨볼루션 층 큰 보폭으로 다운 샘플링
  • 학습 성공 요인
    • 외적 요인
      • 대규모 사진 데이터
      • GPU 사용 병렬 처리
    • 내적 요인
      • 활성함수 ReLU 사용
      • 지역 반응 정규화(local response normalization)(같은 위치에 있는 것끼리 normalize하는.. 너무 튀지 않게 주변값하고 맞춰준다.) 기법 적용 (지금은 사용 x)
        • 인간 신경망 측면 억제 모방(중요한 거에만 집중할 수 있게... ex)우리가 집중하고 있지 않은 영역은 뿌옇게 보이는 것), ReLU 활성화 규제
        • 1번째, 3번째 최대 풀링 전 적용
      • 과잉적합을 방지하는 여러 규제 기법 적용
        • 데이터 확대 (잘라내기, 반전으로 2048배 확대)
        • 드롭아웃 (완전연결층에서 사용)
          • 완전연결은 파라미터값이 과도하게 많아져 overfitting 문제가 발생할 가능성이 커진다. 이를 해결하고자 드롭아웃을 사용. 드롭아웃을 적용하게 되면 연결되는 데이터를 살려 특징들이 세분화되어 가중치에 녹아들게 된다. 즉, 특징들을 몰리게끔 만들어주어 안의 가중치들이 의미있는 것만 활성화되어 의미있게 학습이 되게 된다.
      • 테스트 단계에서 앙상블 적용 (여러 모델을 묶어서 통합해 수렴적 결과를 보는 방식)
        • 입력된 영상을 잘라내기와 반전을 통해 증가. 증가된 영상들의 예측 평균으로 최종 인식
        • 2~3%만큼 오류율 감소 효과

VGGNet

 

  • 핵심 아이디어
    • 3*3의 작은 커널 사용
      • 작은 커널의 이점
        • GoogLeNet의 인셉션 모듈처럼 이후 깊은 신경망 구조에 영향
        • 큰 크기의 커널은 여러 개 작은 크기 커널로 분해될 수 있다.
          • 매개변수의 수는 줄며 신경망은 깊어짐
          • ex) 5*5 커널을 3*3 커널로 분해해 구현 가능. (stride 2)
          • ex) n*n커널은 1*n 커널과 n*1 커널로 분해 가능. n이 클수록 매개변수 수는 줄어드는 효과가 큼.
      • 1*1 커널
        • VGG에서 적용 실험을 했지만 최종 선택은 하지 않음 (GoogLeNet에서 사용)
        • 차원 통합
          • feature map 통합
        • 차원 축소 효과
          • feature를 적게 쓰면 차원을 축소시킬 수 있음
    • 신경망을 더욱 깊게 만듦(신경망의 깊이가 어떤 영향을 주는지 확인)
    • 컨볼루션층 8~16개를 두어 AlexNet의 5개에 비해 2~3배 깊어짐. 
    • ->깊은 신경망의 효율성을 확인해 준 모델

GoogLeNet

 

https://norman3.github.io/papers/docs/google_inception.html

 

  • 핵심 아이디어
    • 인셉션 모듈(Inception module) 9개 결합
      • 수용장의 다양한 특징을 추출화기 위해 NIN(Network In Network)의 구조를 확장해 복수의 병렬적 컨볼루션 층을 가짐.
        • NIN 구조
          • 기존 컨볼루션 연산을 MLPConv 연산으로 대체
            • 커널 대신 비선형 함수를 활성함수로 포함하는 MLP를 사용해 특징 추출이 유리
          • 신경망의 미소 신경망(micro neural entwork)가 주어진 수용장 특징을 추상화 시도
          • 전역 평균 풀링(global average pooling) 사용
            • MLPConv가 부류 수만큼 특징 맵을 생성하면, 특징 맵 각각을 평균해 출력 노드에 입력
              • ->매개변수 감소
            • 각각 해당하는 feature map이 해당하는 class에 직접적으로 연결되는 특징들이 몰리게끔 학습이 될 것이다.
      • 마이크로 네트워크로 MLPConv대신 네 종류 컨볼루션 연산 사용 -> 다양한 특징 추출
        • 1*1 컨볼루션 사용해 차원 축소(dimension reduction) (그림 (b)의 Inception module with dimension reductions 참고)
          • 매개변수 수 (특정 맵 수) 줄임 + 깊은 신경망
        • 3*3, 5*5 같은 다양한 크기 컨볼루션을 통해 다양한 특징 추출
      • 매개변수가 있는 층 22개, 없는 층(풀링) 5개로 총 27개 층
      • 완전 연결층은 1개에 불과
        • 백만 개 매개변수를 가지며, VGGNet의 1%에 불과
    • 보조 분류기(auxiliary classifier)
      • 원 분류기 오류 역전파 결과와 보조 분류기 오류 역전파 결과를 결합해 경사 소멸 문제 완화
      • 학습할 때 도우미 역할, 추론할 때 제거

ResNet (신경망의 깊이를 깊게 만드는데 도움을 준 신경망)

 

CS231n

 

  • 잔류(잔차) 학습(Residual learning)이라는 개념을 이용해 성능 저하를 피하며 층 수 대폭 늘림 (얕은 신경망을 조금씩 학습해나가는 구조가 residual block)
    • 지름길 연결된 x(자기 자신)를 더한 F(x) + x에 τ를 적용. F(x)는 잔류.
      • 이전의 모델들은  H(x)(그림 참고)를 얻기 위한 학습이었다면, ResNet은 F(x) = H(x)-x 즉, 나머지를 학습하기 위한 모델이다. F(x)가 0이 되는 방향으로 학습.
      • y = τ(F(x) + x)
      • 지름길을 두는 이유
        • 깊은 신경망도 최적화가 가능
          • 단순한 학습 관점의 변화를 통한 신경망 구조 변화
            • 단순 구조 변경 매개변수 수 영향 없음
            • 덧셈 연산만 하여 전체 연산량 증가도 미비
        • 깊어진 신경망으로 인해 정확도 개선 가능
        • 경사 소멸 문제 해결
          • 자기 자신에 대해서 변화량이 얼마만큼 있는지만 학습하게 해주면 gradient가 사라지는 문제가 없을 것. 
  • VGGNet과 공통점
    • 3*3커널 사용
  • 차이점
    • 잔류 학습 사용
    • 전역 평균 풀링 사용 (FC층 제거)
    • 배치 정규화 적용 (드롭아웃 적용 불필요)

생성 모델

 

모델 학습 단계가 할 일 예측 단계가 할 일 지도 여부
분별 모델 P(y|x) 추정 f:x → y 지도
생성 모델 P(x)
P(x|y),
P(x, y) 추정
f: 씨앗 → x 또는
f: 씨앗, y → x,
f: 씨앗 → x, y
비지도

 

  • 실제 상황에서 생성 모델
    • 현실에 내재한 데이터 발생 분포 P_data(x) -> 알아낼 수 없다.
    • P_data(x)를 모방하는 모델 확률 P_model(x; Θ)
      • P_model(x; Θ)를 명시적으로 추정하는 것도 어렵다
      • 현대 기계 학습은 주로 딥러닝 모델을 사용해 확률 분포를 암시적으로 표현
        • GAN(generative adversarial network), VAE(variational autoencoder), RBM
  • 생성 모델 분류

https://christineai.blog/taxonomy/


GAN

 

  • 생성기(generator) G와 분별기(discriminator) D의 대립구도
    • G는 가짜 샘플 생성 (위조지폐범)
    • D는 가짜/진짜 구별 (경찰) (서로 적대적인 신경망)
  • GAN 목표는 위조지폐범 승리 (G가 만들어내는 샘플을 D가 구별못하는 수준까지 학습)

 

'AI > KDT 인공지능' 카테고리의 다른 글

[07/20] Spark  (0) 2021.07.20
[07/19] 12주차 강의 개요  (0) 2021.07.19
[06/24] 심층학습 기초  (0) 2021.06.24
[06/23] 다층 퍼셉트론  (0) 2021.06.23
[06/22] 라이브 세션  (0) 2021.06.22

+ Recent posts