케라스로 배우는 신경망 설계와 구현 [CNN, RNN, GAN, LSTM 다양한 신경망 모델 설계와 구현]
- 원서명Hands-On Neural Networks with Keras: Design and create neural networks using deep learning and artificial intelligence principles (ISBN 9781789536089)
- 지은이닐로이 푸르카이트(Niloy Purkait)
- 옮긴이김연수
- ISBN : 9791161753782
- 40,000원
- 2020년 02월 21일 펴냄
- 페이퍼백 | 576쪽 | 188*235mm
- 시리즈 : acorn+PACKT, 데이터 과학
책 소개
본문에 쓰인 컬러 이미지는 여기에서 내려 받으세요.
요약
인공지능 개발의 핵심인 뉴럴 네트워크의 다양한 모델을 소개한다. 수식과 알고리즘을 기반으로 뉴럴 네트워크의 특징을 설명하고, 케라스를 활용해 직접 뉴럴 네트워크를 구축한다. CNN, RNN, 장단기 메모리(Long Short-Term Memory) 네트워크, 오토인코더, GAN을 깊게 학습하면서 머신러닝, 딥러닝, 인공지능에 관한 폭넓은 지식을 얻을 수 있다. 다양한 뉴럴 네트워크 모델을 결합하고, 실예제를 다루면서 예측 모델링과 함수 근사화(function approximation)를 통해 얻을 수 있는 가치를 이해하게 될 것이다.
이 책에서 다루는 내용
■ 예측적 데이터 모델링의 근본적인 특성과 워크플로우
■ 뉴럴 네트워크를 사용해 다양한 타입의 시각 및 언어 신호 처리
■ 네트워크가 데이터를 학습하는 수학적, 통계적 기반 지식 이해
■ CNN, LSTM, GAN과 같은 다양한 뉴럴 네트워크의 설계 및 구현
■ 다양한 아키텍처를 활용해 인식 태스크를 해결하고 시스템에 지능 내재
■ 합성 데이터를 생성하고 증강 전략을 활용한 네트워크로 모델 개선
■ 인공지능 분야의 최신 학술 정보와 상업적 개발 정보 습득
이 책의 대상 독자
케라스를 활용해 새로운 뉴럴 네트워크 아키텍처를 공부하고자 하는 머신러닝 개발자, 딥러닝 연구자 및 AI 학습자를 대상으로 한다.
이 책의 구성
1장, ‘뉴럴 네트워크 개요’에서는 데이터의 근본적인 특성과 구조, 다양한 형태를 직관적으로 사고할 수 있는 방법을 알아본다. 기본 데이터 타입, 발전된 데이터 구조(이미지, 비디오, 오디오, 텍스트, 센서 및 멀티미디어 데이터)를 다루는 방법은 물론, 이와 같은 다양한 데이터 구조에서 정보를 추출하는 추상적 기반에 관해 다룬다.
2장, ‘뉴럴 네트워크 깊이 들여다보기’에서는 뉴럴 네트워크의 기반이 되는 수식 배경을 깊이 있게 살펴본다. 그 후 케라스를 사용해 머신러닝 프로젝트의 산출물을 반복적으로 개선할 수 있는 빠른 개발 사이클을 활용해 좀 더 생산적으로 경쟁 우위를 가질 수 있는지 알아본다.
3장, ‘신호 처리: 뉴럴 네트워크를 활용한 데이터 분석’에서는 완전한 예제를 사용해 뉴럴 네트워크를 잘 동작하도록 하는 데 필수적인 변환(transformation) 및 표준화(normalization)를 소개한다.
4장, ‘컨볼루셔널 뉴럴 네트워크’에서는 다양한 컨볼루셔널 레이어 및 풀링 레이어를 다룬다. 뉴럴 네트워크는 이 레이어를 사용해 여러분의 PC에 저장된 이미지, 데이터베이스 및 센서로 입력받는 정보를 처리한다. 그 후 CNN과 연계된 파이프라인 처리에 관한 정보를 알아보고, 최신 객체 인식 API와 모델을 활용해 실질적인 실험을 수행해본다.
5장, ‘순환 뉴럴 네트워크’에서는 순환 네트워크의 다양한 기반 이론과 튜링 완료 알고리즘의 의미를 소개한다.
6장, ‘장단기 기억 네트워크’에서는 LSTM 네트워크로 알려진 RNN의 특정 형태에 관해 좀 더 깊이 알아보고, 생태계에서 영감을 받아 구현된 다양한 뉴럴 네트워크 아키텍처를 알아본다.
7장, ‘DQN을 활용한 강화학습’에서는 강화학습 네트워크의 기반 아키텍처를 자세히 설명하고, 케라스의 핵심 및 확장 레이어를 구현해 원하는 산출물을 얻는 방법을 알아본다.
8장, ‘오토인코더’에서는 자동 인코더 뉴럴 네트워크의 기능을 활성화하는 데 필요한 관련 지식과 아이디어를 자세히 소개한다.
9장, ‘생성적 네트워크’에서는 일반적으로 가변 오토인코더(Variational Autoencoders)나 생성적 대립쌍 네트워크(GAN, Generative Adversarial Network)와 같은 모델을 사용한 합성 데이터 생성 및 조작에 관련된 유스케이스에 관해 살펴본다.
10장, ‘현재와 미래 개발에 관한 고찰’에서는 뉴럴 네트워크를 활용한 표상(representation) 학습과 전달에 관해 알아본다. 또한 양자 컴퓨팅과 같은 AI 영역에서의 패러다임을 비롯해 미래의 잠재적인 개발 분야에 대해서도 개괄적으로 다룬다.
목차
목차
- 1부. 뉴럴 네트워크 기본
- 1장. 뉴럴 네트워크 개요
- 목표 정의
- 도구 확인
- 케라스
- 텐서플로
- 뉴럴 학습 기본
- 뉴럴 네트워크
- 두뇌 관찰
- 데이터 과학 기본
- 정보 이론
- 엔트로피
- 교차 엔트로피
- 데이터 처리 특성
- 데이터 과학에서 머신러닝으로
- 머신러닝의 함정
- 요약
- 더 읽을거리
- 2장. 뉴럴 네트워크 깊이 들여다보기
- 퍼셉트론: 생리학적 뉴런에서 인공지능 뉴런으로
- 퍼셉트론 구축
- 입력
- 가중치
- 총화
- 비선형성
- 바이어스의 역할
- 출력
- 오차를 활용한 학습
- 평균 제곱 오차 손실 함수
- 퍼셉트론 훈련
- 손실 정량화
- 모델 가중치 함수로서의 손실
- 역전파
- 기울기 계산
- 학습률
- 퍼셉트론 확장
- 단일 레이어 네트워크
- 텐서플로 플레이그라운드
- 패턴 계층 확인
- 한 걸음 더
- 요약
- 3장. 신호 처리: 뉴럴 네트워크를 활용한 데이터 분석
- 신호 처리
- 표상적 학습
- 무작위 기억 회피
- 숫자를 활용한 신호 표현
- 숫자를 활용한 이미지 표현
- 뉴럴 네트워크에 데이터 입력
- 텐서 예제
- 데이터의 차원
- 패키지 임포트
- 데이터 로드
- 차원 확인
- 모델 구축
- 케라스 레이어
- 가중치 초기화
- 케라스 활성화 함수
- 모델 시각화
- 모델 컴파일
- 모델 피팅
- 모델 성능 평가
- 정규화
- 케라스를 활용한 가중치 정규화 구현
- 가중치 정규화
- 케라스를 활용한 드롭아웃 정규화 구현
- 드롭아웃 정규화 실험
- 복잡성과 시간
- MNIST 요약
- 언어 처리
- 감정 분석
- 인터넷 영화 리뷰 데이터 세트
- 데이터 세트 로딩
- 셰이프 및 타입 확인
- 단일 학습 인스턴스 확인
- 리뷰 디코딩
- 데이터 준비
- 원핫 인코딩
- 특징 벡터화
- 라벨 벡터화
- 네트워크 구축
- 모델 컴파일
- 모델 피팅
- 검증 데이터
- 콜백
- 조기 중단 콜백과 히스토리 콜백
- 모니터링 지표 선택
- 모델 예측 접근
- 예측 조사
- IMDB 요약
- 연속된 변수 예측
- 보스턴 주택 가격 데이터 세트
- 데이터 로딩
- 데이터 탐색
- 특징별 표준화
- 모델 생성
- 모델 컴파일
- 훈련 및 테스트 오차 플로팅
- k-폴드 검증을 활용한 접근 방식 검증
- 사이킷-런 API를 활용한 교차 검증
- 요약
- 연습 문제
- 신호 처리
- 2부. 고급 뉴럴 네트워크 구조
- 4장. 컨볼루션 뉴럴 네트워크
- CNN
- 시각의 탄생
- 생리학적 시각 이해
- 공간 불변성
- 뉴런의 수용 필드
- 뉴런 계층 구현
- 근대 CNN의 탄생
- CNN 설계
- 덴스 레이어와 컨볼루셔널 레이어
- 컨볼루션 오퍼레이션
- 이미지의 공간 구조 보존
- 수용 필드
- 필터를 활용한 특징 추출
- CNN에서의 오차 역전파
- 여러 필터 사용
- 스트라이드
- 특징이란?
- 필터를 활용한 특징 추출 시각화
- 복잡한 필터
- 컨볼루션 오퍼레이션 요약
- 풀링 레이어 이해
- 풀링 오퍼레이션의 종류
- 케라스를 활용한 CNN 구현
- 데이터 확인
- 데이터 셰이프 확인
- 데이터 표준화
- 임포트
- 컨볼루셔널 레이어
- 필터 수와 크기 정의
- 입력 텐서 패딩
- 맥스 풀링 레이어
- 덴스 레이어를 활용한 분류
- 모델 요약
- 모델 컴파일
- 모델 정확성 확인
- 미소 식별 과정의 문제
- 블랙박스 내부
- 뉴럴 네트워크의 실패
- ConvNet 학습 시각화
- 중간 레이어의 뉴럴 활성화 맵 시각화
- 입력 이미지 예측
- 케라스의 기능적 API
- 레이어 채널수 확인
- 활성화 맵 시각화
- 돌출
- ResNet50을 사용한 돌출 맵 시각화
- 로컬 디렉토리에 저장된 이미지 로딩
- 케라스의 시각화 모듈
- 레이어 검색
- 연습 문제
- 경사 가중치 클래스 활성화 매핑
- keras-vis를 활용한 클래스 활성화 시각화
- 미리 훈련된 모델 활용
- 출력 클래스별 최대 활성 값 시각화
- 모델 수렴
- 여러 필터 인덱스를 활용한 몽환적 분위기 연출
- CNN의 문제점
- 뉴럴 네트워크의 환각
- 요약
- 5장. 순환 뉴럴 네트워크
- 시퀀스 모델링
- RNN을 사용한 순차 모델링
- 전략 선택
- 기본 RNN 아키텍처
- 다양한 종류의 순차 프로세싱 태스크
- RNN의 학습
- 일반적인 RNN 레이어
- 피드포워드
- 타입 스텝별 활성화 계산
- 활성화 방정식 정리
- 타임 스텝별 출력 예측
- 단방향 정보 흐름의 문제
- 장기 의존성 문제
- 시간에 따른 역전파
- 시간에 따른 역전파 시각화
- 경사 폭발 및 소멸
- 기울기 레벨에 관한 고려
- 클리핑을 활용한 경사 폭발 방지
- 메모리를 활용한 경사 소멸 방지
- GRU
- 메모리 셀
- 업데이트 미수행 시나리오
- 업데이트 수행 시나리오
- 타임 스텝 사이의 타당성 보존
- 타당성 게이트 방정식
- 케라스를 활용한 문자 레벨의 언어 모델 구축
- 셰익스피어의 햄릿 로딩
- 문자 사전 구축
- 훈련 시퀀스 준비
- 예제 시퀀스 출력
- 훈련 데이터 벡터화
- 문자 모델링 통계
- 문자별 확률 모델링
- 임곗값 샘플링
- 확률 통제의 목적
- 그리디 샘플링
- 확률 표본 샘플링
- 다양한 RNN 모델 테스팅
- 커스텀 콜백을 사용한 텍스트 생성
- 다양한 모델 테스팅
- SimpleRNN 구현
- RNN 레이어 스택
- GRU 구현
- 양방향 GRU 구현
- 실제 데이터의 순차적 처리
- 순차적인 데이터 재정렬을 통한 장점
- 케라스의 양방향 레이어
- 순환 드롭아웃 구현
- 출력값 시각화
- 무거운 GRU 모델의 출력값 시각화
- 요약
- 더 읽을거리
- 연습 문제
- 6장. 장단기 기억 네트워크
- 복잡한 시퀀스 처리
- 메모리 분해
- LSTM 네트워크
- LSTM 해부
- 가장 유사한 모델과의 비교
- GRU 메모리
- LSTM 메모리 셀
- 활성화 함수와 메모리 별도 처리
- LSTM 메모리 블록
- 망각 게이트의 중요성
- 차이 개념화
- LSTM 살펴보기
- 정보 흐름 시각화
- 셀 상태 계산
- 경쟁 메모리 계산
- 타임 스텝별 활성화 값 계산
- LSTM의 변종 모델과 그 성능
- 핍홀 연결 이해
- 타이밍과 카운팅의 중요성
- 다른 구조적 차이 탐구
- 지식 활용
- 주식 시장 데이터 모델링
- 데이터 임포트
- 정렬 및 트렌드 시각화
- 데이터프레임을 텐서로 변환
- 데이터 분할
- 훈련 및 테스팅 인스턴스 플롯
- 윈도우 방식 표준화
- 데이터 노이즈 제거
- 지수 평활법 구현
- 곡선 시각화
- 한 걸음 앞선 예측 수행
- 단순 이동 평균 예측
- 지수 이동 평균 예측
- 한 걸음 앞선 예측 수행의 문제
- 관찰 값 시퀀스 생성
- 데이터 셰이프 정리
- 임포트
- 뉴럴 네트워크 베이스라인
- 피드포워드 네트워크 구축
- 순환 베이스라인
- LSTM 구현
- LSTM 스택
- 헬퍼 함수 활용
- 모델 훈련
- 결과 시각화
- 마무리
- 요약
- 연습 문제
- 복잡한 시퀀스 처리
- 7장. DQN을 사용한 강화학습
- 보상과 만족
- 새로운 학습 평가 방법
- 강화학습을 활용한 머신의 조건 형성
- 신용도 할당 문제
- 탐색 착취 딜레마
- 일반적 인공지능지능
- 환경 시뮬레이션
- 상태, 행동, 보상
- 자율 주행 택시
- 태스크 이해
- 환경 렌더링
- 관찰 공간 참조
- 행동 공간 참조
- 환경과의 상호작용
- 무작위로 환경 해결
- 즉시 보상과 미래 보상 사이의 트레이드오프
- 미래 보상 할인
- 마르코프 결정 프로세스
- 정책 함수 이해
- 상태 가치 평가
- 행동 품질 평가
- 벨만 방정식 활용
- 반복적인 벨만 방정식 업데이트
- 뉴럴 네트워크를 사용하는 이유
- Q-학습에서의 정방향 경로 수행
- Q-학습에서의 역방향 경로 수행
- 반복적 업데이트를 딥러닝으로 대체
- 케라스를 활용한 심층 Q-학습
- 임포트
- 전처리 기법
- 입력 파라미터 정의
- 아타리 게임 상태 프로세서 구현
- 네트워크 구현
- 풀링 레이어 미사용
- 실시간 학습의 문제
- 재생 메모리에 경험 저장
- 탐색과 착취의 균형
- 입실론-그리디 탐색 정책
- 심층 Q-학습 에이전트 초기화
- 모델 훈련
- 모델 테스트
- Q-학습 알고리즘 요약
- 이중 Q-학습
- 경쟁 네트워크 아키텍처
- 연습 문제
- Q-학습의 한계
- 정책 경사를 활용한 Q-학습 개선
- 요약
- 보상과 만족
- 3부. 뉴하이브리드 모델 아키텍처
- 8장. 오토인코더
- 왜 오토인코더인가?
- 자동적인 정보 인코딩
- 오토인코더의 한계
- 오토인코더 해부
- 오토인코더 훈련
- 오토인코더 종류
- 네트워크 크기와 표현력
- 오토인코더에서의 정규화
- 희소 오토인코더를 활용한 정규화
- 노이즈 제거 오토인코더를 활용한 정규화
- 수축적 오토인코더를 활용한 정규화
- 케라스를 활용한 얕은 오토인코더 구현
- 데이터 확인
- 데이터 전처리
- 모델 구축
- 검증 모델 구현
- 별도 인코더 네트워크 정의
- 별도 디코더 네트워크 정의
- 심층 오토인코더 설계
- 임포트
- 데이터 이해
- 데이터 임포트
- 기능적 API를 사용한 오토인코더 설계
- 모델 구현
- 모델 훈련
- 결과 시각화
- 심층 컨볼루셔널 오토인코더
- 모델 컴파일 및 훈련
- 결과 테스트 및 시각화
- 노이즈 제거 오토인코더
- 노이즈 제거 네트워크 훈련
- 결과 시각화
- 요약
- 연습 문제
- 9장. 생성적 네트워크
- 콘텐트 복제와 생성
- 잠재 공간 표상 이해
- 컨셉 벡터 식별
- 생성적 네트워크 깊이 들여다보기
- 통제된 무작위성과 창의성
- 무작위성을 활용한 출력 증강
- 잠재 공간으로부터의 샘플링
- 확률 분포 학습
- 생성적 네트워크의 종류
- 가변 오토인코더
- 케라스를 활용한 VAE 설계
- 데이터 로딩과 전처리
- VAE의 인코딩 모듈 구현
- 잠재 공간 샘플링
- 디코더 모듈 구현
- 커스텀 가변 레이어 정의
- 모델 컴파일 및 확인
- 잠재 공간 시각화
- 잠재 공간 샘플링과 출력 생성
- VAE 결론
- 생성적 대립쌍 네트워크
- GAN을 활용한 유틸리티 및 실제 응용
- GAN 깊이 살펴보기
- GAN 최적화의 문제점
- 케라스를 활용한 GAN 설계
- 데이터 준비
- 인스턴스 시각화
- 데이터 전처리
- 생성자 모듈 설계
- 판별자 모듈 설계
- GAN 합치기
- 훈련용 헬퍼 함수
- 출력 표시용 헬퍼 함수
- 훈련 함수
- 훈련 함수 인자
- 판별자 라벨 정의
- GAN 초기화
- 배치별 판별자 훈련
- 배치별 생성자 훈련
- 에폭별 결과 평가
- 훈련 세션 실행
- 훈련 진행 중 테스트 손실 해석
- 에폭별 결과 시각화
- GAN 결론
- 요약
- 4부. 앞으로의 길
- 10장. 현재와 미래 개발에 관한 고찰
- 전이 학습을 활용한 표상 공유
- 케라스에서의 전이 학습
- 미리 학습된 모델 로딩
- 모델의 중간 레이어 획득
- 모델에 레이어 추가
- 데이터 로딩 및 전처리
- 네트워크 훈련
- 연습문제
- 실험의 결론
- 표상 학습
- DNA와 기술
- 현재 뉴럴 네트워크의 한계
- 기계를 위한 표상 엔지니어링
- 전처리 및 데이터 취득
- 데이터 평활성
- 희소 표상 학습
- 하이퍼파라미터 튜닝
- 자동 최적화 및 진화 알고리즘
- 참고 문헌
- 다중 네트워크 예측과 앙상블 모델
- 인공지능지능과 뉴럴 네트워크의 미래
- 전역 벡터 접근법
- 분산된 표상
- 하드웨어 문제
- 앞으로의 길
- 전통적인 컴퓨팅에서의 문제
- 양자 컴퓨팅의 등장
- 양자 중첩
- 큐비트와 전통적인 컴퓨터의 비트
- 양자 뉴럴 네트워크
- 더 읽을거리
- 기술과 사회
- 미래에 대한 고찰
- 요약
- 전이 학습을 활용한 표상 공유
도서 오류 신고
정오표
정오표
[p.109: 3행]
[p.109 : 코드 끝에서 2행]
[P.116 : 코드 1행]
model.complie(optimizer='resprop'...
->
model,complie(optimizer=rmsprop'...
[p143 : 코드 4행]
model.add(Dense(6,activation='relu', inputshape=(12000)))
->
model.add(Dense(6,activation='relu', inputshape=(12000,)))
[p.144 : 코드 2행]
model.compile(optimizer=keras.optimizers.RMSprop(1r=0.001)
->
model.compile(optimizer=keras.optimizers.RMSprop(lr=0.001)
[p.156 : 코드 2행]
from keras.datasets import bostonhousing.loaddata()
->
from keras.datasets import boston_housing
[p.157 : 코드 1행]