2024년 데잇걸즈 연말 모임을 기획하면서 여러 업체에 후원을 요청했습니다. 참여 대상이 아무래도 IT분야에 종사 중인 여성들이다보니 후원을 받더라도 필요한 것을 받았으면 좋겠다는 마음이 있었고, 이에 실제로 내돈내산한 IT 서적 전문 회사에 연락을 하게 되었습니다. IT 도서는 가격이 만만치 않은 편이거든요.

운이 좋게도 도서출판 길벗에서 후원 의사를 밝혔고, 좋은 기회로 책을 받게 되어 머신러닝에 대한 책 중 가장 최근에 출간된 <머신러닝 교과서: 파이토치 편>을 요청드리게 되었습니다. 업무상 필요해서 옆에 두고 계속 보고싶었거든요. 이 책은 다음과 같은 분들께 추천 드립니다.

  • 전통적인 ML 모델 및 비교적 검증된 최신 모델에 대한 학습이 필요하신 분
  • 사이킷런과 파이토치를 모두 사용하고 비교하고자 하는 분
  • 좋은 모델링을 위한 전처리 방법을 고민하는 분
  • 정형 데이터 뿐만 아니라 비정형 데이터까지 폭넓게 공부하고 싶은 분

 

저는 '교과서'라는 이름이 붙은 책들을 꽤 좋아합니다. 교과서라 칭할 만큼 다양한 범주의 내용을 다루고 있고, 그래서 한 번 읽고 이해하려 하기보다는 옆에 두고 필요할 때마다 찾아보는 것을 권합니다. 실제로 분량도 800여 페이지에 달해 이 모든 내용을 한 번에 기억하기는 어려울 것입니다. 달리 말하면, 널리 쓰여지는 모델에 대해서는 대부분을 다루고 있다고 봐도 무방합니다. 실제로 제가 보조 강사로 일하면서 ML 수업에서 다뤘던 기초 모델은 물론 SVM, 프로젝트를 하면서 사용했던 앙상블, GAN까지 굉장히 폭넓은 주제 영역을 다루고 있습니다.

무엇보다 이 책을 추천드리는 이유는 예제 코드를 따라 치면서 모델링을 구현해볼 수 있다는 점이고, 빠르게 변하는 ML 세상에서는 지면에 인쇄된 코드만을 믿을 수는 없기 때문에 디스코드, 카카오톡 등 다양한 채널을 출판사에서 직접 운영하며 독자가 실습 환경을 가져갈 수 있도록 배려하고 있습니다.


 

책에서 감명깊었던 부분은 이론에 대한 설명이 굉장히 탄탄하다는 점이었는데요, 쉬운 내용부터 실제 모델링에 적용되는 수학적 지식을 함께 설명하고 있습니다. ADsP 준비하던 시절이 생각나는군요... ADsP에서 A모델을 사용할 때 **을 하기 위해 사용하는 것은 무엇인가? 라는 질문을 주로 던졌다면, 이 책은 A모델이 무엇을 하는거고 **을 어떻게 구하는 지 알려주는 식입니다. 

 

PyTorch는 광범위한 모델링 영역을 다루고 그 성능도 꽤 좋기 때문에 각광받는 라이브러리입니다. 전통적으로는 사이킷런을 사용했지만, 딥러닝의 영역이 점점 커지고 이에따라 메모리를 효율적으로 쓰기 위해 PyTorch로 많이 옮겨가고 있습니다. (Keras나 Tesorflow도 사랑받는 라이브러리이지만 개인적으로 PyTorch가 더 팬시하다고 느끼긴 했습니다)

다만 PyTorch의 꾸준한 단점으로 유스케이스 부족이 언급되는데요, <머신러닝 교과서: 파이토치 편>은 이 부분을 속 시원히 해결해줄 수 있는 책이라고 생각합니다.


목차 

더보기

1장. 컴퓨터는 데이터에서 배운다
1.1 데이터를 지식으로 바꾸는 지능적인 시스템 구축
1.2 머신 러닝의 세 가지 종류
__1.2.1 지도 학습으로 미래 예측
__1.2.2 강화 학습으로 반응형 문제 해결
__1.2.3 비지도 학습으로 숨겨진 구조 발견
1.3 기본 용어와 표기법 소개
__1.3.1 이 책에서 사용하는 표기법과 규칙
__1.3.2 머신 러닝 용어
1.4 머신 러닝 시스템 구축 로드맵
__1.4.1 전처리: 데이터 형태 갖추기
__1.4.2 예측 모델 훈련과 선택
__1.4.3 모델을 평가하고 본 적 없는 샘플로 예측
1.5 머신 러닝을 위한 파이썬
__1.5.1 파이썬과 PIP에서 패키지 설치
__1.5.2 아나콘다 파이썬 배포판과 패키지 관리자 사용
__1.5.3 과학 컴퓨팅, 데이터 과학, 머신 러닝을 위한 패키지
1.6 요약

2장. 간단한 분류 알고리즘 훈련
2.1 인공 뉴런: 초기 머신 러닝의 간단한 역사
__2.1.1 인공 뉴런의 수학적 정의
__2.1.2 퍼셉트론 학습 규칙
2.2 파이썬으로 퍼셉트론 학습 알고리즘 구현
__2.2.1 객체 지향 퍼셉트론 API
__2.2.2 붓꽃 데이터셋에서 퍼셉트론 훈련
2.3 적응형 선형 뉴런과 학습의 수렴
__2.3.1 경사 하강법으로 손실 함수 최소화
__2.3.2 파이썬으로 아달린 구현
__2.3.3 특성 스케일을 조정하여 경사 하강법 결과 향상
__2.3.4 대규모 머신 러닝과 확률적 경사 하강법
2.4 요약

3장. 사이킷런을 타고 떠나는 머신 러닝 분류 모델 투어
3.1 분류 알고리즘 선택
3.2 사이킷런 첫걸음: 퍼셉트론 훈련
3.3 로지스틱 회귀를 사용한 클래스 확률 모델링
__3.3.1 로지스틱 회귀의 이해와 조건부 확률
__3.3.2 로지스틱 손실 함수의 가중치 학습
__3.3.3 아달린 구현을 로지스틱 회귀 알고리즘으로 변경
__3.3.4 사이킷런을 사용하여 로지스틱 회귀 모델 훈련
__3.3.5 규제를 사용하여 과대적합 피하기
3.4 서포트 벡터 머신을 사용한 최대 마진 분류
__3.4.1 최대 마진
__3.4.2 슬랙 변수를 사용하여 비선형 분류 문제 다루기
__3.4.3 사이킷런의 다른 구현
3.5 커널 SVM을 사용하여 비선형 문제 풀기
__3.5.1 선형적으로 구분되지 않는 데이터를 위한 커널 방법
__3.5.2 커널 기법을 사용하여 고차원 공간에서 분할 초평면 찾기
3.6 결정 트리 학습
__3.6.1 정보 이득 최대화: 자원을 최대로 활용
__3.6.2 결정 트리 만들기
__3.6.3 랜덤 포레스트로 여러 개의 결정 트리 연결
3.7 k-최근접 이웃: 게으른 학습 알고리즘
3.8 요약

4장. 좋은 훈련 데이터셋 만들기: 데이터 전처리
4.1 누락된 데이터 다루기
__4.1.1 테이블 형태 데이터에서 누락된 값 식별
__4.1.2 누락된 값이 있는 훈련 샘플이나 특성 제외
__4.1.3 누락된 값 대체
__4.1.4 사이킷런 추정기 API 익히기
4.2 범주형 데이터 다루기
__4.2.1 판다스를 사용한 범주형 데이터 인코딩
__4.2.2 순서가 있는 특성 매핑
__4.2.3 클래스 레이블 인코딩
__4.2.4 순서가 없는 특성에 원-핫 인코딩 적용
4.3 데이터셋을 훈련 데이터셋과 테스트 데이터셋으로 나누기
4.4 특성 스케일 맞추기
4.5 유용한 특성 선택
__4.5.1 모델 복잡도 제한을 위한 L1 규제와 L2 규제
__4.5.2 L2 규제의 기하학적 해석
__4.5.3 L1 규제를 사용한 희소성
__4.5.4 순차 특성 선택 알고리즘
4.6 랜덤 포레스트의 특성 중요도 사용
4.7 요약

5장. 차원 축소를 사용한 데이터 압축
5.1 주성분 분석을 통한 비지도 차원 축소
__5.1.1 주성분 분석의 주요 단계
__5.1.2 주성분 추출 단계
__5.1.3 총 분산과 설명된 분산
__5.1.4 특성 변환
__5.1.5 사이킷런의 주성분 분석
5.2 선형 판별 분석을 통한 지도 방식의 데이터 압축
__5.2.1 주성분 분석 vs 선형 판별 분석
__5.2.2 선형 판별 분석의 내부 동작 방식
__5.2.3 산포 행렬 계산
__5.2.4 새로운 특성 부분 공간을 위해 선형 판별 벡터 선택
__5.2.5 새로운 특성 공간으로 샘플 투영
__5.2.6 사이킷런의 LDA
5.3 비선형 차원 축소와 시각화
__5.3.1 비선형 차원 축소를 고려하는 이유는 무엇인가요?
__5.3.2 t-SNE를 사용한 데이터 시각화
5.4 요약

6장. 모델 평가와 하이퍼파라미터 튜닝의 모범 사례
6.1 파이프라인을 사용한 효율적인 워크플로
__6.1.1 위스콘신 유방암 데이터셋
__6.1.2 파이프라인으로 변환기와 추정기 연결
6.2 k-겹 교차 검증을 사용한 모델 성능 평가
__6.2.1 홀드아웃 방법
__6.2.2 k-겹 교차 검증
6.3 학습 곡선과 검증 곡선을 사용한 알고리즘 디버깅
__6.3.1 학습 곡선으로 편향과 분산 문제 분석
__6.3.2 검증 곡선으로 과대적합과 과소적합 조사
6.4 그리드 서치를 사용한 머신 러닝 모델 세부 튜닝
__6.4.1 그리드 서치를 사용한 하이퍼파라미터 튜닝
__6.4.2 랜덤 서치로 하이퍼파라미터 설정을 더 넓게 탐색하기
__6.4.3 SH 방식을 사용한 자원 효율적인 하이퍼파라미터 탐색
__6.4.4 중첩 교차 검증을 사용한 알고리즘 선택
6.5 여러 가지 성능 평가 지표
__6.5.1 오차 행렬
__6.5.2 분류 모델의 정밀도와 재현율 최적화
__6.5.3 ROC 곡선 그리기
__6.5.4 다중 분류의 성능 지표
__6.5.5 불균형한 클래스 다루기
6.6 요약

7장. 다양한 모델을 결합한 앙상블 학습
7.1 앙상블 학습
7.2 다수결 투표를 사용한 분류 앙상블
__7.2.1 간단한 다수결 투표 분류기 구현
__7.2.2 다수결 투표 방식을 사용하여 예측 만들기
__7.2.3 앙상블 분류기의 평가와 튜닝
7.3 배깅: 부트스트랩 샘플링을 통한 분류 앙상블
__7.3.1 배깅 알고리즘의 작동 방식
__7.3.2 배깅으로 Wine 데이터셋의 샘플 분류
7.4 약한 학습기를 이용한 에이다부스트
__7.4.1 부스팅 작동 원리
__7.4.2 사이킷런에서 에이다부스트 사용
7.5 그레이디언트 부스팅: 손실 그레이디언트 기반의 앙상블 훈련
__7.5.1 에이다부스트와 그레이디언트 부스팅 비교
__7.5.2 그레이디언트 부스팅 알고리즘 소개
__7.5.3 분류를 위한 그레이디언트 부스팅 알고리즘
__7.5.4 그레이디언트 부스팅 분류 예제
__7.5.5 XGBoost 사용하기
7.6 요약

8장. 감성 분석에 머신 러닝 적용
8.1 텍스트 처리용 IMDb 영화 리뷰 데이터 준비
__8.1.1 영화 리뷰 데이터셋 구하기
__8.1.2 영화 리뷰 데이터셋을 더 간편한 형태로 전처리
8.2 BoW 모델 소개
__8.2.1 단어를 특성 벡터로 변환
__8.2.2 tf-idf를 사용하여 단어 적합성 평가
__8.2.3 텍스트 데이터 정제
__8.2.4 문서를 토큰으로 나누기
8.3 문서 분류를 위한 로지스틱 회귀 모델 훈련
8.4 대용량 데이터 처리: 온라인 알고리즘과 외부 메모리 학습
8.5 잠재 디리클레 할당을 사용한 토픽 모델링
__8.5.1 LDA를 사용한 텍스트 문서 분해
__8.5.2 사이킷런의 LDA
8.6 요약

9장. 회귀 분석으로 연속적 타깃 변수 예측
9.1 선형 회귀
__9.1.1 단순 선형 회귀
__9.1.2 다중 선형 회귀
9.2 에임스 주택 데이터셋 탐색
__9.2.1 데이터프레임으로 에임스 주택 데이터셋 읽기
__9.2.2 데이터셋의 중요 특징 시각화
__9.2.3 상관관계 행렬을 사용한 분석
9.3 최소 제곱 선형 회귀 모델 구현
__9.3.1 경사 하강법으로 회귀 모델의 파라미터 구하기
__9.3.2 사이킷런으로 회귀 모델의 가중치 추정
9.4 RANSAC을 사용하여 안정된 회귀 모델 훈련
9.5 선형 회귀 모델의 성능 평가
9.6 회귀에 규제 적용
9.7 선형 회귀 모델을 다항 회귀로 변환
__9.7.1 사이킷런을 사용하여 다항식 항 추가
__9.7.2 에임스 주택 데이터셋을 사용한 비선형 관계 모델링
9.8 랜덤 포레스트를 사용하여 비선형 관계 다루기
__9.8.1 결정 트리 회귀
__9.8.2 랜덤 포레스트 회귀
9.9 요약

10장. 레이블되지 않은 데이터 다루기: 군집 분석
10.1 k-평균 알고리즘을 사용하여 유사한 객체 그룹핑
__10.1.1 사이킷런을 사용한 k-평균 군집
__10.1.2 k-평균++로 초기 클러스터 센트로이드를 똑똑하게 할당
__10.1.3 직접 군집 vs 간접 군집
__10.1.4 엘보우 방법을 사용하여 최적의 클러스터 개수 찾기
__10.1.5 실루엣 그래프로 군집 품질을 정량화
10.2 계층적인 트리로 클러스터 조직화
__10.2.1 상향식으로 클러스터 묶기
__10.2.2 거리 행렬에서 계층 군집 수행
__10.2.3 히트맵에 덴드로그램 연결
__10.2.4 사이킷런에서 병합 군집 적용
10.3 DBSCAN을 사용하여 밀집도가 높은 지역 찾기
10.4 요약

11장. 다층 인공 신경망을 밑바닥부터 구현
11.1 인공 신경망으로 복잡한 함수 모델링
__11.1.1 단일층 신경망 요약
__11.1.2 다층 신경망 구조
__11.1.3 정방향 계산으로 신경망 활성화 출력 계산
11.2 손글씨 숫자 분류
__11.2.1 MNIST 데이터셋 구하기
__11.2.2 다층 퍼셉트론 구현
__11.2.3 신경망 훈련 루프 코딩
__11.2.4 신경망 모델의 성능 평가
11.3 인공 신경망 훈련
__11.3.1 손실 함수 계산
__11.3.2 역전파 알고리즘 이해
__11.3.3 역전파 알고리즘으로 신경망 훈련
11.4 신경망의 수렴
11.5 신경망 구현에 관한 몇 가지 첨언
11.6 요약

12장. 파이토치를 사용한 신경망 훈련
12.1 파이토치와 훈련 성능
__12.1.1 성능 문제
__12.1.2 파이토치란?
__12.1.3 파이토치 학습 방법
12.2 파이토치 처음 시작하기
__12.2.1 파이토치 설치
__12.2.2 파이토치에서 텐서 만들기
__12.2.3 텐서의 데이터 타입과 크기 조작
__12.2.4 텐서에 수학 연산 적용
__12.2.5 chunk( ), stack( ), cat( ) 함수
12.3 파이토치 입력 파이프라인 구축
__12.3.1 텐서에서 파이토치 DataLoader 만들기
__12.3.2 두 개의 텐서를 하나의 데이터셋으로 연결
__12.3.3 셔플, 배치, 반복
__12.3.4 로컬 디스크에 있는 파일에서 데이터셋 만들기
__12.3.5 torchvision.datasets 라이브러리에서 데이터셋 로드
12.4 파이토치로 신경망 모델 만들기
__12.4.1 파이토치 신경망 모듈(torch.nn)
__12.4.2 선형 회귀 모델 만들기
__12.4.3 torch.nn과 torch.optim 모듈로 모델 훈련하기
__12.4.4 붓꽃 데이터셋을 분류하는 다층 퍼셉트론 만들기
__12.4.5 테스트 데이터셋에서 모델 평가하기
__12.4.6 훈련된 모델 저장하고 로드하기
12.5 다층 신경망의 활성화 함수 선택
__12.5.1 로지스틱 함수 요약
__12.5.2 소프트맥스 함수를 사용한 다중 클래스 확률 예측
__12.5.3 하이퍼볼릭 탄젠트로 출력 범위 넓히기
__12.5.4 렐루 활성화 함수
12.6 요약

13장. 파이토치 구조 자세히 알아보기
13.1 파이토치의 주요 특징
13.2 파이토치의 계산 그래프
__13.2.1 계산 그래프 이해
__13.2.2 파이토치로 그래프 만들기
13.3 모델 파라미터를 저장하고 업데이트하기 위한 파이토치 텐서 객체
13.4 자동 미분으로 그레이디언트 계산
__13.4.1 훈련 가능한 변수에 대한 손실의 그레이디언트 계산
__13.4.2 자동 미분 이해하기
__13.4.3 적대 샘플
13.5 torch.nn 모듈을 사용하여 일반적인 아키텍처 구현하기
__13.5.1 nn.Sequential 기반의 모델 구현하기
__13.5.2 손실 함수 선택하기
__13.5.3 XOR 분류 문제 풀어 보기
__13.5.4 nn.Module로 유연성이 높은 모델 만들기
__13.5.5 파이토치에서 사용자 정의 층 만들기
13.6 프로젝트 1: 자동차 연비 예측하기
__13.6.1 특성 열 사용
__13.6.2 DNN 회귀 모델 훈련하기
13.7 프로젝트 2: MNIST 손글씨 숫자 분류하기
13.8 고수준 파이토치 API: 파이토치 라이트닝 소개
__13.8.1 파이토치 라이트닝 모델 준비하기
__13.8.2 라이트닝을 위한 데이터 로더 준비하기
__13.8.3 라이트닝 Trainer 클래스를 사용하여 모델 훈련하기
__13.8.4 텐서보드로 모델 평가하기
13.9 요약

14장. 심층 합성곱 신경망으로 이미지 분류
14.1 합성곱 신경망의 구성 요소
__14.1.1 CNN과 특성 계층 학습
__14.1.2 이산 합성곱 수행
__14.1.3 서브샘플링
14.2 기본 구성 요소를 사용하여 심층 합성곱 신경망 구성
__14.2.1 여러 개의 입력 또는 컬러 채널 다루기
__14.2.2 L2 규제와 드롭아웃으로 신경망 규제
__14.2.3 분류를 위한 손실 함수
14.3 파이토치를 사용하여 심층 합성곱 신경망 구현
__14.3.1 다층 CNN 구조
__14.3.2 데이터 적재와 전처리
__14.3.3 torch.nn 모듈을 사용하여 CNN 구현
14.4 합성곱 신경망을 사용하여 웃는 얼굴 분류
__14.4.1 CelebA 데이터셋 로드
__14.4.2 이미지 변환과 데이터 증식
__14.4.3 CNN 웃는 얼굴 분류기 훈련
14.5 요약

15장. 순환 신경망으로 순차 데이터 모델링
15.1 순차 데이터 소개
__15.1.1 순차 데이터 모델링: 순서를 고려한다
__15.1.2 순차 데이터 vs 시계열 데이터
__15.1.3 시퀀스 표현
__15.1.4 시퀀스 모델링의 종류
15.2 시퀀스 모델링을 위한 RNN
__15.2.1 RNN 반복 구조 이해
__15.2.2 RNN의 활성화 출력 계산
__15.2.3 은닉 순환과 출력 순환
__15.2.4 긴 시퀀스 학습의 어려움
__15.2.5 LSTM 셀
15.3 파이토치로 시퀀스 모델링을 위한 RNN 구현
__15.3.1 첫 번째 프로젝트: IMDb 영화 리뷰의 감성 분석
__15.3.2 두 번째 프로젝트: 텐서플로로 글자 단위 언어 모델 구현
15.4 요약

16장. 트랜스포머: 어텐션 메커니즘을 통한 자연어 처리 성능 향상
16.1 어텐션 메커니즘이 추가된 RNN
__16.1.1 RNN의 정보 검색을 돕는 어텐션
__16.1.2 RNN을 위한 원본 어텐션 메커니즘
__16.1.3 양방향 RNN으로 입력 처리하기
__16.1.4 문맥 벡터에서 출력 생성하기
__16.1.5 어텐션 가중치 계산하기
16.2 셀프 어텐션 메커니즘 소개
__16.2.1 기본적인 형태의 셀프 어텐션
__16.2.2 훈련 가능한 셀프 어텐션 메커니즘: 스케일드 점곱 어텐션
16.3 어텐션이 필요한 전부다: 원본 트랜스포머 아키텍처
__16.3.1 멀티 헤드 어텐션으로 문맥 임베딩 인코딩하기
__16.3.2 언어 모델 학습: 디코더와 마스크드 멀티 헤드 어텐션
__16.3.3 구현 세부 사항: 위치 인코딩 및 층 정규화
16.4 레이블이 없는 데이터를 활용하여 대규모 언어 모델 구축
__16.4.1 트랜스포머 모델 사전 훈련 및 미세 튜닝
__16.4.2 GPT로 레이블이 없는 데이터 활용하기
__16.4.3 GPT-2를 사용하여 새로운 텍스트 생성
__16.4.4 BERT를 통한 양방향 사전 훈련
__16.4.5 두 장점을 합친 BART
16.5 파이토치에서 BERT 모델 미세 튜닝하기
__16.5.1 IMDb 영화 리뷰 데이터셋 로드
__16.5.2 데이터셋 토큰화 715
__16.5.3 사전 훈련된 BERT 모델 로드 및 미세 튜닝하기
__16.5.4 트레이너 API를 사용하여 트랜스포머를 간편하게 미세 튜닝하기
16.6 요약

17장. 새로운 데이터 합성을 위한 생성적 적대 신경망
17.1 생성적 적대 신경망 소개
__17.1.1 오토인코더
__17.1.2 새로운 데이터 합성을 위한 생성 모델
__17.1.3 GAN으로 새로운 샘플 생성
__17.1.4 GAN의 생성자와 판별자 손실 함수 이해
17.2 밑바닥부터 GAN 모델 구현
__17.2.1 구글 코랩에서 GAN 모델 훈련
__17.2.2 생성자와 판별자 신경망 구현
__17.2.3 훈련 데이터셋 정의
__17.2.4 GAN 모델 훈련하기
17.3 합성곱 GAN과 바서슈타인 GAN으로 합성 이미지 품질 높이기
__17.3.1 전치 합성곱
__17.3.2 배치 정규화
__17.3.3 생성자와 판별자 구현
__17.3.4 두 분포 사이의 거리 측정
__17.3.5 GAN에 EM 거리 사용
__17.3.6 그레이디언트 페널티
__17.3.7 WGAN-GP로 DCGAN 모델 훈련
__17.3.8 모드 붕괴
17.4 다른 GAN 애플리케이션
17.5 요약

18장. 그래프 구조 데이터의 의존성 감지를 위한 그래프 신경망
18.1 그래프 데이터 소개
__18.1.1 비유향 그래프
__18.1.2 유향 그래프
__18.1.3 레이블 그래프
__18.1.4 분자를 그래프로 표현하기
18.2 그래프 합성곱의 이해
__18.2.1 그래프 합성곱의 사용 동기
__18.2.2 기본 그래프 합성곱 구현
18.3 파이토치에서 GNN을 밑바닥부터 구현하기
__18.3.1 NodeNetwork 모델 정의하기
__18.3.2 NodeNetwork의 그래프 합성곱 층 만들기
__18.3.3 다양한 그래프 크기를 처리하기 위해 전역 풀링 층 추가하기
__18.3.4 데이터 로더 준비
__18.3.5 노드 네트워크를 사용하여 예측하기
18.4 파이토치 지오메트릭 라이브러리를 사용하여 GNN 구현하기
18.5 기타 GNN 층 및 최근 개발 사항
__18.5.1 스펙트럼 그래프 합성곱
__18.5.2 풀링
__18.5.3 정규화
__18.5.4 그 외 고급 그래프 신경망
18.6 요약

19장. 강화 학습으로 복잡한 환경에서 의사 결정
19.1 경험에서 배운다
__19.1.1 강화 학습 이해
__19.1.2 강화 학습 시스템의 에이전트-환경 인터페이스 정의
19.2 강화 학습의 기초 이론
__19.2.1 마르코프 결정 과정
__19.2.2 마르코프 결정 과정의 수학 공식
__19.2.3 강화 학습 용어: 대가, 정책, 가치 함수
__19.2.4 벨먼 방정식을 사용한 동적 계획법
19.3 강화 학습 알고리즘
__19.3.1 동적 계획법
__19.3.2 몬테카를로를 사용한 강화 학습
__19.3.3 시간 차 학습
19.4 첫 번째 강화 학습 알고리즘 구현
__19.4.1 OpenAI 짐 툴킷 소개
__19.4.2 Q-러닝으로 그리드 월드 문제 풀기
19.5 심층 Q-러닝
__19.5.1 Q-러닝 알고리즘에 따라 DQN 모델 훈련
__19.5.2 심층 Q-러닝 알고리즘 구현
19.6 전체 요약

 

머신 러닝 교과서: 파이토치 편 : 네이버 도서

네이버 도서 상세정보를 제공합니다.

search.shopping.naver.com

▲▲가격비교 보러가기 ▲▲

00. 서론

오... 랜만에 영화 리뷰.

2020인가부터 매 해를 시작할 때, 콘텐츠를 몇 편 볼 것인가 정하고 있다. 올해는 작년보다 영화를 많이 보고싶어서 책 30권 영화 50편으로 잡았는데, 영화 수에서 처참한 결과를 맞이하는 중... 오늘부터라도 매일매일 보면 될까요 😹 (대신 뮤지컬을 열 편 이상 봤다)

읽은 책, 본 영화는 대개 인스타를 통해 짤막한 감상과 함께 올리곤 하는데, 올해는 기록을 좀 게을리 한 면이 있다.

그 결과는 아래와 같음

적을 당시 기억나는 것만 리스트 했는데 아마 더 있을듯. <도리언 그레이 (2009)>랑 <홀리데이(2005)>도 있겠다. 참고로 저 리스트에 n회 본 영화는 제외, 예를 들면 시네마 천국이나 박하사탕 이라든지.

그래서 오늘은 여러 생각을 했음에도 아직도 정리하지 않았던(^^...) <천국보다 아름다운(1998)>을 리뷰해보려 한다.


01. 본론

감독: 빈센트 워드

주연: 로빈 윌리엄스, 애나벨라 쇼라

천국과 지옥을 정의하기를...

이 영화를 처음 알게된 계기가 독특한데, 좋아하는 타투이스트의 이벤트 도안으로 이 영화의 한 장면을 받게되었고,영문도 모른채 최애 영화인 양(안 봄) 몸에 새기게 되었다. "사랑"에 대한 주제로 만든 아트웍인데, 타투이스트는 자신이 정말 좋아하는 영화라며 꼭 보기를 당부했다. 그렇게 몇 년의 시간이 지나고... 

HOURS는 아니고 YEARS였다.

영화 고르기가 어려워지던 즈음 갑자기 생각나서 찾아보게 되었다.

개인적으로 넘 웃겼던 게

영화: 야! 울어!

나: 응! (글썽)

(~500번 반복~)

주로 퇴근길에 영화를 봤는데 덕분에 전철에서 난데없이 눈물을 글썽이는 여성이 되었음. 

보고나서 "이거 근데 왜 안유명?"이라고 생각했는데, 가만보니 나도 이 영화를 미뤄온데 이유가 있었다. 일단 포스터에서 오는 진입장벽이 크긴 하다. 당신들이 영화에서 보여준 시각 효과의 반의 반만 했어도 이거보다 오백배 예쁜 포스터 뽑아낼 수 있었을 것이다.

세기말 감성 담뿍 담겼음

일단 시각 효과가 너무 좋다. 남자 주인공(로빈 윌리엄스)이 그림 속으로 들어가는 장면이 있는데, 그림을 실사화 해서 보여주는 게 아니라 그림 그 자체 -- 물감 위에서 뛰어노는 그 질감을 보여준다. 중간중간 마블의 금빛 아스가르드가 생각났다. 그림 속 세계는 생각하는 대로 구현할 수 있다. 나의 마음이 나의 세상이 된다. 굉장한 불교적 메시지이다.

영화를 보다보면 스토리가 아름답거나 비주얼이 아름다운 영화 메시지가 강렬한 영화 등등 나뉘는데 스토리와 비주얼이 아름다운 영화라고 생각한다.

서로가 서로의 세상이었기 때문에 현실의 애니는 그림을 한참 동안 완성하지 못했지만, 자신의 큰 부분을 차지하는 남편이 그림 속에서 그 모양을 완성해가는 모습을 통해 상보할 수 있다는 점. 주례사에서 익히 듣는 서로 부족한 것은 채워주고 나눠주며 지혜로운- 은 역시 동서고금을 불문하고 부부의 진리처럼 보여지기도 한다.

다양한 매체에서 천국과 지옥을 보여준다. 삶과 죽음은 많은 종교와 철학에서 다루는 메인 주제인 만큼 인간사와 함께 발전했다고 해도 무방한데, 역시 이 영화에서 보여주는 천국과 지옥은 어떤 모습인지 비교하면서 보면 더 재밌을 것 같다.

여러분이 정의하는 천국과 지옥은 어떤 모습인가요?

 

줄거리 (건너뛰어도 됨. 양심상 넣음.)

출처: 네이버 영화

소아과 의사 크리스(Chris Nielsen: 로빈 윌리암스 분)는 큐레이터인 사랑하는 아내 애니(Annie Nielsen: 아나벨라 시오라 분)와 아들 얀 딸 마리(Marie Nielsen: 제시카 브룩스 그랜트 분)와 행복하고 평온한 삶을 살고 있다. 그러나 크리스와 애니는 얀과 마리를 교통사고로 잃게 되고, 애니는 아이들을 잃어버린 슬픔에 정신적으로 고통 받던 중 자책감에 크리스에게 이혼을 요구하기에 이른다. 크리스는 애니를 사랑하지만 애니에게 조금이라도 고통을 덜어주기 위해 이혼에 합의한다. 4년이 지나고 크리스마저도 교통사고로 죽게 되자, 더욱더 깊은 실음에 잠긴 애니를 안타까워 하며 크리스는 이승에서 애니의 주위를 맴돌게 된다. 크리스는 아내가 그린 훌륭한 풍경화 작품 중에 그려진 파라다이스 그림을 보고, 천상의 세계로 들어가게 된다. 사랑하는 아내가 그린 아름다운 천국은 크리스에게 어느 정도의 위안은 되지만 아내가 없는 천국도 공허하긴 마찬가지다. 현실의 세상에 남아 있는 애니는 크리스가 없는 슬픔 삶을 견딜 수가 없어 크리스를 만나는 방법으로 자살을 선택하게 되고 현실에서의 크리스에 대한 사랑도 이별을 고한다. 크리스는 애니의 죽음을 통보 받지만, 자살자는 지옥으로 가게 된다는 사실 때문에 두 사람은 서로 다시 만날 희망은 사라지고 만다. 하지만 아내에 대한 사랑을 포기할 수 없는 크리스는 알버트(Albert: 쿠바 쿠딩 주니어 분)의 도움으로 애니를 지옥에서 천국으로 데려오기 위해 천국과 지옥을 통과하는 위험하고 어려운 방랑의 모험 길을 떠나게 되는데.

 

여담

로빈 윌리엄스를 처음 봤던 영화는 <굿 윌 헌팅>이었다. 은근 쎈캐이긴한데 이 분이 죽시사의 오 캡틴 마이 캡틴인지 (죽은 시인의 사회 안 봄) 나중에 알고 본 터라 이렇게 세 개의 영화를 통해 로빈 윌리엄스는 뭔가 '희망 전도사'같은 이미지가 되었다. 실제로 나 말고도 그렇게 느낀 사람도 많은 것 같지만... 삶을 통해 행복을 영위하라는 그가 영화에서 던지는 메시지와 상반되게 그의 삶을 톺아보면 안타까움이 있다.

 

끝.

 

돈 룩 업 (Don't Look Up) (2021), 넷플릭스 오리지널

 

감독: 아담 맥케이

주연: 레오나르도 디카프리오, 제니퍼 로렌스, 메릴 스트립, 티모시 샬라메

장르: 드라마, SF,  코미디

 

넷플릭스 오리지널 영화 돈 룩 업, 알음알음 사람들에게 입소문을 탔던 영화이다. 

맨 처음에는 언니가 틀었던 것을 대충 보다가 다시 추천을 받아서 각 잡고 봤던 영화. 아니, 각 잡았다기엔 너무 태블릿 PC로 봤나...?

 

기본적으로 장르 구분에 SF가 들어가지만 SF적인 요소는 강하지 않다. 우주는 사건 발단의 소재 정도로 작용하고 메인 스토리를 끌고가는 것은 오히려 사회 문제다. 재난 영화 + 사회문제 비판 이라면 적당할 것 같다.

 

출처: 네이버 영화

 

천문학과 연구실의 케이트(제니퍼 로렌스)는 지구 궤도를 돌고있는 새로운 혜성을 발견한다. 닥터 민디(레오나르도 디카프리오)는 내 새끼의 발견을 자축하며 공전 궤도를 계산하는데, 수식의 결과가 이상하다. 너무 빨리 지구로 돌진하고 있다. 여러 번 계산해도 결과는 같았다. 재난의 시작이었다.

지구로 돌진하는 혜성을 막기 위해 정부의 힘이 필요한 민디 박사와 케이트는 백악관에 도움을 요청하지만 대통령(메릴 스트립)은 경고를 무시한다. 이 사실을 얼른 알리기 위해 둘은 토크쇼에 출연하게 되는데 토크쇼 진행자들은 그들의 말을 유사 과학 정도로 취급하며 조롱하고, 이에 케이트는 생방송 중 화를 냈다가 그 얼굴이 짤로 박혀  밈으로 돌아다니게 된다. 모두가 그들의 말을 믿어주지 않는 세상에서, 둘은 어떻게든 진실을 알리기 위해 고군분투 하는데...

 

진짜 골때리고 웃긴 장면이 많기에 장르의 최초 분류가 코미디인 것에는 이견이 없으나, 문제는 보다보면 웃기다는 그 장면들이 꽤 섬짓하게 다가온다는 것이다. 아 ㅋㅋ 개웃김 아냐 근데 하나도 안 웃김. <의 연속이다. 사회적 분위기에 짓눌려 물타기를 당하는 케이트, 언론이 만들어준 자신의 이미지에 정신을 놓은 닥터 민디. 사실임에도 아무도 믿어주지 않는 분위기에 케이트는 사회적 난도질을 당한다. 웃김에도 마냥 웃을 수 없던 이유는, 영화에서 보여진 여성 혐오와 인종 차별, 사회적 분위기에 몰살당하는 진실 모두 겪어본 일들이기 때문이 틀림 없을 것이다. 어떤 면에서는 저리게 공감되기도, 사실을 등한시하는 무리가 미워지기도 하는 것이다. 

 

특히나 마지막 장면은 정말 좋아하는데, 개인적으로 이야기의 흐름과 잘 맞는 결말이라고 생각했고, 산전수전 다 겪고 난 주인공들의 감정을 가장 잘 표현했기 때문이다. 참고로 쿠키 영상도 있는데 이는 호불호가 좀 갈리는 듯 하다. 나는 개인적으로 나쁘지 않다고 생각했다. 한 마디로 정리하자면, 기괴하다. (그치만 난 기괴한 게 좋으니 괜찮다.) 그리고 또 좋아한 장면은 엔딩 크레딧. 영화 내 나온 아이템과 등장 인물을 매치시키는데, 상징적인 캐릭터 아이템이기 때문에 캐릭터에 대해 '맞아, 얘는 그랬지.' 다시 한 번 되짚게 된다.

 

 

개인적으로 티모시 샬라메를 굉장히 좋아한다. 그가 처음 각인된 작품은 콜 미 바이 유어 네임(2017) 이었는데, 청량하고 맑은 소년미와 아직은 벗지 못한 어리숙함이 굉장히 예쁘게 다가왔던 기억이 있다. 그랬기 떄문에 티미의 이미지는 나에게 '엘리오'와 같았는데, 여기서는 너무 귀여운 미국 고딩 역할을 잘해줬다. 제니퍼 로렌스가 티미 잡아먹고 싶다는 말을 그렇데 했다는데, 너무 공감가버리는 귀여움... 필모를 찬찬히 훑다보면 이 배우 또한 작품마다 자신이 캐릭터가 되어버리는 그 몰입도가 엄청난 배우라고 느껴진다. 앞으로 더 보고 싶은 배우이다. (사실 예전에 GAN 프로젝트를 하면서 사심을 담아 sample image를 그의 사진으로 진행한 적이 있다. 좋아서 그냥 쓴건데 의외로 사진의 깊이감 등이 좋아서 샘플 활용이 적절했던 것은 덤)

 

원래는 영화를 한 편 보고 나면 인스타그램에 짧게 단편적인 생각만 정리했는데, 앞으로는 지면 상의 이유로 적지 못한 감상들을 더 적어봐야겠다는 생각이 들었다. (생각보다 느낌은 잘 남아도 단어와 디테일이 잘 날아간다) 근 2년 전부터 영화 및 책 프로젝트를 개인적으로 해오고 있는데, 본격적으로 감상을 남겨 더 좋은 글을 만들어 봐야겠다.

 

+ Recent posts