Top

C++와 CUDA C로 구현하는 딥러닝 알고리즘 Vol.3 [Deep Convolution Neural Nets의 이해와 구현]

  • 원서명Deep Belief Nets in C++ and CUDA C Volume 3 (ISBN 9781530895182)
  • 지은이티모시 마스터즈(Timothy Masters)
  • 옮긴이이승현
  • ISBN : 9788960779471
  • 28,000원
  • 2016년 12월 30일 펴냄
  • 페이퍼백 | 228쪽 | 188*235mm
  • 시리즈 : 데이터 과학

책 소개

요약

전체 3권으로 이루어진 "C++과 CUDA C로 구현하는 딥러닝 신경망" 시리즈의 마지막 책이다. 딥러닝에서 가장 화두가 되고 있는 영상 속의 사물 인지 알고리즘을 깊게 파고들면서 실제로 CUDA 기반으로 구현까지 해볼 수 있도록 가이드해준다. Deep Convolution Neural Network를 크게 지역적으로 연결된 레이어와 풀링 레이어, 출력 레이어 등으로 구별해 살펴보고, 훈련 과정의 핵심인 그래디언트 역전파를 DCNN에 적용하는 방법을 살펴본다. 알고리즘을 레이어별로 활성화하는 과정과 그레디언트를 계산하는 과정으로 나누어 살펴본다. 단일 스레드 기반의 구현 방법부터 시작해서 마지막엔 멀티스레드 기반의 구현 방법으로 확장한다. 각 레이어별로 구현한 내용을 다시 GPGPU로 활용할 수 있도록 CUDA C로 구현한다. 마지막으로는 저자가 제공하는 CONVNET 프로그램의 매뉴얼을 소개하면서, 사용자가 구현 결과를 미리 확인하면서 쉽게 각 기능들의 실행 결과물이 어떠한지 확인해본다.

이 책에서 다루는 내용

■ 피드포워드 신경망 재검토 및 오차 역전파 관련 주제 심화
■ 풀링 레이어, 지역적으로 연결된 레이어, 출력 레이어 등
■ 범용 C++ 코드를 이용한 레이어 구현
■ CUDA 언어로 합성곱 신경망 알고리즘 구현
■ CONVNET 프로그램 사용자 매뉴얼

이 책의 대상 독자

3권에서 다루고 있는 모든 기법들은 근래의 수학적 이론을 근거로 하고 있지만, 독자들이 이렇게 수학적으로 복잡한 알고리즘을 꼭 제대로 이해해야 할 필요는 없다. 그러므로 기본적인 선형대수학을 넘어서는 복잡한 내용을 알아야 할 필요는 없다.

이 책의 구성

이 책은 크게 네 가지 절로 나뉜다.
첫 장은 피드포워드 신경망과 관련된 내용을 재검토하면서 오차 역전파에 대한 중요한 주제를 다룬다. 그다음, 이러한 주제를 확장하여, 합성곱 신경망에서 사용하는 종류의 레이어를 다룬다. 즉, 풀링 레이어와 지역적으로 연결된 레이어, 합성곱 레이어 등을 상세히 다룬다. 전향 전달 활성화와 역전파 그레디언트 계산과 관련된 모든 수학적 배경들도 깊이 있게 다룬다.
두 번째 장에서는 범용 C++코드로 앞서 다뤘던 다양한 종류의 레이어를 구현하는 방법을 다룬다. 첫 장에서 설명한 수식을 많이 참조하므로, 독자들은 쉽게 수식과 코드를 관련지어 이해할 수 있을 것이다.
세 번째 장은 CUDA 언어로 합성곱 신경망 알고리즘을 어떻게 구현하는지 다룬다. 이번에도, 앞서 다뤘던 이론적 내용과 수학적인 배경들을 많이 참조하기 때문에 코드가 구현한 모든 함수를 명확하게 이해할 수 있을 것이다.
CUDA로 구현한 여러 가지 루틴들을 호출하여 성능 평가 기준 값과 그레디언트 값들을 계산하는 하나의 C++ 루틴을 다룬다.
마지막 장에서는 CONVNET 프로그램을 사용하기 위한 사용자 매뉴얼에 대해 다룬다. 이 프로그램은 내 홈페이지에서 다운로드할 수 있다.

저자/역자 소개

지은이 소개

티모시 마스터즈(Timothy Masters)

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

옮긴이의 말

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

옮긴이 소개

이승현

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

목차

목차
  • 1장. 소개

  • 2장. 피드포워드 신경망
    • 다중 레이어 피드포워드 신경망 다시보기
    • 넒은 신경망 대 깊은 신경망
    • 지역적으로 연결된 레이어
      • 행, 열, 슬라이스
      • 합성곱 레이어
      • 절반-너비와 패딩
      • 스트라이딩과 유용한 계산 공식
    • 풀링 레이어
      • 풀링 타입
    • 출력 레이어
      • SoftMax 출력
    • 그레디언트를 구하기 위한 오차의 역전파

  • 3장. 알고리즘 프로그래밍
    • 모델 선언
      • 가중치와 그레디언트의 처리 순서
    • 모델 생성자를 통한 초기화
    • 모든 활성화 탐색
    • 완전히 연결된 레이어의 활성화 계산
    • 지역적으로 연결된 레이어의 활성화 계산
    • 합성곱 레이어의 활성화 계산
    • 풀링 레이어 활성화 계산
    • 평가기준 값 계산
    • 그레디언트 계산
    • 완전히 연결된 레이어의 그레디언트
    • 지역적으로 연결된 레이어의 그레디언트
    • 합성곱 레이어의 그레디언트
    • 풀링 레이어의 그레디언트(존재하지 않는다!)
    • 풀링 레이어를 제외한 델타 값 역전파
    • 풀링 레이어의 델타 역전파
    • 멀티 스레딩 기반 그레디언트 연산
      • 알고리즘 프로그래밍
      • 스레딩을 위한 메모리 할당

  • 4장. CUDA 코드
    • CUDA 구현에서의 가중치 레이아웃
    • GPU 상의 전역 변수
    • 초기화
    • 디바이스에 가중치 복사
    • 출력층 활성화 계산
    • 지역적으로 연결된 레이어와 합성곱 레이어의 활성화 계산
      • 공유된 메모리 활용을 통한 연산 속도 향상
      • GPU 코드
      • 실행 코드
    • 풀링 레이어의 활성화 계산
    • 연산 절감 기법을 적용한 SoftMax와 로그 발생 가능 확률
    • 출력층의 델타 값 계산
    • 완전히 연결된 레이어로부터의 역전파
    • 합성곱 레이어와 지역적 레이어의 역전파
    • 풀링 레이어로부터의 역전파
    • 완전히 연결된 레이어의 그레디언트
    • 지역적으로 연결된 레이어와 합성곱 레이어의 그레디언트
      • 합성곱 그레디언트 평편화
      • 그레디언트 실행 코드
    • 그레디언트 값 가져오기
    • 모든 과정의 통합

  • 5장. CONVNET 매뉴얼
    • 메뉴 옵션
      • File 메뉴
      • Test 메뉴
      • Display 메뉴
    • 제어 파일 읽어오기
      • 이미지 데이터 생성과 읽어오기
      • 시계열 데이터를 이미지로 변환하여 읽어오기
      • 모델 아키텍처
      • 파라미터 훈련
      • 오퍼레이션
    • 이미지 출력
      • 훈련 이미지 출력
      • 필터 이미지 출력
      • 활성화 이미지 출력
      • 출력 예제
    • CONVNET.LOG 파일
      • 가중치 출력
    • CUDA.LOG 파일

도서 오류 신고

도서 오류 신고

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

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

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