C++와 CUDA C로 구현하는 딥러닝 알고리즘 Vol.1 [Restricted Boltzman Machine의 이해와 Deep Belief Nets 구현]
- 원서명Deep Belief Nets in C++ and CUDA C: Volume 1: Restricted Boltzmann Machines and Supervised Feedforward Networks (ISBN 9781507751473)
- 지은이티모시 마스터즈(Timothy Masters)
- 옮긴이이승현
- ISBN : 9788960778580
- 30,000원
- 2016년 04월 28일 펴냄
- 페이퍼백 | 288쪽 | 188*235mm
- 시리즈 : 데이터 과학
책 소개
저자 홈페이지: timothymasters.info
요약
이 책은 인공지능 기술에서 가장 중심에 해당하는 딥러닝 알고리즘의 핵심인 ‘Deep Belief Network’를 ‘CUDA’와 함께 다루면서 딥러닝의 구조와 원리를 이해하고, 이러한 알고리즘이 GPGPU에서 동작하기 위해 어떠한 개념과 기법들이 적용되고 있는지 확인해볼 수 있는 책이다.
이 책에서 다루는 내용
Deep Belief Nets 패러다임에 대한 학습 동기를 제공한다.
대부분의 일반적인 Deep Belief Nets의 구성 요소들을 위한 중요한 함수와 수식들을 제시하고, 정당성에 대해 연구한다.
일반적인 Deep Belief Nets 패러다임을 위한 훈련, 실행, 분석 알고리즘들을 언어 독립적인 형태로 제공한다.
이 책에 수록돼 있는 DEEP 프로그램의 상세한 사용자 매뉴얼은 홈페이지(TimothyMasters.info)에서 무료로 다운로드할 수 있다. 이 책에서는 이 프로그램의 내부적인 동작 원리를 상세하게 다룬다.
여러 가지 필수적인 Deep Belief Nets 알고리즘을 구현한 C++ 코드를 제공한다. 윈도우상에서 실행되는 멀티스레드 버전의 구현물과 더불어 nVidia 비디오카드의 슈퍼 컴퓨팅 성능을 활용할 수 있도록 CUDA C 기반으로 구현한 코드도 제공한다.
이 책의 대상 독자
이 책은 신경망에 대해 이미 기본적인 지식이 있으며, Deep Belief Nets에 대해 학습하고 실험해보면서 DEEP 프로그램도 구현해보고자 하는 독자를 대상으로 한다.
이 책의 구성
1장, '소개'에서는 다중 레이어 피드포워드 신경망에 대해 알아보고 Deep Belief Nets란 무엇인지 알아본다.
2장, '감독 피드포워드 신경망'에서는 오차 역전파에 대해 알아보고 멀티스레드를 지원하는 CUDA 기반의 기울이 연산 코드에 대해 알아본다.
3장, '제한된 볼츠만 머신'에서는 RBM(Restricted Boltzmann Machine)의 특이점을 알아보고, 최대 발생 가능 훈련에 대해 알아본다.
4장, '탐욕적인 훈련'은 훈련 알고리즘에 대해 알아 본 후, 생성적 샘플링에 대해 다룬다.
5장, 'DEEP 사용 매뉴얼'에서는 개략적인 DEEP 1.0 프로그램의 사용 매뉴얼을 소개한다.
목차
목차
- 1 소개
- 이 책의 대상 독자
- 다중 레이어 피드포워드 신경망 개요
- Deep Belief Nets란 무엇이며, 왜 이 모델이 좋은 것인가?
- 2 감독 피드포워드 신경망
- 오차 역전파
- SoftMax 출력 계산 기법을 이용한 분류 작업
- 기울기 계산 수행 소스코드
- 가중치 패널티
- 멀티스레드를 지원하는 기울기 연산
- CUDA 기반의 기울기 연산 코드
- 기본 아키텍처
- 간단한 예
- 초기화
- 은닉층 뉴런 활성화
- 출력 뉴런 활성화
- oftMax 출력
- 출력 델타
- 출력 기울기
- 첫 번째 은닉층의 기울기
- 중간 은닉층들의 기울기
- 기울기 가져오기
- 평균 제곱 오차 연산의 효율을 향상 시켜주는 절감 알고리즘
- 로그 발생 확률 연산의 효율을 향상시켜주는 절감 알고리즘
- 총정리
- 기본적인 훈련 알고리즘
- 첫 가중치를 구하기 위한 담금질 모사 알고리즘
- 최적의 출력 가중치 계산을 위한 특이값 분해
- 통계적 기울기 하강
- 기울기 최적화의 켤레 개념
- 오차 역전파
- 3 제한된 볼츠만 머신
- 제한된 볼츠만 머신이란?
- 재구조화 오차
- 최대 발생 가능 훈련
- 대조적 발산
- 가중치 패널티
- 희소성 유도
- 초기 가중치 찾기
- 은닉 뉴런 바이어스
- 가시 뉴런 바이어스
- 재구조화 오차 구현 코드
- 멀티스레드 기반의 초기 가중치 선택
- 통계적 기울기 하강 알고리즘의 기본 원리
- 핵심 알고리즘
- 배치 단위로 에포크 분할
- 에포크 뒤섞기
- 학습률과 모멘텀 업데이트
- 수렴 값 결정
- 멀티스레드 기반의 RBM 훈련 알고리즘 구현 코드
- CUDA 기반의 RBM 훈련 코드
- 초기화와 캐시 라인 매칭
- 훈련 데이터 가져오기
- 가시 레이어에서 은닉 레이어로
- 은닉 레이어에서 가시 레이어로
- 기울기 길이와 내적 연산의 효율성을 향상시켜주는 알고리즘
- 입력 바이어스 업데이트
- 은닉 뉴런 바이어스 업데이트
- 가중치 업데이트
- 총정리
- 타이밍
- 가중치 업데이트 분석
- 가시 레이어에서 은닉 레이어로의 분석
- 은닉 레이어에서 가시 레이어로의 분석
- 향상된 훈련 알고리즘과 향후 버전
- 제한된 볼츠만 머신이란?
- 4 탐욕적인 훈련
- 생성적 샘플링
- 생성적 샘플링
- 5 DEEP 사용 매뉴얼
- 메뉴 옵션
- 파일 메뉴 옵션
- 테스트 메뉴 옵션
- 화면 출력 메뉴 옵션
- 데이터베이스 읽어 들이기
- MNIST 이미지 읽어 들이기
- MNIST 라벨 읽어 들이기
- 활성화 파일 작성
- 모든 데이터 삭제
- 모델 아키텍처
- 데이터베이스 입력과 목표치
- RBM 훈련 파라미터
- 감독 훈련 파라미터
- 훈련
- 테스트
- 분석
- 수용 영역
- 생성적 샘플
- 메뉴 옵션
도서 오류 신고
정오표
정오표
[ p66 16행 ]
그림상에는 5개의 열이 있으므로 4개에 걸쳐 0이 된다
→ 그림상에는 5개의 열이 있으므로 0에서 4까지 할당한다
[ p67 5행 ]
그림상에서는 6개의 행이 있으므로 0부터 5 사이의 숫자를 할당한다
→ 그림상에서는 6개의 행이 있으므로 0에서 5까지 할당한다