PyTorch를 활용한 머신러닝, 딥러닝 철저 입문

파이토치를 활용한 머신러닝, 딥러닝 알고리즘의 원리와 구현

이 책은 파이토치(PyTorch)를 사용한다. 파이토치는 딥러닝 라이브러리 중에서도 세계적으로 널리 쓰이는 Torch를 파이썬으로 포팅한 것으로, 페이스북이 자사 서비스에 활용하면서 주목받고 있다. 이 책은 초심자를 대상으로 이 라이브러리를 사용해 이상탐지나 이미지 인식 등을 구현하는 과정을 경험해 볼 수 있도록 구성했다.

★ 이 책의 내용 ★

  • 1부: AI 기술의 최신 동향과 파이토치 라이브러리 소개, 구현 환경 구축
  • 2부: 머신러닝의 개요, 신경망 알고리즘으로 사용한 학습 구현
  • 3부: 딥러닝 알고리즘(DNN, CNN, DQN)을 이용한 학습 구현

★ 이 책의 대상 독자 ★

  • 머신러닝 및 딥러닝에 입문하는 IT 엔지니어
  • 수식 없이 알고리즘을 이해하고 싶은 사람
  • 직접 구현해보며 이해하고 싶은 사람

★ 이 책의 특징 ★

  • 수식 없이 머신러닝 및 딥러닝 알고리즘을 이해할 수 있다.
  • 간결한 파이썬 코드로 구현해 볼 수 있다.
  • 이상탐지, 이미지 인식 등 다양한 과업에 대한 학습을 구현해 볼 수 있다.

코이즈미 사토시

지방에서 분투 중인 IT 엔지니어. 소프트하우스에서 IoT와 AI를 접목한 서비스를 개발 중이다. 주말에는 머신러닝을 주제로 한 직장인 스터디에 나가거나, 문장이나 음악을 만드는 AI를 만들고 있다. 텃밭에서 키운 채소를 새에 쪼아먹힌 아픈 경험이 있어, 조수 대책과 함께 맛있는 채소를 키우는 것을 목적으로 IoT와 AI를 접목한 텃밭 솔루션도 계획 중이다.

심효섭

연세대학교 문헌정보학과를 졸업하고 모교 중앙도서관과의 인연으로 도서관 솔루션 업체에서 일하게 되면서 개발을 시작했다. 네이버에서 웹 서비스 개발 업무를 맡았으며, 웹 서비스 외에 기계학습에 대한 공부도 꾸준히 하고 있다. 최근 관심사는 회사에 속하지 않고도 지속 가능한 삶이다. 옮긴 책으로 『딥러닝 제대로 시작하기』, 『그림과 수식으로 배우는 통통 딥러닝』 등 10여 종이 있다.

  • [1부] 우리 일상 속의 AI
    • ▣ 01장: AI 동향 알아보기
      • 1-1 AI 기술의 보급
      • 1-2 시민 데이터 과학자의 등장
      • 1-3 딥러닝 라이브러리
      •  
    • ▣ 02장: 파이토치 라이브러리
      • 2-1 파이토치란?
      • 2-2 파이토치의 특징
        • Define by Run 설계 사상을 채택함
        • “파이썬스러운” 구현이 가능함
        • 자동미분 기능
      • 2-3 파이토치의 구성 요소
      •  
    • ▣ 03장: 파이토치 개발 환경 갖추기
      • 3-1 윈도우에서 설치
        • 아나콘다 설치
        • 파이썬 환경 설치
        • 파이토치 설치
        • 관련 라이브러리 설치
      • 3-2 macOS에서 설치
        • 아나콘다 설치
        • 파이썬 환경 설치
        • 파이토치 설치
        • 관련 라이브러리 설치
      • 3-3 리눅스에서 설치
        • 아나콘다 설치
        • 파이썬 환경 설치
        • 파이토치 설치
        • 관련 라이브러리 설치
      •  
  • [02부] 머신러닝 입문
    • ▣ 04장: 머신러닝이란 무엇인가?
      • 4-1 머신러닝의 개요
      • 4-2 지도 학습
      • 4-3 비지도 학습
      • 4-4 강화학습
      •  
    • ▣ 05장: 신경망 실전 활용
      • 5-1 퍼셉트론 알고리즘
      • 5-2 퍼셉트론 모형 학습
      • 5-3 신경망의 알고리즘
      • 5-4 신경망 모형 학습
      • 5-5 예제: 와인 분류하기
        • 주피터 환경 설정
        • 학습 데이터 준비
        • 텐서 생성
        • 신경망 구성
        • 모형 학습
      •  
  • [03부] 딥러닝 입문
    • ▣ 06장: 다층 퍼셉트론 실전 활용
      • 6-1 알고리즘과 모형 학습
        • 자기부호화기
        • 최적화 기법
        • 과적합
      • 6-2 예제: 와인 분류하기 2
        • 주피터 환경 설정
        • 학습 데이터 준비
        • 텐서 생성
        • 신경망 구성
        • 모형 학습
      • 6-3 손글씨 이미지 분류
        • 주피터 환경 설정
        • 학습 데이터 준비
        • 텐서 생성
        • 신경망 구성
        • 모형 학습
      • 6-4 뉴스 기사 분류
        • 주피터 환경 설정
        • 학습 데이터 준비
        • 텐서 생성
        • 신경망 구성
        • 모형 학습
      • 6-5 시계열 데이터에서 이상탐지하기
        • 주피터 환경 실행
        • 학습 데이터 준비
        • 신경망 구성
        • 모형 학습
        • 이상 점수 계산
      •  
    • ▣ 07장: 합성곱신경망 실전 활용
      • 7-1 알고리즘 및 모형 학습
      • 7-2 손글씨 이미지 분류하기 2
        • 주피터 환경 설정
        • 학습 데이터 준비
        • 텐서 생성
        • 신경망 구성
        • 모형 학습
      • 7-3 옷 이미지 분류
        • 주피터 환경 설정
        • 학습 데이터 준비
        • 텐서 생성
        • 신경망 구성
        • 모형 학습
      • 7-4 이미지 분류
        • 주피터 환경 설정
        • 학습 데이터 준비
        • 텐서 생성
        • 신경망 구성
        • 모형 학습
      •  
    • ▣ 08장: Q러닝 실전 활용
      • 8-1 Open AI
      • 8.2 Q러닝 구현
      • 8.3 Deep Q Network 구현
      •  
    • ▣ 부록A: 주피터 노트북 사용법
        1. 주피터 노트북 실행
        1. 홈 화면의 조작 방법
        1. 노트북 화면의 조작
        1. 주피터 노트북 종료
      •  
    • ▣ 부록B: 파이썬 기본 문법
        1. 변수와 연산
        1. 데이터 구조 다루기
        1. 제어문 활용
        1. 컴프리헨션 문법 활용
        1. 함수 활용
        1. 클래스 활용
        1. 파일 다루기
      •  
    • ▣ 부록C: 파이썬 라이브러리
        1. NumPy 라이브러리
        1. pandas 라이브러리
        1. Matplotlib 라이브러리
        1. Pillow 라이브러리
        1. KoNLPy 라이브러리
        1. 서로 다른 포맷으로 데이터 변환
      •  
    • ▣ 부록D: 서포트 벡터 머신 구현
        1. 주피터 환경 설정
        1. 학습 데이터 준비
        1. 모형 학습
      •  
    • ▣ 부록E: PyTorch 래퍼인 Skorch 사용하기
        1. 주피터 환경 설정
        1. 학습 데이터 준비
        1. 신경망 구성
        1. 모형 학습
  • 50쪽, 그림 5.4를 다음 그림으로 교체(바이어스 값을 모두 0.2로 수정)

    그림 5.4

  • 62쪽, 밑에서 3번째 줄

    winde.data ==> wine.data

  • 94쪽, 페이지 하단 각주 20번을 다음 내용으로 교체

    20 http://kristalinfo.dynu.net/TestCollections/
    
  • 97쪽, 코드의 11~19번째 줄을 다음 코드를

        # 기사 단위로 분할해서 리스트를 생성
        for curr_line in currfile:
            if curr_line.startswith('@DOCUMENT'):
                if curr_doc is not None:
                    docs.append(curr_doc)
                curr_doc = curr_line
                doc_cnt = doc_cnt + 1
                continue
            curr_doc = curr_doc + curr_line
    

    다음과 같이 수정(맨 마지막 줄 추가)

        # 기사 단위로 분할해서 리스트를 생성
        for curr_line in currfile:
            if curr_line.startswith('@DOCUMENT'):
                if curr_doc is not None:
                    docs.append(curr_doc)
                curr_doc = curr_line
                doc_cnt = doc_cnt + 1
                continue
            curr_doc = curr_doc + curr_line
        docs.append(curr_doc)
    
  • 137쪽, '파이토치 함수' 중 Max_Pool2d(kernel_size, stride=None, padding=0) 함수의 내용을 다음 내용으로 교체

    torch.nn.functional.max_pool2d(input, kernel_size, stride=None, padding=0)
    

    2차원 최대 풀링 연산을 수행한다.

    파라미터

    • input : 입력 데이터
    • kernel_size : 풀링 영역 크기
    • stride : 풀링 스트라이드(영역을 움직이는 간격) 거리. 기본값은 kernel_size.
    • padding : 입력 데이터에 제로 패딩 여부. 기본값은 0(하지 않음).