25 February 2024

파이토치는 딥러닝 연구 및 애플리케이션 개발에 있어 가장 인기 있는 프레임워크 중 하나로, 그 사용의 용이성과 유연성 때문에 널리 채택되고 있다. 이 책은 파이토치의 기본적인 사용법부터 고급 기능까지 체계적으로 다루며, 딥러닝의 다양한 주제를 이해하는데 도움을 준다.

딥러닝 입문자라면 전반전인 기본을 탄탄하게 쌓는데 도움이 될만한 내용으로 구성되어 있고, 실무자에게도 기본 지식을 확인할 수 있는 기초를 탄탄하게 다질 수 있는 책이다.

첫 장에서는 딥러닝에 필요한 선형대수학의 기초를 다루며, 행렬과 벡터의 연산부터 시작해 고유값과 고유벡터에 대한 개념을 설명한다.

두 번째 장에서는 확률론의 기초를 다루며, 사건의 확률부터 조건부 확률, 확률 변수, 기댓값과 분산 등의 개념을 통해 모델의 불확실성을 수량화하는 방법을 설명한다. 또한, 베이즈 정리와 엔트로피 개념을 통해 데이터에서 정보를 추출하고 해석하는 방법에 대해 배운다. 딥러닝을 위한 베이즈 기법과 엔트로피에 대한 개념을 통해 딥러닝에 필요한 필수적인 이론과 수식을 배울 수 있다.

세 번째 장에서는 신경망의 기본 구조와 작동 원리에 대해 설명한다. 이 장에서는 인공 뉴런, 퍼셉트론, 순방향 신경망 등의 기본적인 개념을 다루며, 활성화 함수의 종류와 역할에 대해서도 배운다.

네 번째 장은 신경망 훈련에 초점을 맞추며, 경사하강법과 역전파 알고리즘을 비롯한 학습 알고리즘에 대해 자세히 다룬다. 이 장에서는 신경망의 학습 과정에서 발생할 수 있는 다양한 문제와 그 해결 방법에 대해 설명한다.

다섯 번째 장에서는 PyTorch를 사용한 신경망 구현 방법을 소개한다. 이 장에서는 PyTorch의 기본 개념, 텐서 연산, 자동 미분 기능, 데이터 로딩 방법 등을 다루며, MNIST 데이터셋을 사용한 분류기를 구축하는 과정을 통해 실습한다.

여섯 번째 장에서는 경사하강법에 관한 심화 내용을 다루며, 특히 심층 신경망의 학습 과정에서 발생할 수 있는 다양한 도전 과제를 소개한다. 이 장은 경사하강법의 기본 원리를 넘어서, 심층 신경망에서의 극소점 문제, 모델 식별성, 가짜 극소점의 영향 등을 다룬다. 또한, 학습 과정을 개선하기 위한 다양한 최적화 기법들, 예를 들어 모멘텀 기반 최적화, AdaGrad, RMSProp, Adam 등의 알고리즘을 소개하며, 각각의 장단점과 적용 사례를 설명한다.

일곱 번째 장은 합성곱 신경망(CNN)에 대해 다루며, 이미지 인식과 처리에서의 핵심 기술로 CNN을 소개한다. 인간의 시각 시스템에서 영감을 받은 이 장은 필터, 피처 맵, 맥스 풀링 등의 개념을 소개하고, CNN의 다양한 아키텍처와 그 구현에 대해 설명한다. 또한, MNIST와 CIFAR-10 데이터셋을 사용한 실제 예제를 통해 CNN을 통한 이미지 분류, 객체 인식 등의 문제를 해결하기 위한 CNN의 기본적인 구조와 작동 원리를 배우게 된다.

여덟 번째 장에서는 저차원 표현 학습과 임베딩 기술을 다룬다. 이 장은 텍스트, 이미지 등 고차원 데이터를 저차원 공간에 효과적으로 표현하는 방법을 소개한다. 주성분 분석(PCA), 오토인코더, Word2Vec 등의 기술을 통해, 데이터의 본질적인 특성을 추출하고, 이를 활용해 더 효율적인 학습과 데이터 해석을 가능하게 하는 방법을 배운다. 특히, 오토인코더의 경우, 데이터의 노이즈 제거와 희소 표현 학습에 효과적임을 설명하며, 실제 PyTorch를 이용한 구현 방법을 제시한다.

열 번째 장은 생성 모델에 집중하며, 이를 통해 데이터를 생성하는 방법을 배운다. 생성적 적대 신경망(GAN)과 변이형 오토인코더(VAE)가 주요 주제로, 이들 모델이 어떻게 학습되어 새로운 데이터를 생성하는지 설명한다. GAN의 경우, 생성자와 판별자 간의 경쟁을 통해 학습이 이루어지는 과정을, VAE는 데이터의 잠재 공간을 학습하여 데이터를 생성하는 방식을 소개한다. 또한, 이 장에서는 PyTorch를 이용한 구현 방법과 함께, 생성 모델이 어떻게 이미지, 텍스트, 음악 등 다양한 유형의 데이터 생성에 적용될 수 있는지를 보여준다.

열한 번째 장에서는 해석 가능성 방법론을 다룬다. 딥러닝 모델, 특히 심층 신경망은 종종 ‘블랙 박스’로 비판받는데, 이 장에서는 모델의 결정을 이해하고 해석하는 다양한 기법을 소개한다. 결정 트리와 같은 해석 가능한 모델부터, LIME, SHAP 같은 모델에 대한 해석을 돕는 방법론까지 다양한 접근 방법을 설명하며, 특히 피처 중요도와 부분 의존도 그래프를 통해 모델의 결정에 영향을 미치는 요인들을 분석하는 방법을 다룬다.

열두 번째 장은 메모리 증강 신경망에 관한 것으로, 신경망에 외부 메모리를 결합하여 복잡한 문제를 해결하는 방법을 소개한다. 신경망 튜링 머신(NTM)과 미분 가능한 신경망 컴퓨터(DNC)가 주된 주제로, 이들 모델이 기존의 신경망 모델보다 어떻게 더 복잡한 패턴을 학습하고 기억할 수 있는지 설명한다. 이 장에서는 메모리 접근, 주소 지정 메커니즘, 간섭 없는 쓰기 등의 개념을 다루며, PyTorch를 이용한 구현 예제를 통해 실제 문제 해결에 적용하는 방법을 보여준다.

마지막으로, 열세 번째 장에서는 강화 학습을 다룬다. 이 장은 강화 학습의 기본 개념, 마르코프 결정 과정, 정책, 보상 시스템 등을 소개하며, 심층 강화 학습이 어떻게 복잡한 환경에서의 학습 문제를 해결할 수 있는지 설명한다. 특히, Atari 게임을 마스터한 사례를 포함하여, 탐색과 활용의 균형, 다양한 강화 학습 알고리즘(예: Q-learning, 정책 그래디언트)의 원리와 적용 방법을 다룬다. 강화 학습이 어떻게 복잡한 의사결정 문제를 해결하는 데 사용될 수 있는지 이해하는데 도움이 된다.

책에 대한 소스코드는 다음 링크에서 볼 수 있다.

darksigma/Fundamentals-of-Deep-Learning-Book: Code companion to the O’Reilly “Fundamentals of Deep Learning” book

딥러닝을 배울 때 파이토치와 텐서플로 중에 고민을 하게 되는데 최근에는 텐서플로에 비해 파이토치가 직관적인 이유로 연구자들의 많은 선택을 받고 있다. 이론적인 내용과 수식, 코드까지 함께 배우고자 할 때 참고해 보면 좋을만한 책이다.

최근 많은 주목을 받고 있는 트랜스포머까지 있다면 더 좋았겠다는 아쉬움도 있지만 강화학습까지 광범위한 내용을 다룬 책이기도 하다.

이 리뷰는 한빛미디어의 나는 리뷰어다 이벤트를 통해 도서를 제공받아 작성했습니다.