누구나 쉽게 이해할 수 있는 실용적인 딥러닝 입문서
누구나 쉽게 이해할 수 있는 실용적인 딥러닝 입문서
비전공자 출신으로 오랜 기간 딥러닝 연구를 해온 저자는 자신이 겪어온 오류들을 겪지 않고, 가장 빠른 길로 딥러닝을 접할 수 있도록 하는 데 중점을 두고 이 책을 집필했다. 누구나 이해할 수 있는 쉽고 편안한 설명을 바탕으로, 딥러닝 이론뿐만 아니라 실제 응용이 가능한 라이브러리 중심으로 설명한다. 특히 현업과 연구에 바로 적용 가능한 최신 모델까지 다룬다는 점이 이 책의 특징이다. 이 외에도 딥러닝을 학습하는 데 필요한 최소한의 수학, 캐글, 역전파와 신경망 심화 학습도 빠트리지 않고 설명한다.
3판에서는 설치 없이 실습이 가능한 코랩을 기준으로 코드를 최신 버전으로 수정했고, 좀 더 쉽게 설명할 수 있는 방법이 있다면 설명 방식을 과감히 바꾸는 등 많은 내용을 수정하고 추가했다. 또한, XAI(설명 가능한 딥러닝), 어텐션, 캐글 등 최신 경향을 반영했고, 바로 보고 바로 써먹을 수 있는 '가장 많이 사용하는 머신 러닝 알고리즘 TOP 10'과 '데이터 분석을 위한 판다스 92개 치트키'를 얇은 책 한 권 분량의 별책 부록으로 제공한다. 마지막으로 혼자 학습하기 어려운 독자분들을 위해 책 전체에 대한 무료 동영상 강의도 제공한다. 딥러닝을 학습하다가 좌절했거나 이제 막 딥러닝 학습을 시작하려 한다면 이 책으로 시작해 보자.
· 유튜브 강의: https://bit.ly/taehojo
· 예제 실행하기: https://github.com/taehojo/deeplearning
· 도서 내용 및 오류 문의: tae.h.jo@gmail.com (저자 이메일)
첫째 마당 딥러닝 시작을 위한 준비 운동
1장. 해 보자! 딥러닝
1 | 인공지능? 머신 러닝? 딥러닝?
2 | 딥러닝 실행을 위해 필요한 세 가지
3 | 구글 코랩 실행하기
2장. 딥러닝의 핵심 미리 보기
1 | 미지의 일을 예측하는 원리
2 | 딥러닝 코드 실행해 보기
3 | 딥러닝 개괄하기
4 | 이제부터가 진짜 딥러닝?
3장. 딥러닝을 위한 기초 수학
1 | 일차 함수, 기울기와 y 절편
2 | 이차 함수와 최솟값
3 | 미분, 순간 변화율과 기울기
4 | 편미분
5 | 지수와 지수 함수
6 | 시그모이드 함수
7 | 로그와 로그 함수
둘째 마당 예측 모델의 기본 원리
4장. 가장 훌륭한 예측선
1 | 선형 회귀의 정의
2 | 가장 훌륭한 예측선이란?
3 | 최소 제곱법
4 | 파이썬 코딩으로 확인하는 최소 제곱
5 | 평균 제곱 오차
6 | 파이썬 코딩으로 확인하는 평균 제곱 오차
5장. 선형 회귀 모델: 먼저 긋고 수정하기
1 | 경사 하강법의 개요
2 | 파이썬 코딩으로 확인하는 선형 회귀
3 | 다중 선형 회귀의 개요
4 | 파이썬 코딩으로 확인하는 다중 선형 회귀
5 | 텐서플로에서 실행하는 선형 회귀, 다중 선형 회귀 모델
6장. 로지스틱 회귀 모델: 참 거짓 판단하기
1 | 로지스틱 회귀의 정의
2 | 시그모이드 함수
3 | 오차 공식
4 | 로그 함수
5 | 텐서플로에서 실행하는 로지스틱 회귀 모델
셋째 마당 딥러닝의 시작, 신경망
7장. 퍼셉트론과 인공지능의 시작
1 | 인공지능의 시작을 알린 퍼셉트론
2 | 퍼셉트론의 과제
3 | XOR 문제
8장. 다층 퍼셉트론
1 | 다층 퍼셉트론의 등장
2 | 다층 퍼셉트론의 설계
3 | XOR 문제의 해결
4 | 코딩으로 XOR 문제 해결하기
9장. 오차 역전파에서 딥러닝으로
1 | 딥러닝의 태동, 오차 역전파
2 | 활성화 함수와 고급 경사 하강법
3 | 속도와 정확도 문제를 해결하는 고급 경사 하강법
넷째 마당 딥러닝 기본기 다지기
10장. 딥러닝 모델 설계하기
1 | 모델의 정의
2 | 입력층, 은닉층, 출력층
3 | 모델 컴파일
4 | 모델 실행하기
11장. 데이터 다루기
1 | 딥러닝과 데이터
2 | 피마 인디언 데이터 분석하기
3 | 판다스를 활용한 데이터 조사
4 | 중요한 데이터 추출하기
5 | 피마 인디언의 당뇨병 예측 실행
12장. 다중 분류 문제 해결하기
1 | 다중 분류 문제
2 | 상관도 그래프
3 | 원‐핫 인코딩
4 | 소프트맥스
5 | 아이리스 품종 예측의 실행
13장. 모델 성능 검증하기
1 | 데이터의 확인과 예측 실행
2 | 과적합 이해하기
3 | 학습셋과 테스트셋
4 | 모델 저장과 재사용
5 | k겹 교차 검증
14장. 모델 성능 향상시키기
1 | 데이터의 확인과 검증셋
2 | 모델 업데이트하기
3 | 그래프로 과적합 확인하기
4 | 학습의 자동 중단
15장. 실제 데이터로 만들어 보는 모델
1 | 데이터 파악하기
2 | 결측치, 카테고리 변수 처리하기
3 | 속성별 관련도 추출하기
4 | 주택 가격 예측 모델
다섯째 마당 딥러닝 활용하기
16장. 이미지 인식의 꽃, 컨볼루션 신경망(CNN)
1 | 이미지를 인식하는 원리
2 | 딥러닝 기본 프레임 만들기
3 | 컨볼루션 신경망(CNN)
4 | 맥스 풀링, 드롭아웃, 플래튼
5 | 컨볼루션 신경망 실행하기
17장. 딥러닝을 이용한 자연어 처리
1 | 텍스트의 토큰화
2 | 단어의 원‐핫 인코딩
3 | 단어 임베딩
4 | 텍스트를 읽고 긍정, 부정 예측하기
18장. 시퀀스 배열로 다루는 순환 신경망(RNN)
1 | LSTM을 이용한 로이터 뉴스 카테고리 분류하기
2 | LSTM과 CNN의 조합을 이용한 영화 리뷰 분류하기
3 | 어텐션을 사용한 신경망
19장. 세상에 없는 얼굴 GAN, 오토인코더
1 | 가짜 제조 공장, 생성자
2 | 진위를 가려내는 장치, 판별자
3 | 적대적 신경망 실행하기
4 | 이미지의 특징을 추출하는 오토인코더
20장. 전이 학습을 통해 딥러닝의 성능 극대화하기
1 | 소규모 데이터셋으로 만드는 강력한 학습 모델
2 | 전이 학습으로 모델 성능 극대화하기
21장. 설명 가능한 딥러닝 모델 만들기
1 | 딥러닝의 결과를 설명하는 방법
2 | 설명 가능한 딥러닝의 실행
22장. 캐글로 시작하는 새로운 도전
1 | 캐글 가입 및 대회 선택하기
2 | 데이터 획득하기
3 | 학습하기
4 | 결과 제출하기
5 | 최종 예측 값 제출하기
심화 학습 1. 오차 역전파의 계산법
1 | 출력층의 오차 업데이트
2 | 오차 공식
3 | 체인 룰
4 | 체인 룰 계산하기
5 | 가중치 수정하기
6 | 은닉층의 오차 수정하기
7 | 은닉층의 오차 계산법
8 | 델타식
심화 학습 2. 파이썬 코딩으로 짜 보는 신경망
1 | 환경 변수 설정하기
2 | 파이썬 코드로 실행하는 신경망
부록 A 내 컴퓨터에서 아나콘다로 딥러닝 실행하기
별책 부록
1장. 가장 많이 사용하는 머신 러닝 알고리즘 TOP 10
1 | 세상의 거의 모든 머신 러닝 알고리즘
2 | 실습을 위한 준비 사항
3 | 결정 트리
4 | 랜덤 포레스트
5 | 가우시안 나이브 베이즈
6 | k‐최근접 이웃
7 | 에이다 부스트
8 | 이차 판별 분석
9 | 서포트 벡터 머신
10 | 서포트 벡터 머신 ‐ RBF 커널
11 | 보팅
12 | 배깅
13 | 여러 알고리즘의 성능을 한눈에 비교하기
2장. 데이터 분석을 위한 판다스: 92개의 예제 모음
A | 데이터 만들기
__1. 판다스 라이브러리 불러오기
__2. 데이터 프레임 만들기
__3. 데이터 프레임 출력하기
__4. 데이터의 열 이름을 따로 지정해서 만들기
__5. 인덱스가 두 개인 데이터 프레임 만들기
B | 데이터 정렬하기
__6. 특정 열 값을 기준으로 정렬하기
__7. 열 이름 변경하기
__8. 인덱스 값 초기화하기
__9. 인덱스 순서대로 정렬하기
__10. 특정 열 제거하기
C | 행 추출하기
__11. 맨 위의 행 출력하기
__12. 맨 아래 행 출력하기
__13. 특정 열의 값을 추출하기
__14. 특정 열에 특정 값이 있을 경우 추출하기
__15. 특정 열에 특정 값이 없을 경우 추출하기
__16. 특정 열에 특정 숫자가 있는지 확인하기
__17. 특정 비율로 데이터 샘플링하기
__18. 특정 개수만큼 데이터 샘플링하기
__19. 특정 열에서 큰 순서대로 불러오기
__20. 특정 열에서 작은 순서대로 불러오기
D | 열 추출하기
__21. 인덱스의 범위로 불러오기
__22. 첫 인덱스를 지정해 불러오기
__23. 마지막 인덱스를 지정해 불러오기
__24. 모든 인덱스 불러오기
__25. 특정 열을 지정해 가져오기
__26. 조건을 만족하는 열 가져오기
__27. 특정 문자가 포함되지 않는 열 가져오기
E | 행과 열 추출하기
__28. 특정 행과 열을 지정해 가져오기
__29. 인덱스로 특정 행과 열 가져오기
__30. 특정 열에서 조건을 만족하는 행과 열 가져오기
__31. 인덱스를 이용해 특정 조건을 만족하는 값 불러오기
F | 중복 데이터 다루기
__32. 특정 열에 어떤 값이 몇 개 들어 있는지 알아보기
__33. 데이터 프레임의 행이 몇 개인지 세어 보기
__34. 데이터 프레임의 행과 열이 몇 개인지 세어 보기
__35. 특정 열에 유니크한 값이 몇 개인지 세어 보기
__36. 데이터 프레임의 형태 한눈에 보기
__37. 중복된 값 제거하기
G | 데이터 파악하기
__38. 각 열의 합 보기
__39. 각 열의 값이 모두 몇 개인지 보기
__40. 각 열의 중간 값 보기
__41. 특정 열의 평균값 보기
__42. 각 열의 25%, 75%에 해당하는 수 보기
__43. 각 열의 최솟값 보기
__44. 각 열의 최댓값 보기
__45. 각 열의 표준편차 보기
__46. 데이터 프레임 각 값에 일괄 함수 적용하기
H | 결측치 다루기
__47. %00; 값인지 확인하기
__48. %00; 값이 아닌지 확인하기
__49. %00; 값이 있는 행 삭제하기
__50. %00; 값을 특정 값으로 대체하기
__51. %00; 값을 특정 계산 결과로 대체하기
I | 새로운 열 만들기
__52. 조건에 맞는 새 열 만들기
__53. assign( )을 이용해 조건에 맞는 새 열 만들기
__54. 숫자형 데이터를 구간으로 나누기
__55. 기준 값 이하와 이상을 모두 통일시키기
__56. 최댓값 불러오기
__57. 최솟값 불러오기
J | 행과 열 변환하기
__58. 모든 열을 행으로 변환하기
__59. 하나의 열만 행으로 이동시키기
__60. 여러 개의 열을 행으로 이동시키기
__61. 특정 열의 값을 기준으로 새로운 열 만들기
__62. 원래 데이터 형태로 되돌리기
K | 시리즈 데이터 연결하기
__63. 시리즈 데이터 합치기
__64. 데이터를 병합할 때 새로운 인덱스 만들기
__65. 계층적 인덱스를 추가하고 열 이름 지정하기
L | 데이터 프레임 연결하기
__66. 데이터 프레임 합치기
__67. 열의 수가 다른 두 데이터 프레임 합치기
__68. 함께 공유하는 열만 합치기
__69. 열 이름이 서로 다른 데이터 합치기
M | 데이터 병합하기
__70. 왼쪽 열을 축으로 병합하기
__71. 오른쪽 열을 축으로 병합하기
__72. 공통 값만 병합하기
__73. 모든 값을 병합하기
__74. 특정한 열을 비교해서 공통 값이 존재하는 경우만 가져오기
__75. 공통 값이 존재하는 경우 해당 값을 제외하고 병합하기
__76. 공통 값이 있는 것만 병합하기
__77. 모두 병합하기
__78. 어디서 병합되었는지 표시하기
__79. 원하는 병합만 남기기
__80. merge 칼럼 없애기
N | 데이터 가공하기
__81. 행 전체를 한 칸 아래로 이동하기
__82. 행 전체를 한 칸 위로 이동하기
__83. 첫 행부터 누적해서 더하기
__84. 새 행과 이전 행을 비교하면서 최댓값 출력하기
__85. 새 행과 이전 행을 비교하면서 최솟값 출력하기
__86. 첫 행부터 누적해서 곱하기
O | 그룹별로 집계하기
__87. 그룹 지정 및 그룹별 데이터 수 표시
__88. 그룹 지정 후 원하는 칼럼 표시하기
__89. 밀집도 기준으로 순위 부여하기
__90. 최젓값을 기준으로 순위 부여하기
__91. 순위를 비율로 표시하기
__92. 동일 순위에 대한 처리 방법 정하기
독자의견 남기기