프로그래머스 인공지능 데브코스 3기 수업내용 정리 #36(Deep Learning: 신경망의 기초4)

Clay Ryu's sound lab·2022년 2월 14일
0

Note for 2021

목록 보기
30/33
post-custom-banner

심층학습의 기초

컨볼루션 신경망 사례연구

AlexNet, VGGNet, GoogLeNet, ResNet

영상 분류

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

ImageNet

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

ILSVRC ImageNet Large Scale Visual Recognition Competition

1000가지 부류에 대해 분류, 검출, 위치 지정 문제
120만 장의 훈련집합, 5만장의 검증 집합, 15만장의 테스트 집합
우승 : AlexNet(2012, 8layers), Clarfi(2013), GooLeNet(22layers) & VGGNet2014, ResNet2015
우승한 모델은 코드와 학습된 가중치를 공개함으로써 널리 사용되는 표준 신경망이 됨

AlexNet

구조

컨볼루션층 5개와 완전연결층 3개
컨볼루션층은 200만개, FC층은 6500만개 가량의 매개변수
FC층에 30배 많은 매개변수 -> 향후 CNN은 FC층에 매개변수를 줄이는 방향으로 발전

당시 GPU의 메모리 크기 제한으로 인해 GPU#1 GPU#2로 분할하여 학습 수행
3번째 컨볼루션 층은 두 결과를 함께 사용 inter-GPU connections
컨볼루션 층 큰 보폭으로 다운샘플링

학습에 성공한 요인

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

내적 요인 :
1.활성함수로 ReLU 사용
2.지역 반응 정규화local response normalization
-인간 신경망 측면억제lateral inhibition 모방, ReLU활성화 규제
-1, 3번째 최대 풀링 전 적용
3.과잉적합 방지하는 여러 규제 기법 적용
-데이터 확대(잘라내기와 반전으로 2048배로 확대),
-드롭아웃(완전연결층에서 사용)

테스트 단계에서 앙상블 적용
입력된 영상을 잘라내기와 반전을 통해 증가하고 증가된 영상들의 예측 평균으로 최종 인식
2~3%만큼 오류율 감소 효과

VGGNet

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

작은 커널의 이점

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

1x1xL 커널

신경망 속의 신경망network in network(2014)이라는 연구에서 유래
VGGNet은 적용 실험을 하였지만 최종 선택 하지는 않음(GoogLeNet에서 사용됨)
차원 통합 : 마지막 차원을 통합 하는 효과가 있다.
차원 축소 효과 : 3차원을 2차원으로 만들어 줄 수 있다.

GoogLeNet

인셉션 모듈inception module

수용장의 다양한 특징을 추출하기 위해 NIN의 구조를 확장하여 복수의 병렬적인 컨볼루션 층을 가짐

NIN

기존 컨볼루션 연산을 MLPConv 연산으로 대체
커널대신 비선형 함수를 활성함수로 포함하는 MLP를 사용하여 특징 추출 유리함
신경망의 미소 신경망micro neural network가 주어진 수용장의 특징을 추상화 시도
전역 평균 풀링global average pooling사용

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

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

NIN 개념을 확장

인셉션 모듈 : 마이크로 네트워크로 MLPConv 대신 네 종류의 컨볼루션 연산을 사용 -> 다양한 특징을 추출
하나의 레이어에 다양한 크기의 컨볼루션을 통해서 다양한 특징들을 추출

  • 1x1 컨볼루션을 적용하고 3x3 컨볼루션을 적용하면 매개변수의 수를 줄이면서 특징을 추출할 수 있다.

특징

인셉션 모듈을 9개 결합
매개변수가 있는 층 22개, 없는 층(풀링) 5개로 총 27개의 층
완전 연결층은 1개에 불과
1백만개의 매개변수를 가지며 이는 VGGNet의 1%에 불과하다.

보조 분류기

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

ResNet

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

지름길 연결을 두는 이유

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

특징

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

생성모델

분별 모델 : P(y|X)추정
생성 모델 : P(X) 또는 P(X|y) 데이터 자체
학습으로 Pdata(X)을 배우고 그것으로 생성

GAN

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

profile
chords & code // harmony with structure
post-custom-banner

0개의 댓글