<이 책의 리뷰는 한빛미디어 '나는 리뷰어다'로 부터 책을 지원받아 작성된 글입니다.>
자바 개발자를 위한 효율적인 딥러닝 신경망 구축 가이드
이 책의 전반부에서는 이론을, 후반부에서는 튜닝, 병렬화, 벡터화, 파이프라인 구축 등 딥러닝 실무의 핵심을 설명한다. 특히 DL4J 라이브러리로 스파크 및 하둡에서 심층 신경망 구조를 학습하고 딥러닝 워크플로를 실행하는 실용적인 방법과 전략을 알려준다. 이론과 실습 모두 깊이 있게 다뤄 딥러닝 관련 전문 지식이 없는 입문자도 이 책을 읽고 나면 딥러닝 신경망을 구축할 수 있다.
책소개
CHAPTER 1 머신러닝 복습하기
1.1 학습하는 기계
1.2 문제 정의하기
1.3 머신러닝 속의 수학 : 선형대수
1.4 머신러닝 속의 수학 : 통계
1.5 머신러닝은 어떻게 작동하는가?
1.6 로지스틱 회귀
1.7 모델 평가하기
1.8 머신러닝 이해하기
CHAPTER 2 신경망과 딥러닝의 기초
2.1 신경망
2.2 신경망 학습
2.3 활성화함수
2.4 손실함수
2.5 하이퍼파리미터
CHAPTER 3 심층 신경망의 기본 원칙
3.1 딥러닝 정의
3.2 심층 신경망의 공통 설계와 원리
3.3 심층 신경망 구축하기
CHAPTER 4 주요 심층 신경망 구조
4.1 비지도 사전학습 신경망
4.2 합성곱 신경망
4.3 순환 신경망
4.4 재귀 신경망
4.5 요약 및 논의
CHAPTER 5 심층 신경망 구축하기
5.1 심층 신경망을 올바른 문제에 일치시키기
5.2 DL4J 도구 모음
5.3 DL4J API의 기본 개념
5.4 다층 퍼셉트론 신경망으로 CSV 데이터 모델링하기
5.5 합성곱 신경망을 활용한 손글씨 이미지 모델링
5.6 순환 신경망을 활용한 시퀀스 데이터 모델링
5.7 이상 탐지를 하는 오토인코딩 장치 사용
5.8 VAE를 사용하여 MNIST 숫자 재구성
5.9 자연어 처리에서의 딥러닝 애플리케이션
CHAPTER 6 심층 신경망 튜닝하기
6.1 심층 신경망 튜닝의 기본 개념
6.2 신경망 구조와 입력 데이터 매칭시키기
6.3 출력 계층과 모델의 목표 연관짓기
6.4 계층 수, 파라미터 수, 메모리 다루기
6.5 가중치 초기화 전략
6.6 활성화함수 사용하기
6.7 손실함수 적용하기
6.8 학습률 이해하기
6.9 희소성이 학습에 주는 영향
6.10 최적화 기법 적용하기
6.11 병렬화와 GPU로 더 빠르게 학습하기
6.12 미니배치 크기와 에포크 조절하기
6.13 규제 사용하기
6.14 분류 불균형 다루기
6.15 과대적합 다루기
6.16 training UI에서 신경망 통계 보기
CHAPTER 7 심층 신경망 구조별 튜닝하기
7.1 합성곱 신경망
7.2 순환 신경망
7.3 제한된 볼츠만 머신
7.4 심층 신뢰 신경망
CHAPTER 8 벡터화
8.1 머신러닝에서 벡터화하는 법
8.2 ETL과 벡터화에 DataVec 사용하기
8.3 이미지 데이터 벡터화
8.4 순차 데이터 벡터화
8.5 텍스트 벡터화
8.6 그래프로 작업하기
CHAPTER 9 스파크에서 딥러닝과 DL4J 사용하기
9.1 하둡과 스파크에서 DL4J 사용하는 방법
9.2 스파크 실행 구성 및 튜닝하기
9.3 스파크와 DL4J용 메이븐 POM 작성하기
9.4 하둡 및 스파크 문제 해결
9.5 스파크에서 DL4J 병렬 처리
9.6 스파크에서 DL4J API 사용하는 법
9.7 스파크 다층 퍼셉트론 예제
9.8 LSTM으로 스파크에서 셰익스피어 텍스트 생성하기
9.9 스파크에서 합성곱 신경망으로 MNIST 모델링하기
부록 A 인공지능이란?
부록 B RL4J 및 강화학습
부록 C 반드시 알아야 하는 숫자들
부록 D 신경망과 역전파 : 수학적 접근
부록 E ND4J API 활용하기
부록 F DataVec 활용하기
부록 G DL4J 소스로 작업하기
부록 H DL4J 프로젝트 설정
부록 I DL4J 프로젝트에 알맞게 GPU 설정하기
부록 J DL4J 설치 시 문제 해결
이번에 리뷰하게 된 책은 자바로 배우는 딥러닝 책입니다!
직무와 아주 잘 맞는 책인데요~ 현재 회사에서 자바로 개발을 진행하고 있고 딥러닝도 같이 하고 있다보니
마음에 쏙 든 책이었습니다.
문제는 책이 생각보다 두껍습니다. 읽느라 고생을 조금 했습니다.
2주만에 읽으려고 하보니 조금 빠듯한 부분도 많았습니다.
책의 장점 중 하나는 Python이 아닌 JAVA를 사용해서 딥러닝을 배울 수 있다는 점입니다.
그게 왜 좋은 점이냐면 대부분의 책이 Python을 이용해서 기초적인 부분을 알려주고 있지만
개발을 하는 실무 개발자 입장에서는 자바도 굉장히 많이 쓰이기 때문입니다.
그에 비해 서적이나 자료가 적다보니 이런 책이 달게 느껴지네요.
가장 기초적인 부분이 바로 '회귀'!
다른 Python 책에서도 가장 기본적이고 기초적으로 나오는 부분입니다.
Python이 아니라 JAVA로 설명해주고 있어서 좋았습니다.
그 다음으로 나오는 부분이 경사 하강법!
오차를 줄이기 위해 경사 하강법을 사용하게 됩니다.
O'REILLY의 책 답게 설명은 자세하게 되어 있습니다.
그러나 초보자가 바로 알기 쉬운 설명은 아니고 어느정도 알고리즘 과 자바에 대학 지식이 조금은 필요하니
참고 하셔야 합니다.
가장 자세히 봤던 부분은 자연어를 처리하는 Word2Vec 부분입니다.
말 그대로 문자를 벡터화 시키는 것인데 Woman과 man을 벡터화 하게 되면
비슷한 단어로 나타내집니다. 주변 단어를 찾는 다거나 비슷한 단어를 찾을 때 사용 할 수 있는
알고리즘 중 하나이고 중요한 부분이기 때문에 자세히 봤던 파트입니다.
어려운 부분임에도 쉽게 설명되어 있어서 이해하는데 큰 어려움은 없었습니다.
[ 마무리 ]
자바로 딥러닝을 시도해보고 싶은 분에게 추천하는 책
자바의 기본적인 개념을 가지고 책을 볼 것!
디자인 ★★★☆☆
내용 ★★★★☆
난이도 ★★★☆☆