[Deep Learning] 밑바닥부터 시작하는 딥러닝(사이토 코기, 한빛미디어) : 8장 딥러닝

한은기·2021년 7월 21일
0

Deep Learning

목록 보기
7/12
post-thumbnail

8.1. 더 깊게

  1. 정확도 향상
    1) 앙상블 학습, 학습률 감소, 데이터 확장 등의 방법이 있음
    2) 데이터 확장(data augmentation) : 입력 이미지(훈련 이미지)를 알고리즘을 이용해 인위적으로 확장하는 방법. 회전, 이동, crop, flip, 밝기, 스케일 변화 등의 방법을 사용
    3) 데이터 확장으로 훈련 이미지 개수 증가 -> 딥러닝 인식 수준 개선
  1. 층을 깊게 하는 이유
    1) 층이 깊어지면 그와 비례해 정확도 상승
    2) 신경망의 매개변수 개수 감소로 수용 영역 소화

수용 영역(receptive field) : 뉴런에 변화를 일으키는 국소적 공간

3) 활성화 함수를 합성곱 계층 사이에 끼워 신경망 표현력 개선. 비선형 함수가 겹치며 복잡한 문제 해결 가능
4) 학습 데이터의 양 감소로 고속 학습 수행 및 효율성 증대
5) 학습해야 할 문제를 계층적 분해 가능
6) 정보를 계층적으로 전달 가능. 층 깊게 하여 각 층이 학습할 문제를 풀기 쉽고 단순한 문제로 분해 가능


#8.2. 딥러닝의 초기 역사
1. 딥러닝의 주목 배경 : 2012 ILSVRC에서 AlexNet이 압도적으로 우승을 하며 이미지 인식 접근법이 변화되고, 딥러닝 역습의 전환점이 됨

ILSVRC(ImageNet Large Scale Visual Recognition Challenge) : 대규모 이미지 인식 대회

  1. VGG : 합성곱 계층과 풀링 계층으로 구성되는 기본적 CNN
    1) 비중이 있는 층인 합성곱계층과 완전연결 계층을 모두 16 또는 19층으로 심화
    2) 3X3의 작은 필터 가진 합성곱 계층을 연속적으로 통과
    3) 합성곱 계층을 2~4회 연속으로 풀링 계층 두어 크기 절반으로 줄이기 반복
    4) 마지막엔 완전연결계층 통과시켜 결과 출력
  1. GoogLeNet
    1) 세로 뿐만 아니라 가로 방향도 깊게 설정해 폭을 가짐(=인셉션 구조)
    2) 인셉션 구조를 하나의 구성요소(building block)으로 사용
    3) 인셉션 구조 : 크기가 다른 필터와 풀링을 복수 개 적용해 결과를 결합
    4) 1X1 크기의 필터의 합성곱 계층을 다수 사용하고, 채널 쪽으로 크기 줄여 매개변수 제거&고속 처리 기여
  1. ResNet(Residual Network)
    1) 지나치게 깊은 층으로 발생하는 문제 해결 위해 스킵 연결(skip connection)도입 -> 층의 깊이 비례해 성능 향상
    2) 스킵 연결 : 입력 데이터를 합성곱 계층 건너뛰어 출력에 바로 더하는 구조. 입력 데이터를 그대로 흘리는 것
    3) 역전파 시 상류의 기울기를 수정 없이 그대로 하류로 보냄
    4) 기울기 감소 혹은 과격한 증대 없이 앞 층에 ‘의미 있는 기울기’가 전해짐 -> 기울기 소실 문제 감소. 역전파 시 신호 감쇠 방지
    5) VGG신경망 기반으로 스킵 연결 도입해 층 깊이 함
    6) 합성곱 계층을 2개 층마다 건너 뜀

전이 학습(transfer learning) : 학습된 가중치나 그 일부를 다른 신경망에 복사한 뒤, 그 상태로 재학습 수행. 같은 구성의 신경망 준비한 뒤 미리 학습된 가중치를 초기값으로 설정하고 새로운 데이터셋으로 재학습(fine tuning)수행하는 식. 보유 데이터셋이 적을 시 특히 유용함


8.4. 딥러닝 고속화

  1. 합성곱 처리에서 처리 시간 비율이 높음 → 합성곱 계층 연산 고속화가 딥러닝의 과제임
  1. GPU(Graphics Processing Unit)를 활용한 고속화
    1) GPU 컴퓨팅 : GPU로 범용수치 연산을 수행하는 것
    2) CPU만으로는 딥러닝의 연산을 빠르게 처리하는 데 한계가 있음
    CPU는 연속적인 복잡한 계산을 잘 처리하는데 반해, GPU는 대량 병렬 연산을 고속으로 수행함
    3) Nvidia가 대부분의 딥러닝 프레임워크에 사용됨

CUDA : NVIDIA의 GPU컴퓨팅 통합 개발 환경.
cuDNN : CUDA 위에서 동작하는 라이브러리로, 딥러닝에 최적화된 라이브러리

  1. 분산 학습(수평확장, scale up)
    1) 딥러닝의 1회 학습에 걸리는 시간을 최대한 단축하고자 함
    2) 다수의 GPU와 기기로 계산을 분산하기도 함
    3) 대표적으로 TensorFlow(구글), CNTK(마이크로소프트. Computational Network ToolKit)는 분산학습에 중점을 둠
  1. 메모리 용량이나 버스 대역폭 등의 문제도 발생
    1) 대량의 가중치 매개변수 및 중간 데이터 저장 → 메모리 용량 제한
    2) GPU/CPU의 버스 흐르는 데이터 많아져 한계 넘어서면 병목 발생 → 버스 대역폭 문제 발생
    3) 따라서 네트워크로 주고받는 데이터의 비트 수 최소화해야 함
    4) 신경망의 견고성(노이즈가 섞여있어도 출력 결과 큰 지장 없음)에 따라, 높은 수치 정밀도(수치를 몇 비트로 표현하느냐)를 요하지 않으므로 데이터를 퇴화시켜도 됨
    5) 16비트 반정밀도(half-precision)만 사용해도 문제가 없음이 알려짐

컴퓨터에서는 주로 64bit(64비트 배정밀도. double-precision), 32bit(32비트 단정밀도. single-precision) 부동소수점 수를 사용해 실수를 표기함. 비트 수가 클수록 계산 오차는 줄어들고, 계산 비용과 메모리 사용량, 버스 대역폭 부담은 증가함


8.4. 딥러닝의 활용

  1. 사물검출 : 이미지 내 사물의 위치 및 종류(class)를 알아내기. CNN을 기반으로 한 기법이 널리 쓰임
  1. 사물검출과 R-CNN(Regions with Convolutional Neural Network)
    1) 입력이미지 → 후보 영역 추출 → CNN 특징 계산 → 영역 분류 순으로 진행
    2) 사물이 위치한 영역을 특정 방법으로 찾아내고(후보 영역 추출), 추출한 각 영역에 CNN을 적용해 클래스 분류(CNN 특징 계산)
    3) 이미지를 사각형으로 변형 또는 분류 시 서포트 벡터 머신(SVM) 사용
    4) Faster R-CNN 기법 : 후보 영역 추출까지 CNN으로 처리하는 기법으로, 매우 빠름
  1. 분할(segmentation) : 이미지를 픽셀 수준에서 분류하는 문제
    1) 픽셀 단위로 객체마다 채색된 지도 데이터(supervised data)를 사용해 학습하며, 추론 시 입력 이미지의 모든 픽셀을 분류함
    2) 모든 픽셀 각각을 추론하면 합성곱 연산에서 많은 영역을 다시 계산하는 비효율성 발생
  1. 분할과 FCN(Fully Convolutional Network)
    1) 단 한 번의 forward 처리로 모든 픽셀의 클래스를 분류해주는 기법으로, 모든 픽셀을 각각 추론면 발생하는 낭비를 방지
    2) 일반적 CNN이 완전연결 계층을 이용하는 것과 다르게, FCN은 완전연결계층을 ‘같은 기능을 하는 합성곱 계층’으로 바꿈
    3) 마지막에 공간 크기를 확대하는 처리(이중 선형 보간(bilinear interpolation)에 의한 선형확대) 도입 → 줄어든 중간 데이터를 입력 이미지와 동일 크기로 한번에 확대.
    4) FNC에서는 선형 확대를 역합성곱(deconvolution) 연산으로 구현
  1. 사진 캡션 생성 : 사진이 주어졌을 때, 설명하는 캡션을 자동으로 생성하는 연구로, 컴퓨터 비전과 자연어를 융합. NIC 모델이 대표적
  1. 사진 캡션 생성과 NIC(Neural Image Caption) 모델
    1) 심층 CNN과, 자연어를 다루는 순환 신경망으로 구성됨
    2) CNN으로 사진에서 특징을 추출해 RNN에 넘김 → RNN은 특징을 초깃값으로 하여 텍스트를 ‘순환적’으로 생성

순환 신경망(=재귀 신경망. RNN, Recurrent Neural Network)

  • 자연어와 시계열 데이터 등의 연속적 데이터를 주로 다룸
  • 순환적 네트워크 구조를 가지는 신경망. 이전에 생성한 정보에 영향을 받음(과거 정보 기억)

멀티모달 처리(multimodal processing) : 사진이나 자연어 같은 여러 종류의 정보를 조합하고 처리하는 것


8.5. 딥러닝의 미래

  1. 이미지 스타일(화풍) 변환
    1) 콘텐츠 이미지 : 딥러닝으로 그림을 그리는 연구 / 스타일 이미지 : 두 이미지를 입력해 새 그림을 생성하는 연구
    2) 콘텐츠&스타일 이미지를 조합해 새로운 그림을 그리는 것
    3) 네트워크의 중간 데이터가 콘텐츠 이미지의 중간 데이터와 비슷해지도록 학습 → 입력 이미지를 콘텐츠 이미지의 형태와 유사하게 함
  1. 이미지 생성 : 대량의 이미지를 모델을 통해 학습 후, 아무 입력 이미지 없이 새로운 이미지 그려내는 연구. 지도학습이 아닌 자율학습(unsupervised learning) 문제로, 지도용 데이터가 주어지지 않고 대량의 이미지만 주어지고 스스로 학습함
  1. 이미지 생성과 GAN(Generative Adversarial Network), DCGAN(Deep Convolutional Generative Adversarial Network)
    1) 생성자(generator)식별자(discriminator) 의 2개의 신경망을 이용한 딥러닝 기술
    2) 생성자는 진짜와 똑같은 이미지 생성, 식별자는 생성or촬영 이미지인지 판정
    3) 생성자와 식별자를 겨루도록 학습시켜, 생성자는 이미지 생성 기술을 정교화하고, 식별자는 감정 기술 높이도록 함
  1. 자율 주행 : 경로 계획(path plan, 주행경로 정하기), 탐사(카메라, 레이저 등 이용), 주변 환경 인식 기술 필요
  1. 자율 주행과 SegNet : 주변 환경 인식에 딥러닝 활용 예로서, CNN 기반 신경망
  1. 강화학습(reinforced learning)
    1) 지도 학습과는 달리, 시행착오를 겪으며 학습함
    2) 에이전트가 환경에 맞게 행동을 선택하고, 행동에 의해 환경이 변함
    3) 환경이 변화했을 때 에이전트가 받게되는 보상(예상 보상)이 더 나은 쪽으로 에이전트의 행동 지침을 변경함
  1. 강화학습과 Deep Q-Network(DQN)
    1) 딥러닝을 사용한 강화학습의 일종
    2) Q학습이라는 강화학습 알고리즘을 기초로 하여 최적 행동가치 함수를 CNN과 비슷하게 사용하는 것
    3) Q 학습 : 최적 행동 가치 함수로 최적인 행동을 정함
    4) 영상만 추출해 비디오 게임을 자율학습 시키는 등이 가능
profile
🏫Inha Univ. Naval Architecture and Ocean Engineering & Computer Engineering (Undergraduate) / 🚢Autonomous Vehicles, 💡Machine Learning

0개의 댓글