11개 언어로 출판된 베스트셀러 《The Hundred-Page Machine Learning Book》의 저자 안드리 부르코프가 쓴 이 책은 현존하는 인공지능 서적 중 가장 완벽합니다. 확장할 수 있으며 신뢰할 수 있는 머신러닝 설루션을 구축하는 모범 사례와 설계 패턴으로 가득 차 있습니다. 가트너의 머신러닝 개발팀의 리더이기도 한 저자는 15년간 인공지능 관련 문제를 해결한 경험과 함께 업계 리더들의 출판 경험을 바탕으로 이 책을 집필하였습니다.
이 책의 대상 독자
머신러닝 엔지니어링을 공부하는 학생, 데이터 분석가
머신러닝 엔지니어 역할에 관심이 많은 데이터 분석가
자신의 업무 영역을 좀 더 다양한 분야로 넓히려는 머신러닝 엔지니어
머신러닝 엔지니어가 제공하는 모델을 다루는 소프트웨어 아키텍트
CHAPTER 01 도입 1
1.1 표기법 및 정의 2
1.1.1 자료 구조 2 / 1.1.2 대문자 시그마 표기법 3
1.2 머신러닝이란? 4
1.2.1 지도학습 4 / 1.2.2 비지도학습 6
1.2.3 준지도학습 7 / 1.2.4 강화학습 7
1.3 데이터와 머신러닝 용어 8
1.3.1 직접적/간접적으로 사용하는 데이터 8 / 1.3.2 원시 데이터와 깔끔한 데이터 9
1.3.3 훈련 및 홀드아웃 세트 10 / 1.3.4 기준점 11
1.3.5 머신러닝 파이프라인 11 / 1.3.6 매개변수와 초매개변수 12
1.3.7 분류와 회귀 12 / 1.3.8 모델 기반 학습과 인스턴스 기반 학습 13
1.3.9 얕은 학습과 딥러닝 13 / 1.3.10 훈련과 채점 14
1.4 머신러닝을 사용해야 할 때 14
1.4.1 문제가 너무 복잡해서 코딩으로 해결할 수 없을 때 14
1.4.2 문제가 지속적으로 변할 때 15
1.4.3 지각 문제일 때 15
1.4.4 연구되지 않은 현상일 때 16
1.4.5 문제의 목적이 단순할 때 16
1.4.6 비용 효율적인 경우 17
1.5 머신러닝을 사용하지 말아야 할 때 17
1.6 머신러닝 엔지니어링이란? 18
1.7 머신러닝 프로젝트 수명주기 19
1.8 요약 21
CHAPTER 02 프로젝트 시작 전 23
2.1 머신러닝 프로젝트의 우선순위 결정 24
2.1.1 머신러닝의 영향 24 / 2.1.2 머신러닝의 비용 24
2.2 머신러닝 프로젝트의 복잡도 추정 26
2.2.1 미리 알 수 없는 것 26 / 2.2.2 문제 단순화 27
2.2.3 비선형적 훈련 진행 27
2.3 머신러닝 프로젝트의 목표 정의 28
2.3.1 모델이 할 수 있는 작업 28 / 2.3.2 성공적인 모델의 속성 29
2.4 머신러닝팀 구성 30
2.4.1 두 가지 개발 문화 30 / 2.4.2 머신러닝팀의 구성원 31
2.5 머신러닝 프로젝트가 실패하는 이유 32
2.5.1 숙련된 개발자 부족 32 / 2.5.2 경영진의 지원 부족 33
2.5.3 데이터 인프라 부족 34 / 2.5.4 데이터 레이블링의 어려움 34
2.5.5 고립된 조직과 협업 부족 35 / 2.5.6 기술적으로 실행 불가능한 프로젝트 35
2.5.7 기술팀과 비즈니스팀 간의 소통 부족 35
2.6 요약 36
CHAPTER 03 데이터 수집 및 준비 39
3.1 데이터에 대한 질문 40
3.1.1 데이터를 구할 수 있는가? 40 / 3.1.2 데이터 세트의 크기가 충분히 큰가? 41
3.1.3 데이터를 사용할 수 있나? 43 / 3.1.4 데이터를 이해할 수 있나? 45
3.1.5 데이터를 신뢰할 수 있나? 45
3.2 일반적인 데이터 관련 문제 47
3.2.1 높은 비용 47 / 3.2.2 품질 불량 49 / 3.2.3 잡음 49 / 3.2.4 편향 50
3.2.5 낮은 예측력 57 / 3.2.6 오래된 견본 58 / 3.2.7 특잇값 59 / 3.2.8 데이터 누출 60
3.3 좋은 데이터란? 61
3.3.1 좋은 데이터는 유익함 61
3.3.2 좋은 데이터는 넓은 적용 범위를 가짐 61
3.3.3 좋은 데이터는 실제 입력을 반영함 61
3.3.4 좋은 데이터는 편향되지 않음 62
3.3.5 좋은 데이터는 피드백 루프의 결과가 아님 62
3.3.6 좋은 데이터의 레이블은 일관됨 62
3.3.7 좋은 데이터는 충분히 큼 63
3.3.8 좋은 데이터 요약 63
3.4 상호 작용 데이터 처리 64
3.5 데이터 누출의 원인 64
3.5.1 목표가 특징의 함수인 경우 65 / 3.5.2 목표가 특징에 숨어 있는 경우 65
3.5.3 미래를 반영하는 특징 66
3.6 데이터 분할 67
3.6.1 분할 중 누출 69
3.7 결측 속성 처리 70
3.7.1 결측값 대체 기술 70 / 3.7.2 대체 중 누출 72
3.8 데이터 증강 72
3.8.1 이미지 데이터 증강 73 / 3.8.2 텍스트 데이터 증강 74
3.9 불균형 데이터 처리 76
3.9.1 오버샘플링 77 / 3.9.2 언더샘플링 77
3.9.3 하이브리드 전략 78
3.10 데이터 샘플링 전략 79
3.10.1 단순 랜덤 샘플링 79 / 3.10.2 체계적인 샘플링 80
3.10.3 계층화된 샘플링 80
3.11 데이터 저장 81
3.11.1 데이터 형식 82 / 3.11.2 데이터 저장소 레벨 83
3.11.3 데이터 버전 관리 85 / 3.11.4 문서화와 메타데이터 87
3.11.5 데이터 수명주기 88
3.12 데이터 처리 모범 사례 88
3.12.1 재현성 88 / 3.12.2 데이터 우선, 알고리즘은 그 다음 89
3.13 요약 89
CHAPTER 04 특징 공학 93
4.1 특징 공학을 사용하는 이유 94
4.2 특징 공학을 사용하는 방법 95
4.2.1 텍스트에 대한 특징 공학 95 / 4.2.2 단어 가방의 작동 원리 98
4.2.3 범주형 특징을 숫자로 변환 98 / 4.2.4 특징 해싱 101
4.2.5 주제 모델링 102 / 4.2.6 시계열 특징 105 / 4.2.7 창의력 활용 108
4.3 특징 쌓기 108
4.3.1 특징 벡터 쌓기 109 / 4.3.2 개별 특징 쌓기 109
4.4 좋은 특징의 특성 111
4.4.1 높은 예측력 111 / 4.4.2 빠른 계산 능력 111 / 4.4.3 신뢰성 111
4.4.4 비상관성 112 / 4.4.5 기타 특성 112
4.5 특징 선택 113
4.5.1 긴 꼬리 자르기 113 / 4.5.2 보루타 114
4.5.3 L1-정규화 117 / 4.5.4 과제별 특징 선택 117
4.6 특징 합성 117
4.6.1 특징 이산화 118 / 4.6.2 관계형 데이터에서 특징 합성 119
4.6.3 데이터로부터 특징 합성 121 / 4.6.4 다른 특징으로부터 특징 합성 121
4.7 데이터를 통한 특징 학습 122
4.7.1 단어 임베딩 122 / 4.7.2 문서 임베딩 124
4.7.3 모든 객체에 대한 임베딩 125 / 4.7.4 임베딩 차원 선택 126
4.8 차원 축소 127
4.8.1 PCA를 통한 빠른 차원 축소 127 / 4.8.2 시각화를 위한 차원 축소 128
4.9 특징 스케일링 128
4.9.1 정규화 129 / 4.9.2 표준화 130
4.10 특징 공학에서 데이터 누출 131
4.10.1 잠재적인 문제 131 / 4.10.2 설루션 131
4.11 특징 저장과 문서화 131
4.11.1 스키마 파일 131 / 4.11.2 특징 저장소 133
4.12 특징 공학 모범 사례 135
4.12.1 여러 가지 간단한 특징 생성 135 / 4.12.2 기존 시스템 재사용 136
4.12.3 필요한 경우에만 식별자를 특징으로 사용 136 / 4.12.4 가능하면 크기를 줄인다 136
4.12.5 계수 사용은 신중하게 137 / 4.12.6 특징은 필요할 때 선택 138
4.12.7 코드 테스트는 주의 깊게 138 / 4.12.8 코드, 모델, 데이터의 동기화 상태 유지 139
4.12.9 특징 추출 코드 분리 139 / 4.12.10 모델과 특징 추출기를 함께 직렬화 139
4.12.11 특징값 기록 139
4.13 요약 140
CHAPTER 05 지도 모델 훈련(1부) 143
5.1 모델 개발을 시작하기 전에 144
5.1.1 스키마 적합성 검증 144 / 5.1.2 달성 가능한 성능 수준 정의 144
5.1.3 성능 지표 선택 145 / 5.1.4 올바른 기준선 선택 145
5.1.5 데이터를 세 개의 세트로 분할 148 / 5.1.6 지도학습의 전제 조건 149
5.2 머신러닝을 위한 레이블 표현 150
5.2.1 다중 클래스 분류 150 / 5.2.2 다중 레이블 분류 151
5.3 학습 알고리즘 선택 151
5.3.1 학습 알고리즘의 주요 특성 152 / 5.3.2 알고리즘 스팟 검사 153
5.4 파이프라인 구축 154
5.5 모델 성능 평가 156
5.5.1 회귀 분석의 성능 지표 156 / 5.5.2 분류의 성능 지표 157
5.5.3 순위를 위한 성능 지표 163
5.6 초매개변수 조정 167
5.6.1 그리드 검색 167 / 5.6.2 랜덤 검색 169
5.6.3 무작위-미세한 검색 170 / 5.6.4 기타 기술 170
5.6.5 교차 검증 170
5.7 얕은 모델 훈련 171
5.7.1 얕은 모델 훈련 전략 171 / 5.7.2 모델 저장 및 복원 172
5.8 편향-분산 간 절충 174
5.8.1 과소적합 174 / 5.8.2 과적합 175 / 5.8.3 절충 176
5.9 정규화 177
5.9.1 L1 및 L2 정규화 178 / 5.9.2 다른 형태의 정규화 179
5.10 요약 179
CHAPTER 06 지도 모델 훈련(2부) 183
6.1 심층 모델 훈련 전략 183
6.1.1 신경망 훈련 전략 184 / 6.1.2 성능 지표 및 비용 함수 185
6.1.3 매개변수 초기화 전략 188 / 6.1.4 최적화 알고리즘 189
6.1.5 학습률 감소 스케줄 192 / 6.1.6 정규화 194
6.1.7 네트워크 크기 검색 및 초매개변수 조정 195 / 6.1.8 다중 입력 처리 198
6.1.9 다중 출력 처리 198 / 6.1.10 전이 학습 199
6.2 모델 쌓기 201
6.2.1 앙상블 학습 유형 201 / 6.2.2 모델 쌓기 알고리즘 202
6.2.3 모델을 쌓을 때 데이터 누출 203
6.3 분포 이동 처리 204
6.3.1 분포 이동 유형 204 / 6.3.2 적대적 검증 204
6.4 불균형 데이터 세트 처리 205
6.4.1 클래스 가중치 205 / 6.4.2 다시 샘플링한 데이터 세트 앙상블 206
6.4.3 기타 기술 207
6.5 모델 교정 207
6.5.1 잘 교정된 모델 208 / 6.5.2 교정 기술 209
6.6 문제 해결 및 오류 분석 210
6.6.1 모델의 성능이 떨어지는 이유 210 / 6.6.2 반복적 모델 개선 211
6.6.3 오류 분석 211 / 6.6.4 복잡한 시스템의 오류 분석 213
6.6.5 부분 지표 사용 215 / 6.6.6 잘못된 레이블 수정 215
6.6.7 추가로 레이블링할 견본 찾기 216 / 6.6.8 딥러닝 문제 해결 216
6.7 모범 사례 218
6.7.1 좋은 모델 제공 218 / 6.7.2 검증된 오픈소스 활용 219
6.7.3 비즈니스별 성능 측정 최적화 219 / 6.7.4 밑바닥부터 개선 219
6.7.5 연속적인 정정 방지 220 / 6.7.6 연속된 모델은 주의해서 사용 220
6.7.7 효율적인 코드 작성, 컴파일, 병렬화 221
6.7.8 최신 데이터와 이전 데이터에 대한 테스트 223
6.7.9 똑똑한 알고리즘보다 더 많은 데이터가 좋음 223
6.7.10 새로운 데이터가 좀 더 좋은 특징보다 뛰어남 224
6.7.11 작은 진전의 수용 224
6.7.12 용이한 재현성 224
6.8 요약 225
CHAPTER 07 모델 평가 229
7.1 오프라인 평가와 온라인 평가 231
7.2 A/B 테스트 233
7.2.1 G-테스트 233 / 7.2.2 Z-테스트 236
7.2.3 결론 및 주의사항 238
7.3 멀티 암드 밴딧 239
7.4 모델 성능에 대한 통계적 한계 242
7.4.1 분류 오류에 대한 통계 구간 243 / 7.4.2 부트스트래핑 통계 구간 244
7.4.3 회귀를 위한 부트스트래핑 예측 구간 245
7.5 테스트 세트 적합성 평가 246
7.5.1 뉴런 커버리지 246 / 7.5.2 돌연변이 테스트 247
7.6 모델 특성 평가 248
7.6.1 강건성 248 / 7.6.2 공정성 249
7.7 요약 250
CHAPTER 08 모델 배포 253
8.1 정적 배포 254
8.2 사용자 기기에 동적 배포 255
8.2.1 모델 매개변수 배포 255 / 8.2.2 직렬화된 객체 배포 255
8.2.3 브라우저에 배포 256 / 8.2.4 장점과 단점 256
8.3 서버에 동적 배포 256
8.3.1 가상 머신에 배포 257 / 8.3.2 컨테이너에 배포 258
8.3.3 서버리스 배포 259 / 8.3.4 모델 스트리밍 261
8.4 배포 전략 264
8.4.1 단일 배포 264 / 8.4.2 자동 배포 265
8.4.3 카나리 배포 265 / 8.4.4 멀티 암드 밴딧 265
8.5 자동화된 배포, 버전 관리, 메타데이터 266
8.5.1 모델에 수반하는 항목 266 / 8.5.2 버전 동기화 266
8.5.3 모델 버전 관리를 위한 메타데이터 267
8.6 모델 배포 모범 사례 268
8.6.1 알고리즘 효율성 268 / 8.6.2 심층 모델 배포 272
8.6.3 캐싱 272 / 8.6.4 모델 및 코드에 대한 전달 형식 273
8.6.5 간단한 모델로 시작 275 / 8.6.6 외부인에 대한 테스트 276
8.7 요약 276
CHAPTER 09 모델 서빙, 모니터링, 유지보수 279
9.1 모델 서빙 런타임의 특성 280
9.1.1 보안 및 정확성 280 / 9.1.2 배포 용이성 280
9.1.3 모델 유효성 보장 281 / 9.1.4 복구 용이성 281
9.1.5 훈련/서빙 왜곡 방지 281 / 9.1.6 숨겨진 피드백 루프 방지 282
9.2 모델 서빙 모드 283
9.2.1 배치 모드 서빙 283 / 9.2.2 인간에 대한 주문형 서빙 283
9.2.3 머신에 대한 주문형 서빙 286
9.3 현실에서의 모델 서빙 287
9.3.1 오류에 대한 대비 287 / 9.3.2 오류 처리 288
9.3.3 변화에 대한 준비 및 대처 290 / 9.3.4 인간 본성에 대한 준비 및 대처 291
9.4 모델 모니터링 293
9.4.1 무엇이 잘못될 수 있는가? 293 / 9.4.2 모니터링 대상 및 방법 294
9.4.3 기록할 내용 297 / 9.4.4 남용 감시 298
9.5 모델 유지보수 299
9.5.1 업데이트 시기 299 / 9.5.2 업데이트 방법 300
9.6 요약 303
CHAPTER 10 결론 307
10.1 핵심 요점 308
10.2 다음에 읽을 내용 312
10.3 감사의 말 313
1장 에서는 머신러닝을 사용해야 하는 이유와 사용하지 말아야 되는 경우 및 전반적인 용어 설명과 전체적인 개발 프로세스에 대해서 설명한다. 머신러닝 중 지도학습과 비지도학습에 대한 범주를 소개하며 클래스를 예측하는 문제를 분류 classification 실수 값을 예측하는 회귀 regression에 대해서 간략하게 설명을 한다. 머신러닝을 사용하기 위해서는 깔끔한 데이터가 충분조건은 아니지만 필요조건이다.(깔끔한 데이터 tidy data) 머신러닝 애플리케이션은 시간이 지남에 따라 자연적으로 성능이 저하되거나 갑자기 비정상적으로 작동할 수 있는 모델을 포함하고 있다. 조용히 실패한다.
2장 에서는 프로젝트와 목표 팀 구성과 성공적인 모델에 목표와 기준에 대해서 설명한다. 머신러닝 애플리케이션의 목적으로 비용 절감, 매출과 이익 증대, 생산성, 참여도, 정서 향상이 각 엔지니어의 역할에 대해서 소개한다.(머신러닝 엔지니어, 소프트웨어 엔지니어 도메인 전문가, 데이터 엔지니어, 데브옵스 모델 배포 로드 모니터링) 또 한, 머신러닝 프로젝트가 실패하는 이유에 대해서 소개한다.
3장 에서는 데이터의 중요성에 대해서 소개한다. 좋은 데이터는 아래 3가지의 특성을 갖는다.
좋은 데이터는 편향되지 않는다.
좋은 데이터는 모델 자체의 결과가 아니다.
좋은 데이터의 레이블은 일괄된다.
추가적으로 데이터 중 개인 식별 정보 제거도 필요하고 모델링할 대상의 데이터가 최신이 아닐 경우 대표하지 못하는 데이터를 제거해야 한다. 다만 문제를 해결 위한 작업을 시작하고 진행상황을 보기 전에는 필요한 데이터의 양은 미리 알 수 없다. 좋은 데이터란 일반화를 할 수 있을 만큼 충분히 크다.
4장 에서는 특징 공학에 대해서 소개한다.
이미지와 텍스트의 경우 데이터의 따라 추출하는 방법이 다르다. 너무 많은 특징을 갖고 있으면 이로 인한 중복으로 인하여 추론의 품질이 나빠질 수 있으며 군집화 및 PCA 등 차원 축소를 통하여 의미 있는 특징을 찾는 것이 중요하다. 모델을 훈련하기 전에 특징을 스케일 하고 스피마 파일이나 특징 저장소에 특징을 제거하고 문서화, 코드, 모델, 훈련 데이터를 동기화하는 것이 모범 사례에 속한다.
5,6 장에서는 지도 모델 훈련에 대해서 소개한다.
머신러닝 과제에서 머신러닝 엔지니어가 평균적으로 모델링에 할애 하는 시간은 기껏해야 5~10$에 불과하다. 성공적인 데이터 수집, 준비 특징 공학이 더 중요하다. 너무 많은 노력, 수학이나 복잡한 논리 유도 없이 인간이 견본에 레이블링 할 수 있다면 모델이 인간 수준의 성능을 발휘할 수 있다.
교차검증, 그리드 검색, 랜덤 검색 또는 그 밖의 다른 기술을 사용하여 하이퍼 파라미터를 찾을 수 있다. 몇주동안 하이퍼 파라미터(이상적인) 값을 계속 검색한다. 책에서의 하이퍼파라미터의 번역은 초매개변숫값으로 되어있다. 전이 학습은 기존의 훈련된 모델을 사용하여 적응량의 데이터로도 유용하다. 사전 학습된 모델을 새로운 모델의 특징 추출기로 사용한다. 이때의 장점은 사전 훈련된 모델의 매개 변수를 고정하고 추가된 층의 매개 변수만 훈련하면 된다.
7 장에서는 모델평가 하는 방법에 대해서 소개한다.
오프라인 모델 평가는 모델 훈련 후 실시하는데 이는 과거 데이터를 기반으로 한다. 반면 온라인 모델 평가는 온라인 데이터를 사용해서 운영 환경에서 모델을 테스트하고 비교한다. 많이 사용되는 온라인 평가 기술은 A/B 테스트 인대 A/B 테스트를 수행할 때는 사용자는 A와 B의 두 그룹으로 나눈다. 이 두 그룹에는 각각 구형 모델과 신형 모델이 제공된다. 그런 다음에 통계적 유의성 테스트를 통해 새 모델이 이전 모델과 통게적으로 다른지 여부를 결정한다.
모델 평가를 하는 데 사용하는 테스트 견본은 모델을 운영환경에 배포하기 전에 결함을 발견 해 낼 수 있어야 한다.
8 장에서는 모델 배포에 대해서 소개한다.
모델을 배포하는 전략에는 소프트웨어의 일부분으로 정적으로 사용자 기기에 포함하거나 서버에 동적으로 모델 스트리밍을 통해 배포할 수 있다. 사용자 기기에 동적으로 배포할 때의 주요 이점은 사용자가 모델을 빠르게 호출할 수 있다. 또한 서버에 대한 비용도 절감된다. 단점은 모든 사용자에게 업데이트를 제공하는데 어려움이 있고 타사에서 모델을 분석 할 수 도 있다.
책의 전반적의 내용은 머신러닝 개발 프로세스를 파이프라인으로 설명하면서 각 단계에서의 필요한 기술, 역할에 대해서 전반적으로 장점과 단점을 설명되어 있다. 책에서 가장 강조된 내용을 의미있는 데이터를 선별하는 것이 가장 큰 핵심으로 생각된다. 현재 딥러닝 모델을 만들 때도 가장 중요한 것이 데이터 정제와 데이터의 중복된 특징을 제거하여 이상적인 특징을 선별하여 좋은 데이터를 만드는 것이 중요하다.
이상적인 데이터를 확보하고 모델을 배포하여 지속적인 모니터링을 통하여 더 좋은 특징과 데이터를 가공이 필요한대 이 부분에서 A/B 테스트, 멀티 암드 밴딧 등 다양한 배포 전략과 모니터링을 통하여 모델을 더 개선할 수 있는 방향성을 제시한다. 필자도 모델을 만들면서 아직까지 경험을 못하였지만 모니터링에 중요성 또한 알 수 있었다.
2021년 한해 많은 머신러닝 책을 읽으면서 학습을 해왔다. 책의 전반적인 내용은 다른 서적과 비교하더라도 군더더기 없어 보인다. 코드 보다는 설명 위주의 글로 되어 있으며 번역 중에 초매개변수라고 번역되어 있는 부분이 있는데 대부분은 하이퍼 파라미터라고 불린다. 해당 번역을 제외하고는 전반적인 머신러닝 개발 프로세스에 대한 접근법에 대해서 알 수 있는 책이다.
믿고 보는 제이펍 IT 전문서 리뷰어 1기로서 출판사로부터 책을 제공받았으나,
본 리뷰는 제 주관적인 판단에 따라 작성하였습니다.
비전 시스템을 위한 딥러닝 (0) | 2022.02.23 |
---|---|
텐서플로 라이트를 활용한 안드로이드 딥러닝 (0) | 2022.01.17 |
객체지향 프로그래머들이 반드시 알고 있어야 할 코딩의 정석 C++ (0) | 2021.12.27 |
자바스크립트는 모든 곳에 존재한다 - 그래프QL, 리액트, 리액트 네이티브, 일렉트론으로 크로스플랫폼 앱 만들기 (0) | 2021.12.24 |
핵심만 골라 배우는 안드로이드 스튜디오 Arctic Fox & 프로그래밍 - 제이펍 (0) | 2021.12.24 |
댓글 영역