◈ 추천의 글 ◈
인공지능(AI, Artifical Intelligence)은 지난 10년간 인상적인 진전을 이뤘다. 우리처럼 생각하고 행동할 수 있는 지적 기계를 만들고자 하는 인간의 꿈이 마침내 시작되는 것 같다. 모두가 이러한 역사적인 혁명에 참여할 수 있으려면 AI 지식과 자원의 민주화가 필요하다. 이 책은 이러한 담대한 목표를 달성하는 데 있어 시의적절하며 유의미하다.
이 책은 야망 있으며 경험을 가진 AI 개발자 모두에게 폭넓은 교육적 가이드를 제공한다. 저자인 매그너스는 AI 분야에서 확고한 리더인 NVIDIA로부터 얻은 풍부한 경험을 공유해준다. 지난 수년간 딥러닝에서의 비약적인 발전을 다루는 데 집중하고 있는 이 책은 좋은 균형을 유지하며 역전파와 같은 중요한 근본적인 내용 몇몇 도메인에서의 최신 모델(예를 들면 언어 이해를 위한 GPT, 이미지 이해를 위한 Mask R-CNN) 모두를 다룬다.
AI는 데이터, 알고리듬, 연산 인프라의 삼위일체다. ImageNet 대회가 시작되며 커다란 신경망을 훈련하기 위한 대규모 벤치마크 데이터셋을 제공했다. NVIDIA GPU의 병렬화는 이러한 커다란 신경망의 훈련을 가능케 했다. 대규모 모델의 구축과 유지는 곧 모든 AI 엔지니어의 필수적인 기술로 간주될 것이다. 이 책은 여러 도메인에서의 대규모 모델을 깊게 다루고 있으며 또한 신경 아키텍처 검색과 같은 떠오르는 분야를 다룬다. 우리가 이 분야에서 현재의 AI 모델로부터 될 수 있는 한 최대의 정확도와 하드웨어 효율성을 끌어내기 시작했으므로, 이들은 더욱 널리 보급될 것이다. 딥러닝 혁명은 거의 전적으로 오픈소스로부터 발생돼 왔다. 이 책은 코드와 데이터셋을 편리하게 접근하도록 해주며 코드 예제를 세밀하게 진행한다. 딥러닝을 위한 가장 인기 있는 프레임워크인 텐서플로(TensorFlow)와 파이토치(PyTorch) 모두를 위한 폭넓은 프로그램 코드가 준비되어 있다.
AI를 다루는 어떤 책이든지 윤리적 문제를 논의하지 않을 수 없을 것이다. 나는 AI를 개발하는 데 있어 사회적 영향을 냉정하게 생각해보는 것이 모든 AI 엔지니어의 책임이라 믿는다. 소셜미디어에서의 괴롭힘, 혐오 발언, 잘못된 정보의 확산은 잘못 디자인된 알고리듬이 어떻게 우리 사회에 커다란 혼란을 초래하는지 보여준다. 젠더 쉐이드(Gender Shades) 프로젝트와 확률적 앵무새(Stochastic Parrots) 같은 획기적인 연구는 상업적으로 대규모로 배포된 AI 모델에서 문제가 되는 편향성을 보여준다. 나는 적절한 가이드라인과 테스트가 자리잡을 때까지는 민감한 상황에서의 AI 사용을 금지해야 한다고 주장해왔다(예: 법 집행을 위한 AI 기반의 안면 인식 사용). 나는 이 책이 AI 모델 훈련과 유지에 있어 책임성과 투명성을 개선하는 모델 카드와 같은 상당한 발전 내용을 다룬다는 점을 기쁘게 생각한다. AI 커뮤니티의 밝고 폭넓은 미래를 기대한다.
◈ 이 책의 구성 ◈
1장, ‘로젠블랫 퍼셉트론’에서는 신경망의 기본 토대인 퍼셉트론을 소개한다.
2장, ‘기울기 기반 학습’에서는 경사 하강(gradient descent)이라 알려진 최적화 알고리듬 및 퍼셉트론 학습 알고리듬 이면의 이론을 설명한다.
3장, ‘시그모이드 뉴런과 역전파’에서는 DNN에서의 자동학습에 쓰이는 역전파 알고리듬을 수학적 용어 그리고 이진 분류를 위해 쓰인 프로그래밍 예제 모두를 통해 설명한다.
4장, ‘다중클래스 분류에 적용된 완전 연결 네트워크’에서는 데이터셋의 개념과 이들이 어떻게 훈련 집합과 테스트 집합으로 나뉘는지 설명한다.
5장, ‘DL을 향해: 프레임워크 및 네트워크 미조정’에서는 이전 장의 예제를 DL 프레임워크로 구현한다. 이 프레임워크가 코드를 어떻게 엄청나게 단순화하는지 그리고 네트워크의 여러 변형을 모델링하게 해주는지 보여준다.
6장, ‘회귀에 적용된 완전 연결 네트워크’에서는 이전 장에서 공부한 분류 문제 대신 수치를 예측하는 데 네트워크를 사용하는 방법을 공부한다.
7장, ‘이미지 분류에 적용된 합성곱 신경망’에서는 합성곱 신경망 혹은 그냥 합성곱 네트워크라 불리는, 2012년에 DL 붐을 시작시킨 네트워크의 한 가지 형태를 배운다.
8장, ‘더 깊은 CNN 및 사전 훈련된 모델’에서는 GoogLeNet, VGG, ResNet과 같은 더 깊은 CNN을 설명한다. 프로그래밍 예제로 사전 훈련된 ResNet 구현을 다운로드하고 이미지를 분류하는 방법을 배운다.
9장, ‘순환신경망으로 시간 시퀀스 예측하기’에서는 이전 장에서 설명한 네트워크의 한계와 관렪된 과제를 다루는 데 적합한 순환신경망(RNN, Recurrent Neural Network) 아키텍처를 설명한다.
10장, ‘장단기 메모리’에서는 RNN이 장기 의존성을 학습하지 못하게 하는 문제를 논의한다. 긴 시퀀스를 더 잘 다루게 해주는 장단기 메모리(LSTM, Long Short-Term Memory) 기법을 설명한다.
11장, ‘LSTM과 빔 검색으로 하는 텍스트 자동완성’에서는 장기 예측을 위한 LSTM 기반 RNN을 사용하는 방법을 살펴보고, 빔 검색(Beam Search)이라 알려진 개념을 소개한다.
12장, ‘신경 언어 모델과 단어 임베딩’에서는 이전 장의 예제는 단어 대신 개별 글자에 기반하는데, 많은 경우 단어 및 그 의미를 가지고 작업하는 것이 개별 글자로 작업하는 것보다 더욱 강력하다. 12장은 개념 언어 모델과 벡터 공간(임베딩 공간(embedding space)이라고도 함)에서의 단어 임베딩에 대해 소개한다.
13장, ‘word2vec과 GloVe로부터의 단어 임베딩’에서는 단어 임베딩을 만들기 위한 두 가지 인기 있는 기법을 논의한다.
14장, ‘시퀀스 투 시퀀스 네트워크와 자연어 번역’에서는 두 순환신경망의 조합인 시퀀스 투 시퀀스 네트워크(sequence-to-sequence network)라 알려진 네트워크를 소개한다.
15장, ‘어텐션과 트랜스포머’에서는 인코더-디코더 아키텍처의 정확도를 개선할 수 있는 어텐션attention이라 부르는 기법을 설명한다.
16장, ‘이미지 캡셔닝을 위한 일대다 네트워크’에서는 어떻게 일대다 네트워크를 사용해 이미지의 텍스트 설명을 만들고 이러한 네트워크를 어텐션으로 확장하는지 설명한다.
17장, ‘추가적인 주제 메들리’에서는 지금까지 주제가 서로에 기반하여 만들어지도록 구조화했다. 17장에서는 이전 장에 포함시킬 좋은 방법을 찾지 못했던 몇 가지 주제를 소개한다. 이러한 주제의 예제로는 오토인코더, 멀티모달 학습, 멀티태스크 학습, 신경 아키텍처 검색 등이다.
18장, ‘정리 및 다음 단계’에서는 마지막 18장에서는 이전 장에서 논의한 주제를 정리하고 요약해 여러분이 이 책에서 설명한 핵심 개념을 잘 이해하고 있는지 확인할 수 있는 기회를 제공한다.
부록 A, ‘선형 회귀와 선형 분류기’에서는 매우 기본적인 ML 주제를 설명하여 여러분이 제시된 몇몇 DL 개념이 어떻게 더욱 전통적인 ML 기법에 연관되어 있는지 알 수 있게 한다. 부록 A는 논리적으로 3장 다음이다.
부록 B, ‘물체 탐지와 세분화’에서는 한 이미지 내의 여러 물체를 탐지하고 분류하는 기법을 설명한다. 부록 B는 논리적으로 8장 다음이다.
부록 C, ‘word2vec 과GloVe 너머의 단어 임베딩’에서는 단어 임베딩을 위한 더욱 정교한 기법을 설명한다. 부록 C는 논리적으로 13장 다음이다.
부록 D, ‘GPT, BERT, RoBERTa’에서는 트랜스포머로부터 만들어지는 아키텍처를 설명한다. 이 네트워크 아키텍처는 많은 NLP 과제를 상당히 개선했다. 부록 D는 논리적으로 15장 다음이다.
부록 E, ‘뉴턴-랩슨 대 경사 하강’에서는 2장에서는 경사 하강이라 부르는 수학적 개념의 기법을 소개하는데, 부록 E는 뉴턴-랩슨(Newton-Raphson)이라 알려진 다른 방법 및 이것이 경사 하강과 어떻게 연관이 있는지 설명한다.
부록 F, ‘숫자 분류 네트워크의 행렬 구현’에서는 4장에는 파이썬 코드로 신경망을 구현하는 프로그래밍 예제가 포함되는데, 부록 F는 그 프로그래밍 예제의 최적화된 변형 두 가지를 설명한다.
부록 G, ‘합성곱 층을 수학적 합성곱과 연관시키기’에서는 7장에서는 합성곱 신경망을 설명하는데, 이들은 합성곱(convolution)이라 알려진 수학적 연산에 근거하며 이로부터 이름을 얻었다. 부록 G는 이와 같은 연결을 더 자세히 설명한다.
부록 H, ‘게이트 순환 유닛’에서는 10장에서는 장단기 메모리(LSTM)라 알려진 네트워크를 설명하는데, 부록 H에서 이 유닛의 더 단순한 버전인 게이트 순환 유닛(GRU, Gated Recurrent Unit)을 설명한다.
부록 I, ‘개발 환경 설정’에서는 개발 환경을 설정하는 방법에 대한 정보와 함께, 딥러닝 프레임워크를 설치하는 방법과 코드 예제를 어디에서 찾을 수 있는지도 알아본다. 또한 이 책의 코드 예제에 쓰인 두 가지 DL 프레임워크인 텐서플로와 파이토치의 주요 차이점을 간단하게 설명한다.
부록 J, ‘치트 시트’에서는 이 책에 실린 상당 부분의 내용을 요약하는 치트 시트 세트를 포함하고 있다.
◈ 옮긴이의 말 ◈
딥러닝으로의 첫 여행을 시작하신 분들을 환영합니다. 또한 딥러닝 입문을 위해 이 책을 선택하신 여러분께 찬사를 보내 드립니다. 왜냐하면 여러분은 가장 탁월한 선택을 하셨기 때문입니다. 지금부터 수많은 딥러닝 책 중에서 왜 이 책이 좋은 선택이 될 수 있는지 말씀드리겠습니다.
딥러닝 기술이 발전하고 널리 보급됨으로 인한 장점 중 하나는, 예측 또는 그 비슷한 것을 무언가 부담스러운 과학의 관점에서 기술의 관점으로 바라보기가 더 쉬워졌다는 점이라고 생각합니다. 다르게 말하자면, 배경지식에 너무 신경 쓰지 말고 일단 데이터에서 유의미한 결과를 얻는 데 집중하게 되었다는 것입니다. 저자도 이 점에 대해 6장 마지막에 비슷한 의견을 표명하고는 있습니다. 하지만 초보자의 입장에서 보면, 수학에 대한 부담감은 잠시 내려놓고 자세한 설명으로 이론을 배우며 풍부한 예제 코드로 여러 가지를 시도해보면서 학습하는 것이 딥러닝을 배우는 좋은 방법이 될 수 있다고 생각합니다. 그리고 이 책은 이를 위한 좋은 시작점이라고 말씀드릴 수 있습니다.
이 책은 많은 수학적 지식이 필요하지 않습니다. 미적분에 대한 약간의 지식이 있는 것으로 충분합니다. 행렬대수학에 대해 조금 안다면 더욱 좋겠지만, 너무 걱정할 필요 없습니다. 이 책에서 별도로 잘 설명해주고 있기 때문입니다. 통계학이나 확률론이 익숙하지 않더라도 읽는 데 큰 문제는 없다고 생각합니다. 이 책은 수학 공식에 의존하기보다는, 말과 그림으로 자세히 설명하는 것을 시도합니다. 저도 번역하면서 어떻게 이렇게까지 자세히 설명해줄 수 있을까 하고 놀란 적이 한두 번이 아니었답니다. 이 책은 퍼셉트론에서 시작하여 DNN, CNN, RNN을 거쳐 비교적 최근 아키텍처인 트랜스포머에 이르기까지 주요 모델과 아키텍처를 차근차근 설명해줍니다(요즘 많이 회자되고 있는 ChatGPT는 트랜스포머 아키텍처를 기반으로 하고 있습니다).
이 책에서는 수학적 지식보다는 파이썬 활용이 중요하다고 할 수 있습니다. 물론 책을 읽기만 해도 배경지식을 얻는데 도움이 되겠지만, 이미지 분류 및 자연어 처리에 관해 잘 짜인 예제 코드를 직접 실행하고 실험해본다면 학습의 폭을 더욱 넓힐 수 있을 것입니다. 여러분의 딥러닝으로의 첫걸음에 응원을 보내면서, 이 책이 작게나마 도움이 되길 바랍니다.