책 소개
단어 하나, 코드 한 줄 버릴 것이 없다!
파이썬과 케라스로 배우는 딥러닝 핵심 원리!
쉽고 간결하다!
케라스 창시자이자 구글 AI 연구원인 저자는 ‘인공 지능의 민주화’를 강조한다. 이런 개념을 바탕으로 케라스를 만들었으며, 현재 딥러닝을 시작하기에 가장 쉬운 라이브러리로 평가받고 있다. 이 책 역시 ‘인공 지능의 민주화’를 위한 일환이다. 딥러닝 기초부터 설명하기 때문에 파이썬만 알고 있다면 딥러닝 기초 지식이 없어도 학습을 시작할 수 있다. 또한, 수학적 표기법이 학습에 큰 장벽이 된다고 생각해 수학적 표기 없이 직관적이고 간결한 코드로 개념을 설명한다. 코드만으로도 수학 개념을 쉽게 파악할 수 있다.
명확한 학습법을 제시한다!
딥러닝은 이미지 분류, 예측, 음성 인식, 텍스트 분석 등 많은 분야에 활용할 수 있다. 처음부터 이 모든 것을 다 학습할 수는 없다. 오랜 기간 딥러닝 개발자로 활동해온 저자가 딥러닝을 제대로 학습하기 위해 어디서부터 시작해야 하고, 어떻게 학습해야 할지를 고민해 구성했다. 1부에서는 딥러닝, 신경망, 머신 러닝의 기초를, 2부에서는 컴퓨터 비전, 텍스트, 시퀀스, 생성 모델을 위한 딥러닝을 모범 사례와 함께 학습한다.
실용적이고 확장 가능한 예제로 학습한다!
상세한 해설, 실질적인 권장 사항, 구체적인 문제 해결을 위한 팁까지 딥러닝 학습을 시작하기 위해 알아야 할 모든 것을 포괄하는 설명이 포함된 예제로 학습한다. 이 예제들을 학습하면서 딥러닝의 개념, 적용 범위, 한계 등을 확실하게 이해할 수 있다. 이 과정으로 머신 러닝 문제를 해결하는 작업 흐름에 익숙해질 것이며, 케라스를 사용해 컴퓨터 비전, 자연어 처리까지 실전 문제를 해결할 수 있다. 또한, 이 예제들을 확장해 나만의 딥러닝 모델을 만들거나 적용할 수도 있다.
작가 소개
지은이 : 프랑소와 숄레
캘리포니아 마운틴 뷰의 구글에서 딥러닝과 관련된 일을 한다. 케라스 딥러닝 라이브러리의 창시자이고 텐서플로 머신 러닝 프레임워크의 기여자다. 컴퓨터 비전과 형식 추론을 위한 머신 러닝 애플리케이션에 초점을 맞춰 딥러닝을 연구한다. 그의 논문은 CVPR(Computer Vision and Pattern Recognition), NIPS(Neural Information Processing Systems), ICLR(International Conference on Learning Representations) 등의 주요 콘퍼런스와 워크숍에서 소개되었다.
옮긴이 : 박해선
기계공학을 전공했지만 졸업 후엔 대부분 코드를 읽고 쓰는 일을 했습니다. 텐서?블로그(tensorflow.blog )와 홍대 머신러닝 스터디(meetup.com/Hongdae-Machine-Learning-Study/)를 운영하면서 소프트웨어와 과학의 경계를 흥미롭게 탐험하고 있습니다.
『파이썬 라이브러리를 활용한 머신러닝』(한빛미디어, 2017)과 『텐서플로 첫걸음』(한빛미디어, 2016)을 우리말로 옮겼습니다.
목 차
1부 딥러닝의 기초
1장 딥러닝이란 무엇인가?
1.1 인공 지능과 머신 러닝, 딥러닝
1.1.1 인공 지능
1.1.2 머신 러닝
1.1.3 데이터에서 표현을 학습하기
1.1.4 딥러닝에서 ‘딥’이란 무엇일까?
1.1.5 그림 3개로 딥러닝의 작동 원리 이해하기
1.1.6 지금까지 딥러닝의 성과
1.1.7 단기간의 과대 선전을 믿지 말자
1.1.8 AI에 대한 전망
1.2 딥러닝 이전: 머신 러닝의 간략한 역사
1.2.1 확률적 모델링
1.2.2 초창기 신경망
1.2.3 커널 방법
1.2.4 결정 트리, 랜덤 포레스트, 그래디언트 부스팅 머신
1.2.5 다시 신경망으로
1.2.6 딥러닝의 특징
1.2.7 머신 러닝의 최근 동향
1.3 왜 딥러닝일까? 왜 지금일까?
1.3.1 하드웨어
1.3.2 데이터
1.3.3 알고리즘
1.3.4 새로운 투자의 바람
1.3.5 딥러닝의 대중화
1.3.6 지속될까?
2장 시작하기 전에: 신경망의 수학적 구성 요소
2.1 신경망과의 첫 만남
2.2 신경망을 위한 데이터 표현
2.2.1 스칼라(0D 텐서)
2.2.2 벡터(1D 텐서)
2.2.3 행렬(2D 텐서)
2.2.4 3D 텐서와 고차원 텐서
2.2.5 핵심 속성
2.2.6 넘파이로 텐서 조작하기
2.2.7 배치 데이터
2.2.8 텐서의 실제 사례
2.2.9 벡터 데이터
2.2.10 시계열 데이터 또는 시퀀스 데이터
2.2.11 이미지 데이터
2.2.12 비디오 데이터
2.3 신경망의 톱니바퀴: 텐서 연산
2.3.1 원소별 연산
2.3.2 브로드캐스팅
2.3.3 텐서 점곱
2.3.4 텐서 크기 변환
2.3.5 텐서 연산의 기하학적 해석
2.3.6 딥러닝의 기하학적 해석
2.4 신경망의 엔진: 그래디언트 기반 최적화
2.4.1 변화율이란?
2.4.2 텐서 연산의 변화율: 그래디언트
2.4.3 확률적 경사 하강법
2.4.4 변화율 연결: 역전파 알고리즘
2.5 첫 번째 예제 다시 살펴보기
2.6 요약
3장 신경망 시작하기
3.1 신경망의 구조
3.1.1 층: 딥러닝의 구성 단위
3.1.2 모델: 층의 네트워크
3.1.3 손실 함수와 옵티마이저: 학습 과정을 조절하는 열쇠
3.2 케라스 소개
3.2.1 케라스, 텐서플로, 씨아노, CNTK
3.2.2 케라스를 사용한 개발: 빠르게 둘러보기
3.3 딥러닝 컴퓨터 셋팅
3.3.1 주피터 노트북: 딥러닝 실험을 위한 최적의 방법
3.3.2 케라스 시작하기: 두 가지 방법
3.3.3 클라우드에서 딥러닝 작업을 수행했을 때 장단점
3.3.4 어떤 GPU 카드가 딥러닝에 최적일까?
3.4 영화 리뷰 분류: 이진 분류 예제
3.4.1 IMDB 데이터셋
3.4.2 데이터 준비
3.4.3 신경망 모델 만들기
3.4.4 훈련 검증
3.4.5 훈련된 모델로 새로운 데이터에 대해 예측하기
3.4.6 추가 실험
3.4.7 정리
3.5 뉴스 기사 분류: 다중 분류 문제
3.5.1 로이터 데이터셋
3.5.2 데이터 준비
3.5.3 모델 구성
3.5.4 훈련 검증
3.5.5 새로운 데이터에 대해 예측하기
3.5.6 레이블과 손실을 다루는 다른 방법
3.5.7 충분히 큰 중간층을 두어야 하는 이유
3.5.8 추가 실험
3.5.9 정리
3.6 주택 가격 예측: 회귀 문제
3.6.1 보스턴 주택 가격 데이터셋
3.6.2 데이터 준비
3.6.3 모델 구성
3.6.4 K-겹 검증을 사용한 훈련 검증
3.6.5 정리
3.7 요약
4장 머신 러닝의 기본 요소
4.1 머신 러닝의 네 가지 분류
4.1.1 지도 학습
4.1.2 비지도 학습
4.1.3 자기 지도 학습
4.1.4 강화 학습
4.2 머신 러닝 모델 평가
4.2.1 훈련, 검증, 테스트 세트
4.2.2 기억해야 할 것
4.3 데이터 전처리, 특성 공학, 특성 학습
4.3.1 신경망을 위한 데이터 전처리
4.3.2 특성 공학
4.4 과대적합과 과소적합
4.4.1 네트워크 크기 축소
4.4.2 가중치 규제 추가
4.4.3 드롭아웃 추가
4.5 보편적인 머신 러닝 작업 흐름
4.5.1 문제 정의와 데이터셋 수집
4.5.2 성공 지표 선택
4.5.3 평가 방법 선택
4.5.4 데이터 준비
4.5.5 기본보다 나은 모델 훈련하기
4.5.6 몸집 키우기: 과대적합 모델 구축
4.5.7 모델 규제와 하이퍼파라미터 튜닝
4.6 요약
2부 실전 딥러닝
5장 컴퓨터 비전을 위한 딥러닝
5.1 합성곱 신경망 소개
5.1.1 합성곱 연산
5.1.2 최대 풀링 연산
5.2 소규모 데이터셋에서 밑바닥부터 컨브넷 훈련하기
5.2.1 작은 데이터셋 문제에서 딥러닝의 타당성
5.2.2 데이터 내려받기
5.2.3 네트워크 구성하기
5.2.4 데이터 전처리
5.2.5 데이터 증식 사용하기
5.3 사전 훈련된 컨브넷 사용하기
5.3.1 특성 추출
5.3.2 미세 조정
5.3.3 정리
5.4 컨브넷 학습 시각화
5.4.1 중간층의 활성화 시각화하기
5.4.2 컨브넷 필터 시각화하기
5.4.3 클래스 활성화의 히트맵 시각화하기
5.5 요약
6장 텍스트와 시퀀스를 위한 딥러닝
6.1 텍스트 데이터 다루기
6.1.1 단어와 문자의 원-핫 인코딩
6.1.2 단어 임베딩 사용하기
6.1.3 모든 내용을 적용하기: 원본 텍스트에서 단어 임베딩까지
6.1.4 정리
6.2 순환 신경망 이해하기
6.2.1 케라스의 순환 층
6.2.2 LSTM과 GRU 층 이해하기
6.2.3 케라스를 사용한 LSTM 예제
6.2.4 정리
6.3 순환 신경망의 고급 사용법
6.3.1 기온 예측 문제
6.3.2 데이터 준비
6.3.3 상식 수준의 기준점
6.3.4 기본적인 머신 러닝 방법
6.3.5 첫 번째 순환 신경망
6.3.6 과대적합을 감소하기 위해 순환 드롭아웃 사용하기
6.3.7 스태킹 순환 층
6.3.8 양방향 RNN 사용하기
6.3.9 더 나아가서
6.3.10 정리
6.4 컨브넷을 사용한 시퀀스 처리
6.4.1 시퀀스 데이터를 위한 1D 합성곱 이해하기
6.4.2 시퀀스 데이터를 위한 1D 풀링
6.4.3 1D 컨브넷 구현
6.4.4 CNN과 RNN을 연결하여 긴 시퀀스를 처리하기
6.4.5 정리
6.5 요약
7장 딥러닝을 위한 고급 도구
7.1 Sequential 모델을 넘어서: 케라스의 함수형 API
7.1.1 함수형 API 소개
7.1.2 다중 입력 모델
7.1.3 다중 출력 모델
7.1.4 층으로 구성된 비순환 유향 그래프
7.1.5 층 가중치 공유
7.1.6 층과 모델
7.1.7 정리
7.2 케라스 콜백과 텐서보드를 사용한 딥러닝 모델 검사와 모니터링
7.2.1 콜백을 사용하여 모델의 훈련 과정 제어하기
7.2.2 텐서보드 소개: 텐서플로의 시각화 프레임워크
7.2.3 정리
7.3 모델의 성능을 최대로 끌어올리기
7.3.1 고급 구조 패턴
7.3.2 하이퍼파라미터 최적화
7.3.3 모델 앙상블
7.3.4 정리
7.4 요약
8장 생성 모델을 위한 딥러닝
8.1 LSTM으로 텍스트 생성하기
8.1.1 생성 RNN의 간단한 역사
8.1.2 시퀀스 데이터를 어떻게 생성할까?
8.1.3 샘플링 전략의 중요성
8.1.4 글자 수준의 LSTM 텍스트 생성 모델 구현
8.1.5 정리
8.2 딥드림
8.2.1 케라스 딥드림 구현
8.2.2 정리
8.3 뉴럴 스타일 트랜스퍼
8.3.1 콘텐츠 손실
8.3.2 스타일 손실
8.3.3 케라스에서 뉴럴 스타일 트랜스퍼 구현하기
8.3.4 정리
8.4 변이형 오토인코더를 사용한 이미지 생성
8.4.1 이미지의 잠재 공간에서 샘플링하기
8.4.2 이미지 변형을 위한 개념 벡터
8.4.3 변이형 오토인코더
8.4.4 정리
8.5 적대적 생성 신경망 소개
8.5.1 GAN 구현 방법
8.5.2 훈련 방법
8.5.3 생성자
8.5.4 판별자
8.5.5 적대적 네트워크
8.5.6 DCGAN 훈련 방법
8.5.7 정리
8.6 요약
9장 결론
9.1 핵심 개념 리뷰
9.1.1 AI를 위한 여러 방법
9.1.2 머신 러닝 분야에서 딥러닝이 특별한 이유
9.1.3 딥러닝에 대하여
9.1.4 핵심 기술
9.1.5 일반적인 머신 러닝 작업 흐름
9.1.6 주요 네트워크 구조
9.1.7 딥러닝의 가능성
9.2 딥러닝의 한계
9.2.1 머신 러닝 모델의 의인화 위험
9.2.2 지역 일반화 vs. 궁극 일반화
9.2.3 정리
9.3 딥러닝의 미래
9.3.1 프로그램 같은 모델
9.3.2 역전파와 미분 가능 층을 넘어서
9.3.3 자동화된 머신 러닝
9.3.4 영구 학습과 모듈화된 서브루틴 재사용
9.3.5 장기 비전
9.4 빠른 변화에 뒤처지지 않기
9.4.1 캐글의 실전 문제로 연습하기
9.4.2 아카이브(arXiv)를 통해 최신 논문 읽기
9.4.3 케라스 생태계 탐험하기
9.5 맺음말
부록 A 윈도에 텐서플로와 케라스 설치하기
A.1 아나콘다 설치하기
A.2 텐서플로, 케라스 설치하기
A.3 예제 노트북 실행하기
부록 B 우분투 리눅스에 케라스와 필수 라이브러리 설치하기
B.1 파이썬 과학 라이브러리 설치하기
B.2 GPU 설정하기
B.3 씨아노 설치하기(선택 사항)
B.4 케라스 설치하기
B.5 아나콘다 환경 파일을 사용하여 설치하기
부록 C EC2 GPU 인스턴스에서 주피터 노트북 실행하기
C.1 주피터 노트북은 무엇일까? 왜 주피터 노트북을 AWS GPU에서 실행할까?
C.2 딥러닝 주피터 노트북을 위해 AWS를 사용하지 않는 이유는 무엇일까?
C.3 AWS GPU 인스턴스 설정하기
C.4 주피터 설정하기
C.5 케라스 설치하기
C.6 로컬 포트포워딩 설정하기
C.7 로컬 브라우저에서 주피터 사용하기
C.8 코랩을 사용하여 주피터 노트북 실행하기
- 단순 변심인 경우 : 상품 수령 후 7일 이내 신청
- 상품 불량/오배송인 경우 : 상품 수령 후 3개월 이내, 혹은 그 사실을 알게 된 이후 30일 이내 반품 신청 가능
반품사유 | 반품 배송비 부담자 |
---|---|
단순변심 | 고객 부담이며, 최초 배송비를 포함해 왕복 배송비가 발생합니다. 또한, 도서/산간지역이거나 설치 상품을 반품하는 경우에는 배송비가 추가될 수 있습니다. |
고객 부담이 아닙니다. |
진행 상태 | 결제완료 | 상품준비중 | 배송지시/배송중/배송완료 |
---|---|---|---|
어떤 상태 | 주문 내역 확인 전 | 상품 발송 준비 중 | 상품이 택배사로 이미 발송 됨 |
환불 | 즉시환불 | 구매취소 의사전달 → 발송중지 → 환불 | 반품회수 → 반품상품 확인 → 환불 |
- 결제완료 또는 배송상품은 1:1 문의에 취소신청해 주셔야 합니다.
- 특정 상품의 경우 취소 수수료가 부과될 수 있습니다.
결제수단 | 환불시점 | 환불방법 |
---|---|---|
신용카드 | 취소완료 후, 3~5일 내 카드사 승인취소(영업일 기준) | 신용카드 승인취소 |
계좌이체 |
실시간 계좌이체 또는 무통장입금 취소완료 후, 입력하신 환불계좌로 1~2일 내 환불금액 입금(영업일 기준) |
계좌입금 |
휴대폰 결제 |
당일 구매내역 취소시 취소 완료 후, 6시간 이내 승인취소 전월 구매내역 취소시 취소 완료 후, 1~2일 내 환불계좌로 입금(영업일 기준) |
당일취소 : 휴대폰 결제 승인취소 익월취소 : 계좌입금 |
포인트 | 취소 완료 후, 당일 포인트 적립 | 환불 포인트 적립 |
- 단순변심으로 인한 반품 시, 배송 완료 후 7일이 지나면 취소/반품 신청이 접수되지 않습니다.
- 주문/제작 상품의 경우, 상품의 제작이 이미 진행된 경우에는 취소가 불가합니다.
- 구성품을 분실하였거나 취급 부주의로 인한 파손/고장/오염된 경우에는 취소/반품이 제한됩니다.
- 제조사의 사정 (신모델 출시 등) 및 부품 가격변동 등에 의해 가격이 변동될 수 있으며, 이로 인한 반품 및 가격보상은 불가합니다.
- 뷰티 상품 이용 시 트러블(알러지, 붉은 반점, 가려움, 따가움)이 발생하는 경우 진료 확인서 및 소견서 등을 증빙하면 환불이 가능하지만 이 경우, 제반 비용은 고객님께서 부담하셔야 합니다.
- 각 상품별로 아래와 같은 사유로 취소/반품이 제한 될 수 있습니다.
상품군 | 취소/반품 불가사유 |
---|---|
의류/잡화/수입명품 | 상품의 택(TAG) 제거/라벨 및 상품 훼손으로 상품의 가치가 현저히 감소된 경우 |
계절상품/식품/화장품 | 고객님의 사용, 시간경과, 일부 소비에 의하여 상품의 가치가 현저히 감소한 경우 |
가전/설치상품 | 전자제품 특성 상, 정품 스티커가 제거되었거나 설치 또는 사용 이후에 단순변심인 경우, 액정화면이 부착된 상품의 전원을 켠 경우 (상품불량으로 인한 교환/반품은 AS센터의 불량 판정을 받아야 합니다.) |
자동차용품 | 상품을 개봉하여 장착한 이후 단순변심의 경우 |
CD/DVD/GAME/BOOK등 | 복제가 가능한 상품의 포장 등을 훼손한 경우 |
상품의 시리얼 넘버 유출로 내장된 소프트웨어의 가치가 감소한 경우 | |
노트북, 테스크탑 PC 등 | 홀로그램 등을 분리, 분실, 훼손하여 상품의 가치가 현저히 감소하여 재판매가 불가할 경우 |