쉽게 따라 만드는 파이썬 주식 자동매매 시스템 - 파이썬으로 나만의 주식 자동매매 시스템을 만든다!
박준성 지음 / 길벗 / 2021년 10월
평점 :
장바구니담기


Python 기반의 주식 자동매매 시스템 개발 방법을 안내하는 도서로 약간의 용응을 더할 경우 다양한 용도의 프로그램으로 활용할 수 있는 확장성 높은 프로그램을 개발할 수 있도록 구성된 점이 특징이다.

Python으로 주식 자동매매 시스템을 개발하는 방법을 담은 책이다. 워렛버핏은 자면서도 돈을 벌 수 있는 시스템을 만들지 않으면 평생 일해야 한다고 말했다 한다.

자면서도 돈을 벌 수 있는 시스템으로 여러가지가 있겠지만 일반적으로 가장 접하기 쉬운 재테크 수단은 역시 주식이며 이 역시도 자동화된 프로그램의 도움을 받는다면 더욱 워렌 버핏의 말을 실현하는데 도움이 될 것이라 생각한다.

먼저 본 도서의 실습환경은 아나콘다와 파이참으로 이루어진다. 아나콘다는 수치 계산 등에 도움이 되는 Python 라이브러리를 호환성을 고려하여 묶어놓은 환경 덕분에 설치 한 번만으로도 파이썬 에코 환경을 활용하기 용이하다는 장점이 있다.

프로젝트를 개발하는 IDE로 본 도서에서는 Pycharm을 활용하고 있다. 기본적으로 파이썬에서 제공하는 IDE 툴에 비하면 Pycharm이 얼마나 편리한지는 이를 활용해 본 독자라면 모두 알고 있을 것이다. 파이참을 선택한 구성이 마음에 들었다.

개발환경을 구성하는데 있어 이 책에는 크게 2가지의 접근법이 소개되고 있다. 1장 환경구성의 경우 명령어 하나하나 따라해보며 Bottom-Up방식으로 배워나가는데 도움이 되는 환경 구성을 다룬다.

반면 부록A에 소개된 예제 코드 내려받기 및 환경구성은 Top-Down방식이다. 완성된 프로젝트를 다운로드 받아 큰 그림을 파악해보고 하나씩 이해해가며 자신만의 아이디어를 수정하고 싶다면 부록 방식의 환경 구성을 권장하고 싶다.환경구성

둘 중 어떤 순서로 학습할지 기준을 정한 후 그에 맞는 환경 설정 방식을 택일할 것을 먼저 추천하고 싶다.

이 책에서 만들고자 하는 최종 목표는 “5장 프로젝트” 단원에서 다룬다. 프로젝트를 완성하기 위해 필요한 파이썬의 기본 지식들이 2장에 소개되고 있는데 이는 장점이자 단점이 될 수 있는 부분이다.

Python의 기초에 이미 능통한 독자라면 2장이 불필요한 부분일 수도 있어 단점이 될 수도 있는 반면, 자신이 Python의 경험이 전무하거나 프로그래밍 개발 자체가 생소하다면 크게 도움이 될 수 있는 부분이기도 하다.

읽어본 바 전체적으로 기초를 잘 설명하고 있으며 특히 아주 기초적인 문법 외에도 프로젝트를 구성에 필요한 지식인 모듈, 패키지, 클래스 및 상속 등의 지식을 알기 쉽게 전달하고 있다.

프로젝트에는 Thread 등의 기술들이 활용되고 있어 특히 상속이나 패키지 같은 이해가 필요한 데 뒷장에서 실습을 무난히 진행할 수 있도록 기초 지식을 미리 잘 설명하고 있다는 생각이 들었다.

3장에는 키움 API의 활용법이 등장한다. 키움 증권사의 KOA 스튜디오 사용법을 비롯하여 제공되는 API 하나하나를 Python과 연동하여 자세히 실습하고 있어 증권사에서 제공하는 API를 완벽에 가깝게 이해하는데 큰 도움이 되었다.키움

로그인부터 계좌, 종목 등의 정보를 얻어오는 것은 물론 예수금을 조회한 후 주문 체결하는 API도 모두 소개되어 있어 한 증권사에서 제공하는 수준을 쉽게 파악하는데 도움이 되며 상세한 설명으로 이해하고 따라하기 좋았다.

다만 본인의 증권사가 키움이 아닌 경우에는 다소 곤란할 수 있겠는데 키움으로 증권사를 갈아타거나, 키움으로 예행 연습을 해 본 후 이용중인 증권사의 API에 적합하게 프로그램을 수정하는 방법 등을 선택해야 할 것이다.

다만 하나의 증권사 API에 통달하면 다른 증권사 API에도 쉽게 적응될 것이므로 큰 문제가 될 요소로 보이지는 않았다.

4장의 실전매매 전략은 간단한 것들만 소개된다. 유니버스 즉, 매수매도의 후보군을 선정하는 과정이 아래와 같이 소개되고 있는데 전반적으로 축약하여 설명하지 않고 머리속에 전개되는 과정을 그대로 글로 옮기는 구성 덕분에 이해가 수월했다.실전매매

이러한 구성상 가독성의 장점은 뒷 파트에도 계속 이어지고 있어 초보자도 쉽게 이해하며 따라올 수 있을거라 생각하며 이런 점이 이 책이 가지는 가장 큰 장점이라는 생각이 들었다.

이 모든 것을 다 배우고 나면 5장에 등장하는 대망의 프로젝트를 진행하게 된다. 앞서 환경구성에서 미리 언지를 한 것처럼 본인이 큰 그림부터 파악하는 것을 선호하는 성향이거나 빠르게 프로젝트를 돌려보고 튜닝을 원하는 독자라면 Top-Down방식으로 학습하는 것도 나쁘지 않겠다는 생각이 든다.

그럴 경우 먼저 5장부터 읽을 것을 권한다. 환경구성은 앞서 언급했든 부록A부터 참조를 하는 것이 좋을것이다. 다만 Top-Down으로 학습을 할 경우 최소한 프로그래밍의 경험이 있거나 키움 등 증권사 API를 활용해 본 경험이 있는 독자에게 추천하고 싶은 방법이다.

Python의 기초가 없거나 다른 언어 프로그래밍 경험도 전무하다면 이 방식으로 진행할 경우 너무 높은 난이도 장벽에 부딪혀 시간을 낭비하게 되거나 의지가 꺽이게 될지도 모른다.

아무튼 프로젝트에는 다양한 생태계가 활용된다. DB로 SQLite를 활용하고 있고, beautiful soap 라이브러리를 활용해 네이버 주식의 특정 페이지를 크롤링하는가 하면, Line 프로그램과의 연동으로 푸시 알림 메시지를 연동하기도 한다.프로젝트

모듈, 패키지, 프로젝트, 365일 무한 실행과 관련된 프로젝트의 구성방법에 대해 배울 수 있으며 Thread를 이용하여 다양한 작업을 동시에 수행하며 우선순위를 고려하는 방법도 익힐 수 있다.

스스로의 전략이 떠오를 경우 쉽게 확장하여 전략을 구현하여 연동할 수 있게 구성되어 있다는 것이 특징이며 굳이 주식매매 시스템이 아니더라도 자신이 필요한 프로그램이 있을 경우 이를 응용하여 변형할 수 있도록 폭넓은 라이브러리를 사용한다는 점이 가장 큰 장점이라 할수 있겠다.

그럼에도 약간이나마 아쉬운 부분도 있다. 개인적으로 미국 주식을 애용하고 있기에 키움 증권의 글로벌 API와의 연동이 소개되었으면 어땠을까 하는 아쉬움이 있었다. 하지만 국내용 API를 통해 쉽게 적응할 수 있는 부분이므로 큰 문제는 아니다.

대신 전략 파트가 너무 짧게 소개된 것은 조금 아쉬움이 남는 부분이다. 저자 본인이 취했던 방법 중 괜찮았던 방법 하나 정도는 자세히 다뤄줬다면 투자서로도 상당히 값어치 있는 책이 되었을 것 같다는 생각이 든다.

그럼에도 이 책은 자동매매 시스템을 구축하는데 훌륭한 가독성을 갖췄다는 점과 이 책의 예제를 응용하여 어떤 프로그램이든 손쉽게 만들 수 있다는 확장성을 제공한다는 점에서 같은 목적을 가진 독자에게 매우 추천하고 싶은 도서라는 점을 강조하고 싶다.




댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
프로그래머의 뇌 - 훌륭한 프로그래머가 알아야 할 인지과학의 모든 것, 2022 세종도서 학술부문 선정
펠리너 헤르만스 지음, 차건회 옮김 / 제이펍 / 2022년 1월
평점 :
장바구니담기


우리 뇌에서 일어나는 인지 과정을 이해하여 효율적인 프로그래밍을 가능하게 해주는 프로그래머들의 필독서이다.

프로그래밍을 배운다는 것은 쉬운 일이 아니다. 이미 완숙한 경지에 오른 고수 프로그래머들도 분명 처음 프로그래밍을 접할 때 힘든 과정을 거쳤을 것이고 이제 막 프로그래밍 세계에 입문한 초보자는 현 시점이 그 어려운 순간일 것이다.

개인적으로 스스로를 고수라 평하기엔 객관적으로 입증할 방법이 없고 부끄러운 부분인지라 머뭇거리게 되지만 1만 시간의 법칙이 맞다는 가정하에 스스로 왠만한 프로그램을 배우는 데 큰 어려움이 없다는 것은 동의할 수 있는 부분이다.

그동안 프로그래밍에 어려움이 있었다면 그저 1차원 적으로 노력과 연습, 반복만이 답이라고 여겨왔는데 이 책을 읽고 프로그래밍에 숙달하기까지의 과정에는 여러 길이 있으며 특히 우리 두뇌의 특성을 파악하고 상황에 맞는 효율적인 방법을 선택하는 것이 얼마나 중요한 일인지 인지하게 되었다.

특히 파트1의 내용은 1만 시간이 넘는 프로그래밍 시간동안 느꼈던 부분들을 아주 잘 정리하고 있으며 뒤에 이어질 파트들의 근간을 이루는 지식들이 담겨 있기에 리뷰에서는 파트1을 중점적으로 소개해볼까 한다. 파트 1이 마음에 든다면 파트 2 이후에 이어지는 내용도 매우 만족스러울 것이라 기대해도 좋다.

파트1의 시작은 3가지 프로그램을 읽고 해석하는데에서 출발한다. 클린코드와 같은 또 다른 명서들이 코드 쓰기에 초점을 맞추고 있다면 이 책은 코드 읽기에 보다 초점을 맞춘다.

물론 가독성을 확보한 코드들이 장기적인 기억 즉, LTM의 효율성을 높혀 주기에 쓰기도 매우 중요한 부분임을 강조하지만 읽기 자체가 두뇌의 인지과정과 보다 밀접하게 닿아있고 지금까지의 교육이 읽기보다는 쓰기에 초점이 맞춰줘 있었다는데 착안하여 저자는 읽기 과정에서의 인지 결합을 더 중점적으로 다루고 있다.

아래 그림에 등장하는 세가지 언어로 작성된 각각의 코드를 읽어보자.코드

눈치빠른 독자라면 자바, 베이직, APL로 작성된 각각의 예제를 보며 두뇌를 쓰는 방식에 미묘한 차이를 느꼈을 것이다.

다만 이미 프로그래밍이 익숙한 나의 경우에는 각 코드별로 저자가 의도하는 바를 쉽게 눈치챌 수 있었으나 프로그래밍 경험이 전무한 사람에게는 비슷한 유형의 어려움으로 다가왔을지도 모르겠다.

그렇기 때문에 이 책은 어느정도 프로그래밍 경험이 있는 사람이 읽을수록 더 얻는 것이 많으리라는 생각이 들었다. 물론 아예 프로그래밍 경험이 전무한 사람에게도 큰 도움이 될 것 같기에 처음 읽는 독자라면 일단 이해가 가지 않더라도 믿고 따르며 첫 발을 내딛는다면 큰 도움이 될 것 같다.

다시 원점으로 돌아와서 자바 언어의 예제의 핵심은 .toBinaryString() 메소드에 달려있다. 이 메소드의 기능이 무엇인지 잘 모른다면 이 부분에서 버그가 생긴듯 사고가 정지될 것이다.

두번째 베이직 코드의 경우 자바 예제와 같은 생소한 메소드는 등장하지 않는다. 다만 각 단계가 복잡하다. 각각의 변수에 어떤 값이 저장되며 변경되는지 FOR라는 루프를 돌면서 어떤 변화가 일어나는지 추적을 해야하는데 기억력이나 깊은 사고에 제약이 쌓이면 전체 그림을 이해하는데 어려움이 있을 것이다.

세번째 APL은 좀 황당하다. 60년대에 사용되던 프로그램이라고 소개하고 있는데 아마 대부분의 독자들은 이 언어를 경험조차 하지 못했을 것이다. T가 연산자라고 소개하고 있는데 이게 도대체 뭐하는 연산자인지 알 길이 없다.

요는 이 세 유형의 코드를 전부 잘 이해하는 것이 목적이 아니다. 정말 중요한 것은 각 유형별로 두뇌가 맞닥드리게 되는 어려움의 유형이 각각 다르다는 점을 인지하는 것에 있다.

첫번째 자바 코드의 경우 메소드에 대한 정보가 없다는 것이 문제가 된다. 전혀 다른 언어인 Python을 배운다고 가정할 때도 비슷한 유형의 문제에 부딪힌다. 메소드, 라이브러리, 모듈 등의 정보가 없다면 각기 어떤 기능을 담당하며 언제 활용해야 하는지를 알 수가 없게 되므로 이에 대한 정보를 익혀야 한다.

이 정보를 익히는 과정은 단기 기억을 활용하게 되는데 이를 STM이라 부른다. 컴퓨터로 따지만 RAM, Cache와 같은 영역이 우리 뇌의 STM에 해당한다고 할 수 있다.

문제는 그간의 연구 결과에 따르면 이 STM이 많은 정보를 기억하지 못한다는데 있다. 순간 기억할 수 있는 단기 기억력이 실제로 크지 않다는 것은 우리 모두 잘 알고 있는 사실이다. 굳이 프로그래밍이 아닐지라도 간단한 그림 기억하기 퀴즈 같은 것에 도전해봐도 생각보다 단기적으로 기억할 수 있는 건수는 많지 않다는 것을 알 수 있다.

두 번째 코드는 우리 인지과정에서 처리능력을 설명하기 위해 제시된 코드이다. 컴퓨터로 빗대면 CPU와 같은 프로세스에 해당된다. 작업 기억 능력이라는 인지 기능에 해당하는데 이 코드의 해석이 어렵다면 정보나 지식의 부재때문에 발생하는 것은 아니다.

세 번째 코드는 T라는 연산자를 아예 모르는 즉, 지식의 부재에서 발생한다. 굳이 예제로 든 APL언어가 아닐지라도 프로그래밍 언어의 문법 자체나 알고리즘 등을 모르는 경우와 동일한 유형의 부하이다.

이는 암기에 의존해야하는 부분으로 장기 기억력을 필요로 하며 이를 담당하는 기능이 LTM이다. 컴퓨터로 비유하자면 하드디스크에 해당되는 기능이라고 할 수 있다. 보다 많은 양을 기억할 수 있으며 제법 오랜시간 기억이 존재할 수 있는 부분이다.

그동안 프로그래밍의 이해에 어려움이 있다면 막연히 모두 같은 유형으로 싸잡아 묶어오다가 두뇌의 인지과정과 빗대어 부하를 일으키는 유형을 잘 정리하고 있는 책이라는 생각이 들었다.

프로그래밍 세계와 인지 과학의 세계 두마리 토끼를 모두 이해하고 있는 고수가 아닌 이상 우리의 사고과정을 이렇게 명쾌하게 정리하기에 어려움이 있을텐데 이 두 주제를 제대로 이해해보고 앞으로의 프로그래밍 역량을 향상시킬 수 있다는 점이 이 책이 가진 가장 큰 장점이라 할 수 있겠다.

이어지는 주제로 삽입 정렬과 같은 코드를 3분 정도 유심히 들여다 본 후 책을 덮고 기억력에만 의존하여 그대로 필사해 보는 훈련을 여러번 진행하게 된다. 그 과정을 통해 정말로 우리 두뇌가 위에서 저자가 말한 세가지 유형의 방식으로 움직이고 있다는 사실을 확인할 수 있다.

내가 생각하는 과정을 들여다 볼 수 있다는 것은 정말 놀라운 경험이었다. 또 더불어 저자가 분류한 인지 과정에 신뢰감을 갖기에 충분한 과정이었고 이를 통해 내가 앞으로 겪어야 할 문제의 유형에 맞춤형 진단과 해법을 내릴 수 있다는 점에서 이 책은 반드시 한 번 즈음 읽어봐야 할 필독서라는 생각이 들었다.

이 과정을 거친 후 프로그래밍에서 맞닥드리게 될 문제를 돌파하는데 가장 중요한 아이디어 중의 하나가 STM과 LTM의 효율적인 활용이라는 생각이 들었다.

평소 꾸준한 노력과 반복, 연습을 통해 LTM에 충분한 정보와 기초를 잘 다진 후 STM의 능력을 극대화하기 위해 청크의 용량을 늘릴 필요가 있다는 생각이 들었다.

이는 체스 실험을 통해서 잘 소개되고 있는데 체스판 위에 말들을 아무렇게 배치해놓고 체스 전문가와 일반인의 기억력을 실험한 일화이다.

흥미로운 사실은 실제 체스 경기중에 일어날 수 있는 경우의 말 배치는 전문가가 월등히 잘 기억한 반면에 체스 규칙과 무관한 말의 배열은 전문가나 일반인이 기억력에 큰 차이가 없다는 점이었다.

이렇게 즉석에서 무언가를 기억해 내는 능력은 STM에 의존하게 되는데 STM은 사람마다 약간의 차이는 있어도 대략 6개 정도의 공간만 동시에 활용할 수 있다는 점이 문제이다.

다만 비슷한 주제는 청크로 묶여 하나로 인식되기에 LTM을 기반으로 한 청크를 최대한 활용하면 순간적으로도 엄청난 기억력을 자랑할 수 있게 되는 셈이다.

예를 들면 아래 그림이 좋은 예제가 되겠다.청크

첫번째 문자는 전혀 생소한 문자와 문장이다. 단 5초만 주어진다면 이 예제를 완벽히 기억해내는데 대부분 한계에 부딪힌다.

반면 두번째 유형의 문제는 적어도 문자는 우리에게 익숙한 알파벳이다. 다만 문장은 생소하다. 첫번째 유형보다는 보다 빠르게 많은 양을 기억해 낼 수 있겠지만 어렵기는 여전하다.

마지막 세번째 유형은 1초면 암기할 수 있다. 문자도 익숙한 알파벳이며 문장도 익숙하게 바로 해석이 되는 문장이다.

이제 청크의 개념이 무엇인지 이해가 되시는지?

이 책에서 다루는 심오한 인지과학의 세계는 이것으로 끝이 아니다. 본 리뷰에서 다룬 것은 극히 일부분일 뿐이다. 클린 코드와 같은 유명한 도서들이 다루는 내용에 인지과학의 세계를 포함시킨 책이라고 보면 딱 맞는 설명이 될 수 있을 것 같다.

이 LTM, STM, Working Memory의 세 인지 과정을 잘 이해한 후 이어지는 파트들을 읽는 다면 그간의 프로그래밍 세계에서 겪었던 경험들이 슬기롭게 조화되고 통합되는 신기한 경험을 마주할 수 있을 것이다.

프로그래밍에 어려움을 겪을 때 활용할 만한 작업 기억 공간을 돕는 앱이나 의존 그래프 및 상태표를 활용하는 아이디어는 물론 대규모 프로젝트를 성공적으로 마무리 짓기 위한 방법론이나 협업에서 활용할 수 있는 방안들도 자세하게 소개되어 있다.작업기억공간
의존그래프

나를 알고 적을 알면 백전백승인 법. 우리 자신의 메타 인지과정을 느끼고 이해하며 프로그래밍의 세계를 항해한다면 보다 빠른 시간 내에 원하는 것을 쟁취할 수 있을 것이라 생각되기에 프로그래밍 세계에 발을 담근 모든 이에게 추천하고 싶은 도서이다.

더불어 프로그래밍이라는 소양이 기본 교육 과정에 포함되는 요즈음 문제 해결 능력을 키우고 싶은 모든 학생들에게도 권장하는 바이다.




댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
뛰지 마라, 지친다
이지풍 지음 / 한빛비즈 / 2022년 3월
평점 :
장바구니담기


한화이글스 수석 트레이닝 코치의 경험담과 깨달음을 엮은 책으로 우리 삶에 트레이너가 될 수 있는 책이라는 점에 의의를 두고 싶다.

어떤 분야든 한 분야에서 최고의 경지에 이르면 세상의 이치가 보인다고 한다. 세상의 이치를 얻으면 또 다시 다른 분야에서 최고의 경지를 낼 수 있게 된다.

저자는 한화이글스 수석 트레이닝 코치로 넥센 시절 프로야구단에서 트레이너의 중요성을 보여줬던 상징적인 존재이다.

트레이너 뿐만 아니라 세상 대부분의 직업은 지원 업무를 담당한다. 주인공이 아니라 조연인 셈이다. 그럼에도 조연이 주연급 상징적인 아이콘이 되었다는 것은 주연이 했던 노력의 몇 배에 달하는 노력이 필요했으리라.

이 책에 담긴 그의 깨달음의 무대는 야구라는 그라운드 위에 존재하지만 이 책을 읽는 나를 포함한 독자들 또한 저마다의 그라운드가 있다. 그런데 책장을 넘기고 있노라면 이 그라운드나 저 그라운드나 별반 차이가 없는 듯 싶다.

고정관념, 휴식, 인맥, 페이스 조절, 불안, 차별화된 강점, 일과 나 사이 등 야구장 위에서 펼쳐지는 저자의 깨달음들은 지금 내 마음속의 고민에 빗대어 볼 수 있으며 비유의 과정을 통해 저절로 치유되는 마법을 얻는다.

다만 읽으며 마음 한켠이 아려왔던 질문은 한가지다.

“오늘날 우리에게는 트레이너가 있는가?”

야구선수들은 저자와 같은 트레이너 덕분에 내적 성장을 이뤄내고 있다. 하지만 직장이라는 그라운드에서 뛰는 일반인들은 애석하게도 트레이너가 없다. 그래서 술집이 그렇게 붐비고 잘못된 길을 가는 줄 알면서도 방황속에 자신을 방치한 채 체념한다.

이 책은 그런 면에서 내게 큰 의미를 지닌 책이다. 담백하게 사실을 나열하면서도 고전과는 다른 친근한 어투로 술잔 한잔 기울이며 믿고 의지하는 선배가 말로 전하는 느낌의 책이다.

한장, 한장 모두 소중한 깨달음을 얻을 수 있는 내용들이지만 그 중에서도 몇가지 인상 깊었던 조언과 깨달음을 정리해보면 다음과 같다.

“잘 버티고 있어라. 감독이나 코치는 언젠가는 바뀔 것이고 선수의 진가를 알아봐주는 지도자를 언젠가는 만날 수 있고, 트레이드라는 제도를 통해서 새로운 기회가 올 수도 있다.”

기다림의 미학은 어려서부터 강태공의 낚시라는 고정관념만 머릿속에 박혀 있을 뿐 사실 기다림의 중요성을 인지 하는 사람은 흔치 않다. 하지만 대성한 인물들 옆에는 항상 기다림이 머물고 있었다. 강태공도 그러했고 하다못해 주식으로 세계 최고의 부자가 된 워렌 버핏도 그러했다.

인생도 변하고 삼라만상도 변하기에 나는 할 일을 그저 묵묵히 하고 때를 기다릴 뿐이다. 아무 것도 하지 않는 것 같지만 큰 일을 하고 있다는 사실을 평범한 사람들은 많은 것을 잃고 나서야 깨닫는다.

“감독님 옆자리에서 밥 먹는 것도 싫어하면서 어떻게 감독님이 당신들 의견을 들어주길 원하는가?”

우리는 이미 높은 사람의 옆자리에서 밥 먹는다는게 아부나 아첨의 프레임에 갇혀 있지만 인간관계는 어차피 GIVE AND TAKE다. 적어도 상호 신뢰가 밑바탕이 되어야 나의 말을 누군가도 들어주는 법인데 꼭 상사라는 프레임에서 벗어나 인간 대 인간으로 볼 필요가 있다는 저자의 당연한 말에 어제까지의 내 일상이 떠 올랐다.

불안해서 쉬지도 못하는 사람들에게.. “몸에 기억된 기술은 쉽게 없어지지 않는구나”

불안한 것은 유독 잊혀지지는 않을까 걱정한다. 일을 하다보면 때로는 다 잊고 즐거운 일을 하다보면 나도 모르게 해답을 찾는 경우가 그렇게 많다는 것을 경험으로 알고 있음에도 때로는 불안감에 쉬지도 못하고 마음에 부담을 주는 어리석은 행동을 왜 계속 하게 되는 것일까? 감각이 생겼다면 몸에 기억이 되었다면 마음 놓고 쉴 줄 아는 것이 내일의 나를 위한 길이라는 것을 깨달을 필요가 있다.

게으른 원인 파악이 가져오는 문제.. “왜 그런 거 같아?” 선수가 뭐라고 답을 하면 “그건 또 왜 그런거 같아?”라고 연이어 물어본다.

트레이너의 계속된 질문은 별 의미없는 질문의 연속이지만 상담받는 이의 계속된 대답은 마법을 일으키곤 한다. 우리는 우리에게 저 단순한 질문을 너무도 아끼며 살아가는 것은 아닐지? 원인 파악에 게으르지 않게 좀 더 우리에게 단순한 질문을 계속 던져보면 어떨까?

하루는 로이스터 감독이 수비 코치를 불러 펑고(야수가 수비 연습을 할 때 코치가 쳐주는 타구)를 왜 그렇게 좌우로 많이 움직이게 치냐고 물었다고 한다. 훈련이라고 설명을 하자 바로 이렇게 물었다고 한다. “내야수 실책의 80%는 어디서 나오나?”

생존편향과 관련된 일화가 있다. 영국이 세계대전에서 전투기 추락율을 줄이기 위한 시도에서 비롯되었는데 당시 살아남은 비행기의 총알이 어느곳에 가장 많이 맞았는지를 분석하여 그 부분을 보강하는 식으로 대처했으나 결과적으로 생존율이 더 떨어지는 의아한 결과가 나온다.

원인은 바로 아무도 모르는 사이에 살아남은 비행기의 저격 흔적만 조사했다는 점. 반대로 총알을 안 맞은 곳이 약점인지라 약점을 안 맞은 비행기가 되려 살아남은 셈이다.

위 일화는 일상에서 보여주는 생존편향을 경시한 문제의 대표적인 사례라 할 수 있다. 우리 인생 역시 오지도 않을 공격에 대비해 너무 많은 노력을 기울이는 것은 아닐지 너무 많은 감정을 소모하는 것은 아닐지 역으로 생각해봐야 할 문제이다.

저자가 전하는 담백하면서도 마음을 따뜻하게 해주는 멜로디는 계속된다. 우리 인생에도 트레이너는 필요하다. 당장 트레이너를 고용할 수 없다면 혹은 찾을 수 없다면 이 책이 당분간 따뜻한 트레이너가 되어 줄 수 있을 것 같다.

직장을 다녀와서, 때로는 밤에, 때로는 주말에 고단한 인생에 한 마디 위로가 필요하다면 또는 반드시 극복하고 싶은 과제를 해결하고 싶다면 이 책을 곁에 두시길 권하고 싶다.




댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
fastai와 파이토치가 만나 꽃피운 딥러닝 - 박사 학위 없이 AI를 폼나게 구현하는 법
제러미 하워드.실뱅 거거 지음, 박찬성.김지은 옮김 / 한빛미디어 / 2021년 8월
평점 :
장바구니담기


딥러닝의 민주화를 꿈꾸는 fast.ai를 다룬 책으로 애플리케이션 구동부터 밑바닥 구현에 이르기까지 Top-Down 방식으로 fast.ai의 철학과 구현의 묘를 알려주는 양서이다.

fast.ai는 손쉽게 딥러닝을 가능하게 해주는 Pytorch보다 고수준의 딥러닝 라이브러리이다. 흔하게 알려진 Tensorflow, Pytorch에 비해 문자 그대로 얼마나 빠르고 쉽게 AI를 구현할 수 있는지 본 도서의 1장만 참조해도 쉽게 파악할 수 있다.

예를 들면 1장에는 개와 고양이의 분류기를 만드는 예제가 등장하는데 필요한 코드량이 고작 6줄이다. 딥러닝 입문자 수준만 되어도 fast.ai 라이브러리의 학습 유무와 무관하게 직관적으로 이해할 수 있는 코드라는 점이 특징이다.코드

위 코드를 한 번 해석해 보는 것이 fast.ai의 정체가 무엇인지 가장 빠르게 느낄 수 있는 방법이 될 것 같다는 생각이 든다. 그 외에 data 기반으로 손실 함수를 자동 선택하는 매력적인 기능에서부터 doc() 함수와 같이 사소한 부분까지 fast.ai에는 매력적인 기능들이 넘쳐난다.

이 책의 학습 방식은 다소 독특한데 전반적으로 Top-Down 방식으로 구성되어 있다. 먼저 위와 같이 최소한의 코드로 빠르게 개와 고양이 분류기를 만들고 눈으로 직접 확인하며 어플리케이션 사용자가 되어 본다.

다음으로 코드를 한 줄씩 뜯어보며 정체를 알아본다. 코드를 해석하고 난 다음에는 필요한 딥러닝의 개념, 모델의 구조를 알아보는 식이다.상세코드
구조

종국에는 fast.ai 없이 밑바닥까지 구현하는 구성으로 되어 있으며 필요 시 논문 및 연구 결과를 해석해보는 것은 물론 그 안에 포함된 수식도 주저없이 다룬다.연구

fast.ai라는 것이 밑바닥 레이어를 가리고 빠르고 쉽게 딥러닝을 구현 가능하게 해주는 라이브러리라는 것이 무색할 정도로 시간이 흐를수록 책이 뒷부분으로 넘어갈수록 깊이 있는 내용까지 세세하게 파고든다는 것이 꽤 아이러니했다.

얼마나 상세하게 다루는지 그동안 기초라고 생각하며 넘어갔던 내용도 상세히 뜯어주고 있어 당연하듯 외우고 넘어갔던 부분을 내가 얼마나 모르고 있었는지 부끄럽게 만들어 줄 정도이다.

왠만한 교과서 이름 들어가는 딥러닝 책을 수 십권 이상 읽은 것 같은데 새롭게 배우게 된 내용들이 많아서 충격이었다.

대충 알고 있던 연구 결과의 심오한 의미를 다시 깨닫게 된 것에서 시작하여 마빈 민스키 교수가 XOR과 관련하여 여러 층의 신경망으로 해결할 수 있다는 사실을 증명했다는 사소한 것까지 이 책 덕분에 바로 잡을 수 있었다.

분량도 700p가 넘고 fast.ai를 사용하는 사람들의 기대와는 다르게 왜 딥러닝의 밑바닥까지 기술했는지 읽을 수록 궁금했다. 상당한 분량의 책을 오랜 시간 1회독한 후에야 저자들의 의도를 어렴풋이나마 알 수 있게 되었다.

아마도 이 책을 읽는 독자는 수준이나 경험의 차이는 있을지 몰라도 딥러닝으로 어떤 솔루션을 구현하는데 있어 저마다의 방법론을 갖고 있을 것이다.

때로는 그 방법이 매우 뛰어난 방법이 될 수도 있는 반면 크게 도움이 되지 않는 조촐한 방법이 될 수도 있을 것이다. 그리고 아마 대부분 후자에 해당될 것이다.

나 역시 딥러닝을 활용한 나름의 해결 방법론을 갖고 있는데 이 책 덕분에 나의 방법이 얼마나 조악하고 임기 응변 식이었는지 적나라하게 깨달을 수 있었다.

fast.ai의 껍데기에서 11장의 중간수준 API를 거치고도 밑바닥까지 구현하는 방법을 모두 소개하는 과정 덕분에 fast.ai는 어떤 철학으로 만들어졌으며 나의 방법과는 어떤 차이가 있는지 깨달을 수 있었다.

그리고 이 책의 저술 방식 또한 fast.ai의 철학을 그대로 따르고 있다는 사실을 알게 되었다. fast.ai가 딥러닝의 민주화로 칭송받는 만큼 이 책은 fast.ai가 어떻게 만들어졌는지 투명하게 공개하여 다른 고수들의 도전을 받아들일 준비가 되었음을 시사하는 것 같아 감회가 새로웠다.

읽는 내내 세상에 완벽한 시스템은 없지만 이 정도 철학과 구현에 토를 달 수 있을 것인지 만약 그렇다면 fast.ai를 업그레이드하는데 참여해 볼 생각이 없느냐는 저자 심중의 말이 들리는 느낌이었다.

아무튼 fast.ai가 어떻게 구현되고 설계되어있으며 현존하는 다른 솔루션과 어떻게 연결할 수 있는지를 파악하며 내 딥러닝 세계의 모래성이 상당 부분 허물어졌고 새롭게 쌓아 올리게 되었으며 그 과정에서 많은 것들을 배울 수 있었다.

즉, 이 책은 fast.ai의 모든 것을 다룬 책이지 결코 fast.ai의 장점이나 활용 측면만을 다룬 책이 아니라는 것을 꼭 알아두었으면 한다.

개인적으로 가장 재미있던 파트는 9장과 11장이다. 9장은 Tabular 데이터를 다루는데 딥러닝이 얼마나 개입할 수 있고 딥러닝이 무엇을 도와줄 수 있는지에 대해 꽤 깊이있게 다룬다.

캐글 경진대회에 관심이 많거나 기존 레거시를 그대로 안고 AI를 도입하려는 조직에 몸담고 있는 분들이라면 공감이 될 만한 장이다. AI로 새 출발을 하는 스타트업이나 부서라면 모르겠지만 대부분의 기존 부서들은 RDBMS에 대한 의존도가 상당히 높기 떄문이다.

영상처리나 NLP, 시계열에는 딥러닝이 우위를 점하고 있지만 Tabular 데이터 앞에서는 그다지 활용도가 높지 않다. 기존 머신러닝 세계의 앙상블만으로도 꽤 좋은 성능을 내기 때문이다.

하지만 흔히 활용되는 랜덤 포레스트, 그레이디언트 부스팅과 비교하여 딥러닝을 활용하는 방법은 구체적으로 어떤 차이가 있을지 다차원의 피처에서 어떤 도움을 받을 수 있는지 등 다른 책에서 찾아보기 힘든 내용이 많이 담겨 있어 흥미롭게 읽을 수 있었음은 물론 배울 내용이 많았다.

11장은 중간 수준 API를 통해 fast.ai의 내부를 엿볼 수 있는 장이다. Python이 제공하는 추상화의 위력을 실감할 수 있고 콜러블, 데코레이터 등 특수한 기능을 어떻게 fast.ai에 녹였는지 짧지만 쉽게 이해할 수 있도록 잘 정리하고 있다.

fast.ai의 철학을 엿보기 쉬운 장이므로 조금 더 많은 분량을 할애하여 설명해 주길 바랬지만 이 책이 fast.ai의 활용과 이해에 주안을 두고 있는 것을 알았기에 아쉬움을 뒤로 할 수 있었다.

전체적으로 파트1에서는 실제로 눈으로 확인 가능한 제품을 만들고 확인하는 것에서 출발한다. 파트2는 fast.ai의 애플리케이션 레이어에 대한 설명을 다루고 있으며 영상처리, 협업 필터링과 관련한 추천시스템 등 제품 관점에서 필요한 지식 위주의 설명을 담고 있다.

파트3는 딥러닝의 기반을 이루는 모델에 대해 분석하고 논문 등의 연구 결과를 뜯어 본다. 마지막 파트4에서는 밑바닥 수준의 신경망을 구현하는 방법 등을 다루는 데 특히 Learner 클래스를 직접 구현해 보는 19장이 흥미로웠다.

그 외에도 이 책은 많은 흥미로운 서드 파티 요소들을 소개하고 있다. IPython, Voila 등을 이용해서 주피터 노트북을 애플리케이션화하는 방법이나 배포하는 방법 혹은 깃허브 블로그를 만들어 연동하는 방법까지 보다 생태계를 널리 활용하는 방법도 담고 있다.생태계

책의 구성 방식도 매우 독특한데 주인공 세명이 등장한다. 컴퓨터에 강하지만 수학에 약한 제러미, 수학은 잘 하는데 IT에 약한 실뱅, 독자와 비슷한 눈높이를 가진 동료같은 알렉시스가 어려운 내용이 등장할때마다 TIP 박스에 등장한다. 마치 옆에서 얘기해주는 느낌이 들 만큼 친절한 구성이었는데 깊이 있는 이해와 졸릴 때마다 많은 도움이 되었다.

또, 각 장 말미에는 질문지가 등장하는데 딥러닝을 어느 정도 학습한 독자라면 이 질문지를 먼저 읽을 것을 권하고 싶다. 이미 알고 있는 내용은 빠르게 건너뛰고 질문지에서 답하기 힘들었던 내용을 중심으로 입체적으로 읽어나간다면 더 빠르고 확실한 이해에 도움이 될 것이다.

리뷰가 너무 길어져 이만 정리하지만 사실 하고 싶은 말이 너무 많았다. 700p가 넘는 책을 읽다보니 언급하고 싶었던 것도 많지만 너무 글이 통일성도 없고 두서없이 늘어놓는 것만 같아 이즈음에서 줄인다.

꼭 fast.ai를 활용하지 않더라도 밑바닥에서 고수준을 아우르는 라이브러리를 직접 구현하여 사용한다면 스스로의 작품과 fast.ai와의 진검승부에 이 책은 좋은 가이드가 되어 줄 것 같다.

상당히 심오하고 깊이있는 내용임에도 매우 쉽게 전달하는 저자들의 능력과 노력에 감탄했다. fast.ai와 무관하게 딥러닝에 관심이 있는 독자라면 누구에게라도 반드시 도움이 될 것을 확신하며 리뷰를 마친다.




댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
오빠를 위한 최소한의 맞춤법
이주윤 지음 / 한빛비즈 / 2016년 11월
평점 :
장바구니담기


남자들을 위한 최소 맞춤법을 설명한 책으로 재미, 요령, 사전적 의미로 구성된 이해가 쏙쏙 잘 되는 책이다.

내겐 여동생이 있다. 지금은 결혼하여 두 아이의 엄마가 되었지만 예전 처녀시절 했던 말이 떠오른다.

오빠. 정말 맞춤법 틀리는 남자는 확 깨는 것 같아. 글쎄 새벽에 전 남친이 카톡을 보냈어. “이것이 나의 한개다. 그래도 네가 보고싶어 이해해보려 한다.” 도대체 1개가 뭐냐 1개가? 심각한 상황이었는데 웃음만 나와.

그 이후로 맞춤법을 조심하는 습관이 생겼다. 그리고 주위를 둘러보니 생각보다 남자들이 맞춤법을 많이 틀린다는 사실도 알게 되었다.

대한민국에 독서량이 OECD 선진국 대비 심각할 정도로 저조하다는 사실은 이미 알고 있었지만 그 독서량마저 대부분 여자들이 차지하고 있다는 사실도 살면서 자주 느낀다.

책 읽기와 리뷰 쓰는 것을 좋아하는 나는 집에 천 권이 넘는 책을 소장하고 있다. 이상하게 다른 물질적 욕구는 거의 없는 편인데 책 만큼은 쌓아두지 않으면 마음속이 텅빈 것 같다.

안창호 선생의 하루라도 책을 읽지 않으면 입안에 가시가 돋힌다는 수준까지는 아니지만 그래도 책을 읽거나 소유하지 않으면 공허하다.

어쨌든 집 안에 물리적인 공간은 한계가 있고 어쩔 수 없이 눈물을 머금고 책을 정리해야 할 날이 온다. 우선순위가 조금 떨어지는 책이나 몇번이고 곱씹어서 통달한 책은 중고 시장에 내놓는다.

재미있는 것은 중고시장에 내놓은 책은 대부분 여자분들이 구매하신다. 가끔 남자분들이 사는 경우도 있는데 대부분 실용서이거나 수험서일 뿐 문학이나 고전류의 책은 여자분들만 관심이 있다.

아마도 이런 현상은 남자들의 맞춤법과 상관관계가 있는 것 같다.

어쨌든 리뷰를 쓰다보면 가끔 헷갈리는 단어가 등장한다. 이걸 어떻게 써야하지? 물론 인터넷에 검색하면 국립국어원의 친절한 자료가 쉽게 검색되지만 맞춤법 찾다 흐름이 끊기면 그리고 쓰려는 내용을 잊기까지 하면 허탈하기 그지 없다.

이 책에는 꽤 고급진 맞춤법도 등장하지만 살면서 최소한의 품위를 유지하기 위한 맞춤법이 대다수를 차지하기에 한 번 쯤 읽어두면 좋을 책이다. 특히 책 안 읽는 대한민국 남정네에게는 필독서이다.

이 즈음에서 책이 어떻게 구성되어 있는지 간략히 소개해보고자 한다.

혹시 "든"과 "던"이 헷갈렸던 적이 없는지?

든과던

..그대들과 즐거웠”던”…

군대 다녀온 남자들은 이 노래를 모르는 사람이 거의 없다. 미필자라고 해도 이 노래만큼은 대부분 알 것이다.

이 노래를 떠올리면 “던”이 과거의 마완성된 상태를 의미한다는 것을 직감적으로 알 수 있고 이 노래만 떠올려도 맞춤법을 실수할 일이 크게 줄어들 수 있겠다는 느낌표가 머리속에 맴돌 것이다. 이렇듯 이 책은 쉽게 기억할 수 있는 요령을 담고 있다.

일화

그리고는 재미있는 일화가 등장한다. 혹여나 제목 때문에 남자를 무시하는 책인가라는 의문은 갖지 말길 바란다. 오히려 반대다. 작가는 여자분이신 것 같은데 남자들을 위한 걱정과 배려가 책 곳곳에 묻어나기 때문이다.

요즈음 젠더 갈등이 워낙 심한 시기라 오해할 수 있겠으나 위 글에서도 알 수 있듯 군인에 대한 존경의 일화가 담겨있다.

그리고 각 장 말미에는 정확한 사전적 의미와 예시가 담겨 있으니 재미로 시작하여 정확한 의미로 도달가능한 구성이 인상적이다.

사전

대부분의 장은 위와같이 “재미있는 일화-기억을 잘 하기 위한 요령-사전적 의미” 순서로 구성되어 있다. 특히 일화는 매우 재미있다. 저자가 얼마나 유쾌한 감각을 갖고 일상을 보내고 있는지 얼마나 기발한지 맞춤법 떠나서 읽는 재미도 쏠쏠하다.

이런 재미있는 카톡 일상이 등장하기도 한다. 이 대화에선 "뵈요"와 "봬요" 중 뭐가 맞는지 헷갈릴 것이다. 저자의 요령은 봬요는 해요로 바꾸면 쉽게 알 수 있다는 것이다.봬요

금요일에 해요라는 표현이 자연스럽기 때문에 봬요가 맞는 것이다. 기억에 쏙쏙남는 요령은 이 책의 가치를 높여준다. 그런데 일화도 재미있다. 금요일에 뭘 한다는 것인지 19금 드립이 남발하는데 저자 분 여자분 맞는가 의문이 들 정도이다. (여자 분이 아닐 수 있겠다는 생각도 든다.)

물론 맞춤법이 자주 틀린다고 실망할 필요는 없다. 세상에 모르는 것이 없는 구글신께서도 가끔 틀리는 것이 맞춤법이다.구글

세상에서 가장 자주 틀리는 말들이 목차로 구성되어 있다. 차례대로 읽는 것도 재미를 느낄 수 있지만 내가 헷갈렸던 단어부터 찾아보면 더 유용할 것 같다. 일상에서 간혹 헷갈리는 단어가 또 등장한다면 필요할 떄마다 읽고 잠시 스트레스를 푸는 것도 좋은 방법이다.

책의 말미 부록과 에피소드에는 띄어쓰기나 추가로 잘 정리된 맞춤법 모음이 등장하니 책의 에피소드로 언급되지 않는 예시가 등장할 때 찾아보면 요긴하다.부록

아무튼 저자의 배려와 센스가 둠뿍담긴 책이다. 이 세상에 책들이 다 이런식으로 구성되어 있다면 다들 책을 드라마 보듯 즐길 수 있을거라는 생각이 든다.

멋진 남자는 아니더라도 최소한 분위기 깨는 남자가 되고 싶지 않다면 이 책을 즐기시길 추천한다.




댓글(0) 먼댓글(0) 좋아요(1)
좋아요
북마크하기찜하기 thankstoThanksTo