메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

파이썬 날코딩으로 알고 짜는 딥러닝

프레임워크 없이 단층 퍼셉트론에서 GAN까지

한빛미디어

집필서

절판

  • 저자 : 윤덕호
  • 출간 : 2019-07-15
  • 페이지 : 692 쪽
  • ISBN : 9791162242001
  • 물류코드 :10200
  • 초급 초중급 중급 중고급 고급
4.9점 (30명)
좋아요 : 12

인공 신경망 원리와 응용을 파이썬 날코딩으로 정말 깊이 이해하자!

이 책은 딥러닝 알고리즘의 원리를 깊숙이 이해하고 이를 파이썬 코딩만으로 구현하는 데 주안점을 둔다. 이를 위해 가장 간단한 신경망 구조부터 복잡한 응용 구조까지 다양한 딥러닝 신경망 예제의 실제 구현 과정을 소개한다. 그 과정에서 독자는 딥러닝 알고리즘을 텐서플로 같은 프레임워크 없이도 개발하는 능력을 갖추게 된다. 딥러닝 알고리즘을 깊이 이해하면 역설적으로 프레임워크를 이용할 때의 장단점을 더 확실히 알 수 있다. 나아가 자신만의 새로운 딥러닝 신경망을 개발하는 밑거름이 될 것이다.

 

이 책에서 파이썬 날코딩으로 구현하는 신경망

  1. 단층 퍼셉트론(SLP)
  2. 다층 퍼셉트론(MLP)
  3. 합성곱 신경망(CNN)
  4. 순환 신경망(RNN)
  5. 오토인코더
  6. 인코더-디코더
  7. 생성적 적대 신경망(GAN)

 

이 책에서 다루는 내용

이 책은 총 5부로 구성되어 있다. 다루는 내용은 다음과 같다.

  • 1부 : 단층 퍼셉트론가장 간단한 신경망 구조인 단층 퍼셉트론 구조를 소개하면서 신경망 출력을 이용해 풀어야 할 세 가지 문제 유형의 해결 방법을 살펴본다. 1장에서는 전복 고리 수 추정 신경망 예제를 통해 ‘회귀 분석 문제’의 해결 방법을, 2장에서는 펄서 여부 판정 신경망 예제를 통해 ‘이진 판단 문제’의 해결 방법을, 3장에서는 철판의 불량 상태 분류 신경망 예제를 통하여 ‘선택 분류 문제’의 해결 방법을 각각 소개한다.
  • 2부 : 다층 퍼셉트론기본적이면서도 실전적인 다층 퍼셉트론 구조를 소개하면서 객체지향 모델 구조와 복합 출력의 처리 방법을 다룬다. 4장에서는 지금까지의 예제들을 다층 퍼셉트론으로 다시 풀어내며, 5장에서는 객체지향 구조로 프로그램을 재구성하면서 꽃 이미지 분류 신경망 예제를 소개한다. 6장에서는 오피스31 이미지의 다차원 분류 예제를 사용해 복합 출력을 다루는 방법을 살펴본다.
  • 3부 : 합성곱 신경망합성곱 신경망과 정규화 기법, 거대 심층 구조를 살펴보면서 은닉 계층 구성에 이용되는 12가지 계층의 기능과 구현 방법을 살펴본다. 7장에서는 이미지 처리에 특화된 합성곱 신경망에 이용되는 4가지 계층을 소개한다. 8장에서는 다섯 가지 정규화 기법을 살펴본다. 이 가운데 L1 손실 및 L2 손실을 가중치 학습 과정에 반영해 처리하는 과정을 소개한다. 또한 드롭아웃, 잡음 주입, 배치 정규화 기법을 각각 별도 계층으로 구현한다. 9장에서 인셉션 모델이나 레스넷 모델 같은 거대 심층 구조를 지원하는 5가지 복합 계층을 소개한다.
  • 4부 : 순환 신경망시간 축을 갖는 시계열 데이터 처리에 특화된 순환 신경망을 이용해 다양한 종류의 데이터를 다루는 과정을 살펴본다. 10장에서 오토마타 생성 문장 판별 신경망 예제와 함께 기본 구조의 순환 계층을 소개한 후, 11장에서 도시 소음 분류 신경망 예제와 함께 LSTM(long shortterm memory) 셸 구조의 개선된 순환 계층을 살펴본다. 12장에서는 동영상 장면 전환 프레임 판별 신경망 예제와 함께 시계열 출력을 다루는 방법을 다룬다.
  • 5부 : 딥고급 응용 신경망 구조들/문제에 접근하는 새로운 시각을 보여주는 세 가지 딥러닝 응용 구조를 소개한다. 13장에서는 입력 재현을 목표로 삼는 방법으로 비지도학습에 활용하는 오토인코더, 14장에서는 콘텍스트 벡터를 매개로 입출력 간의 데이터 형태 차이를 극복하는 인코더-디코더, 15장에서는 경쟁 관계의 두 신경망을 이용해 데이터 생성 능력을 기르는 생성적 적대 신경망를 소개하고 각각 구체적 예제 프로그램을 제시한다.

 

 

상세이미지_700.jpg

 

윤덕호 저자

윤덕호

서울대학교 컴퓨터공학과에서 공부하고 우리나라에 첫 번째 인공지능 바람이 휩쓸 무렵 석박사 과정을 거치면서 자연어 처리 분야를 연구했다. 10여 년간 한남대학교 정보통신공학과 교수로 학생들을 가르쳤으며 2000년부터 지금까지 (주)코난테크놀로지에 임원으로 재직하면서 각종 소프트웨어 개발에 빠져 살았다. 현재 사내 교육 프로그램인 코난아카데미를 운영하고 있다. 또한 인공지능 혁신성장동력 프로젝트 ‘비디오 튜링 테스트(VTT) 연구 사업’의 제3세부 과제 책임자로서 각종 딥러닝 연구에 이용될 학습용 멀티모달 메타데이터를 구축하고 메타데이터의 초벌 자동 생성 딥러닝 기법을 연구하고 있다. 그 외에 인문학과 축구, 커뮤니티 댄스 등으로 심신을 단련한다. 가끔 배우로 변신하여 연극 무대에 오르기도 한다.

CHAPTER 0 들어가기

0.1 이 책의 구성

0.2 인공지능과 머신러닝, 딥러닝

0.3 동물의 신경세포, 뉴런

0.4 인공 신경망의 기본 유닛, 퍼셉트론

0.5 딥러닝을 위한 수학

0.6 예제 실습 환경 소개

0.7 마치며

 

[ PART I 단층 퍼셉트론(SLP) ]


CHAPTER 1 회귀 분석 : 전복의 고리 수 추정 신경망

1.1 단층 퍼셉트론 신경망 구조

1.2 텐서 연산과 미니배치의 활용

1.3 신경망의 세 가지 기본 출력 유형과 회귀 분석

1.4 전복의 고리 수 추정 문제

1.5 회귀 분석과 평균제곱오차(MSE) 손실 함수

1.6 경사하강법과 역전파

1.7 편미분과 손실 기울기의 계산

1.8 하이퍼파라미터

1.9 비선형 정보와 원-핫 벡터 표현

1.10 구현하기 : 전복 고리 수 추정 신경망

1.11 실행하기

1.12 마치며

 

CHAPTER 2 이진 판단 : 천체의 펄서 여부 판정 신경망

2.1 펄서 판정 문제

2.2 이진 판단 문제의 신경망 처리

2.3 시그모이드 함수

2.4 확률 분포와 정보 엔트로피

2.5 확률 분포의 추정과 교차 엔트로피

2.6 딥러닝 학습에서의 교차 엔트로피

2.7 시그모이드 교차 엔트로피와 편미분

2.8 계산값 폭주 문제와 시그모이드 관련 함수의 안전한 계산법

2.9 구현하기 : 펄서 여부 판정 신경망

2.10 실행하기

2.11 확장하기 : 균형 잡힌 데이터셋과 착시 없는 평가 방법

2.12 실행하기 : 확장된 펄서 여부 판정 신경망

2.13 마치며

 

CHAPTER 3 선택 분류 : 철판 불량 상태 분류 신경망

3.1 불량 철판 판별 문제

3.2 선택 분류 문제의 신경망 처리

3.3 소프트맥스 함수

3.4 소프트맥스 함수의 편미분

3.5 소프트맥스 교차 엔트로피

3.6 소프트맥스 교차 엔트로피의 편미분

3.7 시그모이드 함수와 소프트맥스 함수의 관계

3.8 구현하기 : 불량 철판 판별 신경망

3.9 실행하기

3.10 마치며

 

[ PART II 다층 퍼셉트론(MLP ]


CHAPTER 4 다층 퍼셉트론 기본 구조 : 세 가지 신경망의 재구성

4.1 다층 퍼셉트론 신경망 구조

4.2 은닉 계층의 수와 폭

4.3 비선형 활성화 함수

4.4 ReLU 함수

4.5 민스키의 XOR 문제와 비선형 활성화 함수

4.6 구현하기 : 다층 퍼셉트론 신경망 지원 함수

4.7 실행하기

4.8 마치며

 

CHAPTER 5 다층 퍼셉트론 모델 구조 : 꽃 이미지 분류 신경망

5.1 다층 퍼셉트론을 위한 클래스 설계

5.2 데이터 분할 : 학습, 검증, 평가

5.3 시각화

5.4 이미지 분류 문제와 꽃 이미지 분류 데이터셋

5.5 구현하기 : 모델 클래스

5.6 구현하기 : 데이터셋 클래스

5.7 구현하기 : 네 가지 데이터셋 파생 클래스

5.8 구현하기 : 꽃 이미지 분류 데이터셋 클래스

5.9 구현하기 : 수학 연산과 각종 부수적 기능

5.10 실행하기

5.11 마치며

 

CHAPTER 6 복합 출력의 처리 방법 : 오피스31 다차원 분류 신경망

6.1 오피스31 데이터셋과 다차원 분류

6.2 딥러닝에서의 복합 출력의 학습법

6.3 복합 출력을 위한 MlpModel 클래스와 Dataset 클래스의 역할

6.4 아담 알고리즘

6.5 구현하기 : 아담 모델 클래스

6.6 구현하기 : 오피스31 데이터셋 클래스

6.7 실행하기

6.8 마치며

 

[ PART III 합성곱 신경망(CNN) ]


CHAPTER 7 간단한 합성곱 모델 : 꽃 이미지 분류 신경망

7.1 다층 퍼셉트론의 문제점과 새로운 구조의 필요성

7.2 합성곱 계층

7.3 합성곱 연산의 패딩과 건너뛰기

7.4 풀링 계층

7.5 채널의 도입과 커널의 확장

7.6 합성곱과 풀링의 역전파 처리

7.7 합성곱 신경망의 일반적인 구성

7.8 세 가지 합성곱 연산 방법

7.9 다양한 계층의 처리를 위한 모델 확장

7.10 구현하기 : 간단한 합성곱 신경망 클래스

7.11 실행하기

7.12 마치며

 

CHAPTER 8 다섯 가지 정규화 확장 : 꽃 이미지 분류 신경망

8.1 부적합과 과적합

8.2 L2 손실

8.3 L1 손실

8.4 드롭아웃

8.5 잡음 주입

8.6 배치 정규화

8.7 정규화 기법 도입을 위한 계층의 추가

8.8 구현하기 : 정규화 확장 클래스

8.9 실행하기

8.10 마치며

 

CHAPTER 9 인셉션 모델과 레스넷 모델 : 꽃 이미지 분류 신경망

9.1 인셉션 모델 

9.2 레스넷 모델

9.3 인셉션 모델과 레스넷 모델 구현을 위해 필요한 확장들

9.4 구현하기 : 확장된 합성곱 신경망 모델 클래스

9.5 구현하기 : 더미 데이터셋 클래스

9.6 실행하기 : 인셉션 모델

9.7 실행하기 : 레스넷 모델

9.8 마치며

 

[ PART IV 순환 신경망(RNN) ]


CHAPTER 10 기본 셀 순환 신경망 : 오토마타 문장 판별 신경망

10.1 시계열 데이터

10.2 순환 계층과 순환 벡터의 활용

10.3 순환 계층의 입출력 형태

10.4 순환 계층을 위한 시계열 데이터의 표현

10.5 순환 계층의 순전파와 역전파 처리

10.6 오토마타를 이용한 수식 표현의 생성과 검사

10.7 구현하기 : 간단한 순환 신경망 클래스

10.8 구현하기 : 오토마타 데이터셋

10.9 실행하기

10.10 마치며

 

CHAPTER 11 LSTM 순환 신경망 : 도시 소음 분류 신경망

11.1 순환 벡터와 기울기 정보의 소멸 및 폭주

11.2 LSTM의 구조와 동작 방식

11.3 쌍곡탄젠트 함수

11.4 LSTM 계층의 순전파와 역전파 처리

11.5 주파수 스펙트럼 분석을 이용한 음원 처리

11.6 음원 분류 데이터셋

11.7 구현하기 : LSTM 신경망 클래스

11.8 구현하기 : 음원 분류 데이터셋

11.9 실행하기

11.10 마치며

 

CHAPTER 12 CNN과 RNN의 결합 : 장면 전환 판별 신경망

12.1 비순환 계층에서의 시계열 데이터 처리

12.2 동영상 처리를 위한 합성곱 신경망과 순환 신경망의 결합

12.3 출력 계층과 후처리 단계에서의 시계열 데이터 처리

12.4 장면 전환 데이터셋

12.5 실행 부담을 줄이는 방법들

12.6 구현하기 : 확장된 순환 신경망 클래스

12.7 구현하기 : 장면 전환 데이터셋

12.8 실행하기

12.9 마치며

 

[ PART V 고급 응용 신경망 구조들 ]


CHAPTER 13 오토인코더 : 엠니스트 이미지 재현 및 분류 신경망

13.1 오토인코더의 구조

13.2 지도학습과 비지도학습

13.3 잡음 제거용 오토인코더

13.4 유사 이진 코드 생성과 시맨틱 해싱

13.5 지도학습이 추가된 확장 오토인코더 모델

13.6 확장 인코더 모델을 위한 엠니스트 데이터셋

13.7 구현하기 : 확장 오토인코더 모델 클래스

13.8 구현하기 : 오토인코더를 위한 엠니스트 데이터셋

13.9 실행하기

13.10 마치며

 

CHAPTER 14 인코더-디코더 : 엠니스트 이미지 숫자 읽기 신경망

14.1 인코더-디코더의 구조

14.2 인코더-디코더와 언어 처리

14.3 필기체 숫자 이미지를 영어로 읽기

14.4 필기체 숫자 이미지열을 한글로 읽기

14.5 인코더-디코더의 분리 학습 문제

14.6 구현하기 : 인코더-디코더 모델 클래스

14.7 구현하기 : 인코더-디코더를 위한 엠니스트 데이터셋

14.8 실행하기

14.9 마치며

 

CHAPTER 15 생성적 적대 신경망 : 회화 및 숫자 이미지 생성 신경망

15.1 생성적 적대 신경망의 구조

15.2 생성적 적대 신경망과 데이터 생성

15.3 생성적 적대 신경망의 순전파와 역전파 처리

15.4 구현하기 : 생성적 적대 신경망 모델 클래스

15.5 구현하기 : 생성적 적대 신경망을 위한 데이터셋

15.6 실행하기

15.7 마치며

난도는 중상 이상이다, 정말 깊은 이해를 원하는 대상 독자만 봐달라!

이 책의 대상 독자는 크게 두 부류다. 첫 번째는 텐서플로 같은 프레임워크를 사용해 딥러닝에 입문했지만 여전히 딥러닝 알고리즘의 동작 원리를 제대로 이해할 수 없어 답답함을 느끼는 기존 딥러닝 개발자다. 두 번째는 딥러닝을 새로 배워보려 하지만 기왕이면 수박 겉 핥기식 공부보다는 딥러닝 알고리즘을 제대로 이해하는 공부를 하고 싶은 딥러닝 입문자다.

 

프레임워크를 이용하지 않고 파이썬 날코딩만으로 딥러닝 문제를 풀어보자! 

이 책의 목표는 독자가 딥러닝 알고리즘의 원리를 깊이 있게 이해하여 활용 능력을 갖추도록 돕는 데 있다. 각 장은 이론을 제시한 후에 파이썬으로 예제 프로그램을 구현하고 실험을 수행하는 과정을 차근차근 소개한다. 이들 예제 프로그램을 꼼꼼하게 설명한다. 또한 실험 과정을 재현하고 변형해 활용하기 쉽게 구성했다. 예제 프로그램을 살펴보면서 그동안 편리한 프레임워크에 가려져 이해하지 못한 채 지나쳤던 딥러닝의 동작 원리를 확실하게 알게 된다. 이렇게 길러진 이해를 토대로 프레임워크 없이도 직접 딥러닝 신경망을 개발하는 능력을 갖추게 될 것이다. 동시에 역설적으로 숨은 동작 원리를 간파하게 됨으로써 프레임워크를 더 잘 이용하게 된다.

 

캐글 플랫폼에서 수집한 다양한 실전 예제를 만나보자! 

예제에서 다루는 다양한 데이터셋은 이 책의 또 하나의 매력이다. 각종 인공지능 챌린지 대회가 펼쳐지는 캐글 플랫폼에서 수집한 실전 데이터셋은 딥러닝 모델의 활용 범위에 대한 상상의 지평을 넓혀줄 것이다. 전복 나이 추정, 천체 펄서 여부 판정, 철판 불량 상태 분류, 꽃 사진 이미지나 도시 소음의 분류 등의 문제를 캐글 데이터셋을 이용해 다룬다. 이 밖에도 사무용품 이미지들로 구성된 오피스31 데이터셋, 필기체 문자 이미지들을 모은 엠니스트(MNIST) 데이터셋을 비롯해 영화 동영상 파일, 회화 이미지 파일, 오토마타 문법 등 다양한 종류의 데이터셋을 예제 프로그램에서 사용한다. 

 

여러분이 자신만의 새로운 딥러닝 신경망을 개발하고, 딥러닝을 넘어서는 인공지능의 또 다른 지평을 향해 나아가는 첫걸음에 이 책이 도움이 되기를 기대해본다.

10여년 쯤 전에 대학원에서 입자물리학을 공부했었다. 입자물리학이라는 특성(?)상 눈으로 볼 수도, 실제 데이터를 모으기도 쉽지 않기 때문에 가상으로 생성된, 엄청나게 많은 양의 시뮬레이션 데이터를 가지고 분석을 먼저 한다. 그리고 그 데이터들을 각종 컷(cut) 조건에 따라 분류해서 데이터를 줄여나간다. 

 

기본적으로 데이터를 줄여나가는 방법은 간단하다. 질량 조건, 에너지 분포, 운동량 조건, 충돌 후 분포 조건 등 다양한 조건에 따라 특정 구간 이외의 것들을 줄여나가면 된다. 

 

그러다가 접하게 된 것이 하나 있었는데, ANN이라는 생소한 기술이었다. 오래전 일이라 잘 기억은 나지 않지만 당시에 그게 뭔지도 모르고 라이브러리를 적용했던 것 같다. 매뉴얼에 나온 대로 여러 변수들을 대입해서 트레이닝 시키고, 그 결과로 데이터 시뮬레이션을 돌리면 여러 개의 변수가 한 개의 변수로 쏙 튀어 나왔다. 그리고 그 변수를 가지고 컷을 적용시키면 끝이었다. 

 

ann.JPG

 

일단 결과가 나왔으니 그걸로 분석을 하기는 했는데, 궁금한 점이 많았다. 이게 뭘 하는 과정일까? 어떤 원리로 이렇게 되는 걸까? 이 결과를 믿을 수 있는 걸까? 당시에는 정말 생소한 개념이고, 이 방법으로 분석을 한 논문들이 많지 않아서 굉장히 답답했던 기억이 있다.

 

 


 

최근 들어 인공지능, 딥러닝에 대한 관심이 매우 커졌다. 지금은 입자물리학을 공부하지 않지만, 대신에 중고등학생들을 만나 수학, 과학을 가르치고 있지만 나 스스로도 딥러닝 기술의 원리에 관심이 많고, 또 이걸 학생들 교육에 어떻게 활용할까에 대한 관심도 많다. 

 

그래서 입문자를 위한 책들 몇 권을 구입해서 틈틈이 보곤 했다. 그렇게 보았던 책들은 딥러닝 기법들에 대한 기본적인 원리들을 소개하기는 했지만 원리 깊은 곳의 이야기보다는 실제 라이브러리를 활용한 응용에 더 포커스를 맞추고 있었다. 아무래도 입문자가 금방 따라하며 결과물을 만들어 보는 것에 집중하다보니 그럴 것이다.

 

이 책 ≪파이썬 날코딩으로 알고 짜는 딥러닝≫은 그런 책들과는 결을 조금 달리한다. 이 책의 대상 독자는 딥러닝 알고리즘의 동작 원리를 제대로 이해하고 싶은 딥러닝 개발자, 딥러닝 알고리즘을 제대로 이해하는 공부를 하고 싶은 딥러닝 입문자라고 소개하고 있다. 그런 것 처럼 이 책은 철저히 원리를 이해하는 것을 강조하고 있다.

 

 

KakaoTalk_20200823_224431899.jpg

 

 

이 책은 단층 퍼셉트론, 다층 퍼셉트론, 합성곱 신경망, 순환 신경망, 고급 응용 신경망 구조를 다루고 있는데 그 양이 실로 방대하여 책의 두께를 보고 한 번 놀란다. 한 번에 다 공부하지 않고 각각을 천천히 공부를 해도 책 몇 권을 보는 것 같다. 다양한 예제 프로그램들을 통해 각각의 개념들을 차곡차곡 이해할 수 있다.

 

 

KakaoTalk_20200823_225233486.jpg

 

 

이 책은 분명 쉽지 않다. 비전공자나 딥러닝 입문자가 처음 공부하기 위해 선택하기에는 어려움이 있다. 이 책을 더 깊이있게 이해하기 위해서는 선행될 지식들이 필요하다. 기본적인 파이썬은 당연히 다룰 줄 알아야 하고, 선형대수학, 미적분학, 확률통계론을 조금이라도 알면 원리를 보다 심도있게 이해할 수 있다. (물론 수학을 모른다고 해서 이 책을 볼 수 없는 것은 아니다. 수학 이야기는 가끔 나오고, 원리를 제대로 이해하기 위해 필요하다는 뜻이다!)

 

 

KakaoTalk_20200823_230232999.jpg

 

 

이 책! 솔직히 어렵다. 그런데 읽기에는 괜찮다. 보통 딥러닝 책들이 외국 저자가 쓴 번역서가 많은데, 국내 저자가 쓴 이렇게 탁월한 딥러닝 책이 있다는 것이 기쁘다. 어색한 번역서가 아니라 문장들을 읽기는 좋다. (물론 초보자나 입문자가 읽기에 내용은 쉽지 않다.... 아...)

 

그런데 어렵다는 말이, 다르게 말하면, 딥러닝을 심도 있게 공부하기에 알차다고도 표현할 수 있겠다. 딥러닝 알고리즘을 공부하고 이해하기에 정말 정말 정말 좋은 책이다. 

 

딥러닝을 위해 보통 텐서플로 같은 프레임워크를 사용하는데, 그런 방법을 알려주는 책이 아니라 그런 프레임워크가 어떠한 원리로 돌아가는지를 설명해주는 책이다. 약간 대학, 대학원 교재로 쓰기에 좋을 것 같다는 생각?

 

 

KakaoTalk_20200823_231955578.jpg

 

 

 

책 소개에서 가장 기억에 남는 말들이 있다.

 

 

쉽다고 거짓말하지 않겠습니다.

원리를 깊게 파면 쉬울 수 없습니다.

읽다가 머리에 쥐가 날 수도 있습니다.

 

도전해보자! 공부는 원래 어려운 법! 그 만큼 얻는 것도 많을 것이다!

 

책장에서 수시로 꺼내어 읽고 또 읽으며 딥러닝을 마스터하고 싶은 사람에게 강추!!!

 

제목 그대로 "파이썬 날코딩으로 알고 짜는 딥러닝!!", "알짜 딥러닝!!"

 

 

이책은 파이썬 언어를 사용하여 여러가지 형태의 딥러닝 모델을 구현한다. 단층 퍼셉트론, 다층 퍼셉트론, 합성곱, 순환 신경망을 구현한다. 

텐서플로우나, 케라스, 파이토치와 같은 딥러닝 툴킷은 딥러닝 모델 연산시 API 제공을 통해 입력 데이터 처리, 역전파 계산,  활성화 함수계산과 같은 복잡한 계산식을  단순화한다. 때문에  API 내부에서 어떤 식으로 형렬 계산처리가 이루어지는지 알 수가 없다. 

 

CNN 딥러닝 모델에서  합성곱 계층, 폴링 계층, 완전 연결 계층을 직접 구현하고, 역전파 계산, 드롭아웃, 정규화를 수행한다. 

이후 잘 알려진 VGG-19 모델, ResNet, 인셉션 모델도 구현한다. 

 

LSTM 순환망을 구현하고 테스트 예제로서  도시 소음 음원 파일에서  주파수 스펙트럼의 시계열 분석을  통해 각종 음원을 분류한다.         

 

다양한 딥러닝 모델을 이론적으로 배우기만 하는 경향에서 탈피해서 실제 행렬 계산식을 통해 직접 구현해 본다면 , 딥러닝 모델과 관련한 계산식을  이론과 더불어  좀 더 쉽게 체감해 볼수 있은 기회를 갖게 되리라 본다. 

   

더 나아가 텐서플로우와 같은 오픈 소스 딥러닝툴을  개발해 보기를 기대한다. 

 

 

목차 

 

 

CHAPTER 0 들어가기

0.1 이 책의 구성

0.2 인공지능과 머신러닝, 딥러닝

0.3 동물의 신경세포, 뉴런

0.4 인공 신경망의 기본 유닛, 퍼셉트론

0.5 딥러닝을 위한 수학

0.6 예제 실습 환경 소개

0.7 마치며

 

[ PART I 단층 퍼셉트론(SLP) ]

 

CHAPTER 1 회귀 분석 : 전복의 고리 수 추정 신경망

1.1 단층 퍼셉트론 신경망 구조

1.2 텐서 연산과 미니배치의 활용

1.3 신경망의 세 가지 기본 출력 유형과 회귀 분석

1.4 전복의 고리 수 추정 문제

1.5 회귀 분석과 평균제곱오차(MSE) 손실 함수

1.6 경사하강법과 역전파

1.7 편미분과 손실 기울기의 계산

1.8 하이퍼파라미터

1.9 비선형 정보와 원-핫 벡터 표현

1.10 구현하기 : 전복 고리 수 추정 신경망

1.11 실행하기

1.12 마치며

 

CHAPTER 2 이진 판단 : 천체의 펄서 여부 판정 신경망

2.1 펄서 판정 문제

2.2 이진 판단 문제의 신경망 처리

2.3 시그모이드 함수

2.4 확률 분포와 정보 엔트로피

2.5 확률 분포의 추정과 교차 엔트로피

2.6 딥러닝 학습에서의 교차 엔트로피

2.7 시그모이드 교차 엔트로피와 편미분

2.8 계산값 폭주 문제와 시그모이드 관련 함수의 안전한 계산법

2.9 구현하기 : 펄서 여부 판정 신경망

2.10 실행하기

2.11 확장하기 : 균형 잡힌 데이터셋과 착시 없는 평가 방법

2.12 실행하기 : 확장된 펄서 여부 판정 신경망

2.13 마치며

 

CHAPTER 3 선택 분류 : 철판 불량 상태 분류 신경망

3.1 불량 철판 판별 문제

3.2 선택 분류 문제의 신경망 처리

3.3 소프트맥스 함수

3.4 소프트맥스 함수의 편미분

3.5 소프트맥스 교차 엔트로피

3.6 소프트맥스 교차 엔트로피의 편미분

3.7 시그모이드 함수와 소프트맥스 함수의 관계

3.8 구현하기 : 불량 철판 판별 신경망

3.9 실행하기

3.10 마치며

 

[ PART II 다층 퍼셉트론(MLP ]

 

CHAPTER 4 다층 퍼셉트론 기본 구조 : 세 가지 신경망의 재구성

4.1 다층 퍼셉트론 신경망 구조

4.2 은닉 계층의 수와 폭

4.3 비선형 활성화 함수

4.4 ReLU 함수

4.5 민스키의 XOR 문제와 비선형 활성화 함수

4.6 구현하기 : 다층 퍼셉트론 신경망 지원 함수

4.7 실행하기

4.8 마치며

 

CHAPTER 5 다층 퍼셉트론 모델 구조 : 꽃 이미지 분류 신경망

5.1 다층 퍼셉트론을 위한 클래스 설계

5.2 데이터 분할 : 학습, 검증, 평가

5.3 시각화

5.4 이미지 분류 문제와 꽃 이미지 분류 데이터셋

5.5 구현하기 : 모델 클래스

5.6 구현하기 : 데이터셋 클래스

5.7 구현하기 : 네 가지 데이터셋 파생 클래스

5.8 구현하기 : 꽃 이미지 분류 데이터셋 클래스

5.9 구현하기 : 수학 연산과 각종 부수적 기능

5.10 실행하기

5.11 마치며

 

CHAPTER 6 복합 출력의 처리 방법 : 오피스31 다차원 분류 신경망

6.1 오피스31 데이터셋과 다차원 분류

6.2 딥러닝에서의 복합 출력의 학습법

6.3 복합 출력을 위한 MlpModel 클래스와 Dataset 클래스의 역할

6.4 아담 알고리즘

6.5 구현하기 : 아담 모델 클래스

6.6 구현하기 : 오피스31 데이터셋 클래스

6.7 실행하기

6.8 마치며

 

[ PART III 합성곱 신경망(CNN) ]

 

CHAPTER 7 간단한 합성곱 모델 : 꽃 이미지 분류 신경망

7.1 다층 퍼셉트론의 문제점과 새로운 구조의 필요성

7.2 합성곱 계층

7.3 합성곱 연산의 패딩과 건너뛰기

7.4 풀링 계층

7.5 채널의 도입과 커널의 확장

7.6 합성곱과 풀링의 역전파 처리

7.7 합성곱 신경망의 일반적인 구성

7.8 세 가지 합성곱 연산 방법

7.9 다양한 계층의 처리를 위한 모델 확장

7.10 구현하기 : 간단한 합성곱 신경망 클래스

7.11 실행하기

7.12 마치며

 

CHAPTER 8 다섯 가지 정규화 확장 : 꽃 이미지 분류 신경망

8.1 부적합과 과적합

8.2 L2 손실

8.3 L1 손실

8.4 드롭아웃

8.5 잡음 주입

8.6 배치 정규화

8.7 정규화 기법 도입을 위한 계층의 추가

8.8 구현하기 : 정규화 확장 클래스

8.9 실행하기

8.10 마치며

 

CHAPTER 9 인셉션 모델과 레스넷 모델 : 꽃 이미지 분류 신경망

9.1 인셉션 모델

9.2 레스넷 모델

9.3 인셉션 모델과 레스넷 모델 구현을 위해 필요한 확장들

9.4 구현하기 : 확장된 합성곱 신경망 모델 클래스

9.5 구현하기 : 더미 데이터셋 클래스

9.6 실행하기 : 인셉션 모델

9.7 실행하기 : 레스넷 모델

9.8 마치며

 

[ PART IV 순환 신경망(RNN) ]

 

CHAPTER 10 기본 셀 순환 신경망 : 오토마타 문장 판별 신경망

10.1 시계열 데이터

10.2 순환 계층과 순환 벡터의 활용

10.3 순환 계층의 입출력 형태

10.4 순환 계층을 위한 시계열 데이터의 표현

10.5 순환 계층의 순전파와 역전파 처리

10.6 오토마타를 이용한 수식 표현의 생성과 검사

10.7 구현하기 : 간단한 순환 신경망 클래스

10.8 구현하기 : 오토마타 데이터셋

10.9 실행하기

10.10 마치며

 

CHAPTER 11 LSTM 순환 신경망 : 도시 소음 분류 신경망

11.1 순환 벡터와 기울기 정보의 소멸 및 폭주

11.2 LSTM의 구조와 동작 방식

11.3 쌍곡탄젠트 함수

11.4 LSTM 계층의 순전파와 역전파 처리

11.5 주파수 스펙트럼 분석을 이용한 음원 처리

11.6 음원 분류 데이터셋

11.7 구현하기 : LSTM 신경망 클래스

11.8 구현하기 : 음원 분류 데이터셋

11.9 실행하기

11.10 마치며

 

CHAPTER 12 CNN과 RNN의 결합 : 장면 전환 판별 신경망

12.1 비순환 계층에서의 시계열 데이터 처리

12.2 동영상 처리를 위한 합성곱 신경망과 순환 신경망의 결합

12.3 출력 계층과 후처리 단계에서의 시계열 데이터 처리

12.4 장면 전환 데이터셋

12.5 실행 부담을 줄이는 방법들

12.6 구현하기 : 확장된 순환 신경망 클래스

12.7 구현하기 : 장면 전환 데이터셋

12.8 실행하기

12.9 마치며

 

[ PART V 고급 응용 신경망 구조들 ]

 

CHAPTER 13 오토인코더 : 엠니스트 이미지 재현 및 분류 신경망

13.1 오토인코더의 구조

13.2 지도학습과 비지도학습

13.3 잡음 제거용 오토인코더

13.4 유사 이진 코드 생성과 시맨틱 해싱

13.5 지도학습이 추가된 확장 오토인코더 모델

13.6 확장 인코더 모델을 위한 엠니스트 데이터셋

13.7 구현하기 : 확장 오토인코더 모델 클래스

13.8 구현하기 : 오토인코더를 위한 엠니스트 데이터셋

13.9 실행하기

13.10 마치며

 

CHAPTER 14 인코더-디코더 : 엠니스트 이미지 숫자 읽기 신경망

14.1 인코더-디코더의 구조

14.2 인코더-디코더와 언어 처리

14.3 필기체 숫자 이미지를 영어로 읽기

14.4 필기체 숫자 이미지열을 한글로 읽기

14.5 인코더-디코더의 분리 학습 문제

14.6 구현하기 : 인코더-디코더 모델 클래스

14.7 구현하기 : 인코더-디코더를 위한 엠니스트 데이터셋

14.8 실행하기

14.9 마치며

 

CHAPTER 15 생성적 적대 신경망 : 회화 및 숫자 이미지 생성 신경망

15.1 생성적 적대 신경망의 구조

15.2 생성적 적대 신경망과 데이터 생성

15.3 생성적 적대 신경망의 순전파와 역전파 처리

15.4 구현하기 : 생성적 적대 신경망 모델 클래스

15.5 구현하기 : 생성적 적대 신경망을 위한 데이터셋

15.6 실행하기

15.7 마치며

 

 

 

알짜딥러닝_표지.png

 

딥러닝_numpy2.jpg

 

 

딥러닝_numpy.jpg

 

 

 

 

 

    

 

[회전]딥러닝.jpg

 

 

요새 여기저기서 딥러닝이다 해서 인터넷에서 딥러닝 예제 코드를 따라 해보니 정말 신기하게도 이미지만 여러개 넣어주면
사진을 가지고 딥러닝 해서 고양이다, 개다 이렇게 판단을 해주는걸 보고 매우 신기하기도 했고,

 

인터넷 검색엔진에서 사진을 검색하면 이미지명에 키워드가 없어도, 그림을 보고 해당 키워드와 유사한 이미지들을 검색해주는 걸 보면
딥러닝은 이미 우리 주변에 많이 와있는거 같습니다.

 

최근 딥러닝 책들이 많이 나오면서 다양한 예제들을 다루는 책이 많은데, 이미 개발된 딥러닝 API를 활요하는 예제들이여서
깊게 공부하기는 쉽지 않은거 같은데, '파이썬 날코딩으로 알고 짜는 딥러닝' 책은 응용보다는 원리부터 설명해주는 책인거 같습니다.

 

처음엔 원리부터 배우면 쉽겠지하고 책을 폈는데... 왠걸.. 어렵습니다. 초보자가 쉽게 딥러닝 배우겠다고 덤비기에는 어려울 수 있을꺼 같습니다.


그리고 많은 내용을 다루고 있고, 설명이 많다보니 교과서 같은 느낌도 좀 있지만 내용은 충실해서 믿음이 갑니다.

예제도 코드가 길지 않게, 주피터에서 실행해볼 수 있어 모든 예제를 따라하는데는 크게 어려움이 없었던거 같습니다.
딥러닝이 어려운 분야이지만, 이 책을 2번은 곱씹어 보며 따라해보면 많은 것을 배울 수 있을것 같습니다.

 

목차는 아래와 같은데 큰 단락만 적었습니다.


I. 단층 퍼셉트론(SLP)
II. 다층 퍼셉트론(MLP)
III. 합성곱 신경망(CNN)
IV. 순환 신경망(RNN)
V. 고급 응용 신경망 구조들

 

책을 읽기 전에

사실 제목만 보고 '파이썬을 강조하는 걸 보니, 파이썬을 사용한 구현 위주의 딥러닝 도서겠구나' 라는 생각을 가졌었는데, 목차를 펼치는 순간 잘못된 생각이었음을 깨닫게 되었습니다.

파이썬 보다는 딥러닝, 코드보다는 수학적 개념

상상했던 것과는 달리, 책의 내용은 절대 '구현 위주의 딥러닝 서적'이 아닌, 철저하고 꼼꼼한 딥러닝 전문 서적에 가까웠습니다. 실제로 책의 절반을 읽는 동안 나온 코드나 구현 로직의 양보다, 딥러닝 자체의 심화 개념과 수학적 기술이 훨씬 많았습니다.

제목 그대로, 알고 짜는 딥러닝

구현 위주의 도서가 아니라고 해서, 내용이 부실하다고 생각한다면 오산입니다. 도서의 제목인 '파이썬 날코딩으로 알고 짜는 딥러닝'에 맞게, 딥러닝 관련 내용이 전문적이고 충실하여 끝까지 읽는다면 '알고 짜는' 딥러닝에 조금 더 가까워질 만한 구성으로 만들어져 있습니다.

딥러닝을 제대로 배우면서, 개발까지 함께 해보고 싶다면

딥러닝 자체를 개념부터 꼼꼼하게 배우는 것과 동시에, 실제 개발까지 이어지는 흐름을 파악하고 싶은 사람에게 이 책을 추천하고 싶습니다.

다만, 선형대수 등 머신러닝 계열 고등수학이 선행되어 있어야 이해가 더 수월할 듯 합니다.

 

이책은 프레임워크 없이 파이썬으로 딥러닝을 이해해보자고 하는 책이다.

어쩌면 프레임워크에 익숙해져 기본에 대해 이해해 보고자하는 데에 적합한 책이다

주요 용어 정리.

1.1 단층 퍼셉트론 신경망 구조

학습과정 중에 끊임없이 변경되어 가면서 퍼셉트론의 동작 특성을 결정하는 값들을 파라미터

1.2 텐서 연산과 미니배치의 활용

텐서를 엄밀하게 정의하기란 쉽지 않지만 딥러닝에서는 다차원 숫자 배열 정도로만 이해해도 큰 문제가 없다.

일반적으로 딥러닝에서는 신경망이 여러 데이터를 한꺼번에 처리는 에 이를 미니 배치라고 한다.

입력성분의 일차식으로 표현되는 이런 계산과정을 선형연산

일차식으로 나타낼수 없는 계산 과정을 비선형 연산

학습 데이터 전체에 대한 한차례 처리를 에포크 (에폭,이폭으로도 부른다) 라고 한다.

딥러닝에서는 에포크 수나 미니배치 크기처럼 학습과정에서 변경되지 않으면서 신경망 구조나 학습 결과에 영향을 미치는 고려 요인들을 하이퍼파라미터 라고 한다.

해당용어들을 잘정리해야 뒤에서 학습하는데 문제가 없다.

예제 실행화면

코드를 한자 한자 따라 하다보면 해당 실습을 실행하는데 문제가 없었다.

오히려 내용은 프레임워크 를 사용할때보다 처음부터 분석을 하는과정을 따라할수가 있어서

말그대로 날코딩을 해봄으로써 이해하는데 더 도움이 될수 있었다.

수학에서 필요한 부분들을 알고 있는 상태라면 조금 더 접근하기 쉬웠을까요? 

인공지능과 관련한 어느 책에서 읽은 바로는 불과 10여년전만해도 인공지능이라고 하면 세탁기 돌리는데 쓰이는 자동화 기술정도로 인식되었고 사업 계획에 인공지능이라는 말만 들어가도 사기꾼 취급을 받을 정도였다고 합니다. 하지만, 본격적인 4차산업혁명시대로 진입하면서 인공지능은 그 핵심기술로 자리잡았으며, 인공지능에 대한 연구와 투자가 그 어느 때보다 활발한 때인 것 같습니다.

 

최근 머신러닝이라든가 딥러닝이라든가 하는 생소한 단어가 저와 같은 일반인들도 관심을 갖을 수 있도록 대중화된 계기는 아무래도 파이썬의 역할이 큰 것으로 생각됩니다. 전세계 수많은 전문가들과 전문연구집단에 의해 개발된 파이썬을 이용한 프레임워크가 너무나도 잘 갖춰져 있고, 심지어 무료로 오픈되어 있으며, 프로그래밍 언어 자체의 난이도 또한 다른 언어에 비해 그다지 진입장벽이 높지는 않기 때문일 것입니다. 비전공자라 할지라도 하라는대로 따라하면 어느정도껏 흉내를 내 보는데는 큰 어려움이 없으니까요.

 

하지만, 코딩을 할 줄 안다고 해서 모두가 실질적인 프로젝트를 진행할 수 있는 역량이 되는 것은 아닌 것처럼 파이썬과 딥러닝 프레임워크에 대한 이용방법을 아는 것만으로는 뭐랄까 도메인 역량 자체가 부족한 느낌을 지울 수 없습니다. 알고리즘 대회나 코딩 시험 같은 것은 해 볼 수 있겠지만 좀 더 깊이 있는 문제해결 능력차원에서는 부족할 수 밖에 없을 겁니다. 그래서 제목에 이끌려 '파이썬 날코딩으로 알고 짜는 딥러닝'을 접하게 되었습니다.

 

 

 

파이썬-딥러닝-01.png

 

파이썬-딥러닝-02.png

 

 

솔직히 말해, 이 책의 수준은 상당히 높습니다. 저 같은 비전공 초보자를 대상으로 하는 책은 아니었습니다. 딥러닝에 대한 전반적인 이해가 선행되어야 하며 파이썬 역시 어쨌거나 프레임워크를 이용하는데 어느정도 숙달되어야 제대로 이해할 수 있을 것이라 여겨집니다.

 

 

프레임워크를 사용하지 않는다고 해서 밑바닥 기초부터 쌓아 올려 주는 책이 아니라, 딥러닝에 대한 이론적 배경지식과 이과생들의 기준으로 약간의 수학지식, 그리고 파이썬 내장함수들에 대한 전반적인 이해가 선행되어 있어야 책을 읽어 나갈 수 있을 것 같았습니다. 한마디로 이 책을 제대로 보려면 '밑바닥 시리즈' 두권정도는 선행으로 학습하고 와야 될 것 같네요.

 

그렇지만 희망이 보이기도 했습니다. 이 책의 독차층에 들지 않는 비전공자의 입장에서 보기에 이 책의 수준이 터무니 없이 높기는 하지만, 어느정도 선행학습이 되어있거나, 더 나아가 전공자이거나 실무에 종사하고 있는 개발자들에게는 딥러닝과 파이썬에 대한 이해도를 더 넓히는데 이만한 책도 드믈것 같다는 느낌이었습니다. 그 면에서는 오히려 저자께서 왕초보들을 위한 책도 하나 집필해 주시면 어떨까 하는 바램이 생기기도 했습니다. 체계적으로 공부할 수 있도록요.

 

일전에 인공지능을 이용한 마케팅 분야를 공부하려고 책을 선택했던 적이 있었는데 외국 번역 서적이었습니다. 번역이 매끄럽지 않았던 것은 둘째로 하더라도, 분야가 분야이다 보니 초보자가 읽어나가기에는 인공지능 자체가 학습범위에 있어서 너무나 광범위하기도 하고 책의 구성도 학습을 위한 체계로는 갖춰져 있지 않다는 느낌을 많이 받았었습니다. 외국서적 특유의 이쪽 저쪽 날아다니는 구성이라고나 할까요. 하지만, 이 책 '파이썬 날코딩으로 알고 짜는 딥러닝'은 그런 면에 있어서는 오히려 자신감을 주는 책인듯 합니다.

 

즉, 지금은 파이썬도 미흡하고 인공지능이나 딥러닝에 대한 이해도도 부족한 상태라 그렇지 조금 더 익숙해지면 충분히 이 책의 내용을 쫓아갈 수 있을 것 같다는 느낌을 많이 받았습니다. 비전공자가 보기에도 이 책은 이론적 배경 설명을 제대로 충실히 하려고 노력한 책이고, 관련된 파이썬 코딩 과정이나 실행 결과에 대해서도 최대한 상세하게 설명하려고 노력한 점이 엿보이는 책이기 때문입니다.

 

파이썬의 특성상 프레임워크를 이용하는 방법을 설명하는 책들은 정말 다양하게 출간되어 있는 것 같습니다. 관련하여 외국서적을 번역한 책들도 많은 것 같구요. 하지만 국내 연구진이나 교수가 직접 집필한 책은 사실 드믄 것 같습니다. 그면에서 이 책은 국내 연구자가 집필한 책이라 내용도 체계적이고 읽어 나가기에도 상당히 깔끔합니다. 책 뒷면에 관련서적으로 표시되어 있는 '처음 배우는 시리즈' 라도 제대로 섭렵하고 다시 도전해 볼 생각입니다.

 

 

딥러닝에 처음으로 도전해보면서 접한 책이었습니다.

 

반복설명과 주석문으로 설명을 자세히 해줘서 초심자가 보아도 이해할 수 있었습니다.

 

예제소스 또한 저자 깃허브랑 한빛미디어 홈페이지에서 다운받을 수 있어서

 

빠르게 실습할 수 있어서 좋았습니다.

 

저처럼 딥러닝에 관심있는데 어려울 것 같아서 

 

섣불리 도전 못하시는 분들한테 꼭 추천해드리고 싶은 책입니다.

d.jpg

 

 

프레임워크 없이 numpy만으로 딥러닝 네트워크를 구현하면서 학습한다는 컨셉의 <밑바닥부터 시작하는 딥러닝><밑바닥부터 시작하는 딥러닝 2>가 몇 년 동안 많은 인기를 얻었고, 나 또한 이 두 책으로 재미를 보았었다. 일본 IT 서적 특유의 잘 구조화되어있고 꼼꼼한 설명으로 좋은 인상을 받았었는데, 이번에는 비슷한 컨셉으로 한국인 저자가 집필한 책이 나왔다.


밑바닥 시리즈와의 차이점이라면 단연 두께가 두껍다는 것. 밑바닥 시리즈 2권을 합쳐도 이 책 한권에 미치지 못할 정도로 상당히 두껍다 (약 700 페이지 분량). 그도 그럴 것이 다루고 있는 범위가 밑바닥 시리즈 두 권을 합친 것보다 더 넓다. 밑바닥 시리즈는 1권에서 MLP(다중 퍼셉트론 레이어)와 CNN을, 2권에서 RNN + attention 을 다루었는데 이 책은 위 내용에서 attention을 빼고 오토인코더, 인코더-디코더, GAN을 추가로 다루고 있다.

밑바닥 시리즈와 마찬가지로 프레임워크 없이 직접 한땀 한땀 딥러닝 네트워크를 구현해야 하기 때문에 이론적 설명이 풍부하다. 차이점은 밑바닥 시리즈는 핵심 내용을 최대한 쉬운말로 잘 풀어내고 있다면, 이 책은 마치 전공 강의를 듣는 것처럼 엄밀한 설명에 중점을 둔다. 난 마침 기본적인 원리는 이해하고 있는 상태였기 때문에 이 책을 통해 간과하고 있던 디테일한 부분들을 짚어볼 수 있어서 좋았다.

한가지 정말 좋았던 부분은 코드의 생략 없이 구현 전체를 의미있는 단위로 잘 나눠서 담았다는 점이다. 보통 개발 서적의 예제 코드들은 핵심 내용만 책에 담고 나머지는 인터넷에서 찾아보게 하거나, 혹은 하나의 클래스나 함수가 매우 길어서 이를 부득이하게 나눠놓고 있는데 이럴 경우 예제를 그대로 구현할 시 구문 오류가 발생하여 코드를 읽기가 상당히 불편하다. 그런데 이 책에서는 하나의 함수 구현은 나누지 않고 반드시 한 단위에 포함시켰고, 구현이 길어질 클래스는 초기화 함수만 포함하고 구체적 기능을 담당하는 메소드는 별도로 정의해서 주입하는 방식으로 어떤 예제코드든 구문 오류가 발생하지 않도록 해 두었다. 어느 부분의 예제를 참고하든 작동이 가능하여 직접 실행해보며 이해할 수 있어 좋았다.

그리고 여러 딥러닝 모델을 소개하는데 그치지 않고 모델의 성능을 점진적으로 개선하는 과정을 보여주기 때문에 실무에서 적용할때도 성능이 잘 나오지 않으면 어떤 것들을 점검해봐야 하는지를 배울 수 있었다. 이런 구성이 실무에 적용할 때 많은 도움이 된다.

다만 책을 읽을 때 유의해야 할 점이 몇가지 있다. 우선 예제 코드의 완결성을 위해 채택한 방식이 실무에서 코드를 생산하는 방식과는 다르기 때문에 실제로 이용할때는 주의가 필요하다. 예제 코드들은 jupyter notebook에서 실행되는 것을 전제로 하기 때문에 코드 재사용성, 캡슐화와 같은 OOP 원칙을 아주 잘 따르고 있지는 않으므로 이 부분은 염두에 두어야 한다.

그리고 한가지 아쉬운 점이 있다면 프레임워크 없이 구현하며 배우는데 초점이 맞춰져 있지만 그래도 구현 방식이 여타 딥러닝 프레임워크의 아키텍쳐와 닮아있다면 더 좋았을 거란 생각이 든다. 예를 들어 일반적인 딥러닝 프레임워크에서는 네트워크를 학습할때 Stochastic Gradient Descent, Adam 과 같은 학습 방법을 optimizer 라는 모듈로 따로 정의하는데 이 책에서는 단순히 forward와 backward 과정 중 하나로 취급하고 새로운 학습 방법을 사용할때는 네트워크 클래스 자체를 상속하는 방식을 사용한다. 실무에서는 결국 프레임워크를 사용하기 때문에 이런 부분까지 고려가 되었다면 더 좋았을 것이다.


나는 이번에 책을 읽으면서 예제 코드를 전부 따라하기 보다는 코드를 읽어서 의도를 파악한 뒤 해당 기능을 기존 프레임워크 (tensorflow)를 사용해서 구현하는 방식으로 학습했다. 그래서 딥러닝 구현 외에 성능 향상, 데이터 정제 과정에 집중 할 수 있어서 좋은 기회가 되었다. 워낙 기본에 충실한 내용을 담고 있는 책이라서 독자의 취향대로 학습을 한다면 얻는 것이 많을 것이다.

2주 동안 읽어봤지만 사실 이해가 쉽지 않았다. 그래서 다른 책을 읽을 때보다 뭐라고 쓰기가 참 어려웠다. 하지만 이거 하나는 확실하다. 이 책은 표지에 써 있듯이 프레임워크 없이 이해를 할 수 있게 돕는 책이다. 하나씩 반복해서 하다 보면 조금씩이라도 원리를 더 알 수 있지 않을까? 하는 생각이 든다.

http://www.hanbit.co.kr/channel/category/category_view.html?cms_code=CMS6874180490

 

저자 역시 다른 특별한 프레임워크나 라이브러리를 쓰지 않고 이해를 돕기 위해 책을 썼다고 밝히고 있다. 세상의 수많은 교과서가 그렇듯 원리를 설명하는 책은 보통 재미가 없다. 하지만 이해를 하게 되면 큰 도움이 되고 때로는 어떤 일을 할 때 큰 무기가 되기도 한다. 많은 사람들이 그렇듯 나 역시 학교를 졸업하고는 수학하고는 담을 쌓고 살아 잘 읽히지 않지만, 언젠가는 이해를 할 수 있을 거란 기대를 하며 조금씩, 한줄씩 다시 읽어보려고 한다.

실습 코드가 github에 있는데, 별도 설치가 필요없어서 대부분은 실행에 문제가 없을 거 같다. 나의 경우 anaconda python3를 사용했는데 github repository를 clone하고 바로 실행하는데 아무 문제가 없었다.

https://github.com/konantechnology/academy.alzza
jupyter notebook 실행
1장 예제, http://localhost:8888/tree/codes/chap01
abalone_test.py를 실행하면 위와 같이 결과를 볼 수 있다. http://localhost:8888/notebooks/codes/chap01/abalone_test.ipynb

 

이미 수많은 도서, 강좌나 영상 자료를 통해 딥러닝에 접근할 수 있는 길은 활짝 열려있다. 하지만 지루함을 이겨내고 기본을 이해하는 일은 언제나 본인에게 달려있다. 그 길을 가는데 정말 큰 도움이 될 책이라는 점은 분명하다.

 


0. 프레임워크 없이 시작하는 딥러닝

  


일반적으로 기존의 딥러닝 책들은 텐서플로우나, 파이토치와 같이 프레임워크를 기반으로 딥러닝을 소개합니다. 그러나 이 책은 이러한 프레임워크를 배제하고, 날코딩을 통해서 딥러닝을 소개합니다. 물론 이러한 방식은 많은 노력을 요구하며, 경우에 따라 독자들은 이 책을 소화하는데 높은 인내심을 가져야만 할지도 모릅니다.  

 


그렇다고 해서 날코딩을 기존의 프레임워크보다 더 중요하다고 언급하거나, 무시하고자 이 책이 쓰여진 것은 아닙니다. 이 책에서 강조하는 것은 실전에서 딥러닝을 활용하기 위해서 정확하고 깊이 있는 지식이 필요하다는 점입니다. 프레임 워크에서 단순히 옵션으로 하는 설정들을 이 책은 실제 구현을 통해 동작원리 파악하고 그 차이점을 이해시키는데 집중합니다.  

 


즉 저자는 날코드를 작성하는 번거러움을 마다하지 않고, 깊이있는 지식을 원하는 독자들을 위해, 보다 세세한 딥러닝에 대한 설명을 이어갑니다.

  


1번그림.jpg

 

1. 단순 퍼셉트론에서 고급응용구조 까지 


이 책은 날코딩이라고 해서 단순한 구조를 중심으로 설명하지 않고, 다층, 합성곱, 순환, GAN에 이르기 까지 다양한 학습모델을 실제 구현을 통해 설명하는 점이 가장 큰 특징입니다. 특히 객체지향적인 개념을 적용해 함수를 통해서, 단원마다 코드를 재활용할 수 있도록 책의 구성해 놓았습니다. 이러한 점은 코드 해석에 소요되는 시간을 최소화하고, 딥러닝에 대한 학습의 뼈대를 독자가 자연스럽게 익힐 수 있도록 지원합니다.  

2번그림.jpg

 

 2. 이론의 충실함 

 


딥러닝을 공부할 때, 항상 부딪치는 부분은 책에서, 이론적 배경에 대해서 설명이 여전히 약하다는 점 입니다. 물론 책들은 나름대로, 많은 지면을 할애하면서 많은 노력을 기울이지만, 항상 전반적인 동작방식을 설명하고, 세부적인 내용에 대해서는 독자들에게 맡기는 것이 현실입니다. 그러나 이 책은 실습이 존재하는 코드가 존재함에도 불구하고, 이론적 배경설명에 충실하며, 되도록 상세한 설명을 하고자 노력합니다.

  

 

3번 그림.jpg

 

3. 깊이 있는 딥러닝 공부를 하고자하는 독자들에게... 


이 책은 실제, 딥러닝을 공부하면서, 무심코 설정하거나, 실행했던 파리미터들의 의미를 실제 몸소 익히는데 매우 유익한 책이라고 생각합니다. 특히 공부할 때 왜~라는 의문을 지니면서 코드를 발아보며 학습하는 학생들에게는 매우 유익한 책이라는 생각이 듭니다. 특히 이책을 정말 정독하고, 몸에 익힌다면, 스스로 딥러닝에 대해서는 기초가 매우 잘 갖쳐줘 있다고 해도, 과언이 아닐것 같네요. 하지만, 이 책은 그 만큼 많은 시간을 들여야 하며 노력이 필요하다는 점 또한 사실입니다. 제 견해로는 입문서들과 함께, 이 책을 같이 보면, 굉장히 도움이 될 것 같다는 생객을 개인적으로 해보았습니다. 또한 주의해야할 점은 이 책은 프레임워크를 사용하지 않으라는 것이 아니라, 프레임워크를 보다 더 잘 이해하고 사용할 수 있는 이론적 배경을 제공한다는 점을 꼭 참고하시면, 올바른 선택을 하실 거라 생각이 듭니다.

 

 

 

 

 

 

cover.png

 

 

표지

날코딩?

개인적인 감정에 불과할 지 모르지만, 필자는 “날코딩”이라는 단어에서 알 수 없는 신뢰감이 생기기 시작하였다. “날코딩”이 가능하다는 것은 그 분야에 대한 거의 모든 것들을 알고 있으면서 활용할 줄도 안다는 말이기 때문이다. 그리고, 필자는 “날코딩”으로 딥러닝 알고리즘의 구현은 커녕 프레임워크를 사용하는 것도 버거워 하였다.

원리를 완벽하게 박살내야 내 것이 된다

앞서 이야기 하였듯 필자도 일전에 딥러닝, 머신러닝에 대해 어렴풋이 듣고 프레임워크를 활용하여 사용 해 본 적이 있지만 그러면서도 이게 어떤 방법으로, 어떤 과정을 거쳐서 작동되는지 명확하게 알지는 못 하였다. 그런 중에 필자의 눈에 이 책이 들어온 것이다. 표지에서 가장 눈에 띄는 카피, “원리를 완벽하게 박살내야 내 것이 된다” 를 보고 필자는 스스로가 아직까지도 딥러닝을 본인의 것으로 만들지 못 한 이유가 무엇인지에 대해 생각하였다. 그리고 그리 긴 시간이 지나기 전에 답을 찾게 되었다. 필자는 프레임워크를 사용할 줄 알았던 것이지 딥러닝에 대해 알고 있는 것이 아니었다. 이 책에서는 프레임워크를 사용하지 않고, 스스로 퍼셉트론을 구현하고 여러 층으로 구성 된 신경망을 만들 수 있도록 도와준다.

내용

기초부터 탄탄히 다지고, 쌓아나가는 구조

이 책은 표지에서 이야기 한 것과 같이 프레임워크는 사용하지 않고, 기초부터 모든 것들을 직접 짜볼 수 있도록 한다. 이를 통하여 필자는 딥러닝 알고리즘이 어떻게 구동하는지 직접 손으로 알 수 있게 되었으며, 더 나아가 프레임워크도 자유자재로 사용할 수 있게 하여 이 책 덕분에 알 수 있게 된 지식들을 활용하여 조금 더 효율적인 방식으로 개발을 할 수 있게 되었다.

시나리오 기반의 문제 해결 능력 트레이닝

이 책의 본문 속에는 ‘이진 판단’, ‘선택 분류’, ‘다층 퍼셉트론 모델 구조’ 등의 다양한 기술들을 활용해야 하는 시나리오를 “천체의 펄서 여부 판정 신경망”, “철판 불량 상태 분류 신경망”, “꽃 이미지 분류 신경망”을 통하여 우리에게 실제로 적용될 수 있는 지식을 전해주기 위하여 노력하였으며, 이를 통하여 문제 해결 능력을 신장할 수 있었다고 생각한다.

결론

이 책은 딥러닝에 관심을 가지고 있는 거의 모든 독자가 읽어야만 하는 책이라는 생각이 들 정도로 필수적이면서도 기초적인 내용을 충실히 담아내고 있다. 누구든 딥러닝 기술에 대해 알고 싶은 열정만 있다면 파이썬의 기초 문법만 배우고도 이해하는 데에 무리가 없는 속지의 내용에 그러면서도 중요한 이론은 빼놓지 않고 모두 알려주는 충실한 정보들이 필자가 이러한 판단을 한 이유가 아닐까 생각된다. 진심으로 주변 사람들에게 추천하고싶다는 생각이 든 몇 안 되는 책이라고 자신있게 말할 수 있을 정도며, 그러한 이유로 본 리뷰의 독자들에게도 이 책을 적극 추천하는 바이다.

 

[포맷변환]S600IMG_7947.png

 

 

딥러닝이나 기계학습과 같은 인공지능은 IT에서 가장 핫한 트랜드다. 그만큼 많은 이들이 관심을 가지고 연구하며 공부하는 파트다. 시중에도 그 열기를 반영하듯이 많은 책들이 나와있다. 그런데 아쉬운 점은 대부분의 책들이 입문의 수준이거나, 간단히 바로 응용해서 쓸 수 있는 인공지능 프레임워크를 이용한 내용들이 주를 이루고 있다. 이런 책들이 인공지능의 대중화를 이끌고, 입문의 턱을 낮춘다는 면에서는 아주 좋은 취지일 수 있으나, 딱 거기까지다. 


인공지능의 심부를 파고들어, 본질적인 이해를 하기에는 턱없는 수준이다. 좀 더 창조적인 응용과 새로운 아이디어를 얻기에는 한계가 있다. 그러나 그만큼 이런 레벨의 책들은 전문성이 높아지기에 출판이 잘 안되는 편이다.


그런데 마침 잘 만들어진 딥러닝 책이 한 권 눈에 들어와 소개하려고 한다. 검색엔진, AI 업체 코난테크놀로지의 임원인 윤덕호 저자의 '파이썬 날코딩으로 알고 짜는 딥러닝'이라는 책이다. 


중,고급 레벨을 대상으로 하는 책이다. 책 속에 자세히 인공지능, 딥러닝에 대해서 얘기하고 있으나, 분명, 초급이나 입문자에게는 맞지 않는 책이다. 그렇지만, 딥러닝에 대한 이해가 어느 정도 되어 있는 사람이라면, 지지부진한 진도에 벗어나 날개를 달고 날아 다닐 수 있게 도와주는 책이다.




[포맷변환]S600IMG_7949.png

 

이 책은 전체 15장으로 나눠져 있고, 단층 퍼셉트론, 다층 퍼셉트론, 합성곱 신경망, 순환 신경망, 고급 응요 구조라는 5개의 큰 파트로 나눠 설명을 하고 있다. 책 구성과 내용이 단계적으로 차례차례 높아지고 있어서, 전반적으로 딥러닝을 아는 경우가 아니라면, 1장부터 순서대로 보는 것이 좋다.


 

[포맷변환]S600IMG_7951.png


'파이썬 날코딩으로 알고 짜는 딥러닝'이 다소 어렵게 느껴질 수 밖에 없는 이유는 책을 완벽히 이해하기 위해서는 어느 정도 갖춰진 수학적 지식이 필요하기 때문이다. 내용 초반과 중간 중간에 선형대수나 편미분, 확률통계를 활용하고 있고, 전에 접하지 못했던, 생소한 공식들도 더러 보이기까지 한다. 물론 자세한 설명이 되어 있지만, 편미분 기초나 통계 기초까지 가르쳐 주지는 않는다. 따라서 이해가 힘들거나 모르는 수학 부분은 따로 공부해줄 필요가 있다.



아울러 파이썬도 프로그래밍 할 줄 알아야 한다. 책 초반에 코드 한 줄, 한 줄 이게 무슨 역할을 하는 코드인지 자세히 설명을 해주고 있으나, 파이썬 문법을 따로 알려주는 않는다. 파이썬 역시 기본은 되어 있어줘야 어려움 없이 읽을 수 있는 책인 것이다.


이해를 위해, 이렇게 여러가지 기본 준비가 되어 있어야 하므로 초보가 보기에는 힘들다고 한 것이다. 나 역시도 모르는 부분이 많아서 다른 책을 봐가면서, 이 책을 봐야했다. 어려운 부분은 진짜 어려웠다. 그만큼 진도가 잘 안 나가는 면도 있었으나, 그래도 책을 놓지 않게 만드는 이유는 딥러닝을 진짜로 제대로 파고 있구나 하는 느낌을 받아서 그렇다.


프레임워크나 인공지능 툴 같은 것을 이용하면, 데이터만 넣고서도 결과를 쉽게 확인할 수 있지만, 그 안에서 어떻게 처리해서 이런 결과가 나온 것인지, 모르므로 답답함도 있고, 이것이 제대로 된 것인지 의심마저 들기도 했다. 반면, '파이썬 날코딩으로 알고 짜는 딥러닝'처럼 아예 소스 레벨로 내려가 제목처럼 일일이 날코딩을 한 것들 보면, 효율성을 떨어져 보일 수 있으나, 하나하나 과정을 들여다 볼 수 있어서, 후련함도 느끼게 되고, 코드를 보며, 알고리즘 개선 아이디어도 떠올리는 나를 보게 된다.



각 장에 나오는 예제들도 좀 독특하다. 전복 나이 추정, 천체 펄서 판정, 철판 상태 분별 같은 것은 의외로 재미있었다. 꽃이나 숫자 이미지 분별과 같이 딥러닝 책에 많이 나오는 주제도 함께 다루는데, 앞에 말한 주제들은 뒤에도 계속 언급되므로 앞에서 확실히 알고 있어야 한다.


'파이썬 날코딩으로 알고 짜는 딥러닝'은 거의 700쪽에 달하는 딥러닝에 대한 참 많은 내용을 담고 있는 책이다. 딥러닝 지식을 몇 레벨 올려줄 책이라 생각되어서 그런지, 어렵지만, 완전히 이해해보고 싶다는 도전을 불러 일으킨다. 인공지능, 신경망, 딥러닝 모질게 제대로 익혀보고 싶은 분에게 적극 추천하는 책이다.


Screen Shot 2019-09-15 at 11.17.00 PM.png

파이썬 날코딩으로 알고 짜는 딥러닝

 

 

딥러닝에 대해 깊게 배울 수 있고 원리나 적용된 수학이론등을 제대로 배울 수있는 책입니다.

 

하지만 딥러닝 처음 접하시는 분들한테는 매울 어려울 수 있으니, 입문서로는 추천하지 않습니다.

 

저는 딥러닝으로 프로젝트 몇개 진행해본적 있는데, 당시 Tensorflow나 Tensorflow의 wrapper인 keras를 주로 사용했습니다.

 

위의 라이브러리를 사용하면 모델을 구성하는 일은 매우 쉽지만, 사실 어떤 원리로 구성되어 있다던가

 

제대로된 학습방식 매커니즘등을 잘 알수가 없어 완성도 높은 모델을 구현하기 힘들었습니다.

 

하지만 이 책에서는 완전 밑바닥부터 하나하나 직접 만들어가며 딥러닝 모델을 구현하고 있으므로,

 

딥러닝 모델 구성 이론부터 학습, 오류수정 등의 알고리즘을 직접 구현해보며 많은 것을 배울 수 있었습니다.

 

텐서플로 등의 라이브러리를 통해서만 딥러닝을 구현해 보신분께 꼭 추천해 드리고 싶은 책입니다.

 

SE-d42ccc3b-1431-408f-b487-757849005841.jpg

 

 

딥러닝이 무엇인지 가볍게 보고 싶은 사람들에게는 추천하지 않는다.

책의 서론에서도 나와있듯이 이 책의 대상 독자는 다음과 같다.

 

1. 딥러닝 알고리즘의 동작 원리를 제대로 알고 싶은 개발자

2. 딥러닝 알고리즘을 제대로 이해하는 공부를 하고 싶은 딥러닝 입문자

 

2번째 항목에서 딥러닝 입문자라고 명시되어 있기는 하지만 책을 읽어본 바로는 입문자용이 아니였다.

유튜브에 '알파고? 정말 쉬운 머신러닝 기초개념' 이라는 제목으로 올라온 영상이 하나 있다.

포프님 영상인데 2시간 짜리지만 머신러닝이 이런거라고?! 라는 생각에 허망함을 느끼게 될 것이다.

 

다시 본론으로 돌아와서 이 책은 입문자용 책이 아니다.

적어도 딥러닝에 손을 대기 시작한 개발자 혹은 대학원생용이라고 보는게 옳다고 본다.

그도 그럴 것이 딥러닝의 기초 배경에 수학적 개념이 어마어마하게 들어가는데 다음과 같은 내용이 책에 계속해서 나온다.

 

SE-5ad3e027-2839-46c3-9c39-e794f69c5291.jpg

 

사실 그렇게 어려운 내용의 수학은 아니지만 적어도 위의 수식을 보자마자 기겁을 할 정도라면 이 책은 절대 추천하지 않는다.

반대로 개발자 혹은 대학원생들에게는 적극적으로 추천하는 바이다.

프레임워크를 이용해서 딥러닝이 이런 것이다라는 책은 널렸지만 기본 개념서는 거의 없었다.

있다 하더라도 해외 원서였기에 읽는데 시간이 오래 걸렸다.

 

이 책의 가장 좋은 점은 번역서가 아닌 국내 교수님께서 직접 지필하신 책이라는 점이다.

따라서 문장의 흐름에 어색함 없이 쉽게 읽을 수 있었다.

그러나 책을 완독하기에는 아직 내 실력이 많이 부족하기에 시간이 오래 걸릴 것 같다.

컴퓨터 그래픽스를 공부하고 있는 학생으로써 Gan까지 빨리 공부하고 싶지만 해야될게 너무 많다.

마지막으로 이 책에서 구현하는 예제 프로그램들 순서도를 보여주고 이번 리뷰를 마무리 하도록 하겠다.

 

SE-1570b15f-daf5-4708-a334-0d727b43ef91.jpg

 

 

머신러닝, 딥러닝 알고리즘을 사용하다보면 내부를 이해하지 못한채 사용할 때가 종종있다. 일단 사용하고는 보지만 내부 알고리즘을 이해하고 사용하면 각각의 파라메터 옵션이 어떤 것을 의미하고 좀 더 좋은 성능을 낼 수 있도록 작성할 수 있을 것이다.

이미 잘 만들어진 알고리즘을 사용하더라도 파이썬의 자기호출 기능 등을 사용하면 소스코드를 볼 수도 있지만 라이브러리에 따라 소스코드 보기가 제공되지 않을 때도 있다.

또, 딥러닝을 이론적으로 학습하고 라이브러리를 통해 배우다보면 원리를 이해하기 어렵기도 한데 이 책은 한줄한줄 작성하며 코드를 이해할 수 있도록 되어 있다.

또, 가장 중요한 부분이 소스코드가 잘 공개되어 있는지에 대한 것이 중요한데, 아래의 URL에서 이 책의 소스코드를 확인할 수 있다. KONANtechnology/Academy.ALZZA: 교재 연습을 위한 자료를 다운받으실 수 있습니다.

전복 데이터를 불러와 학습, 데이터세트를 나누고 순전파, 역전파 함수를 정의한 후 정확도를 계산해 보는 코드다.

프로그래밍 책은 코드를 돌려보면서 읽는게 가장 좋다고 생각하는데 바로 돌려볼 수 있도록 실습 코드가 잘 작성되어 있다. 수치계산은 대부분 NumPy를 사용하는데 이 책을 읽을 때 NumPy에 대한 기본적인 이해를 필요로 한다. 이런 수치계산에 대한 설명은 책에서 자세한 수식과 함께 친절하게 설명을 해주고 있으나 어느정도 난이도는 있는 편이다. 처음부터 딥러닝을 이 책으로 공부하는 것도 좋겠지만 나 처럼 라이브러리를 사용하다가 이 책을 보면 그동안 궁금했던 내용들을 해소할 수 있기도 했다. 어떤 방식이든 딥러닝을 밑바닥부터 이해하고 학습해 볼 수 있는 좋은 책이다.

그리고 중요한 이론들에 대해 짤막한 삽화를 통해 이해할 수 있도록 구성되어 있으며 다양한 예제와 데이터셋도 이 책의 장점 중 하나다. 데이터셋도 각각의 폴더에 다운로드 받을 수 있는 경로가 data폴더의 readme.md 파일에 자세하게 안내되어 있다. 또, 이미지, 소리 등 다양한 종류의 데이터셋을 활용한 점도 이 책의 장점중 하나다.

방대한 양을 다루고 있고 또 친절한 설명까지 저자의 엄청난 내공을 느낄 수 있는 책이었다.

딥러닝의 기초이론부터 내부 수학적 표현까지 이해할 수 있도록 친절하게 구성되어 있는 점이 인상적이고 딥러닝에 입문하는 사람이든 이미 다른 라이브러리나 패키지를 사용했던 사람이든 원리를 이해하고 활용할 수 있는 점이 좋았고 최근 2주동안 열심히 봤는데 앞으로도 자주 보며 참고할 것 같다.

  •  

 

IMG_0173.JPG

 

 

 

요즘은 딥러닝 관련 서적들만 읽는 것 같다...

뭐 암튼 한빛미디어에서 나온 또 다른 밑바닥 딥러닝 책이 나왔다. 그래서 바로 신청해봤다!! 표지는 뭐 만화같은 느낌이 난다.

IMG_0174.JPG

책을 보니까 거의 밑바닥 딥러닝 책이랑 비슷했었는데, 번역도서가 아니라서 그런지 더욱 이해하기 수월했다. 수학적인 부분들이나 딥러닝에 사용된 함수, 수식들을 설명해주고 실제로 코딩하는 단계로 넘어가는 식의 구성으로 되어있었다. 다양한 예시를 들어주면서 이게 왜 필요한지에 대해서 알려주고 있으며 구체적인 예시를 들어서 설명해주기 때문에 잘 납득할 수 있었다.

이 책은 주피터 노트북을 기반으로 다양한 딥러닝 모델을 직접 짜는 것을 볼 수 있다.기본적인 수학 모듈외에 딥러닝과 관련된 모든 부분을 코딩으로 짰다. 허미..

이 책의 또한 좋은 점은, 딥러닝 기법들을 많이 알려주고 있다는 것이다. 기본적인 FFNN외에 CNN, RNN, GAN등을 모두 직접 구현하면서 구조를 이해할 수 있으며 네트워크 구조 외에 드롭아웃이나 Regularization이나 Normalization에 대해서도 알려주고 있다. 기존에 있었던 유명 CNN네트워크들을 소개하면서 그 구조와 구조가 가지는 의미에 대해서도 설명해주고 있어서 따로 논문을 보지 않아도 이해할 수 있도록 자세히 설명해주고 있다는 점이 놀랍다. 그래서 그런지 책이 꽤 두껍다.,

암튼 딥러닝이 그냥 매직박스 처럼 여기어졌다면 이 책을 보면서 한번 바닥부터 짜보면 딥러닝을 이해하는데 큰 도움이 되지 않을까 한다.

파이썬 날코딩으로 알고 짜는 딥러닝

윤덕호 지음

코난아카데미딥러닝교재

 

설명: 파이썬 날코딩으로 알고 짜는 딥러닝

 

원리를 완벽하게 박살내야 내 것이 된다!

 

저자는 인공지능 이론적 지식을 기반으로 수년 간의 현장 경험을 체계적으로 집대성한  파이썬 날코팅으로알고 짜는 딥러닝이라는 딥러닝 개발자들에게 실전에서 겪을 수 있는 난제들을 해결하는데 필요한 원리를 파이썬 예제 풀이로쉽게 이해하도록 설명해 준 책을 집필해 주었다.

회사 직원들의 교육프로그램인코난아카데미교재로 활용하여 검증된 내용들을 딥러닝 업무에 종사하는 직장인 및 딥러닝 분야에 관심을 갖고 공부하는 학습자에게 큰 혜안을 갖도록 이끌어줄 수 있는 길잡이 역할에 충실하다. 그러나 내용이 쉽지 않다는 점을 알고 천천히 딥러닝 전문가로서의능력을 키우기 위해 집중하여 노력할 필요가 있다고 본다.

 

이 책의 목표는 독자가 딥러닝 알고리즘의 원리를 깊이 있게 이해하여 활용 능력을 갖추도록 돕는 데 있다. 각 장은 이론을 제시한 후에 파이썬으로 예제 프로그램을 구현하고 실험을 수행하는 과정을 차근차근 소개한다.

케라스나 텐서플로 같은 프레임워크를 이용하지 않고 파이썬 날코딩만으로 딥러닝의 모든 문제를 풀어내는  예제가 이 책의 큰 특징이다. 이들 예제 프로그램을 꼼꼼하게 설명한다. 또한 실험 과정을 재현하고변형해 활용하기 쉽게 구성했다. 예제 프로그램을 살펴보면서 그동안 편리한 프레임워크에 가려져 이해하지못한 채 지나쳤던 딥러닝의 동작 원리를 확실하게 알게 된다. 이렇게 길러진 이해를 토대로 프레임워크없이도 직접 딥러닝 신경망을 개발하는 능력을 갖추게 될 것이다. 동시에 역설적으로 숨은 동작 원리를간파하게 됨으로써 프레임워크를 더 잘 이용하게 된다.

예제에서 다루는 다양한 데이터셋은 이 책의 또 하나의 매력이다. 각종인공지능 챌린지 대회가 펼쳐지는 캐글 플랫폼에서 수집한 실전 데이터셋은 딥러닝 모델의 활용 범위에 대한 상상의 지평을 넓혀줄 것이다. 전복 나이 추정, 천체 펄서 여부 판정, 철판 불량 상태 분류, 꽃 사진 이미지나 도시 소음의 분류 등의문제를 캐글 데이터셋을 이용해 다룬다. 이 밖에도 사무용품 이미지들로 구성된 오피스31 데이터셋, 필기체 문자 이미지를 모은 엠니스트(MNIST) 데이터셋을 비롯해 영화 동영상 파일, 회화 이미지 파일, 오토마타 문법 등 다양한 종류의 데이터셋을 예제 프로그램에서 사용한다.

여러분이 자신만의 새로운 딥러닝 신경망을 개발하고, 딥러닝을 넘어서는인공지능의 또 다른 지평을 향해 나아가는 첫걸음에 이 책이 도움이 되기를 기대해본다.

 

이 책의 대상 독자

이 책의 대상 독자는 크게 두 부류다. 첫 번째는 텐서플로 같은 프레임워크를사용해 딥러닝에 입문했지만 여전히 딥러닝 알고리즘의 동작 원리를 제대로 이해할 수 없어 답답함을 느끼는 기존 딥러닝 개발자다. 두 번째는 딥러닝을 새로 배워보려 하지만 기왕이면 수박 겉 핥기식 공부보다는 딥러닝 알고리즘을 제대로 이해하는공부를 하고 싶은 딥러닝 입문자다.

 

이 책의 예제 소스

이 책에서 소개하는 모든 예제 프로그램은 주피터 노트북을 이용해 작성했다. 각장마다 독립된 예제를 소개하며, 각 예제를 주피터 노트북의 셀에 해당하는 두 가지 코드 블록, 즉 구현 코드와 실행 코드 단위로 자세히 설명한다. 이들 예제 프로그램들과데이터셋은 저자의 깃허브 계정과 한빛미디어 홈페이지에서 내려받을 수 있으며 각자의 개발 환경에 설치된 주피터 노트북을 이용해 손쉽게 동작을 재현하고실습할 수 있다.

 

이 책은 총 5부로 구성되어 있다.

1부와 2부에서는 딥러닝신경망의 기본 구조인 단층 퍼셉트론과 다층 퍼셉트론을 소개한다.

3부와 4부에서는 이미지데이터나 시계열 데이터 처리에 특화된 고급 딥러닝 신경망 구조인 합성곱 신경망(CNN)과 순환 신경망(RNN)을 살펴본다.

마지막으로 5부에서는 딥러닝의 응용구조로서 오토인코더, 인코더-디코더, 생성적적대 신경망(GAN)의 원리와 구현 방법을 알아본다.

각 부는 3개의 장으로 구성되어 있으며, 각 장은 점차 심화되는 내용으로 긴밀하게 상호 연결되어 있지만 각각 독립적인 예제를 제공한다. 각 장은 이론적 배경을 소개하고 나서 예제 프로그램을 구현한다. 마지막절에서는 예제 프로그램 실행 결과를 검토한다.

 

이 책은 딥러닝 알고리즘에 기반을 둔 각종 신경망을 구현하는 방법을 소개한다.딥러닝 알고리즘의 원리와 각종 신경망의 특성을 심도 있게 다루면서도 실제 동작하는 예제들을 제시한다.

시중의 많은 책이 딥러닝을 간단히 소개하고 프레임워크 기반 예제를 보여준다. 이런책으로 공부하면 빠르게 구현해 신경망 작동을 확인할 수 있어 공부하는 맛도 난다. 그런데 막상 딥러닝알고리즘을 이용해 실제로 이용할 신경망 프로그램을 작성하다 보면 어느 순간 막히게 된다.

실전에서는 더 깊은 지식이 필요하기 때문이다.

프레임워크로 빠르게 딥러닝을 배우는 책은 이미 많다. 반면 이 책은기존 책과 다르게 프레임 워크를 버리고 파이썬 날코딩으로 딥러닝을 배운다. 다른 책이 채워주지 못하는더 깊은 이야기를 제대로 담으려면 파이썬 날코딩이어야 하기 때문이다. 그래서 이 책은 상대적으로, (어쩌면 굉장히) 어렵다.

행여 프레임워크로 배우는 책을 업신여기거나 깍아내리려는 의도로 오해하지 말자.기존 책과 이책은 상호보완적이라는 말을 하고 싶은 거다.

아무쪼록 각자의 신경망 프로젝트 구현에 필요한 구체적인 딥러닝 동작 원리와 구현 방법을 속속들이 알아 가기 바란다.

 

이 책에서 구현하는 예제 프로그램들은 

단층 퍼셉트론(회귀 분석 출력, 이진판단 출력, 선택 분류 출력),

다층 퍼셉트론(은닉 계층, 객체지향구조, 복합 출력 아담 알고리즘),

합성곱 신경망(합성곱 계층, 폴링계층, 정규화 기법, 거대 심층 구조),

순환 신경망(단순 순환 계층,LSTM, CNN + RNN), 

고급 응용구조(오토인코더, 인코더디코더, 생성적 적대 신경망) 이다.

 

이 책의 예제에서 이용하는 데이터셋

5, Dataset(AbaloneDataset,PulsarDataset, PulsarSelectDataset, SteelDataset, FlowersDataset)

6,Office31Dataset,

9, DummyDataset,

10,AutomataDataset

11,UrbanSoundDataset

12,VideoShotDataset

13,AutoencoderDataset, MnistAutoDataset,

14,EndecDataset(MnistAutoDataset, MnistKorDataset),

15,GanDataset(GanMnistDataset, GanPictureDataset),

 

 

 

 

 

KakaoTalk_20190902_181906128.jpg

 

전체적으로 개념위주의 설명을 통해 읽는 독자로 하여금 이해를 목적으로 하는 설명이 눈에 띈다.

예를 들면 손으로 대충 그린듯한 친근한 삽화,

중간 중간 박스로 구성된 내용 정리,

코드 한줄 한줄 번호를 메긴 설명문 등이 그렇다.

 

이미 딥러닝에 대해 살짝 공부한 입장에서 이책은 매우 유익하였으며 

기존에 빠르게 훓고 지나갔기 때문에 미쳐생각하지 못했던 부분이나 궁금했던 부분,

그리고 생각하지 못했던 부분까지 충분히 폭넓은 내용으로 커버할 수 있다. 

 

그래도 비전공자 또는 처음 입문하시는 분에게는 약간 어려울 것 같은 생각이 든다. 

특히 전문적인 용어에 대한 이해가 없다면 다소 힘들게 느껴질 수 밖에 없을것 같다.

 

이 책의 또 다른 특징으로 중간 중간 예제도 학문적인 예제라는 느낌이 아닌 

실무라는 느낌이 들 정도의 예제들이 색다른 부분이기도 하다.

 

이번에 리뷰할 책은 "파이썬 날코딩으로 알고 짜는 딥러닝" 입니다.

 

 

검색엔진/AI업체인 코난테크놀로지에 다니는 분이 쓴 국내저서입니다.

 

퍼셉트론부터 시작해서 CNN,RNN,AutoEncoder,GAN등을 680여 페이지에 다룹니다.

 

numpy등 아주 기본적인 라이브러리를 제외하곤 직접 시그모이드, 소프트맥스, 미분함수등을

 

하나씩 만들어서 신경망 프로그램을 작성한다는 점에서 "밑바닥부터 시작하는 딥러닝"과 어느정도

 

비슷한 위치의 책인거 같습니다. (텐서플로는 사용하지 않으므로 주의하시기 바랍니다.)

 

 

각 챕터별 도입부는 전챕터에서에서 부족한 부분이 무엇이었고, 이를 극복하기 위해 새로운 구조나 이론등을

 

소개하는 형태로 되어있습니다. 도입부의 설명은 꽤 충실한 편인데 이야기뿐 아니라 중간중간 "시그모이드 쿄차 엔트로피 정의식 도출과정",

 

"L1손실의 역전파 처리", "쌍곡탄젠트의 수학적 성질" 등과 같은

 

각종 수식과 도출과정들이 잘 정리되어 있어

 

입문자보다는 어느정도 텐서플로도 좀 사용해 본 사람이 추상화된 내부로직등에 궁금증을 갖게 되었을때 원리를 이해하는데 도움이 될 거 같습니다.

 

저는 ... 졸업한지가 오래되서 수식만 나오면 책 진도가 안나가더군요.-_-

 

 

프로그래밍적으로는 단순히 하나의 함수를 만들고 호출하는 형태에서 부터 시작해 기본적인 신경망 처리 흐름 얼개를 만든 뒤

 

객체지향방식으로 구현하는 형태로 되어있고,

 

따라서 단원마다 새로운 내용을 배우지만 메소드명이나 흐름등은 이미 어느정도 정해진 상태에서

 

구현만 달라지는 형태라서 변경된 부분만 집중해서 볼 수 있어 좋았습니다.

 

 

그결과 학습결과가 좋지 않아 신경망을 바꾸거나

 

학습률을 바꾸거나 은닉층을 늘려보거나 할때 이를 쉽게 해주어 여러가지로 유연하게 확장해서 쓸 수 있도록 되어 있습니다.

 

 

케글의 데이타셋이나 mnist등의 데이타가 사용되는데 앞으론 우리나라도 쓸만한 공공데이타셋들이 많아져서

 

그런 데이타를 사용한 예제나 챕터들이 포함된다면 좀 더 친숙하게 볼 수 있지 않을까

 

직접 작성하는것도 좋긴한데 나중에라도 텐서플로를 쓰게 된다면 이 책에 쓰인 프로그램과 어떤 형태로 같이 쓰는게 좋을지도 고민해 볼 사항인거 같습니다.

 

 

SAM_8257.JPG

 

어떤 책이 나한테 가장 좋은 책일까요?
저는 저한테 가장 많은 영향을 준 책, 특히 사고의 전환 필요성을 환기시켜주는 책을 가장 좋아합니다. 물론 나에게 모르는 것을 많이 알려주는 책도 좋아하구요.

 

이번에는 "파이썬 날코딩로 알고 짜는 딥러닝"  책을 읽었습니다. 요즘 딥러닝 관련 책들이 많이 나오고 있죠. 나오는 책들과 트렌드를 볼때 생각이 많아집니다. 비개발자 취업 준비생 입장에서는 딥러닝 공부 방향을 어떻게 잡아야 하느냐라는 페이스북 글을 며칠전에 읽었는데, 저의 책 후기가 어떠한 영향을 미칠지 조심스러워집니다. 머신러닝의 트렌드가 Auto ML 로 많이 바뀌는 과정에서 어느 정도까지 공부하는 것이 적절할까? 라는 질문을 늘 저한테 하고 있구요. 그래서 이번 책 후기는 책 내용뿐만 아니라, 딥러닝에 대한 제 생각도 조금씩 넣어보기로 했어요.

 

SAM_8258.JPG

 

이번 날코딩 책은 일단 양이 어마어마합니다. 거의 똑같은 취지의 파이썬 날코딩 책으로 "밑바닥부터 시작하는 딥러닝" 책이 있죠. 딥러닝을 처음 시작한다면 김성훈 교수님 강의와 함께 전 이 밑바닥 책을 추천드립니다. 300 페이지랑 700 페이지랑의 책 두께가 실로 엄청납니다. 사실 밑바닥 책도 그 깊이가 결코 낮은 수준이 아닙니다. 그러면 도대체 700 페이지는 어떤 내용을 담고 있길래, 양이 이만큼 늘어났을까요? 늘어난 만큼 그 깊이가 비례해서 늘어났을까요?

 

SAM_8259.JPG

 

책의 목차를 보면, 하나의 짧은 주제에 대해서 2~5 페이지씩 할애하고 있습니다. 한 페이지의 글자도 밑바닥보다 많습니다. 똑같은 내용을 2~3배 더 많게 적고 있다는 이야기입니다. 그리고, 이 책의 가장 중요한 특징 중 하나인 캐글에 대해서 이야기하지 않을 수 없습니다. 보통 데이터 분석쪽으로 일하거나 어느 정도 실력이 쌓이면 캐글 이라는 것을 한번씩 듣게 됩니다. 캐글이 실제 기업의 문제로 순위 경쟁을 하는 문제 풀이 대회이므로, 보통 책에서 다루는 일반적인 딥러닝 문제와는 사뭇 다릅니다. 그 점에서 이 책의 의도가 좋습니다. 우리가 생각할 때 도메인(각 산업분야) 지식이 없어서 못 풀 것 같은 문제들을 기본 예제로 삼고 있습니다. 이점에서 이 책을 읽으면서 저도 좀 고민이 되었습니다. "이는 오히려 딥러닝 같은 데이터 기반의 인공지능 기법이 문제 내용을 이해하지 못해도 문제를 풀 수 있다는 중요한 사실을 확인하는 기회가 될 것이다"라고 저자가 이야기 하듯이, 도메인 지식이 얼마나 중요할까요? 저는 지금까지 매우 중요하다고 말하고 다녔는데(특히 auto ml 로 트렌드가 변하면서 모델링보다는 전처리 같은 앞단과 시각화 같은 마무리단이 비개발자 영역에서는 더 중요하지 않을까 생각했다), 저자의 이말에 동의할 수 있을까? 하는 마음에서 책을 읽어내려갔습니다.

 

SAM_8261.JPG

 

위 이미지에서 보듯이 전반적으로 그림보다는 설명글이 더 많습니다. 적절하게 그림으로 보조 설명하기도 하지만, 밑바닥보다는 그림이 적다는 느낌입니다. 중간 중간에 설명 그림이 더 있었으면 좋겠다는 생각이 들었습니다. 페이지 양이 밑바닥 책보다 늘어난 만큼 정보가 늘어났다기 보다는 설명을 더 상세하게 한다는 편이 맞는 것 같습니다.

 

SAM_8262.JPG

 

이 책이 날코딩으로 딥러닝을 설명하다가 보니, 소스 코드의 중복이 많습니다. 그래서 저자는 함수로 묶어서 설명합니다. 읽다가 보면, 같은 이름의 함수가 반복적으로 나온다는 것을 알 수 있습니다. 그래서 앞에서 소스 코드 자세히 설명한 다음, 뒤로 가면 중복되는 부분은 빼고, 수정한 부분만 설명하고 있습니다. 그림으로 보면 매우 복잡한 것 같지만...

 

SAM_8263.JPG

 

하나 하나 소스 코스를 상세히 설명하였으므로, 어렵다는 생각은 들지 않습니다. 다만, 파이썬 기초가 없으면 복잡할 수도 있습니다. 파이썬 초급은 공부하고, 중급 정도를 공부하시는 분들이 봐야 쉽게 이해가 갑니다. 어떻게 보면 함수가 반복되면서 여러번 반복 학습을 하는 효과도 나타납니다. 이름과 흐름은 같고, 구체적인 내용이 어떤 문제를 해결하기 위한 것이냐에 따라 함수의 내용이 조금씩 바뀝니다. 실제 데이터의 모습도 스크린 샷으로 보여주기 때문에, 캐글에서의 여러 특성들이 어떤 모습으로 수치화되었는지 살펴볼 수 있습니다. 캐글 문제의 데이터 구조와 파이썬 구조 결정 팁들도 실어 놓아서, 실제 문제를 어떻게 바라봐야하는지 알 수 있습니다. 그리고 이 책의 좋은 점 중의 하나가 설명 과정이 비슷하게 전개될때 이 함수랑 저함수랑 무엇이 같고 다른지 궁금해할 수 있는 사소한 의문점들에 대해서도 많이 기술해 놓았다는 점입니다. 스터디할 때 초보분들이 질문했던 의문점들이 이 책에 수록되어 있는 것을 보고 감탄하였습니다. 이 점에서 이 책으로 혼자 공부해도 많을 것을 얻을 수 있을 것 같다는 생각을 하였습니다. 그리고 이런 이론이 있어요라고 끝맺는 것이 아니라, 이런 것이 있는데, 저자가 보기에는 이런 문제에는 이런씩으로 적용하고, 실험 결론에 대해서도 주관적이지만, 초보에게는 길을 안내해주는 정도에서 자세한 설명을 해 놓았습니다. 그래서 나중에 설명할 좀 더 나은 모델링에서는 어떠한 결과로 더 좋게 나올지에 대한 흥미도 유발하고 있습니다.

 

SAM_8264.JPG

 

이 책의 문제점은 보시다시피, 박스 처리 부분입니다. 박스 처리한 부분들은 수학 이론의 도출 과정이 설명된 곳이 많습니다. 문과 수학만 했던 저에게는 무척 어렵습니다. 그래서 읽지 않고 넘어갔습니다. 책을 볼때 저자의 눈으로 바라보는 것도 중요하지만, 책을 꼭 저자처럼 익혀야 하는 것은 아니잖아요. 책을 나에게 맞게 재구성하는 것도 중요하다고 봅니다. 그냥 부담없이 넘어가도 괜찮을 것 같습니다. 그러나 딥러닝 회사에 데이터 분석가로 들어간다면, 이정도 수준에서는 제대로 공부해야 하지 않을까 생각도 듭니다. 논문 읽기 스터디나 구현 스터디에서는 이보다 더 높은 수준에서도 이야기하거든요.

 

SAM_8265.JPG

 

그림 양이 아쉬운 점도 있지만, 이렇게 잘 설명한 부분들도 많아서, 혼자 공부하기에도 좋습니다. 앞에서 차근차근 읽어왔다면, CNN, RNN 이론도 이해할 수 있도록 설명하고 있습니다.

 

SAM_8266.JPG

 

이 책의 장점으로 평소 이름만 들어왔던 딥러닝 모델을 좀 더 풀어서 설명하고 있다는 점입니다. 거기에 앞에서 다루었던 캐글 문제를 뒤에서 좀 더 고도화된 모델을 적용하는 방법과 그 결과에 대해서는 설명하는 부분이 좋았습니다. 그러면서 개인적인 설명으로 왜 그런 결과가 나왔는지에 대한 부가 설명한 부분이 백미로 다가왔습니다.

 

이 책은 처음 딥러닝을 접하는 분들에게는 좋은 것 같지 않습니다. 처음이라면 auto ml 이랑 api 사용법을 익혀 전반적인 흐름을 익히시는 것이 좋을 것 같습니다. 어느 정도 감이 잡히시면, 밑바닥부터 시작하는 딥러닝이나 텐서플로 2.0 케라스 같은 것으로 실제 딥러닝 모델들을 다루어 보시고, 이것도 익숙해지시고, 딥러닝 현장에서 제대로 된 운영 기술과 이론적 깊이를 원하시면 이때 이 책 "파이썬 날코딩로 알고 짜는 딥러닝" 으로 공부하시는 것이 많은 도움이 될 것 같습니다. 그리고 처음부터 이 책을 보신다면, 캐글 문제 부분, 이론적인 부분을 먼저 처음부터 끝까지 빨리 훍어 보신 다음에, 소스 코드를 처음부터 하나하나 코딩해가면서 확실히 공부하시는 것이 좋을 것 같다는 생각이 들었습니다.

책 제목 : 파이썬 날코딩으로 알고 짜는 딥러닝

저자 : 윤덕호

출판년도 : 2019.07.15

 

 

프로그래머라는 직업으로 일하다 보니 기술의 유행에 대해서도 어느정도 민감하다.

기술의 영역이 무척 넓긴 하지만 그럼에도 책으로, 지인으로부터, 또는 구직사이트로부터

요즘 많이 듣게되는 단어가 인공지능, 딥러닝, 데이터 사이언티스트, 신경망, 빅데이터, 파이썬이다.

관련 서적들이 줄줄이 나오고 있는 이 시점에 딥러닝에 대해 한번은 공부해봐야 할 과제였고

이를 위해 이 책을 선택하였다.

이 책의 목표는 딥러닝 알고리즘의 원리를 이해하고 이를 파이썬으로 구현하는데 있다.

파이썬 문법을 따로 다루지는 않는다.

책의 내용...

책의 내용은 크게 5파트로 나누어져 있다.

첫번째 파트는 딥러닝을 간단히 맛볼 수 있도록 간단한 신경망 구조인 단층 퍼셉트론 구조를 다룬다.

전복 고리 수 추정 신경망 예제로 회귀분석 문제를, 펄서 여부 판정 신경망 예제로 이진 판단 문제를,

그리고 철판의 불량 상태 분류 신경망 예제를 통해 선택 분류 문제를 다룬다.

 

두번째 파트는 다층 퍼셉트론 구조를 다루면서 객체지향 모델 구조와 복합 출력의 처리방법에 대한

내용들이 주를 이룬다.

객체지향 구조로 프로그램을 재구성 하면서 꽃 이미지 분류 신경망 예제를 소개하고,

오피스 31 이미지의 다차우너 분류 예제를 사용해 복합 출력을 다룬다.

 

세번째 파트는 합성곱 신경망과 정규화 기법, 거대 심층 구조를 살펴보면서 은닉 계층 구성에

이용되는 12가지 계층의 기능과 구현 방법을 살펴본다.

 

네번째 파트는 순환 신경망시간 축을 갖는 시계열 데이터 처리에 특화된 순환 신경망을 이용해 다양한

종류의 데이터를 다루는 과정을 살펴본다.

 

다섯번째 파트는 고급 응용파트로 세가지 딥러닝 응용구조를 소개한다.

 

실제로 내용을 진행하면서 기존의 내용을 재활용 하거나 확장하는 부분이 많다.

아래의 표를 보면 잘 정리되어 있다.

이 그림 하나가 책을 읽으면서, 읽고 나서도 많은 개념 정리를 도와 주었다.

어떤 알고리즘, 이론이 어떤식으로 이어지는지를 알려준다.

 

책을 읽으면서...

우선 이 책은 특정 기술에 대한 입문서라고 하기에는 난이도가 있다.

사실 인공지능, 딥러닝등의 학문이 기본적으로 허들이 높다.

기반 지식이 많이 필요하기 때문이다.

이 책 또한 독자가 프로그래밍 지식, 알고리즘 지식, 기본 아키텍쳐 지식을 베이스로 하고 있다고 

생각하고 책의 내용으 풀어 나간다.

책의 내용은 무척 체계적이고 깔끔하다.

여러가지 예제를 통해 딥러닝에 대한 기본 알고리즘 부터 응용 내용까지 체계적으로 

배울 수 있도록 배려하였다.

기존에 존재하는 플랫폼이나 라이브러리가 아닌 이론을 정확히 알고

코드로 직접 구현을 한다.

공부는 어렵게 해야 하고 깊이있게 해야 한다.

그래야 기본을 닦고 응용을 할 수 있다.

앞으로도 이정도의 깊이있는 책이 많이 나와 현업자들의 갈망을 많이 채워줬으면 좋겠다.

그런 의미에서 딥러닝을 체계적으로 깊이있게 배우고자 하는 이에게 이 책을 추천한다.

이 책에 대한 자세한 내용은 한빛출판네트워크에서 확인해 볼 수 있다.

 


머신러닝 및 딥러닝을 생각하면 대부분 해외 기업들이 만든 프레임워크나 라이브러리를 생각하기 쉽습니다. 

 

2015년부터 인공지능 분야에 관심을 가지면서 다양한 딥러닝 관련된 도구를 썼지만 직접 날코딩 해볼 생각은 하지 않았습니다. 

 

사이킷런, 텐서플로 등 소스를 보면서 내부의 코드가 수학적 수식 등 다양한 베이스가 기본적으로 알고 있어야 한다는 점 때문이죠.

 

가장 큰 이유는 회사에 재직 상태여서 업무는 밀려오고 일일이 딥러닝 코드를 만드는 것 보다 만들어진 것을 이른 시간에 소화하고 모델만 만드는 개발을 주로 했습니다. 

 

그러다 회사를 나오게 되면서 시간적 여유가 생기게 되었고 딥러닝 부분에 대해 깊게 이해하고 싶은 마음이 있었는데요. 

 

최근 우리나라에서 첫 번째 인공지능 바람이 불 때 자연어 처리 대가분이 '딥러닝에' 관련된 책을 썼습니다. 

 

이 책의 핵심은 파이썬을 활용해 날코딩으로 딥러닝을 짠 것입니다. 

 

1) 처음 접했을 때!

기본적으로 IT 책들은 두껍습니다. 이 책의 페이지수는 적정한 선을 유지한 책으로 볼 수 있는데요. 

6백여 페이지로 다른 책들과 크게 다르지 않게 읽어나가는 책입니다.

 

책의 내용은 인공 신경망 원리에 대해 세부적으로 다루는 데 초점이 맞춰져 있습니다. 

주로 타깃 독자층은 '중, 고급자' 개발자인데요. 

 

세부적인 알고리즘을 이해함으로써 파라미터값 등을 자유자재로 바꾸는 데 큰 도움이 됩니다.

 

2) 이해하기 쉬운 예제

저자는 10년간 한남대학교에서 정보통신공학과 교수로 재직하면서 수많은 제자를 가르쳤습니다.

가르친 노하우는 책에 녹여져 있는데요.

 

대표적으로 회귀분석의 비유적 표현에 대해 알아보도록 하겠습니다. 

"너 올해 몇 살이나? 백 세살? 아니 만으로는 102살이네"

 

회귀분석은 어떤 특징값 하나를 숫자로 추정하여 출력한다는 것을 알 수 있습니다. 

 

PS.

인공지능에 관련된 책들이 2~3년 사이에 무진장 많이 나오고 있습니다. 

대부분 기본서 이거나 중급에서 타깃 되어서 나오지만, 이 책처럼 고수들에게 맞춘 책은 드뭅니다.

 

난이도도 고정 독자층을 잘 공략한 책으로 보이며, 출간 후 베스트셀러가 될 정도로 파장이 큰 점이라 볼 수 있습니다. 

 

이 책을 통해 딥러닝 알고리즘에 대해 깊숙이 알 수 있기에 관심 있는 분들에게 추천해 드립니다. 

 

딥러닝이 뭐에요?

머신러닝의 한 방법이야.
 
머신러닝은 뭐에요?
인공지능 프로그램이 데이터에서 규칙과 패턴을 찾는 학습하는거야.
 
인공지능은 뭐에요?
사람의 지능과 비슷한 역할을 수행하는 프로그램이야.
 
 
머신러닝, 딥러닝 단어는 많이 들어봤지만
튜토리얼 처럼 간단하게 따라하면서 실행해본 적은 있지만
 
도대체 그게 어떤 원리로,
어떻게 동작해서
그런 결과를 내주는지 궁금한 사람에게 딱! 인 책이다.
 

20190808_221616.jpg

 

첫 페이지를 넘기자마자 확인할 수 있는
교수 이력을 가진 저자를 생각해보면
아~ 대!학!  학벌을 위한 대학이 아닌
진정한 공부를 하기 위한 곳에 어울릴만한 책이겠구나.
 
원리는 확실하게 알 수 있겠구나 라는 생각으로 시작했는데
역시나 예상과 딱 들어맞는
심오한 원리들을 술술술 풀어놓은 책이다.
 
 
퍼셉트론과 신경망.
계속해서 보게되는 단어지만
그들을 단순히 그 이름만으로 모든 걸 설명하기는 쉽지 않듯
그 원리들은 계속해서 나온다.
 
몇 번은 독파해봐야
진정으로 딥러닝을 이해하고 활용할 경지에 이르게 되겠지만...
아직은 몇 고개를 넘지 못했지만...
 
어서 빨리 뒷 고개들을 넘고 싶을만큼
많은 내용들이 들어있어서
너무 기대되고, 흥미로운 책이다.
 
 
좀 어렵고, 힘든 여정이 될 수도 있지만
딥러닝을 제대로(?!) 한 번 해보겠다거나
딥러닝의 고수가 되보겠다는 분들에게는
적극 추천하고 싶어지는 책이다.
 
 
그럼, 전 이만...
아직 못한 딥러닝이 있어서...^^;

 

 

 
최근 몇년간 머신러닝, 딥러닝이 유행하고 있다. 
 
아직도 유행인지, 아니면 이미 식어버린건지는 모르겠지만 책도 꾸준히 나오고 있고,
 
몇년전에 회사 업무로 개발했던 추천 시스템도 머신러닝 기술을 이용한 것이었다.
 
그러나 머신러닝, 딥러닝에서 항상 가슴 속 한부분이 걸리는 부분이 있었는데...
 
내용이 쉽지 않다는 것이다. 수많은 알고리즘, 수학 공식, 빅 데이터 처리 등등.
 
관련 책도 몇 권 봤지만 일정에 맞춰 빨리 개발해야 하거나, 
 
이해하기 어려워 블랙박스 형태로만 사용하거나, 이런 사정들이 있었다.
 
대부분의 책들이 라이브러리나 프레임워크를 설명하는 책들인 반면에,
 
이 책은 읽어보면서 솔직히 좀 많이 놀랬다.
 
저자 자신이 다른 책들과의 차이점에 대해 설명하는 부분에도 있는 것처럼 프레임워크 없이 
 
"파이썬 날코딩" 으로 개발하는 딥러닝을 다루고 있는 책이다. 그리고 번역서도 아닌 국내서다.
 
 
한가지 살짝 아쉬운 점은 요즘 대부분의 책들이 컬러판으로 많이 나오는데 이 책은 그렇지 않다.
 
하지만 책 내용을 보면 컬러가 아니라고 해서 크게 가독성이 덜어지거나 이해에 방해 되지는 않는다.
 
 
그리고 700페이지 정도 되는 분량이므로 다른 얇은 책들에서는 볼 수 없는 자세한 설명들도 맘에 든다.
 
자세한 설명이라고 해서 다 이해가 된다는 의미는 아니다. 역시 이 책도 어려운 알고리즘 설명과,
 
수많은(기괴한?) 공식들이 많이 나온다. 그래도 가끔은 아래처럼 만화로 설명해주는 부분은 나름 재미가 있다.
 
 
이 책의 대상 독자는 "딥러닝 입문자" 이지만 절대로 "IT 입문자" 를 대상으로 하는게 아니다.
 
예제들도 주피터 노트로 작성되어 있지만 파이썬이나 주피터 설치 등의 내용은 쿨하게 다루지 않는다.
 
"딥러닝 입문자" 라면 설치 정도는 검색이나 매뉴얼을 보면서 충분히 가능할테니까...
 
읽어보던 도중에 파이썬 클래스로 작성된 부분이 다른 챕터의 알고리즘에서도 재사용을 위해 작성 했다거나,
 
같은 데이터셋을 사용했다는 내용을 보고 어느 데이터셋이 어디서 사용되고... 이런 부분이 갑자기 궁금해서
 
책의 다시 앞부분으로 가봤다. 
 
 
오우~~~ 그림으로 각 챕터에서 어느 데이터셋을 사용하고 어느 알고리즘을 사용해서 예제를 작성했는지 나와 있다.
 
목차 보는 것보다 그림으로 보는 것이 더 이해가 잘 되더라.
 
 
간만에 괜찮은 국내서를 보게 되어 내가 쓴 책은 아니지만 괜히 기분 좋고, 
 
다 이해는 못하겠지만 시간 날때마다 계속 봐야겠다. 저자 분께 마음 속으로나마 감사의 말을 전하고 싶다. 진심으로...

 

개인적으로 구글이 만든 딥러닝 프레임워크인 텐서플로로 딥러닝에 입문했다. 수학 포기자, 통계 포기자여서 텐서플로를 이해하기는 쉽지 않았다. 상위 딥러닝 프레임워크인 케라스로 넘어갔다. 텐서플로는 백그라운드 엔진으로만 박아두고, 그 위에 래핑을 한 번 더 했기 때문에 그나마 할만했다. 원래도 길지 않은 딥러닝 코딩이 더 짧아졌다. 예제 정도는 가볍게 돌릴 수 있었다. 그렇지만 딥러닝을 제대로 이해하는 데는 오히려 멀어졌다는 느낌이 들었다. 아마 선형대수와 미적분을 제대로 알지 못하기 때문일 거다.

 

이 책은 두껍다. 무려 700페이지에 달한다. 저자는 교수 출신으로 오랜 기간 데이터 전문 기업에서 재직하고 있다. 그래서 이론과 실제를 모두 아는 것 같다. 본문의 설명 하나하나가 친절한 동시에 명확하다. 학자로서 이론의 정확성과 현업 실무자로서의 어려운 점을 모두 고려했다고 보인다. 문체도 부드럽다. 코드도 대중적인 주피터 노트북으로 한 줄씩 풀어준다. 예제도 캐글 데이터셋이나 실제 대용량 데이터를 수집해서 돌리기 때문에 수준급이다. 

 

이 책은 입문서의 탈을 쓰고 있지만, 냉정하게 말하자면 딥러닝 실무자를 위한 책이다. 수학/통계/머신러닝의 백그라운드가 상당히 있는 사람만 이 책으로 딥러닝 입문이 가능할 거다. 비슷한 컨셉으로 대히트를 친 <밑바닥부터 시작하는 딥러닝>, <밑바닥부터 시작하는 딥러닝2> 보다는 내용이 훨씬 깊다. 수식도 많이 나온다. 그렇지만 고생하는 만큼 깊이 있는 이해를 이끄는 책이다. 딥러닝을 구조부터 제대로 공부하고 싶은 사람에게 교과서가 되어줄만 하다. 

 

도서를 한장씩 넘겨가면서 예전에 보던 <오라클 성능 고도화 원리와 해법> 같은 책이라는 생각이 들었다. 누구나 오라클을 어렵지 않게 사용하지만, 오라클의 구조와 성능을 제대로 이해하는 것은 많은 공부가 필요하다. 딥러닝 분야에서도 이 같은 실무자를 위한 책이 필요했다. 딥러닝의 기반이 되는 내부 동작 구조가 항상 궁금했던 사람이라면 이 악물고 도전해볼만 하다. 책에 실린 어느 교수님의 추천평처럼 '깊은 이론적 배경지식 없이도 쉽고 빠르게 인공지능 기술을 활용'하기는 어렵겠지만 말이다. 

 

 

인공지능관련 라이브러리인 구글의 텐서플로 같은 소위말하는 인공지능프레임워크는 초보자도 쉽게 접근하고 활용할 수 있는 파워풀한 기능을 제공한다.

하지만 딱! 거기까지일뿐 작동원리나 깊이있는 이해란 기대하기 어려운것이 현실이다.

 

이 책 [파이썬 날코딩으로 알고 짜는 딥러닝]은 파이선 언어를 기반으로 단층퍼셉트론(SLP), 다층 퍼셉트론(MLP), 합성곱 신경망(CNN), 순환 신경망(RNN), 오토인코더, 인코더-디코더, 생성적 적대 신경망(GAN)에 이르기까지 파이썬을 기반으로 실제 구현 과정을 소개한다.

인공지능관련 분야의 중급자 이상의 이해도를 요구하고 있으며, 한단계 한단계 따라가다보면 어렵지만 해당 알고리즘을 깊이있게 이해할수 있는 좋은 밑거름이 될 것으로 믿어 의심치 않는다.

 

 

 

이책은 한번 읽고 내팽겨칠 내용이 아니라 가장 지근거리에 두고 저자가 그려놓은 인공지능 신경망 원리에 대한 이야기를 소스레벨로 하나하나 되짚어 간다면 어느 순간 고통이 깨우침에 대한 기쁨으로 승화되는 기적을 누릴 수 있을 것으로 생각된다.


참고로 이 책 하나만으로 모든것을 이해 할 수 없을 것이라 생각되며, 이 책을 중심으로 다양한 참고서적을 섭렵해 간다면 누구에게도 꿀리지 않는 실력자가 될 수 있으리라 생각된다.

마지막으로 책 내용이 이해가 되지 않는다고 포기하지 말고 관련 자료를 찾아보고 다시 이 책을 볼 것을 추천드린다.

발매 시작된지 1달이 채 되지 않은 신선한 책인 '파이썬 날코딩으로 알고 짜는 딥러닝'

이 책은 프레임워크 없이 파이썬 프로그램만으로 다양한 딥러닝 신경망 모델에 해당하는 예제 프로그램을 구현하고 실험하는 과정을 차근차근 소개한다.

이 책의 대상 독자는 딥러닝 알고리즘의 동작 원리를 제대로 이해하고 공부하고 싶은 개발자 또는 입문자이다. 딥러닝에서 다루는 수학 분야에는 선형대수학, 미분적분학, 확률통계론 등이 있는데, 깊이 있게 알지 못해도 큰 지장은 없다. 하지만 딥러닝 분야 자체가 이해하기 어렵기 때문에, 이 책을 이해하고 공부하는 것은 약간 어려울 수도 있는데, 쉽게 설명하고 있고, 예제도 들어가며 쉽게 이해를 할 수 있도록 도와준다. 그리고 이 책을 공부하기 위해 파이썬 프로그래밍의 기본 문법과 라이브러리(numpy, csv, time, os, copy, wave, matplotlib)은 알아두는 것이 좋다. 파이썬 프로그래밍은 주피더 노트북을 사용한다.

이 책은 아래와 같이 5부로 구성되어 있다.

- 단층 퍼셉트론(SLP)

- 다층 퍼셉트론(MLP)

- 합성곱 신경망(CNN)

- 순환 신경망(RNN)

- 고급 응용 구조(오토인코더, 인코더-디코더, 생성적 적대 신경망)

딥러닝은 동물의 신경세포를 흉내 낸 퍼셉트론을 단위로 삼아 구성한 신경망 구조를 이용해 학습을 수행하고 문제를 풀어낸다. 이 책에서는 퍼셉트론 구조 및 다양한 신경망 모델을 소개하고, 그 구조 및 모델을 파이썬으로 구현하는 것으로 보면된다.

만화식으로 개념들을 쉽게 설명하려고 하고 있고, 예제 한줄 한줄 설명하는 것이 이 책의 장점으로 보인다. 하지만, 많은 수식으로 되어 있는 부분은 어려운 듯 하다.

  

부록/예제소스
자료명 등록일 다운로드
Google Drive 11장 데이터 2023-03-23 다운로드
DOWNLOAD 예제소스 2023-03-23 다운로드
결제하기
• 문화비 소득공제 가능
• 배송료 : 2,000원배송료란?

배송료 안내

  • 20,000원 이상 구매시 도서 배송 무료
  • 브론즈, 실버, 골드회원이 주문하신 경우 무료배송

무료배송 상품을 포함하여 주문하신 경우에는 구매금액에 관계없이 무료로 배송해 드립니다.

닫기

리뷰쓰기

닫기
* 도서명 :
파이썬 날코딩으로 알고 짜는 딥러닝
* 제목 :
* 별점평가
* 내용 :

* 리뷰 작성시 유의사항

글이나 이미지/사진 저작권 등 다른 사람의 권리를 침해하거나 명예를 훼손하는 게시물은 이용약관 및 관련법률에 의해 제재를 받을 수 있습니다.

1. 특히 뉴스/언론사 기사를 전문 또는 부분적으로 '허락없이' 갖고 와서는 안됩니다 (출처를 밝히는 경우에도 안됨).
2. 저작권자의 허락을 받지 않은 콘텐츠의 무단 사용은 저작권자의 권리를 침해하는 행위로, 이에 대한 법적 책임을 지게 될 수 있습니다.

오탈자 등록

닫기
* 도서명 :
파이썬 날코딩으로 알고 짜는 딥러닝
* 구분 :
* 상품 버전
종이책 PDF ePub
* 페이지 :
* 위치정보 :
* 내용 :

도서 인증

닫기
도서명*
파이썬 날코딩으로 알고 짜는 딥러닝
구입처*
구입일*
부가기호*
부가기호 안내

* 온라인 또는 오프라인 서점에서 구입한 도서를 인증하면 마일리지 500점을 드립니다.

* 도서인증은 일 3권, 월 10권, 년 50권으로 제한되며 절판도서, eBook 등 일부 도서는 인증이 제한됩니다.

* 구입하지 않고, 허위로 도서 인증을 한 것으로 판단되면 웹사이트 이용이 제한될 수 있습니다.

닫기

해당 상품을 장바구니에 담았습니다.이미 장바구니에 추가된 상품입니다.
장바구니로 이동하시겠습니까?

자료실