8.1 더 깊게
심층 신경망을 만들어 MNIST 데이터셋의 손글씨 숫자 인식에 도전
- 층이 깊어지면서 채널 수가 더 늘어남
- 3x3의 작은 필터를 사용한 합성곱 계층
- 활성화 함수는 ReLU
- 완전연결 계층 뒤에 드롭아웃 계층 사용
- Adam 사용해 최적화
- 가중치 초깃값은 'He 초깃값'
잘못 인식한 이미지 → 인간도 식별 어려움
데이터셋에 대한 정확도 순위 → 대부분 CNN을 기초한 기법들이 점령
데이터확장 - 입력 이미지(훈련 이미지)를 알고리즘을 동원해 '인위적'으로 확장함
이미지를 회전하거나, 세로로 이동해 미세한 변화를 주어 이미지 개수 늘림
이미지를 일부를 자르는 'crop', 좌우를 뒤집은 'flip'
왜? 층을 깊게 하는 것이 중요한가
1. 신경망의 매개변수가 줄어듦
5x5의 합성곱 연산 1회는 3x3의 합성곱 연산을 2회 수행하여 대체할 수 있음.
수용영역 - 작은 필터를 겹쳐 신경망을 깊게 할 때 매개변수 수를 줄여 넓은 수용 영역(뉴런에 변화를 일으키는 국소적 공간 영역) 을 소화할 수 있음
2. 학습의 효율성
층을 깊게 함으로써 학습 데이터 양을 줄여 학습을 고속으로 수행 가능
학습해야 할 문제를 계층적으로 분해함 (각 층의 문제를 더 단순한 문제로 대체함)3
3. 정보를 계층적으로 전달 할 수 있음
에지를 추출한 층의 다음 층은 에지 정보를 쓸 수 있음.
8.2 딥러닝의 초기 역사
이미지넷 - 100만 장이 넘는 이미지를 담고 있는 데이터 셋
이 데이터셋을 이용해 이미지 인식 기술 대회인 'ILSVRC'가 열림
시험 항목 - 분류
<VGG>
합성공 계층과 풀링 계층으로 구성된 기본적인 CNN
- 비중있는 층을 모두 16층, 혹은 19층으로 심화한 것이 특징
- 3x3의 작은 필터를 사용한 합성곱 계층을 연속으로 거침
- 2~4회 연속으로 풀링 계층을 두어 크기를 절반으로 줄이는 처리 반복, 마지막은 완전연결 계층 통과
<GoogLeNet>
세로 방향 깊이뿐 아니라 가로 방향도 깊음
'인셉션 구조' - 가로 방향에 폭이 있음
크기가 다른 필터(와 풀링)를 여러 개 적용하여 그 결과를 결합함.
인셉션 구조를 하나의 빌딩 블록으로 사용함
1x1의 합성공 연산은 채널 쪽으로 크기를 줄임 → 매개변수 제거와 고속 처리에 기여
<ResNet>
스킵연결 도입 - 입력데이터를 합성곱 계층을 건너뛰어 출력에 바로 더하는 구조
층의 깊이에 비례해 성능을 향상시킬 수 있음
F(x)가 아닌 F(x)+x가 됨
상류의 기울기에 아무런 구정도 가하지 않고 '그대로' 흘림
합성곱 계층을 2개 층마다 건너뛰면서 층을 깊게 함
150층 이상으로 해도 정확도가 오르는 모습 확인
전이 학습 - 학습된 가중치를 다른 신경망에 복사한 다음, 재학습 수행
8.3 더 빠르게 (딥러닝 고속화)
CPU 만으로는 딥러닝 처리하기에 부족함 / GPU를 활용해 대량의 연산을 고속으로 처리
AlexNet의 forward 처리 시 오랜시간을 합성곱 계층에서 소요함
- 합성곱 계층에서 이뤄지는 연산을 어떻게 효울적으로 하느냐가 딥러닝의 과제임
GPU 컴퓨팅 - GPU로 범용 수치 연산을 수행
GPU는 병렬 수치 연산을 고속으로 처리할 수 있음
CUDA - 엔비디아의 GPU 컴퓨팅용 통합 개발 환경, cuDNN (CUNA 위에서 동작하는 라이브러리)
다수의 GPU와 기기로 계산을 분산함.
GPU와 컴퓨터를 이용한 분산 학습을 지원한 딥러닝 프레임워크 - 구글의 텐서플로, 마이크로소프트의 CNTK
→ GPU 수가 늘어남에 따라 학습도 빨라짐
메모리 용량 면에서 대량의 가중치 매개변수와 중간데이터를 메모리에 저장해야함
GPU의 버스를 흐르는 데이터가 많아져서 한계를 넘어서면 병목이 됨
16비트 반밀정도만 사용해도 학습에 문제가 없음 -수치 정밀도(수치를 몇 비트로 표현)에는 특별히 주의하지 않았음.
파스칼 아키텍처는 해당 포맷 지원
8.4 딥러닝의 활용
1. 사물 검출
이미지 속에 담긴 사물의 위치와 종류(클래스)를 알아냄
R-CNN
후보 영역 추출, CNN 특징 계산
사물이 위치한 영역을 찾아내고, 추출한 각 영역에 CNN을 적용해 클래스를 분류
Faster R-CNN 기법도 등장 - 모든 일을 하나의 CNN에서 처리하기에 속도 빠름
2. 분할
이미지를 픽셀 수준에서 분류하는 문제
픽셀 단위로 객체마다 채색된 지도 데이터를 사용해 학습함, 추론할 때 입력 이미지의 모든 픽셀을 분류
픽셀 수만큼 forward 처리를 해야 하여 긴 시간이 걸리게 됨
FCN - 단 한 번의 forward 처리로 모든 픽셀의 클래스를 분류해줌, 합성곱 계층만으로 구성된 네트워크
공간 볼륨을 유지한 채 마지막 출력까지 처리 가능, 이중 선형 보간에 의한 선형 확대
3. 사진 캡션 생성
사진을 주면, 그 사진을 설명하는 글을 자동으로 생성하는 연구
NIC 모델 - 심층 CNN과 자연어를 다루는 순환 신경망으로 구성됨
CNN으로 사진에서 특징 추출, 그 특징을 RNN에 넘김 → RNN이 CNN이 추출한 특징을 초깃값으로 해서 텍스트를 '순환적'으로 생성
RNN - 순환적 관계를 갖는 신경망, 자연어나 시계열 데이터등의 연속된 데이터를 다룰 때 많이 활용, 과거의 정보를 기억하면서 동작
멀티모달 처리- 사진이나 자연어와 같은 여러 종류의 정보를 조합하고 처리하는 것
8.5 딥러닝의 미래
1. 이미지 스타일 변환
그림을 그리는 연구
두 이미지를 입력해서 새로운 그림을 생성하는 연구
네트워크의 중간 데이터가 콘텐츠 이미지의 중간 데이터와 비슷해지도록 학습. 콘텐츠 이미지의 형태를 흉내냄.
스타일 행렬- 스타일 이미지의 화풍을 흡수하기 위해 사용
2. 이미지 생성
아무런 입력 이미지 없이도 새로운 그림을 그려냄
DCGAN 기법 - 이미지를 생성하는 과정을 모델화함
대량의 이미지를 사용해 학습하고, 학습이 끝나면 그 모델을 이용하여 새로운 그림을 생성할 수 있음
생성자 (정교한 가짜이미지 생성) 와 식별자(그것이 진짜인지 판정)로 불리는 2개의 신경망을 이용함
GAN 기술
3. 자율주행
주위 환경을 올바르게 인식하는 기술
SegNet - CNN 기반 신경망은 주변 환경을 정확하게 인식함
입력 이미지를 분할(픽셀 수준에서 판정) 하고 있음
4. 강화학습
에이전트가 환경에 맞게 행동을 선택하고, 그 행동에 의해서 환경이 변함
환경이 변화하면 에이전트를 보상을 얻음. 더 나은 보상을 받는 쪽으로 에이전트의 행동 지침을 바로잡음
Deep Q-Network - Q 학습이라는 강화학습 알고리즘을 기초로 함
Q 학습 - 최적 행동 가치 함수로 최적인 행동을 정함.
DQN - Q 학습을 딥러닝을 비슷하게 흉내내어 사용함
'AI > 딥러닝' 카테고리의 다른 글
[밑바닥부터 시작하는 딥러닝] 7장 합성곱 신경망(CNN) (0) | 2023.04.15 |
---|---|
[밑바닥부터 시작하는 딥러닝] 6장 학습 관련 기술들 (1) | 2023.04.08 |
[밑바닥부터 시작하는 딥러닝] 5장 오차역전파법 (0) | 2023.04.01 |
[밑바닥부터 시작하는 딥러닝] 4장 신경망 학습 (0) | 2023.03.25 |
[밑바닥부터 시작하는 딥러닝] 3장 신경망 (0) | 2023.03.18 |