brunch

You can make anything
by writing

C.S.Lewis

by 개앞맵시 이복연 Sep 21. 2022

[탄생 비화] 머신러닝·딥러닝 문제해결 전략

개앞맵시와 신백균의 첫 책으로 가는 길

이 이야기는 신백균 저자와 개앞맵시가 만나

한 권의 책을 완성하기까지의

역경과 도전을 그린 충격(?) 실화다.



1막. 만남

2막. 책을 기획하다

3막. 좋은 원고를 만나다

4막. 첫 번째 역경 - 장/절 하나하나가 너무 길다

5막. 두 번째 역경 - 서울만 가면 그만?

6막. 리팩터링!

7막. 점을 연결하다

8막. 먼저 걸어 지도를 그리다

9막. 캐글을 넘어 머신러닝·딥러닝으로!

10막. 깜짝 선물! 공략집을 만들다





1막. 만남

편집자와 저자의 첫 만남이 극적이거나 낭만적(?)인 경우는 흔치 않다. 집필에 뜻이 있는 예비 저자가 출판사에 원고를 들이밀거나, 편집자가 책을 써줄 만한 후보를 다양한 경로로 물색해 의뢰하거나다. 신백균 님과의 만남은 후자 쪽이었다.


신생 출판사인 우리는 저자 모시기에 한창이었고, 회사 대표님이 신백균 님의 블로그를 인상 깊게 보아 집필을 먼저 제안했다. 신백균 님은 인공지능 관련 글을 많이 올리고 계셨는데, 그중 ‘캐글 필사’ 시리즈가 대표님의 눈에 들어왔다.


잠깐! ‘캐글 필사’란 캐글 경진대회에 제출된 노트북(문제 풀이)을 직접 따라 해 보며 정리하는 학습법이다. 성적이 우수한 노트북 혹은 정리가 잘 된 노트북에 담긴 기술과 노하우를 내 것으로 만드는 게 목적이다.


아직 나와의 만남은 이루어지기 전이다. 대표님도 편집자이기에 출판 관련 안내와 간단한 초기 기획까지 진행한 후, 나에게 검토를 요청했다.



2막. 책을 기획하다

처음 검토할 당시의 가제는 ‘캐글 데이터 과학’이었다. 최종 제목인 《머신러닝·딥러닝 문제해결 전략》과는 거리가 멀었고, 실제로 콘셉트도 크게 달랐다. 초기 콘셉트를 단순화해 정리하면 다음 정도다.


    대상: 데이터 분석과 머신러닝 이론을 어느 정도 익힌 후, 캐글에 입문하고 싶은데 어떻게 시작해야 할지 막막한 분  

    내용: 입문하기에 적합한 몇 가지 대회를 선정하여, 우수한 노트북을 분석/개선하여 상세히 설명하고, 대회마다 탐색적 데이터 분석, 시각화, 모델링, 성능 향상 기법을 다루며, 필요한 기본 이론도 정리  

    주요 구성: 머신러닝과 딥러닝 대회를 각각 몇 개씩 선정하여 장(챕터)당 하나씩 공략  


제목과 콘셉트 모두 매우 정직하고 평이했다. 더구나 ‘캐글’ 주제의 기존 책은 판매량이 적었고, 다른 출판사에서 준비 중인 책도 몇 권 있었기에 크게 기대하기는 어려웠다. 도서 시장에서 ‘데이터 과학’이 핫하던 시절도 이미 몇 년 전이 지났다.


어쨌든 인공지능 쪽은 내가 베스트셀러를 다수 냈기 때문에 진행이 내게 맡겨졌다.



기획 단계에서 ‘이렇게만 나와 주면 나도 사고 싶다’라는 목차가 나오면 베스트지만, 이번에는 대박 아이디어는 떠오르지 않았다. 기획서의 목차가 아직 장제목뿐이라서, 캐글 경험이 전무한 나로서는 주물럭대 볼 수 있는 재료가 너무 적었다. 어떤 경진대회들을 다룰지조차 정해지지 않은 상태였다.


그래도 이 주제의 좋은 책에 목마른 독자가 분명 있을 것이고, 비슷한 구성이라도 한 차원 높은 품질로 내면 의미 있는 일이리라. 우선은 저자님이 좋은 대회를 선정하고 원고를 잘 써주시길 기도해야 했다.


그리고 그 일이 실제로 일어났다. 기깔난 원고가 들어온 것이다!



3막. 좋은 원고를 만나다

드디어 첫 원고가 들어왔다. 문장이 무척 담백·깔끔하고 논리 흐름도 매끄러웠다. 한글, 즉 우리 ‘문자’는 진짜 쉽지만, 우리 ‘말’과 ‘글’은 제대로 구사하기가 정말 어렵지 않은가? 그럼에도 신백균 님은 글로 밥벌이 좀 해보신 분들로부터나 느낄 수 있던 상쾌함을 선물해주셨다.


원고를 통해 작가님이 의도한 전개 방식과 내용을 훨씬 구체적으로 알 수 있었지만, 아직은 극초반의 일부 원고일 뿐이었다. 보지 못한 덩어리가 너무 커서, 프로그래머 시절부터의 내 특기인 ‘이리저리 나누고 다시 붙여 더 멋진 구조로 다듬기’를 시도하기에는 시기상조였다.


흥행까지는 모르겠으나, 적어도 진행 과정은 선선한 가을 저녁의 조깅처럼 부침이 없을 것이었다. 가벼워진 마음으로 주어진 원고에서 국지적인 개선점 위주로 피드백했다. 피드백은 바로바로, 원고 전체에 반영되었다. 대단한 흡수력이었다.


한참 후에 알게 된 사실이지만, 저자님이 선정하신 경진대회들 각각이 집중하는 분야가 서로 달랐고 그 배치가 절묘했다. 이런 치밀한 설계와 섬세한 배려 덕분에 독자들이 지루하지 않고 점진적으로 학습하게끔 이끌어주는 책이 될 수 있었으리라.


어디서 이런 복덩이 저자가 굴러(?) 들어왔을꼬!



4막. 첫 번째 역경 - 장/절 하나하나가 너무 길다

원고가 목표한 날짜에 맞춰 차곡차곡 들어와 쌓였다. 하지만 세상에 쉽기만 한 일은 역시 없나 보다. � 독자층이 얇다는 거 말고는 탄탄대로로 보였던 길에 장애물이 나타났다. 그것도 아주 치명적인...


장(chapter) 하나의 원고가 A4 기준 50쪽은 기본이고 70쪽이 넘기도 했다. 실제 책으로 나오면 60~90쪽 분량이다. 절 단위에서도 길었고 코드도 길었다. 문장이 좋아서 술술 넘어가지만, 정신줄을 잠시만 놓치면 어느새 길을 잃는 일이 빈번했다.


사람이 머릿속에 한꺼번에 집어넣고 버무려 소화할 수 있는 정보량에는 한계가 있다. 그래서 중간중간 그림이나 요점 정리 같은 장치를 둬서 앞 내용을 소화시킬 시간을 주는 것이다. 특히나 어려운 내용을 설명하는 학습서에서는 분량 조절이 정말 중요하다.



절이 길면 하위 절로 나누고, 코드가 길면 단계별로 나눠 설명하는 식으로 조금씩 개선했다. 하지만 절 계층구조가 깊어지는 부작용이 마음에 계속 걸렸다. 소스 코드의 들여 쓰기 단계가 깊어지면 좋지 않듯 글도 절이 깊어지면 좋지 않은 법이다.


장이 긴 문제를 해결할 실마리는 찾기가 더욱 어려웠다. 경진대회 하나를 기본 공략과 고급 과정으로 쪼갤까도 고민했지만, 대체로 기본 공략 쪽 비중이 훨씬 커서 효과가 크지 않아 보였다.


현재까지의 문제

독자층이 얇은 편이다.

장/절 하나하나가 너무 길다.



5막. 두 번째 역경 - 서울만 가면 그만?

그러다가 장이 몇 개 쌓이자 안 보이던 또 다른 문제가 드러나기 시작했다. 책의 초기에 ‘경진대회 풀이 프로세스는 이렇다’라고 정리하고 들어가는데, 막상 경진대회를 공략할 때는 각개 격파하는 느낌이 컸다. 이유는 다음과 같다.


이 책의 시작점은 기본적으로 캐글 필사였다. 경진대회별로 우수한 노트북(문제 풀이)을 참고하여 초심자도 쉽게 이해하고 배울 수 있게 상세한 설명을 덧붙이려 했다. 그런데 경진대회마다 문제 특성이 다르고 선정된 노트북들도 서로 다른 사람이 작성하였다 보니, 자연스럽게 큰 전략은 비슷해도 세세한 전술은 달랐으리라...



그래서 3장을 읽고 나서 4장을 읽으면 새로운 느낌이 들었고, 이어서 5장을 읽으면서도 여전히 낯설었다. 장/절이 너무 길어서 한 번에 안 들어온다는 문제와 합쳐지면서 반드시 해법을 찾아야 하는 상황이었다.


현재까지의 문제

독자층이 얇은 편이다.

장/절 하나하나가 너무 길다.

경진대회마다 구체적인 풀이법이 다르다.



6막. 리팩터링!

그래서 경진대회 문제를 풀어나가는 과정을 일관되게 조정하는 작업을 작가님과 함께 여러 차례 반복했다. 각 장에서 수행하는 일들을 세세히 나누고 규정한 다음, 책 첫머리에 소개한 기본 문제해결 프로세스라는 틀 안에 맞춰보았다.


다음은 이 리팩터링 작업 중 작가님과 주고받은 그림이다.


리팩터링의 효과는 굉장했다.


리팩터링을 몇 차례 수행하고 나니 첫 번째 장보다는 두 번째 장이 쉽고, 두 번째 장보다는 세 번째 장이 쉬워졌다. 확실히 더 익숙해지는 느낌이 들었다. 개략적이던 문제해결 프로세스도 더 정밀해졌고, 프로세스 단계별 ‘체크리스트’를 만들어 모든 장을 매우 유사한 패턴으로 설명할 수 있게 되었다. 설명뿐 아니라 코드의 흐름도 자연스럽게 패턴화가 이루어졌다. 패턴을 맞추는 과정에서 절 깊이가 지나치게 깊던 문제까지 해소되는 효과를 보았다.


재야 고수들의 개성 강한 전술들을 일관된 전략으로 묶었을 때 훨씬 큰 힘이 발휘됨을 확인한 순간이다.



또한, 이때부터 ‘캐글 리팩터링’이라는 이름이 책 제목 후보로 거론되기 시작했다. 확실히 임팩트 있고 독특해서 회사에서는 한동안 이 이름으로 통용됐다. 마지막까지 이어지지는 않았지만 ‘리팩터링’과 ‘패턴화’는 이 책을 특징짓는 주요한 특징으로 자리를 잡았다.


남은 문제

    독자층이 얇은 편이다.  

    장/절 하나하나가 너무 길다. ( ← 제법 완화되었으나, 아직 부족 )  



7막. 점을 연결하다

상황은 확실하게 나아진 게 느껴졌지만 여전히 부족했다. 경진대회 하나를 정복한다는 건 정말이지 너무 긴 여정이었다. 크게 ‘이해 → 분석 → 베이스라인 → 성능 개선’ 흐름인데, 이해 단계를 빼면 각각이 너무 길었다. 분명히 분석을 말끔히 하고 지나온 거 같은데, 베이스라인과 성능 개선 단계에서는 분석 내용이 잘 기억나지 않았다. 그래서 두 과정을 연결해보기 시작했다.



이 작업 덕분에 열심히 분석한 내용이 이후 과정에 어떻게 적용되는지를 추적할 수 있게 되었다. 실제 책 구성에도 중간에 정리하는 단계가 추가되었고, 독자도 추적 내용을 확인할 수 있게 시각적인 요소를 추가했다. 또한 매칭 되지 않던 빈 구멍도 몇 개 찾아 보완할 수 있었다.



남은 문제

독자층이 얇은 편이다.

장/절 하나하나가 너무 길다. ( ← 상당히 개선됨 )



8막. 먼저 걸어 지도를 그리다

과정이 길고 복잡한 게 뜻밖의 좋은 결과로 이어지기도 했다.


독자에게 길을 안내하기 위해 프로세스의 주요 단계에서 이루어지는 세부 작업들을 흐름도로 정리해야 했고, 이전 단계나 다른 경진대회와의 차이점을 부각해줘야 했다. 이 흐름도들을 모으니 자연스럽게 ‘미니맵(minimap)’이 만들어졌다. 다음은 책 7장의 미니맵이다.



만약 설명이 필요 이상으로 장황하고 복잡했다면 저자나 편집자 잘못이었겠지만, 경진대회 공략(머신러닝 문제해결)은 그 자체가 필연적으로 길고 복잡한 과정일 수밖에 없을 것이다. 이 과정을 저자님이 쉽게 잘 풀어주셨고, 나는 초심자의 눈으로 정리를 하다 보니 정돈된 지도를 만들 수 있었다. 나와 같은 초심자인 독자들께도 매우 유용한 자료이자, 지금껏 다른 어디에서도 제공하지 못한 독창적인 부록이 만들어졌다.


지은이의 말을 보면 실제로 저자님도 같은 마음으로 이 책을 쓰셨다고 한다.


저는 비포장도로를 지나왔지만 여러분은 포장도로로 편하게 오시길 바라는 마음으로, 그리고 머신러닝·딥러닝에 재미를 느끼면 좋겠다는 바람으로 책을 썼습니다.  ― 신백균


남은 문제

독자층이 얇은 편이다.



9막. 캐글을 넘어 머신러닝·딥러닝으로!

프로세스, 패턴화, 미니맵, 체크리스트, 점진적 학습 등, 이 책을 특징짓는 요소들이 하나 둘 갖춰지면서 어느 순간 ‘문제해결 전략’이라는 다소 거창한 이름을 붙이기에 부끄럽지 않은 원고가 눈앞에 놓여 있었다. 또한 완성도도 높고 충분히 범용적이라서 드디어 ‘캐글’을 떼어내고 ‘머신러닝/딥러닝’을 전면에 내세울 수 있게 되었다. 캐글도 결국은 머신러닝/딥러닝(혹은 데이터 과학) 역량을 키우기 위한 수단이니, 그 사실 그대로를 책에 투영하여 콘셉트를 재정립했다.



결국 ‘캐글’이라는 약점을 ‘머신러닝/딥러닝 역량을 기르는 가장 좋은 수단’으로 전환시켜 강점으로 탈바꿈시키고, ‘너무 길고 복잡하다’라는 약점도 ‘패턴을 찾아 전략화’하여 독자적인 위치의 책으로 변모시켰다. 다음 그림처럼 캐글 정복을 바라는 독자들을 그대로 끌어안은 채, 기획 시점보다 훨씬 많은 독자에게 다가갈 수 있게 되었다.



이렇게 해서 드디어 독자층이 얇다는 마지막 단점까지 말끔히 씻어낸 느낌이 들었다. 길고 험난했지만 뜻깊고 홀가분한 여정이었다.



10막. 깜짝 선물! 공략집을 만들다

9막을 끝으로 마침내 완성된 책이 세상에 나왔다. 하지만 여정은 여기서 끝나지 않았다.


이번 책을 만들면서 많은 부가 자료가 만들어졌다. 대표적으로 6막에서는 ‘체크리스트’를 만들었고, 8막에서 만든 ‘미니맵’을 만들었다. 개별적으로도 독자들에게 유용한 자료지만 전체를 종합해서 ‘이렇게 학습하면 효과적이에요’를 설명할 안내서가 있다면 더욱 빛을 발할 수 있어 보였다. 


마침 ‘미니맵’이 게임 용어라서 자연스럽게 ‘공략집’으로까지 생각이 이어졌다. 이왕이면 더 친근하고 더 재밌게! 저자와 독자 모두를 위해 게임 느낌의 소개 그림과 게임 느낌의 공략집을 만들어 선물하기로 했다.


(공략집 PDF는 저자님의 깃허브에서 다운로드할 수 있다.)


책을 인쇄소로 넘긴 후 실물이 나오기까지, 공략집 제작은 오랜 편집 작업으로 지친 내게도 막바지에 재미난 도전 과제가 되어주었다. 디자인을 함께 해준 조수현 마케터께도 감사드린다.





등장인물


신백균

본문에서 소개한 책의 저자

월 평균 6만여 명이 방문하는 데이터 분석/머신러닝 관련 기술 블로그 운영

참여자 1,200명 이상인 머신러닝 관련 오픈 채팅방 운영진


개앞맵시(이복연)

글쓴이

편집자 겸 번역가


회사 대표

사업가, 저자, 편집자

신백균 저자 발굴


조수현

마케터

‘캐글 → 머신러닝’ 방향 전환과 공략집 디자인에 지대한 공헌




책 쓰기 리빙 포인트!


1. 출판에서도 저자, 편집자, 독자의 소통이 중요하다.

이 그림은 각양각색의 편집본이 돌아다니는데 원 출처는 어디일까? 원작자께 감사를!!


2. 기획이 중요하다. 하지만 팔로업은 더 중요하다.

책 쓰기는 긴 프로젝트다. 멋진 기획  기획대로의 집필  빠른 출간으로 이어지는 이상적인 일은 흔치 않다. 집필과 편집 과정에서 내용과 시장에 대한 이해도가 깊어졌다면, 수시로 더 나은 길을 고민해보자.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari