책 소개
코드로 빠르게 배우는 개발자용 딥러닝 입문서
『케라스로 구현하는 딥러닝』은 인공지능의 한 가지 방식만을 깊이 다루기보다는 누구나 인공지능을 쉽게 익힐 수 있도록 다양한 기초 방법을 실습하여 딥러닝의 큰 그림을 그릴 수 있도록 만들었다.
저자가 독자 옆에 앉아 빠르게 ‘함께 코딩해가며’ 설명한다는 느낌이 들도록 했으며, 코드는 설명 흐름에 맞춰 필요한 만큼씩 보여준다. 조각 코드로 공부한 다음 마지막에 전체 코드를 제시하여 한 번 더 정리할 수 있다. 이론은 큰 그림을 이해할 정도로 설명하고, 코드도 세세한 부분까지 설명하지는 않는다. 큰 그림과 동작하는 코드를 손에 넣은 후, 케라스 사용법 문서와 저자가 만든 케라스 깃허브를 참고해 코드를 주물러보며 케라스와 친해질 수 있다.
★이 책의 구성
이 책은 기본 편(0~8장)과 심화 편(9~11장)으로 구성되어 있다. 기본 편에서는 기본적인 인공신경망을 이해하고 구현하는 내용을 학습한다. 심화 편에서 응용을 포함하여 심화된 인공신경망 활용 방법을 알아본다.
<기본 편>
0장. 프롤로그
인공지능과 딥러닝 인공신경망의 개요를 알아본다. 그리고 인공신경망을 구현하는 케라스를 간단히 소개한다.
1장. 케라스 시작하기
케라스는 인공지능을 파이썬으로 구현하는 라이브러리이다. 케라스를 설치하는 방법과 간단한 인공신경망을 구현하는 예제를 다룬다.
2장. 케라스로 구현하는 ANN
ANN(인공신경망)은 두뇌의 신경망을 흉내 낸 인공지능 기술이다. ANN은 입력 계층, 은닉 계층, 출력 계층으로 구성된다. 이 장에서는 ANN 구성에 필요한 요소를 이해하고 예제를 살펴보며 ANN 구현 방법을 익힌다.
3장. 케라스로 구현하는 DNN
DNN(심층신경망)은 은닉 계층을 여러 개 쌓아서 만든 인공신경망이다. 다수의 은닉 계층을 이용하는 DNN은 ANN에 비해 더 우수한 성능을 내며 적용 분야도 다양하다. 이 장에서는 DNN의 구성에 필요한 요소를 이해하고 케라스로 구현하는 방법을 익힌다.
4장. 케라스로 구현하는 CNN
CNN(합성곱신경망)은 영상 처리에 많이 활용되는 합성곱을 이용하는 신경망 기술이다. 합성곱에 사용되는 필터들은 학습을 통해 이미지 내의 특징점을 자동으로 추출한다. CNN은 이런 과정을 거쳐 기존에 수작업으로 찾던 특징점을 스스로 찾게 된다. 이 장에서는 CNN의 원리를 이해하고 케라스로 구현하는 방법을 알아본다.
5장. 케라스로 구현하는 RNN
RNN(순환신경망)은 계층의 출력이 순환하는 인공신경망이다. 재귀를 이용해 자기 계층의 출력 정보를 입력 신호로 다시 사용해 신경망의 성능을 높인다. 특히 문자열, 음성 등 시계열 정보의 예측에 많이 활용된다. 이 장에서는 RNN의 기본 개념을 이해하고 예제를 구현한다.
6장. 케라스로 구현하는 AE
AE(오토인코더)는 비지도학습 인공신경망이다. 비지도학습은 레이블 정보가 없는 데이터의 특성을 분석하거나 추출하는 데 사용한다. 비지도학습의 대표적인 방식인 AE의 목적은 입력 데이터의 특징점을 효율적으로 찾는다. 이 장에서는 AE의 원리를 이해하고 케라스로 구현하는 방법을 익힌다.
7장. 케라스로 구현하는 GAN
GAN(생성적적대신경망)은 경쟁을 통한 최적화를 수행하는 생성적 인공신경망이다. GAN 내부의 두 인공신경망이 상호 경쟁하면서 학습을 진행한다. 두 신경망 중의 하나는 생성망이고 다른 하나는 판별망이다. 이 장에서는 GAN의 개념을 소개하고 케라스로 구현하는 방법을 다룬다.
8장. 케라스로 구현하는 UNET
UNET(유넷)은 저차원과 고차원 정보를 모두 사용하여 이미지의 경계를 비롯한 특징을 추출하는 인공신경망이다. 차원 정보만 이용해 고차원으로 복원해나가는 AE와 달리 고차원 특징점도 함께 이용해 디코딩을 진행해 이미지의 특징점 추출에 용이하다. 이 장에서는 UNET의 개념을 이해하고 구현하는 방법을 익힌다.
<심화 편>
9장. 케라스 확장 기능
케라스를 이용하여 실제 문제에 인공지능을 활용할 때 생기는 문제를 효율적으로 처리하는 고급 기능을 다룬다. 종종 학습에 필요한 데이터가 충분하지 못한 경우가 있다. 이런 경우는 학습 데이터 수를 늘려주거나 기존에 학습된 인공신경망을 재활용해야 한다. 이 장에서는 인공지능 기술의 실전 활용을 위해 필요한 이미지 늘리기와 기존 망을 재사용하는 방법을 익힌다.
10장. 케라스로 구현하는 RL
RL(강화학습)은 행동 정책을 학습하는 인공신경망이다. 강화학습은 최고의 보상을 얻기 위해 인공지능 에이전트가 적절한 행동을 스스로 결정할 수 있도록 만드는 방식으로 바둑, 게임, 로봇 제어 등에 활용되고 있다. 이 장에서는 RL의 개념을 이해하고 예제를 통해 구현 방법을 배운다.
11장. 케라스로 구현하는 QAI
QAI(양자인공지능)는 양자컴퓨터를 이용하여 구현하는 인공지능이며 양자컴퓨터는 양자 효과를 활용하는 컴퓨팅 환경이다. 양자컴퓨터는 양자중첩과 양자얽힘 현상을 이용하여 계산을 빠르게 할 수 있다. 이 장에서는 QAI에 대한 기본 내용을 배우고 양자 프로그래밍 방법을 익힌다.
★ 대상 독자
실습 중심으로 딥러닝에 대한 감을 익히고 빠르게 결과물을 내고 싶은 개발자에게 추천한다. 더불어 인공지능, 인공신경망 구현에 관심이 있다면 누구나 이 책의 대상 독자이다.
작가 소개
김성진
초등학교 때 프로그래밍으로 도 대회에서 대상을 수상했다. 그때 열정을 살려 서울대학교 컴퓨터공학부에서 박사 학위를 받고 21년간 삼성전자에 다니면서 프로그래밍 역량을 높였다. 2015년에 미국으로 건너가 하버드 대학교에서 인공지능 소재 탐색 분야의 박사후연구원으로 근무했다. 2018년부터는 LG전자에서 인공지능 분야에 수석연구위원(상무)을 지냈고, 최근 인공지능을 스페이스 분야까지 확장하는 뷰메진의 CTO로 영입되었다. 페이스북에서 『케라스로 구현하는 딥러닝』 커뮤니티(fb.com/groups/keras.py)를 운영하고 있다.
목 차
<기본 편>
0장. 프롤로그
__0.1 인공지능과 인공신경망
____0.1.1 인공지능의 역사
____0.1.2 머신러닝과 딥러닝
____0.1.3 인공신경망 개요
__0.2 케라스 소개
____0.2.1 케라스 2의 주요 특징
1장. 케라스 시작하기
__1.1 우분투에서 케라스 설치하기
____1.1.1 아나콘다 파이썬 배포판 설치
____1.1.2 아나콘다를 이용한 케라스 설치
____1.1.3 케라스에서 GPU 사용을 위한 CUDA/cuDNN 설치
__1.2 윈도우에서 케라스 설치하기
____1.2.1 아나콘다 파이썬 배포판 설치
____1.2.2 아나콘다를 이용한 케라스 설치
__1.3 주피터 설치하기
__1.4 케라스 사용하기
____1.4.1 실습 내용 소개
____1.4.2 텍스트 모드 실습
____1.4.3 주피터 모드 실습
__1.5 케라스 기능
__1.6 마치며
2장. 케라스로 구현하는 ANN
__2.1 ANN 원리
____2.1.1 ANN 개념
____2.1.2 ANN 구조
____2.1.3 ANN 활용
____2.1.4 ANN 구현 방법 및 단계
__2.2 필기체를 구분하는 분류 ANN 구현
____2.2.1 분류 ANN을 위한 인공지능 모델 구현
____2.2.2 분류 ANN에 사용할 데이터 가져오기
____2.2.3 분류 ANN 학습 결과의 그래프 구현
____2.2.4 분류 ANN 학습 및 성능 분석
__2.3 결과 데이터를 예측하는 회귀 ANN 구현
____2.3.1 회귀 ANN 모델링
____2.3.2 학습과 평가용 데이터 가져오기
____2.3.3 회귀 ANN 학습 결과 그래프 구현
____2.3.4 회귀 ANN 학습 및 성능 분석
__2.4 마치며
3장. 케라스로 구현하는 DNN
__3.1 DNN 원리
____3.1.1 DNN 개념과 구조
____3.1.2 경사도 소실 문제와 ReLU 활성화 함수
____3.1.3 DNN 구현 단계
__3.2 필기체를 분류하는 DNN 구현
____3.2.1 기본 매개변수 설정
____3.2.2 DNN 모델 구현
____3.2.3 데이터 준비
____3.2.4 학습 및 성능 평가
__3.3 컬러 이미지를 분류하는 DNN 구현
____3.3.1 데이터 가져오기
____3.3.2 DNN 모델링
____3.3.3 학습 효과 분석
____3.3.4 학습 및 성능 평가
__3.4 마치며
4장 케라스로 구현하는 CNN
__4.1 CNN 원리
__4.2 필기체를 분류하는 CNN 구현
____4.2.1 분류 CNN 모델링
____4.2.2 분류 CNN을 위한 데이터 준비
____4.2.3 분류 CNN 학습 효과 분석
____4.2.4 분류 CNN 학습 및 성능 평가
__4.3 컬러 이미지를 분류하는 CNN 구현
____4.3.1 분류 CNN 패키지 가져오기
____4.3.2 분류 CNN 모델링
____4.3.3 분류 CNN을 위한 데이터 준비
____4.3.4 분류 CNN의 학습 및 성능 평가를 위한 머신 클래스
____4.3.5 분류 CNN의 학습 및 성능 평가 수행
__4.4 마치며
5장 케라스로 구현하는 RNN
__5.1 RNN 원리
____5.1.1 RNN의 개념과 구조
____5.1.2 LSTM 구조 및 동작
__5.2 문장을 판별하는 LSTM 구현
____5.2.1 라이브러리 패키지 가져오기
____5.2.2 데이터 준비
____5.2.3 모델링
____5.2.4 학습 및 성능 평가
__5.3 시계열 데이터를 예측하는 LSTM 구현
____5.3.1 라이브러리 패키지 가져오기
____5.3.2 코드 실행 및 결과 보기
____5.3.3 학습하고 평가하기
____5.3.4 LSTM 시계열 데이터 회귀 모델링
____5.3.5 데이터 가져오기
__5.4 마치며
6장 케라스로 구현하는 AE
__6.1 AE 원리
__6.2 완전 연결 계층을 이용한 AE 구현
____6.2.1 완전 연결 계층 AE 모델링
____6.2.2 데이터 준비
____6.2.3 학습 효과 분석
____6.2.4 완전 연결 계층 AE의 동작 확인
____6.2.5 학습 및 성능 평가
__6.3 합성곱 계층을 이용한 AE 구현
____6.3.1 합성곱 AE 모델링
____6.3.2 데이터 준비 및 학습 효과 분석
____6.3.3 합성곱 AE 결과 시각화
____6.3.4 합성곱 AE 학습 및 성능 평가
__6.4 마치며
7장. 케라스로 구현하는 GAN
__7.1 GAN 원리
____7.1.1 GAN의 목적과 개념
____7.1.2 GAN의 구조
____7.1.3 GAN의 동작 원리
____7.1.4 GAN의 동작 사례
__7.2 확률분포 생성을 위한 완전 연결 계층 GAN 구현
____7.2.1 패키지 가져오기
____7.2.2 데이터 생성 클래스 만들기
____7.2.3 GAN 모델링
____7.2.4 머신 구현하기
____7.2.5 코드 수행과 결과 보기
__7.3 필기체를 생성하는 합성곱 계층 GAN 구현
____7.3.1 공통 패키지 가져오기
____7.3.2 사용자 정의 손실 함수 만들기
____7.3.3 합성곱 계층 GAN 모델링
____7.3.4 합성곱 계층 GAN 학습하기
____7.3.5 합성곱 계층 GAN 수행하기
__7.4 마치며
8장 케라스로 구현하는 UNET
__8.1 UNET 원리
__8.2 UNET을 이용한 컬러 복원 처리
____8.2.1 패키지 가져오기
____8.2.2 UNET 모델링
____8.2.3 데이터 준비
____8.2.4 UNET 처리 그래프 그리기
____8.2.5 UNET 학습 및 결과 확인
__8.3 마치며
<심화 편>
9장 케라스 확장 기능
__9.1 이미지 데이터 증강하기
____9.1.1 응용 코드 구현
____9.1.2 세부 모듈 구현
__9.2 미리 학습한 모델 사용하기
____9.2.1 응용 코드 구현
____9.2.2 세부 모듈 구현
__9.3 간단한 신규 계층 만들기
____9.3.1 Lambda 계층이란?
____9.3.2 파이썬 Lambda 기능 이용
____9.3.3 Lambda 계층 전용 함수 이용
____9.3.4 백엔드 함수 이용
____9.3.5 엔진 전용 함수 이용
____9.3.6 케라스의 확장 기능 이용
__9.4 학습 가능한 신규 계층 만들기
____9.4.1 관련 패키지 가져오기
____9.4.2 새로운 계층의 클래스 만들기
____9.4.3 사용 데이터 준비하기
____9.4.4 신규 계층이 포함된 모델링 만들기
____9.4.5 모델의 학습과 성능 평가
__9.5 케라스의 확장된 기능 이용하기
____9.5.1 텐서플로 가져오기와 내장 케라스 사용하기
____9.5.2 완전 연결층 인공신경망 모델링
____9.5.3 데이터 준비
____9.5.4 학습 진행 및 효과 분석 단계
____9.5.5 주 함수 구현 및 실행
__9.6 마치며
10장. 케라스로 구현하는 RL
__10.1 강화학습 원리
____10.1.1 강화학습의 정의 및 주요 용어
____10.1.2 강화학습 최적화 기본 방법
__10.2 정책 반복법을 이용하는 강화학습 사례
____10.2.1 Gym을 이용한 강화학습 환경 구성하기
____10.2.2 무작위 행동에 따른 상태, 보상 그리고 종료 여부 관찰하 기
____10.2.3 반환값 구하기
____10.2.4 가치함수 구하기
____10.2.5 행동가치함수 구하기
____10.2.6 새로운 정책 구하기
____10.2.7 새로운 정책 사용하기
__10.3 Q-Learning을 이용하는 강화학습 사례
____10.3.1 패키지 가져오기 및 초기화
____10.3.2 주어진 정책에 따른 시행 함수 만들기
____10.3.3 Q-learning 만들기
____10.3.4 Q-learning 실행하기
__10.4 딥러닝 기반 Q-Learning을 이용하는 강화학습
____10.4.1 관련 패키지 가져오기
____10.4.2 Q 함수를 위한 뉴럴넷 구성하기
____10.4.3 텐서플로 기능을 이용한 Q 함수 뉴럴넷 학습 코드 작성
____10.4.4 객체지향 방식으로 Q 함수 뉴럴넷 모델을 학습시키기
____10.4.5 추가 Q 함수 뉴럴넷 모델을 이용한 학습
____10.4.6 시도와 동시에 학습이 진행되게 만들기
__10.5 마치며
11장. 케라스로 구현하는 QAI
__11.1 양자컴퓨팅과 양자인공지능의 기초
____11.1.1 양자비트 상태 표현과 측정
____11.1.2 단일 양자비트 연산자
____11.1.3 다중 양자비트 표현 및 연산
____11.1.4 블로흐 구면과 지정 양자상태 회전
__11.2 양자컴퓨팅 알고리즘 구현
____11.2.1 기본 양자회로 만들기
____11.2.2 입력을 반전시키는 양자회로
____11.2.3 두 상태를 중첩하는 양자회로
____11.2.4 두 개 양자비트를 입력으로 하는 CNOT 연산
____11.2.5 벨 상태 만들기
__11.3 양자인공지능 알고리즘 구현
____11.3.1 매개변수가 있는 가변양자회로 알고리즘
____11.3.2 하이브리드 양자인공지능 학습하기
__11.4 마치며
역자 소개
- 단순 변심인 경우 : 상품 수령 후 7일 이내 신청
- 상품 불량/오배송인 경우 : 상품 수령 후 3개월 이내, 혹은 그 사실을 알게 된 이후 30일 이내 반품 신청 가능
반품사유 | 반품 배송비 부담자 |
---|---|
단순변심 | 고객 부담이며, 최초 배송비를 포함해 왕복 배송비가 발생합니다. 또한, 도서/산간지역이거나 설치 상품을 반품하는 경우에는 배송비가 추가될 수 있습니다. |
고객 부담이 아닙니다. |
진행 상태 | 결제완료 | 상품준비중 | 배송지시/배송중/배송완료 |
---|---|---|---|
어떤 상태 | 주문 내역 확인 전 | 상품 발송 준비 중 | 상품이 택배사로 이미 발송 됨 |
환불 | 즉시환불 | 구매취소 의사전달 → 발송중지 → 환불 | 반품회수 → 반품상품 확인 → 환불 |
- 결제완료 또는 배송상품은 1:1 문의에 취소신청해 주셔야 합니다.
- 특정 상품의 경우 취소 수수료가 부과될 수 있습니다.
결제수단 | 환불시점 | 환불방법 |
---|---|---|
신용카드 | 취소완료 후, 3~5일 내 카드사 승인취소(영업일 기준) | 신용카드 승인취소 |
계좌이체 |
실시간 계좌이체 또는 무통장입금 취소완료 후, 입력하신 환불계좌로 1~2일 내 환불금액 입금(영업일 기준) |
계좌입금 |
휴대폰 결제 |
당일 구매내역 취소시 취소 완료 후, 6시간 이내 승인취소 전월 구매내역 취소시 취소 완료 후, 1~2일 내 환불계좌로 입금(영업일 기준) |
당일취소 : 휴대폰 결제 승인취소 익월취소 : 계좌입금 |
포인트 | 취소 완료 후, 당일 포인트 적립 | 환불 포인트 적립 |
- 단순변심으로 인한 반품 시, 배송 완료 후 7일이 지나면 취소/반품 신청이 접수되지 않습니다.
- 주문/제작 상품의 경우, 상품의 제작이 이미 진행된 경우에는 취소가 불가합니다.
- 구성품을 분실하였거나 취급 부주의로 인한 파손/고장/오염된 경우에는 취소/반품이 제한됩니다.
- 제조사의 사정 (신모델 출시 등) 및 부품 가격변동 등에 의해 가격이 변동될 수 있으며, 이로 인한 반품 및 가격보상은 불가합니다.
- 뷰티 상품 이용 시 트러블(알러지, 붉은 반점, 가려움, 따가움)이 발생하는 경우 진료 확인서 및 소견서 등을 증빙하면 환불이 가능하지만 이 경우, 제반 비용은 고객님께서 부담하셔야 합니다.
- 각 상품별로 아래와 같은 사유로 취소/반품이 제한 될 수 있습니다.
상품군 | 취소/반품 불가사유 |
---|---|
의류/잡화/수입명품 | 상품의 택(TAG) 제거/라벨 및 상품 훼손으로 상품의 가치가 현저히 감소된 경우 |
계절상품/식품/화장품 | 고객님의 사용, 시간경과, 일부 소비에 의하여 상품의 가치가 현저히 감소한 경우 |
가전/설치상품 | 전자제품 특성 상, 정품 스티커가 제거되었거나 설치 또는 사용 이후에 단순변심인 경우, 액정화면이 부착된 상품의 전원을 켠 경우 (상품불량으로 인한 교환/반품은 AS센터의 불량 판정을 받아야 합니다.) |
자동차용품 | 상품을 개봉하여 장착한 이후 단순변심의 경우 |
CD/DVD/GAME/BOOK등 | 복제가 가능한 상품의 포장 등을 훼손한 경우 |
상품의 시리얼 넘버 유출로 내장된 소프트웨어의 가치가 감소한 경우 | |
노트북, 테스크탑 PC 등 | 홀로그램 등을 분리, 분실, 훼손하여 상품의 가치가 현저히 감소하여 재판매가 불가할 경우 |