Top

PyTorch로 시작하는 딥러닝 [딥러닝 기초에서 최신 모던 아키텍처까지]

  • 원서명Deep Learning with PyTorch: A practical approach to building neural network models using PyTorch (ISBN 9781788624336)
  • 지은이비슈누 수브라마니안(Vishnu Subramanian)
  • 옮긴이김태완
  • ISBN : 9791161752594
  • 25,000원
  • 2019년 02월 18일 펴냄
  • 페이퍼백 | 312쪽 | 188*235mm
  • 시리즈 : acorn+PACKT, 데이터 과학

책 소개

참고자료

■ 옮긴이의 블로그에서 책 실습을 도와주는 보조 자료를 확인하실 수 있습니다.
■ 옮긴이의 깃허브에서 소스 파일을 다운로드하실 수 있습니다.

본문에 쓰인 컬러 이미지는 여기에서 내려 받으세요.
요약

이 책은 파이토치를 이용한 딥러닝 입문서다. 파이토치는 최근 글로벌하게 가장 큰 주목을 받는 머신 러닝/딥러닝 프레임워크다. 딥러닝 입문자를 대상으로 기본적인 선형/회귀 모델부터 CNN, RNN, GAN과 같은 고급 네트워크까지 다루며, 더 나아가 전이학습(Transfer Learning)과 VGG16, ResNet, Inception, DeseNet 등 최신 모던 아키텍처를 활용하는 기법까지 체계적으로 학습하고 체험할 수 있도록 구성돼 있다. 이 책을 통해 딥러닝 기본 개념, 데이터 전처리, 신경망 고급 모델 및 딥러닝 응용 기법을 이해할 수 있다.

이 책이 다루는 내용

■ 파이토치를 이용한 GPU 가속 텐서 연산
■ torchvision와 torchtext를 사용해 이미지용 사용자 정의 데이터셋과 데이터 로더를 만들고 모델을 테스트하는 기법
■ 파이토치로 CNN 아키텍처를 구현해 이미지 분류기 제작
■ RNN, LSTM 및 GRU를 이용해 텍스트 분류 및 언어 모델링 시스템 구축
■ ResNet, Inception, Densenet 같은 고급 CNN 아키텍처를 소개하고, 전이 학습을 이용해 고급 아키텍처 사용
■ 여러 모델을 혼합해 강력한 앙상블 모델 구축
■ GAN을 사용해 새 이미지를 생성하고 스타일 트랜스퍼를 사용해 예술적 이미지 생성

이 책의 대상 독자

딥러닝에 관심이 있는 엔지니어, 데이터 분석가 및 데이터 과학자 그리고 파이토치를 사용해 고급 알고리즘을 탐색하고 구현하려는 사용자를 대상으로 한다. 이 책을 읽는 데 머신 러닝에 대한 지식은 도움이 되지만 필수는 아니다. 그러나 파이썬 프로그래밍은 다룰 줄 알아야 한다.

이 책의 구성

1장, ‘파이토치 딥러닝 첫걸음’에서는 인공지능(AI, Artificial Intellligence)과 머신 러닝의 역사를 살펴보고 최근의 딥러닝 성장에 대해 알아본다. 하드웨어와 알고리즘의 다양한 개선이 여러 애플리케이션 분야에서 딥러닝을 구현하는 데 얼마나 큰 성공을 가져왔는지에 관해서도 설명한다. 마지막으로 페이스북(Facebook)에서 토치(Torch) 위에 구축한 아름다운 파이토치 파이썬 라이브러리를 소개한다.
2장, ‘신경망 구성 요소’에서는 변수, 텐서 및 nn.module과 같은 파이토치의 구성 요소를 소개한다. 신경망을 개발하는 데 이 구성 요소를 어떻게 사용하는지 알아본다.
3장, ‘신경망 파헤치기’에서는 데이터 준비, 텐서를 배치 처리하기 위한 데이터 로더, 네트워크 아키텍처 생성을 위한 torch.nn 패키지, 파이토치 손실 함수 및 옵티마이저 사용과 같은 신경망을 학습시키는 데 필요한 여러 프로세스를 다룬다.
4장, ‘머신 러닝 입문’에서는 과대적합, 과소적합과 같은 여러 가지 유형의 머신 러닝 문제에 대해 알아본다. 또한 데이터 증식, 드롭아웃, 과대적합을 방지하는 배치 정규화(batch normalization)와 같은 다양한 기법을 소개한다.
5장, ‘컴퓨터 비전 딥러닝’에서는 1차원과 2차원 컨볼루션, 맥스 풀링, 평균 풀링, 기본 CNN 아키텍처와 같은 Convolutional Neural Network(CNN)의 구성 요소에 대해 설명한다. 사전에 학습된 모델을 이용하는 전이 학습에 대해 알아보고, 마지막으로 사전 계산된 컨볼루션 피처를 이용해 전이 학습을 더 빠르게 진행하는 기법을 소개한다.
6장, ‘시퀀스 데이터와 텍스트 딥러닝’에서는 IMDB 데이터셋을 텍스트 분류하는 다양한 아키텍처를 소개한다. 워드 임베딩, 사전 학습된 워드 임베딩 사용 방법, RNN, LSTM과 1차원 컨볼루션에 대해 살펴본다.
7장, ‘생성적 신경망’에서는 딥러닝을 이용해 예술적 이미지를 생성하는 방법을 설명한다. 또한 DCGAN을 사용해 새로운 이미지를 생성해보고, 언어 모델을 이용해 텍스트를 생성하는 방법을 알아본다.
8장, ‘모던 네트워크 아키텍처’에서는 최신 컴퓨터 비전 애플리케이션을 지원하는 ResNet, Inception 및 DenseNet과 같은 아키텍처에 대해 알아본다. 언어 번역 및 이미지 캡션과 같은 최신 시스템을 지원하는 인코더-디코더 아키텍처에 대해 간략하게 살펴본다.
9장, ‘마침표 그리고 새로운 시작’에서는 앞에서 무엇을 배웠는지 요약하고 딥러닝 분야에서 지속적으로 최신 정보와 상태를 유지하는 방법을 소개한다.

저자/역자 소개

지은이의 말

파이토치는 융통성과 사용 편의성 때문에 데이터 과학 전문가와 딥러닝 학습자의 관심을 끌고 있다. 이 책은 딥러닝과 파이토치의 기본 구성 요소를 소개하고 실용적인 접근 방식을 사용해 실제 문제를 해결하는 방법을 보여준다. 최첨단 연구 문제를 해결하는 데 사용되는 최신 딥러닝 아키텍처 및 기술에 대해 배우게 될 것이다.
이 책은 ResNet, DenseNet, Inception 및 Seq2Seq와 같은 다양한 최첨단 딥러닝 아키텍처에 대한 직관을 제공하는 반면, 수학에 대한 부담은 최소화한다. 또한 전이 학습을 사용하는 방법, 사전 계산된 피처를 사용해 전이 학습 속도를 높이는 방법, 임베딩, 사전 학습 임베딩, LSTM 그리고 1차원 컨볼루션을 사용해 텍스트를 분류하는 방법을 소개한다.
이 책을 읽고 나면 여기서 배운 다양한 기술을 사용해 비즈니스 문제를 해결할 수 있는 능숙한 딥러닝 학습자가 될 것이다.

지은이 소개

비슈누 수브라마니안(Vishnu Subramanian)

다수의 빅데이터 분석 프로젝트(인공지능, 머신 러닝 및 딥러닝)에서 프로젝트 리딩, 설계 및 구현 역할을 담당했다. 머신 러닝, 딥러닝, 분산 환경 머신 러닝 및 시각화에 전문성을 갖고 있다. 유통, 금융 및 여행 분야에서 경험을 쌓았다. 비지니스, 인공지능 그리고 엔지니어 팀 간의 이해와 소통을 돕고 조정하는 데 능숙하다.

옮긴이의 말

2018년에 가장 뜨거웠던 키워드는 아마도 인공지능, 머신 러닝, 딥러닝이라고 생각한다. 이 키워드의 열기는 2019년에도 계속될 것이다. 이 키워드가 큰 관심을 받는 이유는 머신 러닝에 대한 사회적인 관심, 딥러닝의 엄청난 발전 속도 그리고 신기한 능력 때문일 것이다. 아마도 응용 애플리케이션 개발자들은 딥러닝이 구현한 사례를 보면서 그 매력에 끌려 누구나 딥러닝 책 한두 권쯤은 샀을 거라 생각한다.
딥러닝 수학, 통계학, 머신 러닝, 딥러닝 프레임워크 및 인프라 등 여러 분야의 기술과 학문에 걸쳐 있다. 이런 이유로 딥러닝 기술의 전반적인 흐름을 다루는 입문서를 고르기란 어렵다.
이런 의미에서 이 책은 딥러닝 입문서로 적합한 책이다. 우선 예제가 간결하고 이해하기 쉽다. 파이토치 네트워크의 구성 요소를 블록 단위로 처리하기 때문에 이해하기 쉽고 확장하기 편리하다. 또한 수식에 치중하지 않고 직관적인 개념으로 쉽게 설명하고, 딥러닝 구현에 필요한 머신 러닝 개념을 요약해 효과적으로 전달한다. 이러한 구성으로 인해 딥러닝 입문자에게 부담을 줄이고, 반복적인 예제로 파이토치 코드에 익숙해지도록 유도한다.
처음에는 단순한 선형 모델과 회귀 모델로 딥러닝 네트워크를 구성하는 예제로 시작하지만, 파이토치의 빌딩 블록 개념을 이용해 간단한 모델에서 CNN, RNN, LSTM 및 GAN 모델 등 다양한 유형의 확장된 모델을 발전시켜 나간다. 또한 전이 학습(Transfer Learning)을 이용해 CNN과 RNN을 더 빠르게 학습시키는 방법과 VGG, ResNet, Inception, DenseNet 등 최신 모던 아키텍처를 사용하고 전이 학습 및 앙상블 모델로 응용하는 방법까지도 다룬다.
한 권의 입문서에 다양한 내용을 담을 수 있는 것은 파이토치의 힘이다. 파이토치는 공개된 지 2년밖에 안 된 딥러닝 프레임워크지만, 간결성과 유연성 덕분에 딥러닝 분야에서 큰 주목을 받고 있다. 이러한 특징과 함께 복잡한 개념을 빌딩 블록으로 추상화하고, 다양한 유틸리티 기능을 제공하는 파이토치는 딥러닝 입문자에게 가장 적합한 딥러닝 프레임워크라고 생각한다.
딥러닝에 입문하는 분들에게 이 책이 조금이나마 도움이 됐으면 하는 바람으로 이 책을 번역했다.

옮긴이 소개

김태완

대우정보시스템에서 자바 웹 개발자로 IT 업계에 입문했다. 대우정보시스템 연구소에서 전사 표준 프레임워크 개발, 보급 및 기술 컨설팅을 수행했다. 그 후 오라클에서 WAS, Memory Grid, CEP, DB 동기화 및 자바 엔지니어로 활동했다. 2015년에 IBM에 합병된 NoSQL 전문 개발 업체인 Cloudant에서 2년간 CouchDB 개발과 클라우드 서비스 개발에 참여했다. 한국 오라클에서 빅데이터 엔지니어로 활동하고 있다. 한 분야에 집중하고 꾸준하게 콘텐츠를 만드는 일에 몰입하고 있으며, 콘텐츠 퍼블리싱 공간으로 http://taewan.kim을 운영하고 있다.

목차

목차
  • _1장. 파이토치로 딥러닝 시작하기_
    • 인공지능
      • 인공지능의 역사
    • 머신 러닝
      • 실생활 머신 러닝 사례
    • 딥러닝
      • 딥러닝 애플리케이션
      • 딥러닝의 과장된 미래
      • 딥러닝 역사
      • 왜 지금인가?
      • 하드웨어 가용성
      • 데이터와 알고리즘
      • 딥러닝 프레임워크
        • 파이토치
    • 요약

  • _2장. 신경망 구성 요소_
    • 파이토치 설치
    • 첫 번째 신경망
      • 데이터 준비
        • 스칼라(0차원 텐서)
        • 벡터(1차원 텐서)
        • 행렬(2차원 텐서)
        • 3차원 텐서
        • 텐서 슬라이싱(텐서 자르기)
        • 4차원 텐서
        • 5차원 텐서
        • GPU 지원 Tensor
        • Variable
      • 신경망에 사용할 데이터 생성하기
        • 학습 파라미터 생성
        • 신경망 모델
        • 네트워크 구현
        • 오차 함수
        • 신경망 최적화
      • 데이터 로딩
        • 데이터셋 클래스
        • 데이터로더 클래스
    • 요약

  • _3장. 신경망 파헤치기_
    • 신경망 구성 요소
      • 레이어 - 신경망 기본 블록
      • 비선형 활성 함수
        • 시그모이드
        • Tanh
        • ReLU
        • Leakly ReLU
      • 파이토치 비선형 활성화 함수
        • 파이토치 딥러닝 알고리즘 구현하기
        • 다양한 머신 러닝 문제를 위한 모델 아키텍처
        • 손실 함수
        • 네트워크 아키텍처 최적화
      • 딥러닝을 이용한 이미지 분류
        • 파이토치 Tensor로 데이터 로딩
        • 일괄 처리 형태로 파이토치 Tensor로 로딩하기
    • 네트워크 아키텍처 구축
      • 모델 학습
    • 요약

  • _4장. 머신 러닝 입문_
    • 머신 러닝의 세 가지 유형
      • 지도학습
      • 비지도학습
      • 강화학습
    • 머신 러닝 용어
    • 머신 러닝 모델 평가
      • 학습, 검증 및 테스트 분할
    • 단순 홀드아웃 검증
    • K-겹 검증
    • 데이터 혼합이 적용된 K-겹 검증
    • 데이터 전처리와 특성 공학
      • 벡터화
      • 수치 정규화
      • 누락 데이터 처리
      • 특성 공학
    • 과대적합과 과소적합
      • 더 많은 데이터 확보
      • 네트워크 크기 줄이기
      • 가중치 규제 적용
      • 드롭아웃
      • 과소적합
    • 머신 러닝 프로젝트 워크플로
      • 문제 정의와 데이터셋 만들기
      • 모델 평가 기준
      • 평가 프로토콜
      • 데이터 준비
      • 기준 모델
      • 과대적합 될 정도의 모델
      • 가중치 규제 적용
      • 학습률 선정 전략
    • 요약

  • _5장. 컴퓨터 비전 딥러닝_
    • 신경망 첫걸음
      • MNIST - 데이터 가져오기
    • CNN 모델 구축
  • CONV2D
    • 풀링
    • 비선형 활성화 레이어- RELU
      • 선형 레이어
    • 모델 학습
    • CNN을 이용1개와 고양이 분류
    • 전이 학습을 이용한 개와 고양이 분류
  • VGG16 모델 생성과 탐색
    • 레이어 고정
    • 세부 조정: VGG16
    • VGG16 모델 학습
  • 사전 계산된 컨볼루션 피처 사용
  • CNN 학습에 대한 이해
    • 중간 레이어의 출력 시각화
  • 중간 레이어의 가중치 시각화
  • 요약

  • _6장. 시퀀스 데이터와 텍스트 딥러닝_
    • 텍스트 데이터 분석
      • 토큰화
        • 텍스트를 문자로 변환
        • 텍스트를 단어로 변환
        • N-그램 표현
      • 벡터화
        • 원-핫 인코딩
      • 워드 임베딩
    • 감성 분류기로 워드 임베딩 학습시키기
      • IMDB 다운로드와 텍스트 토큰화
        • torchtext
        • torchtext
      • 어휘 구축
      • 벡터 배치 생성
      • 임베딩으로 네트워크 모델 만들기
      • 모델 학습시키기
    • 사전 학습 워드 임베딩
      • 임베딩 다운로드
      • 모델에 임베딩 로딩하기
      • 임베딩 레이어 가중치 고정
    • RNN
      • RNN 작동 방식 이해
    • LSTM
      • 장기 종속성
      • LSTM 네트워크
        • 데이터 준비하기
        • 배치 처리기 생성하기
        • 네트워크 생성하기
        • 모델 학습시키기
    • 시퀀스 데이터와 CNN
      • 시퀀스 데이터를 위한 1차원 컨볼루션 이해
        • 네트워크 만들기
        • 모델 학습시키기
    • 요약

  • _7장. 생성적 신경망_
    • 신경망 스타일 트랜스퍼
      • 데이터 로딩
      • VGG 모델 생성
      • 콘텐츠 손실
      • 스타일 손실
      • VGG 모델 레이어의 손실 추출
      • 각 레이어의 손실 함수 만들기
      • 옵티마이저 만들기
      • 학습
    • 생산적 적대 신경망
      • 심층 컨볼루션 GAN
      • 생성기 네트워크 정의
        • 전치 컨볼루션
        • 배치 정규화
        • 생성기 네트워크 정의
      • 판별기 네트워크 정의
      • 오차와 옵티마이저 정의
      • 판별기 네트워크 학습
        • 실제 이미지로 판별기 학습시키기
        • 가짜 이미지로 판별기 학습시키기
      • 생성기 네트워크 학습
      • 전체 네트워크 학습 시키기
      • 생성 이미지 검토
    • 언어 모델
      • 데이터 준비
      • 배치 처리기 생성
        • 배치
        • Backpropagation through time
      • LSTM에 기반한 모델 정의
      • 학습과 평가 함수 정의
      • 모델 학습
    • 요약

  • _8장. 모던 네트워크 아키텍처_
    • 최신 네트워크 아키텍처
      • ResNe
        • 파이토치 데이터셋 만들기
        • 학습과 검증을 위한 로더 생성
        • ResNet 모델 만들기
        • 컨볼루션 피처 추출
        • 미리 계산된 컨볼루션 피처와 로더를 위한 사용자 정의 파이토치 데이터셋 클래스 만들기
        • 단순한 선형 모델 만들기
        • 모델 학습과 검증
      • 인셉션
        • 인셉션 모델 만들기
        • registerforwardhood을 이용해 컨볼루션 피처 추출하기
        • 컨볼루션 피처를 위한 새로운 데이터셋 만들기
        • 전연결 모델 만들기
        • 모델 학습과 검증
    • DenseNet: 컨볼루션 네트워크의 전연결 아키텍처
      • DenseBlock
      • DenseLayer
        • 덴스넷 모델 생성
        • 덴스넷 피처 추출
        • 데이터셋과 로더 만들기
        • 전연결 모델을 생성하고 학습
    • 앙상블 모델
      • 3개 모델 만들기
      • Extracting the image features
      • 데이터 로더와 사용자 정의 데이터셋 생성
      • 앙상블 모델 만들기
      • 모델 학습시키고 검증
    • 인코더-디코더 아키텍처
      • 인코더
      • 디코더
    • 요약

  • _9장. 마지막 그리고 새로운 시작_
    • 다음은?
    • 개요
    • 연구 가치가 있는 흥미로운 아이디어
      • 객체 인식
      • 이미지 분할
      • 파이토치 OPENNMT
      • ALIEN NLP
      • FAST
      • ONNX
    • 지속적인 정보 업데이트 방법
  • 도서 오류 신고

    도서 오류 신고

    에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

    오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

    (예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안

    정오표

    정오표

    [p.68 : 아래에서 5행]
    딥러닝 프레임워크애서는
    ->
    딥러닝 프레임워크에서는

    [p.74]
    그림 3.3 tahn 함수의 시각화 다이어그램
    ->
    그림 3.3 Tanh 함수의 시각화 다이어그램

    [p.75]
    그림 3.4 tahn 함수의 시각화 다이어그램
    ->
    그림 3.4 ReLU 함수의 시각화 다이어그램

    [p.76 : 소제목]
    Leakly ReLU
    ->
    Leaky ReLU

    [p.76 : 1행]
    Leaky Relu는
    ->
    Leaky ReLU는

    [p.77 : 8행]
    nn.Modue 클래스를 상속하고
    ->
    nn.Module 클래스를 상속하고

    [p.82 : 8행]
    SDG 옵티마이저를
    ->
    SGD 옵티마이저를

    [p.192 아래에서 3행]
    순차 데이터에를 이용해
    ->
    순차 데이터를 통해