딥러닝 초보자를 위한 엔비디아 가이드북 [엔비디아 현업 아키텍트가 저술한 검증된 딥러닝 입문서]
- 원서명Learning Deep Learning: Theory and Practice of Neural Networks, Computer Vision, Natural Language Processing, and Transformers Using TensorFlow (ISBN 9780137470358)
- 지은이매그너스 에크만(Magnus Ekman)
- 옮긴이이판호
- ISBN : 9791161757247
- 60,000원
- 2023년 02월 28일 펴냄
- 페이퍼백 | 776쪽 | 188*235mm
- 시리즈 : 데이터 과학
책 소개
요약
복잡하지 않게 한 권으로 딥러닝을 배우고 싶은 사람을 위한 딥러닝 입문서다. 엔비디아 딥러닝 연구소(NVIDIA Deep Learning Institute)의 딥러닝 가이드북을 번역한 이 책은 수식의 사용을 최대한 줄이면서, 딥러닝의 핵심 개념을 자세하게 설명하고 있어 딥러닝 입문자에게 적합하다. 또한 풍부하고 잘 짜인 파이썬 예제 코드는 학습의 폭을 넓히는 데 큰 도움이 될 것이다.
추천의 글
"모두가 역사적인 혁명에 참여할 수 있게 하려면, AI 지식과 자원의 민주화가 필요하다. 이 책은 이러한 담대한 목표를 달성하는 데 있어 시의적절하며 유의미하다."
— 아니마 아난드쿠마르 박사(Dr. Anima Anandkumar),
캘리포니아 공과대학교 명예교수,
엔비디아 머신러닝 리서치 디렉터
“에크먼이 우리의 경험에서 성공의 중추로 증명된 학습 기술을 사용한다는 점이 중요하다. 즉, 독자들에게 실제로 DL 기술을 사용하는 것에 대해 생각해보도록 묻는 것이다. 독자가 그들의 이해를 적용해보는 데 도움이 되도록, 단순하지만 강력한 코딩 예제와 연습문제가 책 전체에 걸쳐 제공되어 있다.”
— 크레이그 클로슨 박사(Dr. Craig Clawson),
엔비디아 딥러닝 연구소 디렉터
이 책에서 다루는 내용
◆ 퍼셉트론, 기울기 기반 학습, 시그모이드 뉴런, 역전파 같은 핵심 개념을 탐색하고 마스터한다.
◆ DL 프레임워크가 어떻게 더욱 복잡하고 유용한 신경망의 개발을 쉽게 만들어주는지 알아본다.
◆ 합성곱 신경망(CNN)이 이미지 분류 및 분석에 가져온 혁명을 탐색해본다.
◆ 순환신경망(RNN)과 장단기 메모리(LSTM)를 텍스트 및 다른 가변 길이 시퀀스에 적용해본다.
◆ 시퀀스 투 시퀀스 및 트랜스포머 아키텍처로 NLP을 마스터한다.
◆ 자연어 번역 및 이미지 캡셔닝을 위한 애플리케이션을 구축한다.
이 책의 구성
1장, ‘로젠블랫 퍼셉트론’에서는 신경망의 기본 토대인 퍼셉트론을 소개한다.
2장, ‘기울기 기반 학습’에서는 경사 하강(gradient descent)이라 알려진 최적화 알고리듬 및 퍼셉트론 학습 알고리듬 이면의 이론을 설명한다.
3장, ‘시그모이드 뉴런과 역전파’에서는 DNN에서의 자동학습에 쓰이는 역전파 알고리듬을 수학적 용어 그리고 이진 분류를 위해 쓰인 프로그래밍 예제 모두를 통해 설명한다.
4장, ‘다중클래스 분류에 적용된 완전 연결 네트워크’에서는 데이터셋의 개념과 이들이 어떻게 훈련 집합과 테스트 집합으로 나뉘는지 설명한다.
5장, ‘DL을 향해: 프레임워크 및 네트워크 미조정’에서는 이전 장의 예제를 DL 프레임워크로 구현한다. 이 프레임워크가 코드를 어떻게 엄청나게 단순화하는지 그리고 네트워크의 여러 변형을 모델링하게 해주는지 보여준다.
6장, ‘회귀에 적용된 완전 연결 네트워크’에서는 이전 장에서 공부한 분류 문제 대신 수치를 예측하는 데 네트워크를 사용하는 방법을 공부한다.
7장, ‘이미지 분류에 적용된 합성곱 신경망’에서는 합성곱 신경망 혹은 그냥 합성곱 네트워크라 불리는, 2012년에 DL 붐을 시작시킨 네트워크의 한 가지 형태를 배운다.
8장, ‘더 깊은 CNN 및 사전 훈련된 모델’에서는 GoogLeNet, VGG, ResNet과 같은 더 깊은 CNN을 설명한다. 프로그래밍 예제로 사전 훈련된 ResNet 구현을 다운로드하고 이미지를 분류하는 방법을 배운다.
9장, ‘순환신경망으로 시간 시퀀스 예측하기’에서는 이전 장에서 설명한 네트워크의 한계와 관렪된 과제를 다루는 데 적합한 순환신경망(RNN, Recurrent Neural Network) 아키텍처를 설명한다.
10장, ‘장단기 메모리’에서는 RNN이 장기 의존성을 학습하지 못하게 하는 문제를 논의한다. 긴 시퀀스를 더 잘 다루게 해주는 장단기 메모리(LSTM, Long Short-Term Memory) 기법을 설명한다.
11장, ‘LSTM과 빔 검색으로 하는 텍스트 자동완성’에서는 장기 예측을 위한 LSTM 기반 RNN을 사용하는 방법을 살펴보고, 빔 검색(Beam Search)이라 알려진 개념을 소개한다.
12장, ‘신경 언어 모델과 단어 임베딩’에서는 이전 장의 예제는 단어 대신 개별 글자에 기반하는데, 많은 경우 단어 및 그 의미를 가지고 작업하는 것이 개별 글자로 작업하는 것보다 더욱 강력하다. 12장은 개념 언어 모델과 벡터 공간(임베딩 공간(embedding space)이라고도 함)에서의 단어 임베딩에 대해 소개한다.
13장, ‘word2vec과 GloVe로부터의 단어 임베딩’에서는 단어 임베딩을 만들기 위한 두 가지 인기 있는 기법을 논의한다.
14장, ‘시퀀스 투 시퀀스 네트워크와 자연어 번역’에서는 두 순환신경망의 조합인 시퀀스 투 시퀀스 네트워크(sequence-to-sequence network)라 알려진 네트워크를 소개한다.
15장, ‘어텐션과 트랜스포머’에서는 인코더-디코더 아키텍처의 정확도를 개선할 수 있는 어텐션attention이라 부르는 기법을 설명한다.
16장, ‘이미지 캡셔닝을 위한 일대다 네트워크’에서는 어떻게 일대다 네트워크를 사용해 이미지의 텍스트 설명을 만들고 이러한 네트워크를 어텐션으로 확장하는지 설명한다.
17장, ‘추가적인 주제 메들리’에서는 지금까지 주제가 서로에 기반하여 만들어지도록 구조화했다. 17장에서는 이전 장에 포함시킬 좋은 방법을 찾지 못했던 몇 가지 주제를 소개한다. 이러한 주제의 예제로는 오토인코더, 멀티모달 학습, 멀티태스크 학습, 신경 아키텍처 검색 등이다.
18장, ‘정리 및 다음 단계’에서는 마지막 18장에서는 이전 장에서 논의한 주제를 정리하고 요약해 여러분이 이 책에서 설명한 핵심 개념을 잘 이해하고 있는지 확인할 수 있는 기회를 제공한다.
부록 A, ‘선형 회귀와 선형 분류기’에서는 매우 기본적인 ML 주제를 설명하여 여러분이 제시된 몇몇 DL 개념이 어떻게 더욱 전통적인 ML 기법에 연관되어 있는지 알 수 있게 한다. 부록 A는 논리적으로 3장 다음이다.
부록 B, ‘물체 탐지와 세분화’에서는 한 이미지 내의 여러 물체를 탐지하고 분류하는 기법을 설명한다. 부록 B는 논리적으로 8장 다음이다.
부록 C, ‘word2vec 과GloVe 너머의 단어 임베딩’에서는 단어 임베딩을 위한 더욱 정교한 기법을 설명한다. 부록 C는 논리적으로 13장 다음이다.
부록 D, ‘GPT, BERT, RoBERTa’에서는 트랜스포머로부터 만들어지는 아키텍처를 설명한다. 이 네트워크 아키텍처는 많은 NLP 과제를 상당히 개선했다. 부록 D는 논리적으로 15장 다음이다.
부록 E, ‘뉴턴-랩슨 대 경사 하강’에서는 2장에서는 경사 하강이라 부르는 수학적 개념의 기법을 소개하는데, 부록 E는 뉴턴-랩슨(Newton-Raphson)이라 알려진 다른 방법 및 이것이 경사 하강과 어떻게 연관이 있는지 설명한다.
부록 F, ‘숫자 분류 네트워크의 행렬 구현’에서는 4장에는 파이썬 코드로 신경망을 구현하는 프로그래밍 예제가 포함되는데, 부록 F는 그 프로그래밍 예제의 최적화된 변형 두 가지를 설명한다.
부록 G, ‘합성곱 층을 수학적 합성곱과 연관시키기’에서는 7장에서는 합성곱 신경망을 설명하는데, 이들은 합성곱(convolution)이라 알려진 수학적 연산에 근거하며 이로부터 이름을 얻었다. 부록 G는 이와 같은 연결을 더 자세히 설명한다.
부록 H, ‘게이트 순환 유닛’에서는 10장에서는 장단기 메모리(LSTM)라 알려진 네트워크를 설명하는데, 부록 H에서 이 유닛의 더 단순한 버전인 게이트 순환 유닛(GRU, Gated Recurrent Unit)을 설명한다.
부록 I, ‘개발 환경 설정’에서는 개발 환경을 설정하는 방법에 대한 정보와 함께, 딥러닝 프레임워크를 설치하는 방법과 코드 예제를 어디에서 찾을 수 있는지도 알아본다. 또한 이 책의 코드 예제에 쓰인 두 가지 DL 프레임워크인 텐서플로와 파이토치의 주요 차이점을 간단하게 설명한다.
부록 J, ‘치트 시트’에서는 이 책에 실린 상당 부분의 내용을 요약하는 치트 시트 세트를 포함하고 있다.
목차
목차
- 1장. 로젠블랫 퍼셉트론
- 2입력 퍼셉트론 예제
- 퍼셉트론 학습 알고리듬
- 퍼셉트론의 한계
- 여러 퍼셉트론 조합하기
- 선형대수로 퍼셉트론 구현하기
- 벡터 표기법
- 내적
- 벡터를 2차원 행렬로 확장하기
- 행렬-벡터 곱
- 행렬-행렬 곱
- 퍼셉트론을 위해 사용한 벡터와 행렬 연산의 요약
- 행렬곱으로서의 내적
- 다차원 텐서로 확장하기
- 퍼셉트론의 기하학적 해석
- 편향 항 이해하기
- 퍼셉트론 맺음말
- 2장. 기울기 기반 학습
- 퍼셉트론 학습 알고리듬의 직관적인 설명
- 미분 그리고 최적화 문제
- 경사 하강으로 학습 문제 풀기
- 다차원 함수를 위한 경사 하강
- 네트워크에서의 상수와 변수
- 퍼셉트론 학습 알고리듬의 분석적인 설명
- 퍼셉트론 학습 알고리듬의 기하학적 설명
- 각기 다른 형태의 퍼셉트론 도표 다시 보기
- 패턴 식별에 퍼셉트론 사용하기
- 기울기 기반 학습의 맺음말
- 3장. 시그모이드 뉴런과 역전파
- 다수준 네트워크에서 경사 하강이 가능하도록 수정된 뉴런
- 어떠한 활성 함수를 사용해야 하는가
- 함수 합성과 연쇄법칙
- 역전파를 사용해 기울기 계산하기
- 포워드 패스
- 백워드 패스
- 가중치 조정
- 층마다 복수의 뉴런이 있는 역전파
- 프로그래밍 예제: XOR 함수 학습하기
- 네트워크 아키텍처
- 역전파의 맺음말
- 4장. 다중클래스 분류에 적용된 완전 연결 네트워크
- 네트워크를 훈련시킬 때 쓰이는 데이터셋 소개
- 데이터셋 살펴보기
- 데이터에서 인간의 편향
- 훈련 집합, 테스트 집합, 그리고 일반화
- 초매개변수 튜닝과 테스트 집합 정보 유출
- 훈련과 추론
- 네트워크와 학습 알고리듬을 확장해 다중클래스 분류하기
- 숫자 분류를 위한 네트워크
- 다중클래스 분류를 위한 오차 함수
- 프로그래밍 예제: 손글씨 숫자 분류하기
- 미니배치 경사 하강
- 다중클래스 분류의 맺음말
- 5장. DL을 향해: 프레임워크 및 네트워크 미조정
- 프로그래밍 예제: DL 프레임워크로 이동하기
- 포화 뉴런과 기울기 소실 문제
- 포화 뉴런을 피하기 위한 초기화 및 정규화 기법
- 가중치 초기화
- 입력 표준화
- 배치 정규화
- 포화 출력 뉴런의 영향을 완화하는 교차 엔트로피 손실 함수
- 교차 엔트로피 손실 함수의 컴퓨터 구현
- 은닉 층에서 기울기 소실을 피하는 다른 활성 함수
- 학습을 개선하기 위한 경사 하강의 변형
- 실험: 네트워크 및 학습 매개변수 미조정
- 초매개변수 튜닝과 교차 검증
- 검증 집합을 사용해 과적합 피하기
- 훈련 데이터 사용을 개선하는 교차 검증
- 딥러닝을 향한 경로에 대한 맺음말
- 6장. 회귀에 적용된 완전 연결 네트워크
- 출력 유닛
- 이진 분류를 위한 로지스틱 유닛
- 다중클래스 분류를 위한 소프트맥스 유닛
- 회귀를 위한 선형 유닛
- 보스턴 주택 데이터셋
- 프로그래밍 예제: DNN으로 주택 가격 예측하기
- 정칙화로 일반화 개선하기
- 실험: 주택 가격 예측을 위한 더 깊은 그리고 정칙화된 모델
- 출력 유닛과 회귀 문제의 맺음말
- 7장. 이미지 분류에 적용된 합성곱 신경망
- CIFAR-10 데이터셋
- 합성곱 층의 특징과 기본 토대
- 특성 맵을 합성곱 층에 조합하기
- 합성곱 및 완전 연결 층을 네트워크로 조합하기
- 희소 연결과 가중치 공유의 효과
- 프로그래밍 예제: 합성곱 네트워크로 이미지 분류하기
- 합성곱 네트워크의 맺음말
- 8장. 더 깊은 CNN 및 사전 훈련된 모델
- VGGNet
- GoogLeNet
- ResNet
- 프로그래밍 예제: 사전 훈련된 ResNet 구현 사용하기
- 전이 학습
- CNN을 위한 역전파 및 풀링
- 정칙화 기법으로서의 데이터 증대
- CNN이 저지르는 실수
- 깊이별 분리 가능 합성곱으로 매개변수 줄이기
- EfficientNet으로 올바른 네트워크 디자인 균형 맞추기
- 더 깊은 CNN의 맺음말
- 9장. 순환신경망으로 시간 시퀀스 예측하기
- 피드포워드 네트워크의 한계
- 순환신경망
- 순환 층의 수학적 표현
- 층을 RNN에 조합하기
- RNN을 보는 다른 시각 및 시간 전개
- 시간에 따른 역전파
- 프로그래밍 예제: 서적 매출 전망하기
- 데이터 표준화 및 훈련 예제 만들기
- 단순한 RNN 만들기
- 순환이 없는 네트워크와 비교
- 예제를 다중 입력 변수로 확장하기
- RNN에서 데이터셋 고려사항
- RNN의 맺음말
- 10장. 장단기 메모리
- 기울기를 건강하게 유지하기
- LSTM 소개
- LSTM 활성 함수
- LSTM 셀의 네트워크 만들기
- LSTM을 보는 다른 시각
- 관련 주제: 하이웨이 네트워크와 스킵 연결
- LSTM의 맺음말
- 11장. LSTM과 빔 검색으로 하는 텍스트 자동완성
- 텍스트 인코딩
- 장기 예측과 자기회귀 모델
- 빔 검색
- 프로그래밍 예제: 텍스트 자동완성을 위해 LSTM 사용하기
- 양방향 RNN
- 입력 및 출력 시퀀스의 다른 조합
- LSTM으로 하는 텍스트 자동완성의 맺음말
- 12장. 신경 언어 모델과 단어 임베딩
- 언어 모델 소개 및 사용 사례
- 다른 언어 모델의 예시
- n그램 모델
- 스킵 그램 모델
- 신경 언어 모델
- 단어 임베딩의 이점 및 동작 방식에 대한 인사이트
- 신경 언어 모델이 만든 단어 임베딩
- 프로그래밍 예제: 신경 언어 모델과 결과 임베딩
- King - Man + Woman! = Queen
- King - Man + Woman ! = Queen
- 언어 모델, 단어 임베딩, 인간 편향
- 관련 주제: 텍스트의 감정 분석
- 단어주머니와 n그램 주머니
- 유사도 지표
- BoW와 DL 조합하기
- 언어 모델과 단어 임베딩의 맺음말
- 13장. word2vec과 GloVe로부터의 단어 임베딩
- 언어 모델 없이 word2vec을 사용해 단어 임베딩 만들기
- 언어 모델과 비교해 연산 복잡도 줄이기
- 연속 단어주머니 모델
- 연속 스킵 그램 모델
- 계산 복잡도를 더욱 낮추기 위한 최적 연속 스킵 그램 모델
- word2vec에 대한 추가적인 생각들
- 행렬 형식에서의 word2vec
- word2vec 일단락
- 프로그래밍 예제: GloVe 임베딩의 속성 살펴보기
- word2vec과 GloVe의 맺음말
- 14장. 시퀀스 투 시퀀스 네트워크와 자연어 번역
- 시퀀스 투 시퀀스 학습을 위한 인코더-디코더 모델
- 케라스 펑셔널 API 소개
- 프로그래밍 예제: 신경 머신 번역
- 실험 결과
- 중간 표현의 속성
- 언어 번역의 맺음말
- 15장. 어텐션과 트랜스포머
- 어텐션 배후의 근거
- 시퀀스 투 시퀀스 네트워크에서의 어텐션
- 정렬 벡터 계산하기
- 정렬 벡터의 수학적 표기 및 변형
- 더 깊은 네트워크에서의 어텐션
- 추가적인 고려사항
- 순환 네트워크의 대안
- 셀프 어텐션
- 멀티헤드 어텐션
- 트랜스포머
- 트랜스포머의 맺음말
- 16장. 이미지 캡셔닝을 위한 일대다 네트워크
- 이미지 캡셔닝 네트워크를 어텐션으로 확장하기
- 프로그래밍 예제: 어텐션 기반 이미지 캡셔닝
- 이미지 캡셔닝의 맺음말
- 17장. 추가적인 주제 메들리
- 오토인코더
- 오토인코더의 사용 사례
- 오토인코더의 다른 면들
- 프로그래밍 예제: 이상치 탐지를 위한 오토인코더
- 멀티모달 학습
- 멀티모달 학습의 분류 체계
- 프로그래밍 예제: 멀티모달 입력 데이터로 분류하기
- 멀티태스크 학습
- 멀티태스크 학습을 구현하는 이유
- 멀티태스크 학습을 구현하는 방법
- 다른 측면 그리고 기본적인 구현의 변형
- 프로그래밍 예제: 단일 네트워크로 하는 멀티클래스 분류 및 질문 답변
- 네트워크 튜닝 과정
- 더 많은 훈련 데이터를 모아야 하는 시기
- 신경 아키텍처 검색
- 신경 아키텍처 검색의 주요 구성요소
- 프로그래밍 예제: CIFAR-10 분류를 위한 아키텍처 검색
- 신경 아키텍처 검색의 의의
- 맺음말
- 18장. 정리 및 다음 단계
- 여러분이 이제 알아야 할 것들
- 윤리적 AI 그리고 데이터 윤리
- 찾아볼 문제
- 질문 체크리스트
- 여러분이 아직 모르는 것들
- 강화 학습
- 변형 오토인코더 및 생성적 적대 네트워크
- 뉴럴 스타일 트랜스퍼
- 추천 시스템
- 구어를 위한 모델
- 다음 단계
- 부록
- 부록 A. 선형 회귀와 선형 분류기
- 부록 B. 물체 탐지와 세분화
- 부록 C. word2vec과 GloVe 너머의 단어 임베딩
- 부록 D. GPT, BERT, RoBERTa
- 부록 E. 뉴턴-랩슨 대 경사 하강
- 부록 F. 숫자 분류 네트워크의 행렬 구현
- 부록 G. 합성곱 층을 수학적 합성곱과 연관시키기
- 부록 H. 게이트 순환 유닛
- 부록 I. 개발 환경 설정