나는 2012년에 1200페이지짜리 책 『Machine Learning: A Probabilistic Perspective』(The MIT Press, 2012)을 펴냈다. 당시에 머신러닝 분야를 확률적 모델링이라는 통일적인 렌즈하에서 꽤 폭넓게 다뤘던 이 책은 2013년에 드 그루트 상(De Groot Prize)을 수상했다.
2012년은 또한 일반적으로 ‘딥러닝 혁명’이 시작된 해로 간주된다. ‘딥러닝’이라는 용어는 많은 층으로 된(따라서 ‘깊은(deep)’이란 용어를 사용함) 신경망을 기반으로 하는 ML의 한 분야를 뜻한다. 이 기본적인 기술은 수년간 존재해 왔지만, 심층 신경망(DNN)을 사용해 ImageNet 이미지 분류 대회에서 큰 차이로 이기면서 폭넓은 커뮤니티로부터 주목을 받은 것은 2012년이었다. 음성 인식 같은 어려운 문제와 관련된 발전이 동시에 나타났다. 이러한 변혁은 하드웨어 기술(특히 비디오 게임의 빠른 그래픽 처리 장치(GPU)의 용도를 ML로 바꾼 것), 데이터 컬렉션 기술(특히 ImageNet과 같은 거대한 라벨링된 데이터셋을 모으기 위해 아마존 메커니컬 터크(Amazon Mechanical Turk) 플랫폼 같은 크라우드 소싱 도구를 사용)은 물론, 다양한 새로운 알고리듬적 아이디어의 발전 덕분에 가능했다. 이들 알고리듬의 일부는 이 책에서 다룬다.
2012년 이후로 딥러닝 분야는 새로운 발전이 더욱 빠르게 나타나며 폭발적으로 커졌다. 기술의 상업적인 성공 및 적용 가능한 응용의 폭에 힘입어 이 분야에 대한 흥미 또한 폭증했다. 따라서 나는 2018년에 책의 두 번째 판을 저술하여 이러한 발전을 요약하기로 결정했다.
2020년 3월까지 두 번째 판의 초고는 1600페이지를 넘겼지만, 다루고자 하는 주제는 여전히 많이 남아 있었다. 그 결과 MIT Press는 책을 두 권으로 나눌 필요가 있다고 말했다. 그 뒤 COVID-19가 덮쳤다. 나는 책 저술에서 빠져나와 구글의 노출도 알림 앱을 위한 위험 점수 알고리듬의 개발을 돕고 다양한 예측 프로젝트를 지원하기로 결정했다. 그러나 2020년 가을에 책 작업으로 돌아가기로 결정했다.
잃어버린 시간을 벌충하기 위해 동료들에게 몇몇 절을 써서 내가 마칠 수 있도록 도움을 부탁했다. 이 모든 것의 결과는 새로운 두 권의 책, 여러분이 현재 읽고 있는 『확률론적 머신러닝: 기본편』, 그리고 이 책의 후속판인 『Probabilistic Machine Learning: Advanced Topics』이다. 이 두 책 모두 2012년에 사용했던 확률적 모델링과 베이즈 결정 이론의 동일한 통합 렌즈를 사용해 2021년경의 ML 분야를 폭넓게 제시하고자 한다.
2012년 책의 내용 대부분이 남아 있지만, 이제 이는 두 권의 새로운 책으로 꽤 비슷하게 나눠져 있다. 추가로, 각각의 새로운 책에는 딥러닝 주제 및 생성 모델, 변분 추론(variational inference)과 강화학습 같은 분야를 다루는 새로운 자료가 많이 담겨 있다.
이번 개론서의 내용이 더 충실하고 학생들에게 유용하도록, 최적화 및 선형대수와 같은 주제에 대한 배경지식을 추가했다. 이들은 2012년 책에서 공간 부족으로 인해 빠져 있었다. 개론 수준의 강좌에서 건너뛸 수 있는 고급 내용은 절이나 장 제목에 별표(*)로 표시했다. 연습문제는 몇몇 장의 끝에서 볼 수 있다. 자격 있는 강사는 MIT Press에 연락하여 별표로 표시한 연습문제의 해답을 얻을 수 있다. 다른 모든 연습문제의 해답은 온라인에서 찾을 수 있다. 추가적인 교육 자료(예: 그림과 슬라이드)는 책 웹사이트 probml.ai를 참고하라.
그 밖의 주요 변경사항으로, 모든 소프트웨어가 매트랩(Matlab) 대신 파이썬(Python)을 사용한다(이후에 줄리아(Julia) 버전의 코드를 만들 수도 있다). 새로운 코드는 넘파이(NumPy), 사이킷런(Scikit-learn), JAX, 파이토치(PyTorch), 텐서플로(TensorFlow), PyMC 같은 표준 파이썬 라이브러리를 포함한다.
그림의 캡션에 ‘iris_plot.ipynb로 생성했다’라고 되어 있다면, 해당 주피터 노트북은 robml.github.io/notebooks#iris_plot.ipynb에서 찾을 수 있다. 노트북 리스트에서 링크를 클릭하면 구글 코랩(Google Colab)에서 이를 열 것이다. 이는 여러분 스스로 그림을 쉽게 다시 만들고, 하부 소스 코드를 수정하여 방법에 대한 더 깊은 이해를 얻게 해줄 것이다(코랩은 무료 GPU에 접근할 수 있게 해주므로, 연산적으로 무거운 몇몇 데모에서 유용하다).