8.1 더 깊게
8.2 딥러닝의 초기 역사
8.3 더 빠르게(딥러닝 고속화)
8.4 딥러닝의 활용
8.5 딥러닝의 미래
8.6 정리
8.1 더 깊게
1) 더 깊은 신경망으로
신경망 특징
- 층이 깊어질수록 채널 수가 늘어난다.
- 3*3의 작은 필터를 사용한 합성곱 계층(Conv)
- 활성화 함수는 ReLU
- 풀링 계층 추가해 중간 데이터의 공간 크기를 줄여나감
- 완전연결 계층 뒤에 드롭 아웃 계층 사용
- 완전 연결 신경망이란, 인접하는 계층의 모든 뉴런과 결합되어 있는 신경망을 말한다. 입력 데이터와 가중치가 1대 1로 대응하는 것을 완전 연결(Fully-Connected)이라고 하며, 행렬의 내적(Affine)으로 표현된다. - 가중치 매개변수 갱신(Adam을 사용해 최적화)
- 가중치 초기값: 'He' 초기값
(ReLU 활성화 함수 사용 시 He 초기화 방법이 효율적이다.)
2) 정확도를 더 높이려면
- 앙상블 학습
: 하나의 모델을 사용하는 대신, 보다 약한 모델 여러 개를 조합하여 더 정확한 예측에 도움을 주는 방식
- 학습률 감소
: 학습률스케줄링으로 좋은 학습률 찾기
- 데이터 확장
:회전, 이동, crop, flip 등을 통해서 데이터의 양을 늘리는 기법
3) 깊게 하는 이유
층을 깊게 하는 것의 중요성
- 신경망의 매개변수 수가 줄어든다
- 층을 깊게 한 신경망은 깊지 않은 경우보다 적은 매개변수로 같은 수준(혹은 그 이상)의 표현력을 달성할 수 있다.
- 학습의 효율성: 층을 깊에 함으로써 학습 데이터의 양을 줄여 학습을 고속으로 수행할 수 있다.
예를 들어 5*5 receptive field를 분석하기 위해서는 한층을 사용할 경우에는 25개의 파라미터가 필요하다. 하지만 두 층을 사용하면 18개의 파라미터만 학습시키면 된다.
- 계층적으로 분석할 수 있다.
예를들어 이미지를 보고, 클래스를 예측하는 분류 문제에서 한 층으로 한다고 하면 이미지에서 바로 어떤 클래스인지 맞춰야한다. 하지만 여러 층으로 나누게 되면 첫 번째 층에서는 간단한 특징을 뽑고, 층이 깊어질수록 조금 더 복잡한 특징을 추출하는 등 계층적으로 분석을 할 수 있다.
8.2 딥러닝의 초기 역사
1) 이미지넷
이미지넷은 100만장이 넘는 이미지를 담고 있는 데이터셋이다. 이 데이터를 이용한 시험 중 하나가 분류대회이다.
분류대회에서는 1000개의 클래스를 제대로 분류하는지를 겨룬다.
2012년 이후 선두는 항상 딥러닝 방식이었는데 이 중 세 가지 유명 신경망을 알아보자.
2) VGG
VGG는 합성곱 계층과 풀링 계층으로 구성되는 기본적인 CNN
- 비중 있는 층(합성곱 계층, 완전연결 계층)을 모두 16층으로 층 수를 이전보다 늘렸고, 3*3의 작은 필터를 사용한 합성곱 계층을 연속으로 거친다.
- 합성곱 계층을 2~4회 연속으로 풀링 계층을 두어 크기를 절반으로 줄이는 처리를 반복한다. 마지막에는 완전연결 계층을 통과시켜 결과를 출력한다.
3) GoogLeNet
기본적으로는 기존의 CNN과 다르지 않지만 세로 방향 깊이 뿐 아니라 가로 방향도 깊다는 점이 특징이다.
GoogLeNet은 가로 방향에 폭이 있는데, 이를 인셉션 구조라한다. 인셉션 구조는 크기가 다른 필터를 여러 개 적용하여 그 결과를 결합한다.
인셉션 구조는 크기가 다른 필터(와 풀링)을 여러 개 적용하여 그 결과를 결합하는데 GoogLeNet은 이 인셉션 구조를 하나의 빌딩 블록(구성요소)으로 사용한다.
또한 1x1크기의 필터를 사용한 합성곱 계층을 많은 곳에서 사용한다. 이 합성곱 연산은 채널 쪽으로 크기를 줄이는 것으로 매개변수 제거와 고속 처리에 기여한다.
4) ResNet
딥러닝 학습에서는 층이 지나치게 깊으면 학습이 잘 되지 않고, 오히려 성능이 떨어지는 경우도 있다. ResNet에서는 스킵연결로 층의 깊이에 비례해 성능을 향상하도록 했다.
- 스킵연결은 입력데이터를 합성곱 계층을 건너뛰어 출력에 바로 더하는 구조이다.
8.3 더 빠르게(딥러닝 고속화)
과거에는 주로 CPU가 계산을 담당, 그러나 CPU만으로 딥러닝을 처리하기에는 부족하다.
딥러닝 프레임워크 대부분은 GPU를 활용해 대량 연산을 고속으로 처리가 가능
합성곱 계층에서의 연산이 오래 걸리기 때문에 이를 어떻게 고속으로 효율적으로 하느냐가 딥러닝의 과제이다.
1) GPU를 활용한 고속화
- 딥러닝 프레임워크 대부분은 GPU(Graphics Processing Unit)를 활용해 대량의 연산을 고속으로 처리한다.
- GPU는 병렬 수치 연산을 고속으로 처리할 수 있다.
2) 분산 학습
- 딥러닝 계산을 더욱 고속화하고자 다수의 GPU와 기기로 계산을 분산한다.
- 다수의 GPU와 컴퓨터를 이용한 분산 학습을 지원한 딥러닝 프레임워크의 예
- 구글-텐서플로
- 마이크로소프트-CNTK(Computational Network Toolkit)
3) 연산 정밀도와 비트 줄이기
- 대량의 가중치 매개변수와 중간 데이터를 메모리에 저장 = GPU의 버스를 흐르는 데이터가 많아져 병목이 된다.
- 네트워크로 주고받는 데이터의 비트수를 최소로 만드는 것이 바람직하다.
- 딥러닝은 높은 수치 정밀도(수치를 몇 비트로 표현하느냐)를 요구하지 않는다.
- (= 입력에 노이즈가 조금 섞여도 출력 결과가 잘 달라지지 않음 = 신경망을 흐르는 데이터를 퇴화시켜도 출력에 주는 영향은 적음)
8.4 딥러닝의 활용
1) 사물 검출
이미지 속에 담긴 사물의 위치와 종류(클래스)를 알아내는 기술
- R-CNN
- R-CNN 에서 주목할 곳은 2. 후보 영역 추출(사물처럼 보이는 물체를 찾아 처리) 과 3. CNN 특징 계산이다. 먼저 사물이 위치한 영역을 (어떤 방법으로) 찾아내고 추출한 각 영역에 CNN을 적용하여 클래스를 분류한다.
2) 분할
이미지를 픽셀 수준에서 분류한다.
픽셀 단위로 객체마다 채색된 지도(supervised) 데이터를 사용해 학습한다.
- FCN(Fully Convolutional Network)
- 합성곱 계층만으로 구성된 네트워크.
- 단 한 번의 forward 처리로 모든 픽셀의 클래스를 분류해준다.
- - 사물 인식에서 사용한 신경망의 완전연결 계층에서는 중간 데이터의 공간 볼륨을 1차원 형태로 변환해 처리했으나 FCN에서는 공간 볼륨을 유지한 채 마지막 출력까지 처리할 수 있다.
- 마지막에 공간 크기를 확대하는 처리를 도입했다.
(이를 통해 줄어든 중간 데이터를 입력 이미지와 같은 크기까지 단번에 확대할 수 있다. 이중 선형 보간(bilinear interpolation)에 의한 선형 확대)
3) 사진 캡션 생성
사진을 주면 그 사진을 설명하는 글(사진 캡션)을 자동으로 생성하는 연구.
사진 캡션을 생성하는 방법으로는 NIC모델이 대표적이다.
- NIC(Neural Image Caption): 심층 CNN과 자연어를 다루는 순환신경망(Recurrent Neural Network)으로 구성된다.
- RNN: 순환적 관계를 갖는 신경망으로 자연어나 시계열 데이터 등의 연속된 데이터를 다룰 때 많이 활용한다.
- 최근 주목반는 분야 - 멀티모달 처리(multimodal processing): 사진이나 자연어와 같은 여러 종류의 정보를 조합하고 처리하는 것
8.5 딥러닝의 미래
1) 이미지 스타일 변환
두 이미지(콘텐츠 이미지, 스타일 이미지)를 입력해서 새로운 그림을 생성하는 연구
2) 이미지 생성
- DCGAN(Deep Convolutional Generative Adversarial Network)
- 이미지를 생성하는 과정을 모델화한다.
- 생성자(generator)와 식별자(discriminator)로 불리는 2개의 신경망을 이용한다.
- 생성자는 진짜와 똑같은 이미지를 생성하고 식별자는 그것이 진짜인지(생성 이미지인지, 촬영된 이미지인지)를 판정한다.
- 생성자와 식별자가 겨루도록 학습시켜 최종적으로 생성자는 진짜와 착각할 정도의 이미지를 그려낸다.
3) 자율주행
- SegNet : CNN 기반 신경망. 입력 이미지를 분할(픽셀 수준에서 판정)한다.
4) 강화학습
강화학습에서는 에이전트가 환경에 맞게 행동을 선택하고 그 행동에 의해서 환경이 변한다는 게 기본적인 틀이다. 환경이 변화하면 에이전트는 어떠한 보상을 얻는데 강화학습의 목적은 더 나은 보상을 받는 쪽으로 에이전트의 행동 지침을 바로잡는 것이다.
최적 행동 가치 함수로 최적인 행동을 정하는 Q학습이라는 강화학습 알고리즘을 기초로 한다.
최적 행동 가치 함수를 딥러닝(CNN)으로 비슷하게 흉내 내어 사용하는 것
8.6 정리
- 수많은 문제에서 신경망을 더 깊게 하여 성능을 개선할 수 있다.
- 이미지 인식 기술 대회에서는 최근 딥러닝 기반 기법이 상위권을 독점하고 있으며, 그 깊이도 깊어지는 추세다.
- 유명한 신경망으로는 VGG, GoogLeNet, ResNet가 있다.
- GPU와 분산 학습, 비트 정밀도 감소 등으로 딥러닝을 고속화할 수 있다.
- 딥러닝(신경망)은 사물 인식뿐 아니라 사물 검출과 분할에도 이용할 수 있다.
- 딥러닝의 응용 분야로는 사진의 캡션 생성, 이미지 생성, 강화학습 등이 있다.