자바를 활용한 딥러닝: 딥러닝 입문부터 DL4J를 이용한 신경망 구현과 스파크⋅하둡 연동까지

Book description

이 책의 전반부에서는 이론을, 후반부에서는 튜닝, 병렬화, 벡터화, 파이프라인 구축 등 딥러닝 실무의 핵심을 설명한다. 특히 DL4J 라이브러리로 스파크 및 하둡에서 심층 신경망 구조를 학습하고 딥러닝 워크플로를 실행하는 실용적인 방법과 전략을 알려준다. 이론과 실습 모두 깊이 있게 다뤄 딥러닝 관련 전문 지식이 없는 입문자도 이 책을 읽고 나면 딥러닝 신경망을 구축할 수 있다.

Table of contents

  1. 자바를 활용한 딥러닝
    1. 지은이 소개
    2. 옮긴이 소개
    3. 옮긴이의 말
    4. 이 책에 대하여
    5. 감사의 글
    6. 목차 (1/3)
    7. 목차 (2/3)
    8. 목차 (3/3)
  2. 1장 머신러닝 복습하기
    1. 1.1 학습하는 기계
      1. 1.1.1 기계는 어떻게 학습할까?
      2. 1.1.2 생물학적 영감
      3. 1.1.3 딥러닝이란?
      4. 1.1.4 토끼굴로 들어가기
    2. 1.2 문제 정의하기
    3. 1.3 머신러닝 속의 수학 : 선형대수
      1. 1.3.1 스칼라
      2. 1.3.2 벡터
      3. 1.3.3 행렬
      4. 1.3.4 텐서
      5. 1.3.5 초평면
      6. 1.3.6 관련 연산
      7. 1.3.7 데이터를 벡터로 변환하기
      8. 1.3.8 연립방정식 풀기
    4. 1.4 머신러닝 속의 수학 : 통계
      1. 1.4.1 확률
      2. 1.4.2 조건부확률
      3. 1.4.3 사후확률
      4. 1.4.4 분포
      5. 1.4.5 표본과 모집단 비교
      6. 1.4.6 재표본추출 방법
      7. 1.4.7 선택편향
      8. 1.4.8 가능도
    5. 1.5 머신러닝은 어떻게 작동하는가?
      1. 1.5.1 회귀
      2. 1.5.2 분류
      3. 1.5.3 군집화
      4. 1.5.4 과대적합과 과소적합
      5. 1.5.5 최적화
      6. 1.5.6 볼록 최적화
      7. 1.5.7 경사 하강법
      8. 1.5.8 확률적 경사 하강법
      9. 1.5.9 유사 뉴턴 최적화 방법
      10. 1.5.10 생성 모델과 판별 모델
    6. 1.6 로지스틱 회귀
      1. 1.6.1 로지스틱 함수
      2. 1.6.2 로지스틱 회귀 출력에 대한 이해
    7. 1.7 모델 평가하기
      1. 1.7.1 분류행렬
    8. 1.8 머신러닝 이해하기
  3. 2장 신경망과 딥러닝의 기초
    1. 2.1 신경망
      1. 2.1.1 생물학적 뉴런
      2. 2.1.2 퍼셉트론
      3. 2.1.3 다층 순방향 신경망 (1/2)
      4. 2.1.3 다층 순방향 신경망 (2/2)
    2. 2.2 신경망 학습
      1. 2.2.1 역전파 학습 (1/2)
      2. 2.2.1 역전파 학습 (2/2)
    3. 2.3 활성화함수
      1. 2.3.1 선형
      2. 2.3.2 시그모이드
      3. 2.3.3 tanh
      4. 2.3.4 hard tanh
      5. 2.3.5 소프트맥스
      6. 2.3.6 ReLU
    4. 2.4 손실함수
      1. 2.4.1 손실함수 표기법
      2. 2.4.2 회귀용 손실함수
      3. 2.4.3 분류용 손실함수
      4. 2.4.4 재구성용 손실함수
    5. 2.5 하이퍼파리미터
      1. 2.5.1 학습률
      2. 2.5.2 규제
      3. 2.5.3 모멘텀
      4. 2.5.4 희소성
  4. 3장 심층 신경망의 기본 원칙
    1. 3.1 딥러닝 정의
      1. 3.1.1 딥러닝이란
      2. 3.1.2 이 장의 구성
    2. 3.2 심층 신경망의 공통 설계 원리
      1. 3.2.1 파라미터
      2. 3.2.2 계층
      3. 3.2.3 활성화함수
      4. 3.2.4 손실함수
      5. 3.2.5 최적화 알고리즘
      6. 3.2.6 하이퍼파라미터
      7. 3.2.7 요약
    3. 3.3 심층 신경망 구축하기
      1. 3.3.1 제한된 볼츠만 머신 (1/2)
      2. 3.3.1 제한된 볼츠만 머신 (2/2)
      3. 3.3.2 오토인코더
      4. 3.3.3 VAE
  5. 4장 주요 심층 신경망 구조
    1. 4.1 비지도 사전학습 신경망
      1. 4.1.1 심층 신뢰 신경망
      2. 4.1.2 GAN
    2. 4.2 합성곱 신경망
      1. 4.2.1 생물학적 영감
      2. 4.2.2 직관적으로 보기
      3. 4.2.3 합성곱 신경망 구조 둘러보기
      4. 4.2.4 입력 계층
      5. 4.2.5 합성곱 계층
      6. 4.2.6 풀링 계층
      7. 4.2.7 완전 연결 계층
      8. 4.2.8 그외 합성곱 신경망 애플리케이션
      9. 4.2.9 대표적인 합성곱 신경망
      10. 4.2.10 요약
    3. 4.3 순환 신경망
      1. 4.3.1 시간 차원 모델링
      2. 4.3.2 3차원 입력
      3. 4.3.3 왜 마르코프 모델은 안 되는가?
      4. 4.3.4 일반적인 순환 신경망 구조
      5. 4.3.5 LSTM 신경망 (1/2)
      6. 4.3.5 LSTM 신경망 (2/2)
      7. 4.3.6 도메인별 응용 사례와 혼합된 신경망
    4. 4.4 재귀 신경망
      1. 4.4.1 신경망 구조
      2. 4.4.2 다양한 재귀 신경망
      3. 4.4.3 재귀 신경망 애플리케이션
    5. 4.5 요약 및 논의
      1. 4.5.1 딥러닝의 등장으로 다른 알고리즘은 더 이상 사용하지 않는가?
      2. 4.5.2 문제마다 최선의 방법이 있다
      3. 4.5.3 언제 딥러닝이 필요한가?
  6. 5장 심층 신경망 구축하기
    1. 5.1 심층 신경망을 올바른 문제에 일치시키기
      1. 5.1.1 열 기반 데이터와 다층 퍼셉트론
      2. 5.1.2 이미지와 합성곱 신경망
      3. 5.1.3 시계열과 순환 신경망
      4. 5.1.4 하이브리드 신경망 사용하기
    2. 5.2 DL4J 도구 모음
      1. 5.2.1 벡터화와 DataVec
      2. 5.2.2 ND4J와 실행 환경
      3. 5.2.3 ND4J 속도의 중요성
      4. 5.2.4 ND4J와 DL4J 성능 측정
    3. 5.3 DL4J API의 기본 개념
      1. 5.3.1 모델 로딩 및 저장
      2. 5.3.2 모델을 위한 입력값 얻기
      3. 5.3.3 모델 구조 설정하기
      4. 5.3.4 학습과 검증
    4. 5.4 다층 퍼셉트론 신경망으로 CSV 데이터 모델링하기
      1. 5.4.1 입력 데이터 설정
      2. 5.4.2 신경망 구조 결정하기
      3. 5.4.3 모델 학습
      4. 5.4.4 모델 검증
    5. 5.5 합성곱 신경망을 활용한 손글씨 이미지 모델링
      1. 5.5.1 LeNet 합성곱 신경망에 대한 자바 코드
      2. 5.5.2 입력 이미지 불러오기 및 벡터화
      3. 5.5.3 DL4J에서 LeNet 신경망 구조
      4. 5.5.4 합성곱 신경망 학습
    6. 5.6 순환 신경망을 활용한 시퀀스 데이터 모델링
      1. 5.6.1 LSTM을 활용하여 셰익스피어 문체 생성하기
      2. 5.6.2 LSTM을 활용하여 센서에서 발생한 시계열 시퀀스 분류하기 (1/2)
      3. 5.6.2 LSTM을 활용하여 센서에서 발생한 시계열 시퀀스 분류하기 (2/2)
    7. 5.7 이상 탐지를 하는 오토인코딩 장치 사용
      1. 5.7.1 오토인코더 예제에 대한 자바 코드
      2. 5.7.2 입력 데이터 준비
      3. 5.7.3 오토인코더 신경망 구조 및 학습
      4. 5.7.4 모델 검증
    8. 5.8 VAE를 사용하여 MNIST 숫자 재구성
      1. 5.8.1 MNIST 숫자를 재구성하는 코드
      2. 5.8.2 VAE 모델 검증
    9. 5.9 자연어 처리에서의 딥러닝 애플리케이션
      1. 5.9.1 Word2Vec을 활용한 단어 임베딩
      2. 5.9.2 단락 벡터가 있는 문장의 분산된 표현
      3. 5.9.3 단락 벡터를 활용한 문서 분류 (1/2)
      4. 5.9.3 단락 벡터를 활용한 문서 분류 (2/2)
  7. 6장 심층 신경망 튜닝하기
    1. 6.1 심층 신경망 튜닝의 기본 개념
      1. 6.1.1 심층 신경망 구축을 위한 이해
      2. 6.1.2 구축 단계별로 이해하기
    2. 6.2 신경망 구조와 입력 데이터 매칭시키기
      1. 6.2.1 요약
    3. 6.3 출력 계층과 모델의 목표 연관짓기
      1. 6.3.1 회귀 모델의 출력 계층
      2. 6.3.2 분류 모델의 출력 계층
    4. 6.4 계층 수, 파라미터 수, 메모리 다루기
      1. 6.4.1 순방향 다층 신경망
      2. 6.4.2 계층 수와 파라미터 수 조절하기
      3. 6.4.3 신경망 메모리 사용량 예측하기
    5. 6.5 가중치 초기화 전략
      1. 6.5.1 순환 신경망의 직교 가중치 초기화
    6. 6.6 활성화함수 사용하기
      1. 6.6.1 활성화함수 요약 표
    7. 6.7 손실함수 적용하기
    8. 6.8 학습률 이해하기
      1. 6.8.1 업데이트에 대한 파라미터의 비율 사용하기
      2. 6.8.2 추천하는 학습률
    9. 6.9 희소성이 학습에 주는 영향
    10. 6.10 최적화 기법 적용하기
      1. 6.10.1 확률적 경사 하강법 적용해보기
    11. 6.11 병렬화와 GPU로 더 빠르게 학습하기
      1. 6.11.1 온라인 학습과 병렬 반복 알고리즘
      2. 6.11.2 DL4J로 확률적 경사 하강법 병렬화하기
      3. 6.11.3 GPU 사용하기
    12. 6.13 규제 사용하기
      1. 6.13.1 프라이어 함수로 규제하기
      2. 6.13.2 최대노름 규제
      3. 6.13.3 드롭아웃
      4. 6.13.4 그외 다른 규제
    13. 6.14 분류 불균형 다루기
      1. 6.14.1 분류 샘플링 기법
      2. 6.14.2 가중치 손실함수
    14. 6.15 과대적합 다루기
    15. 6.16 training UI에서 신경망 통계 보기
      1. 6.16.1 잘못 초기화된 가중치 찾기
      2. 6.16.2 셔플되지 않은 데이터 찾기
      3. 6.16.3 규제 관련 이슈 찾기
  8. 7장 심층 신경망 구조별 튜닝하기
    1. 7.1 합성곱 신경망
      1. 7.1.1 일반적인 합성곱 구조 패턴
      2. 7.1.2 합성곱 계층 구성하기 (1/2)
      3. 7.1.2 합성곱 계층 구성하기 (2/2)
      4. 7.1.3 풀링 계층 구성하기
      5. 7.1.4 전이학습
    2. 7.2 순환 신경망
      1. 7.2.1 신경망 입력 데이터와 입력 계층
      2. 7.2.2 출력 계층과 RnnOutputLayer
      3. 7.2.3 신경망 학습시키기
      4. 7.2.4 LSTM의 주요 문제 디버깅하기
      5. 7.2.5 패딩과 마스킹
      6. 7.2.6 마스킹으로 평가 및 점수 매기기
      7. 7.2.7 순환 신경망 구조의 변형
    3. 7.3 제한된 볼츠만 머신
      1. 7.3.1 은닉 유닛과 모델링 가능한 정보
      2. 7.3.2 다양한 유닛 사용하기
      3. 7.3.3 제한된 볼츠만 머신에서 규제 사용하기
    4. 7.4 심층 신뢰 신경망
      1. 7.4.1 모멘텀 사용하기
      2. 7.4.2 규제 사용하기
      3. 7.4.3 은닉 유닛 수 정하기
  9. 8장 벡터화
    1. 8.1 머신러닝에서 벡터화하는 법
      1. 8.1.1 왜 데이터를 벡터화해야 하는가?
      2. 8.1.2 열 기반 원시 데이터를 속성별로 다루는 법
      3. 8.1.3 특징 엔지니어링과 정규화 기법 (1/2)
      4. 8.1.3 특징 엔지니어링과 정규화 기법 (2/2)
    2. 8.2 ETL과 벡터화에 DataVec 사용하기
    3. 8.3 이미지 데이터 벡터화
      1. 8.3.1 DL4J의 이미지 데이터 표현
      2. 8.3.2 DataVec으로 이미지 데이터와 벡터 정규화하기
    4. 8.4 순차 데이터 벡터화
      1. 8.4.1 순차 데이터 소스의 주요 변형
      2. 8.4.2 DataVec으로 순차 데이터 벡터화하기 (1/2)
      3. 8.4.2 DataVec으로 순차 데이터 벡터화하기 (2/2)
    5. 8.5 텍스트 벡터화
      1. 8.5.1 단어 주머니
      2. 8.5.2 TF-IDF
      3. 8.5.3 Word2Vec 비교와 벡터 환경 모델 비교
    6. 8.6 그래프로 작업하기
  10. 9장 스파크에서 딥러닝과 DL4J 사용하기
    1. 9.1 하둡과 스파크에서 DL4J 사용하는 방법
      1. 9.1.1 명령줄에서 스파크 다루기
    2. 9.2 스파크 실행 구성 및 튜닝하기
      1. 9.2.1 메소스에서 스파크 실행하기
      2. 9.2.2 얀에서 스파크 실행하기
      3. 9.2.3 스파크 튜닝 가이드
      4. 9.2.4 스파크에서 DL4J 잡 튜닝하기
    3. 9.3 스파크와 DL4J용 메이븐 POM 작성하기
      1. 9.3.1 pom.xml 의존성 템플릿
      2. 9.3.2 CDH 5.X를 위한 POM 작성하기
      3. 9.3.3 HDP 2.4 POM 작성하기
    4. 9.4 하둡 및 스파크 문제 해결
      1. 9.4.1 ND4J 관련 이슈
    5. 9.5 스파크에서 DL4J 병렬 처리
      1. 9.5.1 간단한 스파크 학습 예제
    6. 9.6 스파크에서 DL4J API 사용하는 법
    7. 9.7 스파크 다층 퍼셉트론 예제
      1. 9.7.1 스파크에서 MLP 신경망 구조 설정하기
      2. 9.7.2 분산 학습 및 모델 평가
      3. 9.7.3 DL4J 스파크 잡 빌드 및 실행하기
    8. 9.8 LSTM으로 스파크에서 셰익스피어 텍스트 생성하기
      1. 9.8.1 LSTM 신경망 구조 설정하기
      2. 9.8.2 학습, 학습 진행 상황 추적, 결과 이해하기
    9. 9.9 스파크에서 합성곱 신경망으로 MNIST 모델링하기
      1. 9.9.1 스파크 잡 구성 및 MNIST 데이터 불러오기
      2. 9.9.2 LeNet 합성곱 신경망 구조 설정 및 학습하기
  11. 부록 A 인공지능이란?
    1. A.1 지금까지의 이야기
      1. A.1.1 딥러닝의 정의
      2. A.1.2 인공지능의 정의 (1/2)
      3. A.1.2 인공지능의 정의 (2/2)
    2. A.2 무엇이 오늘날의 인공지능을 만들었을까?
    3. A.3 겨울이 오고 있다
  12. 부록 B RL4J 및 강화학습
    1. B.1 사전준비
      1. B.1.1 마르코프 결정 과정
      2. B.1.2 용어집
    2. B.2 다른 설정
      1. B.2.1 모델 프리
      2. B.2.2 관측 설정
      3. B.2.3 싱글 플레이와 대전 게임
    3. B.3 Q 러닝
      1. B.3.1 정책에서 신경망에 이르기까지
      2. B.3.2 정책 반복
      3. B.3.3 탐색과 착취
      4. B.3.4 벨만 방정식
      5. B.3.5 초기 상태 샘플링
      6. B.3.6 Q 러닝 구현
      7. B.3.7 Q(s,a) 모델링
      8. B.3.8 경험 재현
      9. B.3.9 합성곱 계층과 이미지 전처리
      10. B.3.10 기록 처리
      11. B.3.11 더블 Q 러닝
      12. B.3.12 클리핑
      13. B.3.13 보상의 확장
      14. B.3.14 우선순위 재현
    4. B.4 그래프, 시각화, 평균-Q
    5. B.5 RL4J
    6. B.6 결론
  13. 부록 C 반드시 알아야 하는 숫자들
  14. 부록 D 신경망과 역전파 : 수학적 접근
    1. D.1 소개
    2. D.2 다층 퍼셉트론에서의 역전파
  15. 부록 E ND4J API 활용하기
    1. E.1 디자인과 기본 사용법
      1. E.1.1 NDArray 이해하기
      2. E.1.2 ND4J의 일반적 구문
      3. E.1.3 NDArray를 이용한 작업의 기초
      4. E.1.4 NDArray의 모양 제어
      5. E.1.5 데이터셋
    2. E.2 입력 벡터 생성하기
      1. E.2.1 벡터 생성의 기초
    3. E.3 MLLibUtil 사용하기
      1. E.3.1 INDArray를 MLLib 벡터로 변환하기
      2. E.3.2 MLLib 벡터를 INDArray로 변환하기
    4. E.4 DL4J로 예측 모델 만들기
      1. E.4.1 DL4J와 ND4J 함께 사용하기
  16. 부록 F DataVec 활용하기
    1. F.1 머신러닝을 위한 데이터 로딩
    2. F.2 다층 퍼셉트론에 CSV 데이터 로드
    3. F.3 합성곱 신경망에 이미지 데이터 로드하기
    4. F.4 순환 신경망에 시퀀스 데이터 로드하기
    5. F.5 데이터 변환 : DataVec으로 데이터 랭글링하기
      1. F.5.1 DataVec 변환 : 주요 개념
      2. F.5.2 DataVec 변환 기능 : 예
  17. 부록 G DL4J 소스로 작업하기
    1. G.1 깃 설치 확인
    2. G.2 주요 DL4J 깃허브 프로젝트 클론하기
    3. G.3 Zip 파일 소스 다운로드하기
    4. G.4 메이븐을 사용해 소스 코드 빌드하기
  18. 부록 H DL4J 프로젝트 설정
    1. H.1 새로운 DL4J 프로젝트 생성하기
      1. H.1.1 자바
      2. H.1.2 메이븐 이용하기
      3. H.1.3 통합 개발 환경 구현
    2. H.2 메이븐 POM 설정하기
      1. H.2.1 ND4J와 메이븐
  19. 부록 I DL4J 프로젝트에 알맞게 GPU 설정하기
    1. I.1 백엔드를 GPU로 전환하기
      1. I.1.1 GPU 선택하기
      2. I.1.2 멀티 GPU 시스템에서의 학습하기
    2. I.2 다른 플랫폼에서의 CUDA
    3. I.3 GPU 성능 모니터링하기
      1. I.3.1 NVIDIA 시스템 관리 환경
  20. 부록 J DL4J 설치 시 문제 해결
    1. J.1 설치하기 전에
    2. J.2 소스 설치 중 메모리 에러가 발생한다면
    3. J.3 구버전 메이븐을 사용하는 경우
    4. J.4 메이븐과 PATH 변수
    5. J.5 잘못된 JDK 버전
    6. J.6 C++와 다른 개발 도구
    7. J.7 윈도우와 Include Paths
    8. J.8 GPU 모니터링
    9. J.9 JVisualVM 사용하기
    10. J.10 클로저로 작업하기
    11. J.11 MacOS와 부동소수점 지원
    12. J.12 자바 7의 포크 조인 버그
    13. J.13 예방 조치
      1. J.13.1 다른 로컬 저장소
      2. J.13.2 메이븐 의존성 확인
      3. J.13.3 의존성 재설치
      4. J.13.4 그외 다른 문제

Product information

  • Title: 자바를 활용한 딥러닝: 딥러닝 입문부터 DL4J를 이용한 신경망 구현과 스파크⋅하둡 연동까지
  • Author(s): 김홍진, 박다희, 배철민, 조시 패터슨, 애덤 깁슨
  • Release date: September 2018
  • Publisher(s): Hanbit Media, Inc.
  • ISBN: 9791162241066