-
[책 리뷰] 파이썬과 엑셀로 시작하는 딥러닝BOOK 2023. 7. 27. 14:10반응형
총평
이 책은 머신러닝 초보자에게는 차근차근 따라갈 수 있는 지침서이며, 추상화에 익숙해져버린 머신러닝 개발자들에게는 충격을 안겨 준다.
딥러닝을 자주 접하는 사람이 이 책을 본다면, "너무 쉬운 주제만 다루는 거 아니야?" 라고 생각할 수 있을 것이다. 딥러닝의 가장 기초인 gradient descent부터 CNN, RNN까지 다루고 있다. 결론부터 말하자면 이 책은 결코 쉽지 않다. 요즈음의 딥러닝은 scikit-learn, tensorflow 그리고 pytorch라는 빛과 소금같은, 어떻게 보면 극히 추상화된 라이브러리로 단 N줄만에 모델을 구성하고, 테스트하는 환경에 익숙해져 있기 때문이다. 하지만 이 추상화 덕분에 머신러닝 개발자들은 오히려 high level로만 모델을 알고 있고, 저 밑에 어떤 부분에서 어떤 일이 일어나는지 모르며, 어떤 포인트 때문에 학습과 테스트가 오래 걸리는지 모른다. 결국엔 다시 기초가 부족해지는 것이다.
이 책은 머신러닝 초보자에게는 차근차근 따라갈 수 있는 지침서이며, 앞서 언급했던 (본인이 모든 것을 만들었다고 생각하는) 머신러닝 개발자들에게는 충격을 안겨 준다. 그 충격이라 함은, 추상화된 이미 알려진 방법론-모델에 대하여 무려 numpy, pandas를 통해 scratch부터 구현하기 때문이다. 모듈이 있으면 갖다 쓰면 되지 않냐, 왜 집(모델)을 처음부터 짓냐? 하면 하나하나 벽돌을 쌓는 과정을 통해 집이 어떻게 지어지는 지, 어떤 기둥이 가장 중요한지 알게 되는 '경험'이라고 답할 수 있을 것이다. 개인적으로 개발 서적을 많이 봤어서 그런지 엑셀과 코드를 비교하는 컨셉은 많이 못 본 것 같은데... 이런 면에서 저자의 노고가 엿보이는 순간이었다.
내용이 꽉꽉 차있어서 이 책의 내용을 전부 따라가려면 기존에 인공지능을 만지던 사람도 시간도 좀 걸린다. 도움이 많이 되었고, 다만 전체적인 책의 완성도는 살짝 아쉬웠다. 줄글에 들어가는 수식이 평서문인 경우도 있었고, 일부 어색한 문장들도 있었다. 색을 많이 쓴다는 것은 화려한 시선을 사로잡지만 개발자 입장에서는 필요하고 강조가 되는 부분만 색이 있는 것을 선호한다. 코드 자체는 손색없지만 중간중간 함수화해서 해당 코드 스니펫이 어떤 역할을 해 주는지 명시되었으면 더 좋지 않았을까 라는 생각이 들었다.
책갈피
경사 하강법(Gradient Descent): 아주 어두운 산길에 혼자 서있다고 생각합니다. 너무 어두워서 앞이 보이지 않으면, 어떻게 산 아래로 내려갈 수 있을까요? 지면의 기울기의 방향을 보고 내려가는 곳을 알 수 있을 것입니다. 따라서 내려가는 방향의 지면 쪽으로 움직이면 언젠가 제일 아래쪽으로 도착할 것입니다. 그런데 한 가지 조건을 더 추가해 주어야 합니다. 아래로 내려올수록 내려오는 속도를 조금씩 줄여야 합니다. 그렇지 않고 빠르게 내려온다면 저점을 지나서 오히려 반대 방향으로 오를 수도 있습니다. 지면으로 내려가는 방향은 수학적으로 순간 기울기 즉 미분값으로 정의할 수 있습니다. (p57)
활성화 함수(Activation Function): 학습 과정에서 무엇을 놓쳤을까요? 예측하려는 함수는 선형 함수가 아닙니다. ...(이하 생략)... 뉴런(신경세포)에 대해 조금 더 공부해 보겠습니다. 생물 시간에 공부한 내용이 기억나겠지만, 이 신경세포는 앞단에서 들어온 자극을 그대로 뒤 신경세포에 전달하지 않습니다. 어느 일정 값 (임계값) 이 넘어서는 자극만 전달합니다. 그럼으로써 비선형을 만들 수 있습니다. (p92)
CNN - 패딩(Padding): 보통의 CNN에서 패딩 기법을 활용하는 이유는 다음과 같습니다.
* 컨볼루션 연산을 수행할 때, 입력 이미지의 크기가 출력 이미지의 크기보다 작아지는 경우가 발생합니다. 이 때, 패딩을 추가하여 입력 이미지의 크기를 보존하면 출력 이미지의 크기도 입력 이미지와 동일하게 유지됩니다.
* 합성곱 연산을 수행할 때, 입력 이미지 경계 부분의 픽셀은 주변의 픽셀보다 적게 사용됩니다. 이 때, 패딩을 추가하여 입력 이미지의 경계를 채우면 경계 부분의 픽셀도 충분히 사용될 수 있습니다.
* 패딩을 적용하지 않으면 앞의 그림에서 볼 수 있듯이 합성곱 연산을 수행할 때 출력 이미지가 입력 이미지보다 작아지게 되고 네트워크에서 다음 레이어로 전달되는 정보의 양이 줄어듭니다. 패딩을 사용하면 입력 이미지와 출력 이미지의 크기를 일치시킬 수 있습니다. 이는 입력 이미지와 출력 이미지를 서로 연결하여 더 깊은 구조의 CNN 모델을 설계할 수 있습니다. (p257)Related Links
- 링크 > 샘플 자료 다운로드
http://infopub.co.kr/new/include/detail.asp?sku=06000248
- Q&A 게시판 (재권님 프로젝트 명에 오타가 있네요....ㅎㅎ)
https://github.com/HongJaeKwon/exel_deep_learning/issues
목차
PART 0 개발 환경 구축
1. 파이썬 설치
01. Windows OS 버전
02. Mac OS 버전
2. 필요 패키지 설치
01. 주피터(Jupyter)
02. xlwings
03. 사이킷런(Scikit-Learn)
04. OpenCV 및 Numpy
05. Matplotlib
3. 파이썬-엑셀 연동 실습
01. 셀 내 중복값 제거 실습
02. 웹캠 이미지 엑셀 출력
PART 1 넘파이(Numpy)
1. 배열(ndarray)
01. arange 함수
02. reshape 함수
03. array indexing
2. 연산
01. 행렬의 사칙연산과 행렬곱
02. eye 함수
03. 전치 행렬(Transpose)
04. flip 함수
05. pad 함수
3. 미분
01. 함수의 기울기
02. 미분 프로그래밍
PART 2 딥러닝 개요
1. 딥러닝 학습
2. y = wx 학습
01. 엑셀 데이터 준비
02. 손실 함수(Loss)의 정의
03. 경사 하강법(Gradient Descent)
04. 모델 구현
3. y = wx + b 학습
01. 편미분
02. 확률적 경사 하강법(Stochastic Gradient Descent)
03. 모델 구현
4. y = w1 × 1 + w2 × 2 + b 학습
01. 행렬 표현
02. 행렬 연산의 이해
03. 모델 구현
5. 임의의 함수 학습
01. 딥러닝(Deep Learning)
02. 체인룰(CHAIN RULE), 순전파(Forward Propagation), 역전파(Back Propagation)
03. 활성화 함수(Activation Function)
04. 모델 구현
PART 3 회귀 예제
1. 당뇨병 예측 데이터
01. 데이터 확인 및 모델 만들기
02. 데이터 정규화
03. 하이퍼 파라미터(Hyper Parameter) 설정
04. 과소/과대 적합 방지
2. 체력 검사 데이터
01. 데이터 확인
02. 다중 출력 모델 설계
03. 다중 출력 모델의 역전파
PART 4 분류 개요
1. 이진 분류
01. 시그모이드(Sigmoid)
02. 분류의 역전파
03. 모델 구현
04. 시그모이드를 중간층의 활성화 함수로 사용하지 않는 이유 1
2. 다중 분류
01. 소프트맥스(Softmax)
02. 카테고리컬 크로스 엔트로피(Categorical Cross Entropy)
03. 모델구현
PART 5 분류 예제
1. 붓꽃 분류
01. 데이터 확인
02. 원핫인코딩(One-hot Encoding)
03. 모델 구현
2. 손글씨 분류
01. 데이터 확인
02. 데이터 전처리
03. 모델 구현
04. 모델 검증 및 한계
PART 6 CNN
1. 이미지 데이터 특성
2. 필터와 합성곱(Convolution) 연산
3. 합성곱의 역전파
4. 모델 구현
5. CNN 추가 정보
01. 행렬로 표현
02. Stride
03. 패딩(Padding)
04. 풀링(Pooling)
05. 채널
PART 7 RNN
1. RNN 구조
2. 순전파와 역전파 연산
부록 1 Google Spreadsheet 사용
부록 2 Tensorflow 사용본 서평은 출판사로부터 책을 제공받아 작성된 서평입니다.
반응형'BOOK' 카테고리의 다른 글
[책 리뷰] 인사이드 머신러닝 인터뷰 (6) 2024.04.09 [책 리뷰] GPT-4를 활용한 인공지능 앱 개발 (2) 2024.02.20 [책 리뷰] 클린 코드의 기술 (0) 2023.05.09 [책 리뷰] 핸즈온 데이터 시각화 (Hands-On Data Visualization) (0) 2022.07.10 [책 리뷰] 구글 BERT의 정석 (0) 2022.06.26 - 링크 > 샘플 자료 다운로드