책소개
★ 인공 신경망 원리와 응용을 파이썬 날코딩으로 정말 깊이 이해하자!
이 책은 딥러닝 알고리즘의 원리를 깊숙이 이해하고 이를 파이썬 코딩만으로 구현하는 데 주안점을 둔다. 이를 위해 가장 간단한 신경망 구조부터 복잡한 응용 구조까지 다양한 딥러닝 신경망 예제의 실제 구현 과정을 소개한다. 그 과정에서 독자는 딥러닝 알고리즘을 텐서플로 같은 프레임워크 없이도 개발하는 능력을 갖추게 된다. 딥러닝 알고리즘을 깊이 이해하면 역설적으로 프레임워크를 이용할 때의 장단점을 더 확실히 알 수 있다. 나아가 자신만의 새로운 딥러닝 신경망을 개발하는 밑거름이 될 것이다.
★ 난도는 중상 이상이다, 정말 깊은 이해를 원하는 대상 독자만 봐달라!
이 책의 대상 독자는 크게 두 부류다. 첫 번째는 텐서플로 같은 프레임워크를 사용해 딥러닝에 입문했지만 여전히 딥러닝 알고리즘의 동작 원리를 제대로 이해할 수 없어 답답함을 느끼는 기존 딥러닝 개발자다. 두 번째는 딥러닝을 새로 배워보려 하지만 기왕이면 수박 겉 핥기식 공부보다는 딥러닝 알고리즘을 제대로 이해하는 공부를 하고 싶은 딥러닝 입문자다.
★ 프레임워크를 이용하지 않고 파이썬 날코딩만으로 딥러닝 문제를 풀어보자!
이 책의 목표는 독자가 딥러닝 알고리즘의 원리를 깊이 있게 이해하여 활용 능력을 갖추도록 돕는 데 있다. 각 장은 이론을 제시한 후에 파이썬으로 예제 프로그램을 구현하고 실험을 수행하는 과정을 차근차근 소개한다. 이들 예제 프로그램을 꼼꼼하게 설명한다. 또한 실험 과정을 재현하고 변형해 활용하기 쉽게 구성했다. 예제 프로그램을 살펴보면서 그동안 편리한 프레임워크에 가려져 이해하지 못한 채 지나쳤던 딥러닝의 동작 원리를 확실하게 알게 된다. 이렇게 길러진 이해를 토대로 프레임워크 없이도 직접 딥러닝 신경망을 개발하는 능력을 갖추게 될 것이다. 동시에 역설적으로 숨은 동작 원리를 간파하게 됨으로써 프레임워크를 더 잘 이용하게 된다.
★ 캐글 플랫폼에서 수집한 다양한 실전 예제를 만나보자!
예제에서 다루는 다양한 데이터셋은 이 책의 또 하나의 매력이다. 각종 인공지능 챌린지 대회가 펼쳐지는 캐글 플랫폼에서 수집한 실전 데이터셋은 딥러닝 모델의 활용 범위에 대한 상상의 지평을 넓혀줄 것이다. 전복 나이 추정, 천체 펄서 여부 판정, 철판 불량 상태 분류, 꽃 사진 이미지나 도시 소음의 분류 등의 문제를 캐글 데이터셋을 이용해 다룬다. 이 밖에도 사무용품 이미지들로 구성된 오피스31 데이터셋, 필기체 문자 이미지들을 모은 엠니스트(MNIST) 데이터셋을 비롯해 영화 동영상 파일, 회화 이미지 파일, 오토마타 문법 등 다양한 종류의 데이터셋을 예제 프로그램에서 사용한다.
여러분이 자신만의 새로운 딥러닝 신경망을 개발하고, 딥러닝을 넘어서는 인공지능의 또 다른 지평을 향해 나아가는 첫걸음에 이 책이 도움이 되기를 기대해본다.
★ 이 책에서 파이썬 날코딩으로 구현하는 신경망
_1. 단층 퍼셉트론(SLP)
_2. 다층 퍼셉트론(MLP)
_3. 합성곱 신경망(CNN)
_4. 순환 신경망(RNN)
_5. 오토인코더
_6. 인코더-디코더
_7. 생성적 적대 신경망(GAN)
★ 이 책에서 다루는 내용
이 책은 총 5부로 구성되어 있다. 다루는 내용은 다음과 같다.
1부 : 단층 퍼셉트론
가장 간단한 신경망 구조인 단층 퍼셉트론 구조를 소개하면서 신경망 출력을 이용해 풀어야 할 세 가지 문제 유형의 해결 방법을 살펴본다. 1장에서는 전복 고리 수 추정 신경망 예제를 통해 `회귀 분석 문제`의 해결 방법을, 2장에서는 펄서 여부 판정 신경망 예제를 통해 `이진 판단 문제`의 해결 방법을, 3장에서는 철판의 불량 상태 분류 신경망 예제를 통하여 `선택 분류 문제`의 해결 방법을 각각 소개한다.
2부 : 다층 퍼셉트론
기본적이면서도 실전적인 다층 퍼셉트론 구조를 소개하면서 객체지향 모델 구조와 복합 출력의 처리 방법을 다룬다. 4장에서는 지금까지의 예제들을 다층 퍼셉트론으로 다시 풀어내며, 5장에서는 객체지향 구조로 프로그램을 재구성하면서 꽃 이미지 분류 신경망 예제를 소개한다. 6장에서는 오피스31 이미지의 다차원 분류 예제를 사용해 복합 출력을 다루는 방법을 살펴본다.
3부 : 합성곱 신경망
합성곱 신경망과 정규화 기법, 거대 심층 구조를 살펴보면서 은닉 계층 구성에 이용되는 12가지 계층의 기능과 구현 방법을 살펴본다. 7장에서는 이미지 처리에 특화된 합성곱 신경망에 이용되는 4가지 계층을 소개한다. 8장에서는 다섯 가지 정규화 기법을 살펴본다. 이 가운데 L1 손실 및 L2 손실을 가중치 학습 과정에 반영해 처리하는 과정을 소개한다. 또한 드롭아웃, 잡음 주입, 배치 정규화 기법을 각각 별도 계층으로 구현한다. 9장에서 인셉션 모델이나 레스넷 모델 같은 거대 심층 구조를 지원하는 5가지 복합 계층을 소개한다.
4부 : 순환 신경망
시간 축을 갖는 시계열 데이터 처리에 특화된 순환 신경망을 이용해 다양한 종류의 데이터를 다루는 과정을 살펴본다. 10장에서 오토마타 생성 문장 판별 신경망 예제와 함께 기본 구조의 순환 계층을 소개한 후, 11장에서 도시 소음 분류 신경망 예제와 함께 LSTM(long shortterm memory) 셸 구조의 개선된 순환 계층을 살펴본다. 12장에서는 동영상 장면 전환 프레임 판별 신경망 예제와 함께 시계열 출력을 다루는 방법을 다룬다.
5부 : 딥고급 응용 신경망 구조들
문제에 접근하는 새로운 시각을 보여주는 세 가지 딥러닝 응용 구조를 소개한다. 13장에서는 입력 재현을 목표로 삼는 방법으로 비지도학습에 활용하는 오토인코더, 14장에서는 콘텍스트 벡터를 매개로 입출력 간의 데이터 형태 차이를 극복하는 인코더-디코더, 15장에서는 경쟁 관계의 두 신경망을 이용해 데이터 생성 능력을 기르는 생성적 적대 신경망를 소개하고 각각 구체적 예제 프로그램을 제시한다.
저자소개
서울대학교 컴퓨터공학과에서 공부하고 우리나라에 첫 번째 인공지능 바람이 휩쓸 무렵 석박사 과정을 거치면서 자연어 처리 분야를 연구했다. 10여 년간 한남대학교 정보통신공학과 교수로 학생들을 가르쳤으며 2000년부터 지금까지 (주)코난테크놀로지에 임원으로 재직하면서 각종 소프트웨어 개발에 빠져 살았다. 현재 사내 교육 프로그램인 코난아카데미를 운영하고 있다. 또한 인공지능 혁신성장동력 프로젝트 `비디오 튜링 테스트(VTT) 연구 사업`의 제3세부 과제 책임자로서 각종 딥러닝 연구에 이용될 학습용 멀티모달 메타데이터를 구축하고 메타데이터의 초벌 자동 생성 딥러닝 기법을 연구하고 있다.
그 외에 인문학과 축구, 커뮤니티 댄스 등으로 심신을 단련한다. 가끔 배우로 변신하여 연극 무대에 오르기도 한다.
목차
CHAPTER 0 들어가기
0.1 이 책의 구성
0.2 인공지능과 머신러닝, 딥러닝
0.3 동물의 신경세포, 뉴런
0.4 인공 신경망의 기본 유닛, 퍼셉트론
0.5 딥러닝을 위한 수학
0.6 예제 실습 환경 소개
0.7 마치며
[ PART I 단층 퍼셉트론(SLP) ]
CHAPTER 1 회귀 분석 : 전복의 고리 수 추정 신경망
1.1 단층 퍼셉트론 신경망 구조
1.2 텐서 연산과 미니배치의 활용
1.3 신경망의 세 가지 기본 출력 유형과 회귀 분석
1.4 전복의 고리 수 추정 문제
1.5 회귀 분석과 평균제곱오차(MSE) 손실 함수
1.6 경사하강법과 역전파
1.7 편미분과 손실 기울기의 계산
1.8 하이퍼파라미터
1.9 비선형 정보와 원-핫 벡터 표현
1.10 구현하기 : 전복 고리 수 추정 신경망
1.11 실행하기
1.12 마치며
CHAPTER 2 이진 판단 : 천체의 펄서 여부 판정 신경망
2.1 펄서 판정 문제
2.2 이진 판단 문제의 신경망 처리
2.3 시그모이드 함수
2.4 확률 분포와 정보 엔트로피
2.5 확률 분포의 추정과 교차 엔트로피
2.6 딥러닝 학습에서의 교차 엔트로피
2.7 시그모이드 교차 엔트로피와 편미분
2.8 계산값 폭주 문제와 시그모이드 관련 함수의 안전한 계산법
2.9 구현하기 : 펄서 여부 판정 신경망
2.10 실행하기
2.11 확장하기 : 균형 잡힌 데이터셋과 착시 없는 평가 방법
2.12 실행하기 : 확장된 펄서 여부 판정 신경망
2.13 마치며
CHAPTER 3 선택 분류 : 철판 불량 상태 분류 신경망
3.1 불량 철판 판별 문제
3.2 선택 분류 문제의 신경망 처리
3.3 소프트맥스 함수
3.4 소프트맥스 함수의 편미분
3.5 소프트맥스 교차 엔트로피
3.6 소프트맥스 교차 엔트로피의 편미분
3.7 시그모이드 함수와 소프트맥스 함수의 관계
3.8 구현하기 : 불량 철판 판별 신경망
3.9 실행하기
3.10 마치며
[ PART II 다층 퍼셉트론(MLP ]
CHAPTER 4 다층 퍼셉트론 기본 구조 : 세 가지 신경망의 재구성
4.1 다층 퍼셉트론 신경망 구조
4.2 은닉 계층의 수와 폭
4.3 비선형 활성화 함수
4.4 ReLU 함수
4.5 민스키의 XOR 문제와 비선형 활성화 함수
4.6 구현하기 : 다층 퍼셉트론 신경망 지원 함수
4.7 실행하기
4.8 마치며
CHAPTER 5 다층 퍼셉트론 모델 구조 : 꽃 이미지 분류 신경망
5.1 다층 퍼셉트론을 위한 클래스 설계
5.2 데이터 분할 : 학습, 검증, 평가
5.3 시각화
5.4 이미지 분류 문제와 꽃 이미지 분류 데이터셋
5.5 구현하기 : 모델 클래스
5.6 구현하기 : 데이터셋 클래스
5.7 구현하기 : 네 가지 데이터셋 파생 클래스
5.8 구현하기 : 꽃 이미지 분류 데이터셋 클래스
5.9 구현하기 : 수학 연산과 각종 부수적 기능
5.10 실행하기
5.11 마치며
CHAPTER 6 복합 출력의 처리 방법 : 오피스31 다차원 분류 신경망
6.1 오피스31 데이터셋과 다차원 분류
6.2 딥러닝에서의 복합 출력의 학습법
6.3 복합 출력을 위한 MlpModel 클래스와 Dataset 클래스의 역할
6.4 아담 알고리즘
6.5 구현하기 : 아담 모델 클래스
6.6 구현하기 : 오피스31 데이터셋 클래스
6.7 실행하기
6.8 마치며
[ PART III 합성곱 신경망(CNN) ]
CHAPTER 7 간단한 합성곱 모델 : 꽃 이미지 분류 신경망
7.1 다층 퍼셉트론의 문제점과 새로운 구조의 필요성
7.2 합성곱 계층
7.3 합성곱 연산의 패딩과 건너뛰기
7.4 풀링 계층
7.5 채널의 도입과 커널의 확장
7.6 합성곱과 풀링의 역전파 처리
7.7 합성곱 신경망의 일반적인 구성
7.8 세 가지 합성곱 연산 방법
7.9 다양한 계층의 처리를 위한 모델 확장
7.10 구현하기 : 간단한 합성곱 신경망 클래스
7.11 실행하기
7.12 마치며
CHAPTER 8 다섯 가지 정규화 확장 : 꽃 이미지 분류 신경망
8.1 부적합과 과적합
8.2 L2 손실
8.3 L1 손실
8.4 드롭아웃
8.5 잡음 주입
8.6 배치 정규화
8.7 정규화 기법 도입을 위한 계층의 추가
8.8 구현하기 : 정규화 확장 클래스
8.9 실행하기
8.10 마치며
CHAPTER 9 인셉션 모델과 레스넷 모델 : 꽃 이미지 분류 신경망
9.1 인셉션 모델
9.2 레스넷 모델
9.3 인셉션 모델과 레스넷 모델 구현을 위해 필요한 확장들
9.4 구현하기 : 확장된 합성곱 신경망 모델 클래스
9.5 구현하기 : 더미 데이터셋 클래스
9.6 실행하기 : 인셉션 모델
9.7 실행하기 : 레스넷 모델
9.8 마치며
[ PART IV 순환 신경망(RNN) ]
CHAPTER 10 기본 셀 순환 신경망 : 오토마타 문장 판별 신경망
10.1 시계열 데이터
10.2 순환 계층과 순환 벡터의 활용
10.3 순환 계층의 입출력 형태
10.4 순환 계층을 위한 시계열 데이터의 표현
10.5 순환 계층의 순전파와 역전파 처리
10.6 오토마타를 이용한 수식 표현의 생성과 검사
10.7 구현하기 : 간단한 순환 신경망 클래스
10.8 구현하기 : 오토마타 데이터셋
10.9 실행하기
10.10 마치며
CHAPTER 11 LSTM 순환 신경망 : 도시 소음 분류 신경망
11.1 순환 벡터와 기울기 정보의 소멸 및 폭주
11.2 LSTM의 구조와 동작 방식
11.3 쌍곡탄젠트 함수
11.4 LSTM 계층의 순전파와 역전파 처리
11.5 주파수 스펙트럼 분석을 이용한 음원 처리
11.6 음원 분류 데이터셋
11.7 구현하기 : LSTM 신경망 클래스
11.8 구현하기 : 음원 분류 데이터셋
11.9 실행하기
11.10 마치며
CHAPTER 12 CNN과 RNN의 결합 : 장면 전환 판별 신경망
12.1 비순환 계층에서의 시계열 데이터 처리
12.2 동영상 처리를 위한 합성곱 신경망과 순환 신경망의 결합
12.3 출력 계층과 후처리 단계에서의 시계열 데이터 처리
12.4 장면 전환 데이터셋
12.5 실행 부담을 줄이는 방법들
12.6 구현하기 : 확장된 순환 신경망 클래스
12.7 구현하기 : 장면 전환 데이터셋
12.8 실행하기
12.9 마치며
[ PART V 고급 응용 신경망 구조들 ]
CHAPTER 13 오토인코더 : 엠니스트 이미지 재현 및 분류 신경망
13.1 오토인코더의 구조
13.2 지도학습과 비지도학습
13.3 잡음 제거용 오토인코더
13.4 유사 이진 코드 생성과 시맨틱 해싱
13.5 지도학습이 추가된 확장 오토인코더 모델
13.6 확장 인코더 모델을 위한 엠니스트 데이터셋
13.7 구현하기 : 확장 오토인코더 모델 클래스
13.8 구현하기 : 오토인코더를 위한 엠니스트 데이터셋
13.9 실행하기
13.10 마치며
CHAPTER 14 인코더-디코더 : 엠니스트 이미지 숫자 읽기 신경망
14.1 인코더-디코더의 구조
14.2 인코더-디코더와 언어 처리
14.3 필기체 숫자 이미지를 영어로 읽기
14.4 필기체 숫자 이미지열을 한글로 읽기
14.5 인코더-디코더의 분리 학습 문제
14.6 구현하기 : 인코더-디코더 모델 클래스
14.7 구현하기 : 인코더-디코더를 위한 엠니스트 데이터셋
14.8 실행하기
14.9 마치며
CHAPTER 15 생성적 적대 신경망 : 회화 및 숫자 이미지 생성 신경망
15.1 생성적 적대 신경망의 구조
15.2 생성적 적대 신경망과 데이터 생성
15.3 생성적 적대 신경망의 순전파와 역전파 처리
15.4 구현하기 : 생성적 적대 신경망 모델 클래스
15.5 구현하기 : 생성적 적대 신경망을 위한 데이터셋
15.6 실행하기
15.7 마치며