한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.
회사 업무는 주로 데이터 전처리, 통계 분석, 머신러닝 정도를 활용하고 있다 보니, 딥러닝은 네이버 부스트캠프 이후로 공부한 기억이 없었는데, 마침 코드 위주로 구성된 책을 받아보게 되었습니다. 오랜만에 딥러닝 내용을 복습할 수 있어서 좋았고, 특히나 아래에서 한번 더 서술하겠지만 단순히 AI 모델을 소개하는 것에서 끝나지 않고, 어떻게 서빙할 수 있는지, 앱에서 텐서플로우 라이트 사용하는 방법 등을 소개하고 있습니다. 또한 요즘 인공지능 윤리가 많이 대두되고 있는데, 해당 내용에 대해서도 다루고 있어서 좋았던 것 같습니다. 자세한 내용들은 아래에서 소개해보도록 하겠습니다.
1. 대상 독자
이 책은 빠르게 모델링을 해보고 싶은 분이나 모델을 만들고 그 모델을 앱 등에 서빙하고 싶은 분들에게 유용한 책이라고 생각합니다. 특히나 요즘 인공지능 모델에 대한 소개나 개념 등은 잘 소개되어 있는 책은 많지만, 모델을 어떻게 서빙하는 지를 다루는 책은 많지 않은데, 그러한 독자의 궁금증을 해결해 줄 수 있는 책입니다. 책은 텐서플로우를 기반으로 작성되어 있어서 파이토치를 주로 다루시는 분들은 낯설 수 있습니다. 텐서플로우로 작성된 이유는 아마 서빙 부분에서 파이토치보다 강력하기 때문이 아닐까라고 추측해 봅니다. 제가 인공지능을 공부할 때에는 모델링한 뒤에 다양한 형태로 변환하기 텐서플로우가 쉬웠었는데, 지금도 그런지는 모르겠네요!
2. 이 책의 특징
1) 책의 구성
이 책은 크게 2가지 파트로 나눠져 있습니다. 첫 번째 파트에서는 모델 구축과 관련된 내용을 두 번째 파트에서는 첫 번째 파트에서 만든 모델을 어떻게 사용하는 지에 대해서 다루고 있습니다.
첫 번째 파트에서는 모델 구축에 활용되는 라이브러리인 텐서플로우에 대해서 소개하면서 시작합니다. 그리고 기본적으로 인공지능 문제에 해당하는 컴퓨터비전, 자연어처리, 시계열예측 크게 3개를 다루고 있습니다.
두 번째 파트에서는 모바일과 임베디드 장치에서 머신러닝을 가능하도록 만든 기술인 텐서플로우 라이트에 대해서 소개하며 시작합니다. 안드로이드 앱, ios앱에서 텐서플로우 라이트를 활용하는 방법, TensorFlow.js, 텐서플로 서빙, AI 윤리까지 다루고 있습니다. 자세한 목차는 아래와 같습니다.
Part 1. 모델 구축
- 텐서플로 소개
- 컴퓨터비전 소개
- 고급 컴퓨터 비전: 이미지에서 특징 감지하기
- 텐서플로 데이터셋으로 공개 데이터셋 사용하기
- 자연어 처리 소개
- 임베딩을 사용한 감성 프로그래밍
- 자연어 처리를 위한 순환 신경망
- 텐서플로로 텍스트 생성하기
- 시퀀스와 시계열 데이터 이해하기
- 시퀀스를 예측하는 머신러닝 모델 만들기
- 시퀀스 모델을 위한 합성곱 신경망과 순환 신경망
Part 2. 모델 사용
- 텐서플로 라이트 소개
- 안드로이드 앱에서 텐서플로 라이트 사용하기
- iOS 앱에서 텐서플로 라이트 사용하기
- TensorFlow.js 소개
- TensorFlow.js에서 컴퓨터 비전 모델 훈련하기
- 파이썬 모델을 변환해 재사용하기
- 자바스크립의 전이 학습
- 텐서플로 서빙으로 배포하기
- 인공지능 윤리, 공정성, 개인 정보 보호
2) 실습과정 중에서 발생할 수 있는 문제
모델링을 다루는 많은 책들에서는 실질적으로 독자 입장에서 발생할 수 있는 문제들을 다루지 않는 경우가 많습니다. 이 책에서는 위처럼 모델이 학습이 잘 안 되었을 때, 발생할 수 있는 문제들을 제시하면서 해결할 수 있는 방법들을 소개합니다. 위와 같이 모델이 잘 학습되지 않는 문제들은 데이터셋이 빈약하거나 다양한 환경에서 발생할 수 있는 케이스들을 학습하지 못한 경우가 있습니다. 예전에 드론으로 인퍼런스 하는 문제를 해결하려고 했었는데, 그때에도 장화 신은 고양이가 등장했던 기억이 있습니다. 해당 문제를 해결하고자 저희 팀에서는 다양한 고양이 얼굴을 포함해서 문제를 해결했었습니다. 이처럼, 실제 모델을 구축하는 입장에서는 "당연히 잘되겠지?"라고 생각할 수 있겠지만, 생각보다 쉽게 모델링이 되지 않는다는 것을 알려주고 있다는 점에서 좋았습니다.
3) 효율적인 학습을 위한 파이프라인 소개
동일한 데이터셋을 활용해서 다양한 모델을 만들고, 그 과정에서 각각의 이미지 증식이 효과적이었는 지를 확인하기 위해서 원본 데이터를 수정하지 않은 상태로 학습이 진행되어야 합니다. 그에 필요한 ETL 파이프라인을 간략하게 소개해주는 점이 좋았습니다. 또한, 이미지의 경우 이미지 1장마다 데이터가 너무 크다면, 학습할 때 메모리에 한번에 올리기 어려운 문제 등도 있고, GPU를 적절하게 사용하고 있는지에 대한 의문이 들 때도 있습니다. 해당 부분에 대한 내용들도 다루고 있고 단순하게 이론에 치우친 내용보다 실질적으로 접할 수 있는 어려움에 대해 미리 알려주는 느낌이라 더 좋았던 것 같습니다.
4) 다양한 앱에서 텐서플로 사용하는 방법 소개
저는 전공을 수학을 했다보니, 컴퓨터 언어를 많이 접해보지도 않았고, 실제로 어떠한 프로세스로 앱이 만들어지는지, 어떻게 구성해야 하는지 잘 모르는 상태였습니다. 그래도 내가 만든 모델로 다른 사용자들이 직접 인퍼런스 해봤으면 하는 마음이 많이 있는데, 어떻게 앱을 만들어야 하는지 모르다 보니 나만 사용하는 모델이 될 때가 많았습니다. 제가 느끼는 것처럼 실제로 다양한 사용자들과 나누고 싶은 마음은 있으나, 어떻게 해야 할지 모르는 분들에게 차근차근 소스코드까지 알려주다 보니, 쉽게 따라 할 수 있었습니다. 예전에 막무가내로 안드로이드 스튜디오를 깔았다가 지웠던 기억이 있었는데, 이 책을 보니 다시 해볼 수 있겠다는 생각이 들었습니다.
3. 총평
이 책은 완전 이론보다는 직접 만들어보면서 인공지능을 배워가고 싶은 분들에게 도움이 되는 책입니다. 그리고 저처럼 인공지능을 알지만, 실제로 서빙하는 경험을 해보고 싶다면 추천해드리고 싶습니다. AI 모델을 End-to-End로 경험해볼 수 있는 책이 될 것 같습니다. 그래도 중간중간 어려운 용어들이 있긴 하지만, 아래에 주석으로 많이 설명하려고 노력하신 것 같다고 느꼈습니다. 제가 만약 지금 취업준비생인 상태였다면, 이 책을 활용해서 내가 만든 모델로 서빙까지 진행해 볼 것 같습니다.