Top

C++와 CUDA C로 구현하는 딥러닝 알고리즘 Vol.2 [복소수 영역에서의 오토인코더 이해와 구현]

  • 원서명Deep Belief Nets in C++ and CUDA C Volume 2: Autoencoding in the Complex Domain (ISBN 9781514365991)
  • 지은이티모시 마스터즈(Timothy Masters)
  • 옮긴이이승현
  • ISBN : 9791161750316
  • 28,000원
  • 2017년 08월 11일 펴냄
  • 페이퍼백 | 256쪽 | 188*235mm
  • 시리즈 : 데이터 과학

책 소개

저자 홈페이지: timothymasters.info
요약

전체 3권으로 이뤄지는 "C++과 CUDA C로 구현하는 딥러닝 신경망" 시리즈의 두 번째 책이다. 인코더와 디코더 구조를 기반으로 하면서 입력 정보를 다시 복원하는 구조의 오토인코더는 GAN 모델의 발전으로 인해 점차 그 활용도와 중요성이 커지고 있다. 1권에서 다뤘던 내용을 다시 언급하므로 1권의 내용을 충분히 숙지해주길 바란다.
먼저 기본적인 신호 처리 수준에서의 몰렛 웨이블릿 개념과 이를 이미지 처리로 확장했을 때의 푸리에 변환 개념 등을 살펴본다. 그다음 복소수 정의역에서의 오토인코딩 개념을 설명한다. 그리고 이러한 내용들을 복소수 영역에서의 신경망으로 확장해 활성화 함수와 그레디언트, SoftMax 레이어 등을 계산하는 과정으로 나눠 상세하게 살펴본다. 처음엔 단일 스레드 기반의 구현 방법부터 시작해서 마지막엔 멀티스레드 기반의 구현 방법으로 확장시킨다. 3장에서는 2장에서 각 레이어별로 구현한 내용을 GPGPU를 활용할 수 있도록 CUDA C로 구현하는 내용을 다룬다. 마지막 4장에서는 저자가 제공하는 DEEP 프로그램의 메뉴얼을 소개하면서, 사용자가 구현 결과를 미리 확인하면서 각 기능들의 실행 결과물을 쉽게 확인할 수 있도록 도와준다.

이 책에서 다루는 내용

■ 신호 처리와 이미지 처리를 위한 몰렛 웨이블릿 및 푸리에 변환
■ 오토인코딩의 기본 개념과 복소수 정의역에서의 오토인코딩 표현 이론 설명
■ 신경망 관점에서 활성화 레이어 및 그레디언트 계산 과정 설명
■ 단일 스레드 기반의 구현 방법부터 멀티스레드 기반의 구현 방법으로 확장
■ GPGPU를 활용할 수 있도록 CUDA C로 확장시켜 구현
■ DEEP프로그램의 상세한 사용자 매뉴얼 소개
■ DEEP을 이용해 구현 결과를 미리 확인하면서 각 기능들의 실행 결과물 확인
■ 필수 Deep Belief Nets 알고리즘을 구현한 C++ 코드와 윈도우 상에서 실행되는 멀티스레드 버전의 구현물과 더불어 nVidia 비디오 카드의 슈퍼 컴퓨팅 성능을 활용할 수 있도록 CUDA C 기반으로 구현한 코드 제공

이 책의 대상 독자

전체 3권으로 이뤄지는 "C++과 CUDA C로 구현하는 딥러닝 신경망" 시리즈의 두 번째 책으로 오토인코더에 대해 다룬 책이다. 그러므로 신경망에 대해 이미 기본적인 지식이 있으며, Deep Belief Nets에 대해 학습하고 실험해보면서 이를 실제 프로그램으로 구현해보고자 하는 독자를 대상으로 한다. 1권에서 다뤘던 내용을 다시 언급하기 때문에 먼저 1권의 내용을 충분히 숙지해주길 바란다.

이 책의 구성

이 책은 크게 네 부분으로 나뉜다. 첫 번째는 클래스의 생성적 모범(exemplar)을 찾아낼 수 있는 방식을 통해, 특징 셋에 클래스 레이블들을 내장시키는 기법에 대해 다룬다. 그다음에는 Deep Belief Nets에 효과적인 입력을 제공하기 위한 신호 전처리 및 이미지 전처리 기법을 다룬다. 복소수 정의역 피처를 만들어내는 전처리 방식에 각별히 신경을 쓸 것이다. 세 번째로 기본적인 오토인코더에 대한 개념을 다루면서, 복소수 정의역에서 전체적인 오토인코딩에 대해 강조한다.
이러한 기법은 특히 신호 처리나 이미지 처리와 관련된 여러 분야에서 유용하게 사용할 수 있다. 마지막으로 DEEP 프로그램의 운용 방법에 대해 다룬다. 이 프로그램은 내 홈페이지에서 무료로 다운로드할 수 있다.

저자/역자 소개

지은이 소개

티모시 마스터즈(Timothy Masters)

수리 통계학 분야에서 수치 계산(numerical computing) 전공으로 박사 학위를 받았다. 그 이후 독립적인 컨설턴트로서 정부 및 산업 기관과 함께 지속적인 업무 경력을 쌓았다. 초기 연구 분야는 고고도(high-altitude) 촬영 사진에서 자동으로 특징(feature)을 추출하는 기능과 관련된 것들이며, 홍수와 가뭄 예측, 숨겨진 미사일 저장탑 탐지, 위협적인 군사용 차량 확인 등의 다양한 애플리케이션들을 개발했다. 그 후에는 침생검(needle biopsies)상에서 유익한 세포와 유해한 세포를 구별해내는 알고리즘 개발을 위해 의료 연구원으로 근무했다. 이후 12년 동안 주로 자동화된 금융 거래 시스템을 평가하기 위한 알고리즘을 개발했다.
지금까지 예측 모델을 실무에 적용하는 방법에 대한 내용으로 『Practical Neural Network Recipes in C++』(Academic Press, 1993), 『Signal and Image Processing with Neural Networks』(Wiley, 1994), 『Advanced Algorithms for Neural Networks』(Wiley, 1995), 『Neural, Novel, and Hybrid Algorithms for Time Series Prediction』(Wiley, 1995), 『Assessing and Improving Prediction and Classification』(CreateSpace, 2013), 『C++와 CUDA C로 구현하는 딥러닝 알고리즘 Vol.1』(에이콘, 2016), 『C++와 CUDA C로 구현하는 딥러닝 알고리즘 Vol.3』(에이콘, 2016) 등을 저술했다. 이 책에서 활용하는 코드는 그의 홈페이지 (TimothyMasters.info)에서 다운로드할 수 있다.

옮긴이의 말

4년 전, 우연히 데이터 마이닝 분야를 접하게 된 이후 줄곧 데이터 속에서 특정한 패턴을 찾아내는 기법이 얼마나 놀라운 속도로 발전하고 있는지 구경하는 것만으로도 상당한 재미가 있었다. 예전에는 ‘인공지능’이란 말이 그저 스타크래프트와 같은 게임 소프트웨어를 만드는 데만 국한돼 사용되는 것 같았지만, 요즘에는 부쩍 자동차 소프트웨어나 사용자와 대화하는 소프트웨어, 주식 거래 자동화 소프트웨어, 의료 영상이나 바이오 인포매틱스 등에 활발하게 적용되면서 왠지 모를 보람을 느끼고 있다.
이 책은 이러한 인공지능 기술의 가장 중심에 해당하는 “딥러닝” 알고리즘의 핵심인 ”Deep Belief Network”를, ”CUDA”와 함께 다룸으로써 딥러닝의 구조와 원리를 이해하고, 이러한 알고리즘이 GPGPU에서 동작하기 위해 어떠한 개념과 기법들이 적용되고 있는지 확인해볼 수 있는 좋은 진입점이라 할 수 있다. 내 좁은 시각으로 보면, 알파고나 구글카의 자율 주행 기술들에 딥러닝이 적용되는 것은 그야말로 시작에 불과한 것 같다. 딥러닝이 빅데이터의 어깨 위에 서서 이 세상이 돌아가는 역학적 원리를 학습하기 시작한다면 이 알고리즘의 본 면모가 제대로 드러날 것 같다. 요즘 “구글라이프”라는 말을 종종 듣곤 하는데, 이러한 기술을 우리나라 엔지니어들도 빠르게 습득해 이런 볼 만한 구경거리를 그저 바라보고만 있지 말고 직접 그 무대에 올라서서 같이 퍼포먼스를 보여줬으면 한다. 나도 아직 딥러닝의 모든 것을 제대로 이해하고 있는 것은 아니기 때문에 번역에 어려움이 많았지만, 이렇게 1권부터 3권까지 이어지는 시리즈를 모두 마치고 나니 한숨 돌릴 것 같다.
혹시 이 책을 읽고, 딥러닝 기술을 실시간 영상처리에 적용하는 데(되도록 자동차 분야에 국한해) 관심이 있으신 독자가 있다면 기꺼이 교류하고 싶다. 아무쪼록 시리즈의 마지막 한 권으로 독자께 인사드리게 돼 큰 영광이며, 이후에도 딥러닝과 관련된 서적들을 통해 지속적으로 인사드릴 수 있었으면 한다. 참고로 이 책을 번역하면서 나름대로 그림을 그리며 정리한 자료가 있는데, 원한다면 링크드인(http://kr.linkedin.com/in/seunghyun-lee-0845528b)에서 찾을 수 있다. 독자 분들이 이 책을 읽으면서 자료를 함께 참고해 학습 시간을 절약할 수 있었으면 한다.

이승현

옮긴이 소개

이승현

한국 항공대학교 기계공학부를 졸업하고, 삼성 소프트웨어 멤버십과 산업통상자원부 소프트웨어 마에스트로를 수료했다. MDS 테크놀로지에서 자동차의 ISO26262 국제 안전 표준과 AUTOSAR 관련 기술 지원을 담당했으며, 현재 시어스랩에서 모바일 환경에서의 DCNN 구동을 위한 압축 알고리즘 연구에 매진하고 있다. 한양대학교 컴퓨터공학과에서 석사 과정을 밟고 있으며, 딥러닝 기반 실시간 영상처리 기술을 다양한 도메인의 소프트웨어에 적용하는 연구를 하고 있다. 양질의 원서를 하루라도 빨리 우리글로 옮겨 국내 개발자들에게 도움을 주고자 번역계에 발을 들였다. 에이콘출판사에서 펴낸 『윈도우폰 7 게임 프로그래밍』(2012), 『안드로이드 앱 인벤터』(2013), 『데이터 마이닝 Data Mining』(2013), 『C++와 CUDA C로 구현하는 딥러닝 알고리즘 Vol.1』(에이콘, 2016), 『C++와 CUDA C로 구현하는 딥러닝 알고리즘 Vol.3』(에이콘, 2016)를 번역했다.

목차

목차
  • 1장. 소개

  • 2장. 내장된 클래스 레이블
    • 내장된 레이블들을 학습하는 코드
    • 케이스 분류
    • 클래스 조건적인 생성적 샘플링

  • 3장. 신호 전처리
    • 최소 변환
      • 생성적 샘플들의 차이값 출력
    • 함수의 경로
    • 이동 윈도우에서의 푸리에 계수
    • 몰렛 웨이블릿
      • 주기, 너비, 지연(Lag)
      • 몰렛 웨이블릿 구현 코드

  • 4장. 이미지 전처리
    • 2차원 공간에서의 푸리에 변환
      • 2차원 공간에서의 데이터 윈도우
      • 이미지의 푸리에 변환 구현 코드
      • 푸리에 변환의 생성적 샘플 출력

  • 5장. 오토인코딩
    • 피드포워드 신경망에 대한 기본적인 수학 개념
    • 오토인코더를 통한 탐욕적 훈련
    • 복소수 개수에 대한 리뷰
      • 복소수 정의역에서의 고속 내적 연산
      • 복소수 정의역에서의 고유 값 분해
    • 복소수 정의역의 활성화
      • 활성화 함수의 도함수
      • 로지스틱 활성화 함수와 도함수
    • 그레디언트 계산
      • 순수 실수 및 SoftMax 출력 오차
      • 은닉층 가중치의 그레디언트
    • 그레디언트 계산 구현 코드
      • 전체 신경망과 도함수 계산
      • 그레디언트 계산
    • 멀티스레드 기반의 그레디언트 계산
    • CUDA 그레디언트 계산
      • 전체 알고리즘
      • 디바이스 초기화
      • 호스트에서 디바이스로 가중치 복사
      • 활성화와 활성화 도함수
      • 출력 활성화
      • SoftMax 출력 변환
      • 출력 델타
      • SoftMax 출력의 델타
      • 출력 그레디언트
      • 첫 번째 은닉층의 그레디언트
      • 중간 은닉층의 그레디언트
      • 평균 제곱 오차
      • 분류 작업에서 평가 기준으로 사용하는 로그 발생 가능 확률
      • 분석

  • 6장. DEEP 사용 매뉴얼
    • 메뉴 옵션
      • 파일 메뉴 옵션
      • 테스트 메뉴 옵션
      • 화면 출력 메뉴 옵션
    • 데이터베이스 읽어들이기
    • 시계열 데이터 읽어들이기(기본)
    • 시계열 데이터 읽어들이기(경로)
    • 시계열 데이터 읽어들이기(푸리에)
    • 시계열 데이터 읽어들이기(Morlet)
    • MNIST 이미지 읽어들이기
    • MNIST 이미지 읽어들이기(푸리에)
    • MNIST 레이블 읽어들이기
    • 활성화된 파일에 쓰기
    • 모든 데이터 삭제
    • 모델 아키텍처
    • 데이터베이스 입력과 목표치
    • RBM 훈련 파라미터
    • 감독 훈련된 훈련 파라미터
    • 오토인코딩 훈련 파라미터
    • 훈련
    • 테스트
    • 교차 검증
    • 분석
    • 수용 영역
    • 생성적 샘플
      • 내장된 모델에서 추출한 샘플
      • 경로 시계열 데이터로에서 추출한 샘플
    • DEEP.LOG 파일

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안