단단한 심층강화학습 - 심층강화학습 기본 개념을 제대로 정리한 인공지능 교과서 제이펍의 인공지능 시리즈 (I♥A.I.) 37
로라 그레서.와 룬 켕 지음, 김성우 옮김 / 제이펍 / 2022년 2월
평점 :
장바구니담기


DQN, A2C, PPO 등의 알고리즘을 다루는 심층강화학습 교과서로 입체적인 구성이 특징이며 병렬화, 환경 설계 등 엔지니어링에 필요한 실전 내용을 포함하는 것이 특징이다.

강화학습은 순차적인 의사결정 문제를 해결하는 방법으로 에이전트가 환경안에서 최적의 행동을 취하는 것을 목표로 삼는다.

즉, 에이전트와 환경이 핵심 요소라고 볼 수 있다. 에이전트가 취한 행동이 환경에 전달되면 그에 따른 보상과 변화된 환경이 에이전트에 전달되는 것이 기본 흐름이다.제어루프

책에서는 직관적인 예로 카트폴 예제에 비유하고 있는데 여기서 에이전트는 카트를 제어하는 주체이며 그 외의 것들은 환경이라고 보면 된다.

상태는 카트의 위치 및 속도, 폴의 각도, 각속도 등 4개 요소가 해당되며 행동은 왼쪽 혹은 오른쪽으로 움직이는 2가지 요소이다. 보상은 넘어지지 않고 곧게 서 있는 모든 시간에서 +1점을 획득한다.

그 외 목적은 200단계의 시간 단계동안 폴이 곧게 서있도록 유지하는 것이고, 종료 조건으로는 폴이 떨어지거나 카트가 스크린 밖으로 벗어나거나 최종 시간 단계인 200에 도달했을 때 발생하는 예제이다.

사람도 손바닥 위에 깃대를 세워놓고 떨어지지 않기 위한 노력을 기울이다보면 깃대의 무게 중심이 어디인지, 얼마나 빨리 기울어지는지, 손은 얼마나 빨리 움직여야 하는지 판단하게 되며 연습이 진행될수록 보다 오랜시간 깃대를 곧게 세울 수 있음을 알 수 있으니 카트폴은 현실과 강화학습을 연결하여 바라보기에 가장 좋은 예제 중 하나일 것이다.

조금 더 개념을 확장하자면 정책은 행동을 도출하는 함수이며, 목적은 에이전트가 받는 보상의 총합, 특정 시간대에 주고 받는 “상태, 행동, 보상” 한 쌍을 경험, 경험의 연속을 궤적, 시간 t=0에서 종료까지의 구간을 에피소드라 부른다.

이때 환경이 다음 상태로 넘어가는 전이함수를 마르코프 결정 과정(MDP)으로 표현하는 것이 중요하다. 환경과 행동을 시간=0지점부터 직전 시간까지 모두 전달받아 다음 상태를 추측하는 것은 비현실적이기에 현재 상태 t시점에서 t+1시점의 상태를 파악할 수 있도록 MDP로의 표현이 필요하다.

책에서는 이를 피보나치 수열의 점화식 S(t+1) = S(t) + S(t-1)을 예로 들어 직관적으로 설명하고 있다. 저자들이 서문에서 책, 논문, 온라인 강의까지 모두 섭렵 후 본 도서에 등장하는 SLM Lab 라이브러리를 만들었다고 기술했는데 이를 방증하듯 직관적인 설명이 책 곳곳에 등장하고 있어 이해에 큰 도움이 되었다.

이 단계에서부터 슬슬 수식이 등장하기 시작한다. 처음 강화학습을 접할 때만 해도 수식이 너무 많아 지에 겁먹곤 했는데 다른 것은 몰라도 강화학습에는 수식이 필수적이다.

심층 강화학습 알고리즘 중 모델 기반 알고리즘에서 사용하는 몬테카를로 트리 탐색(MCTS)과 같이 모든 경우의 수를 전부 파악하고 있다면 구체적인 예제로 이해가 가능하겠지만 문제는 경우의 수가 무한에 가깝다는 것이다.

알파고조차 모든 경우의 수를 다 알고 바둑을 두지 못했던 것처럼 인간의 기억 용량으로는 어림도 없는 접근이다. 위에서 설명한 전이함수를 MDP로 변환하듯 복잡한 수식을 단순화하는 과정이 필요하며 모든 경우의 수를 t하나로 한정지어 접근하다보면 추후에는 오히려 수식이 있어 정말 다행이라는 생각이 들 것이다.

수식이 있음으로써 무한의 경우의 수 속에서 원하는 시점만을 뽑아 추상적인 개념으로 접근해 볼 수 있게 되는 것이다. 중간 중간 학교에서 배웠던 미지수 x의 정의에서 부터 점화식 같은 것들이 왜 필요했는지, 어디에 쓰이는지 느껴나가는 재미도 있다.

어쨌든 적어도 강화학습 만큼은 수학을 반갑게 맞이했으면 좋겠다. 위에서 이 책이 입체적이라는 설명을 했다. 입체적인 구성 덕분에 수학을 너무 어렵게 생각하지 않아도 될 것 같다. 직관적인 설명과 적시적인 예제가 서술되어 있음은 물론 도식이 자주 등장하여 이해가 쉬웠다. 아울러 장대하게 설명한 부분은 깔끔하게 수도 코드로 정리해준다.수도코드

이어서 Python코드로 이를 구현한다. 이렇게 다각도로 내용을 접하다보니 왠만한 개념은 대부분 이해할 수 있었다.Python

나아가 저자들이 직접 개발한 SLM 예제로 실험을 진행할 수 있도록 구성되어 있어 눈으로 성능을 확인할 수 있다는 장점도 있다.SLM

설치도 비교적 간단한 편인데 먼저 Anaconda 기반 환경은 구성해둬야 실습을 진행할 수 있다. 이 부분에 대한 상세한 설명이 누락된 것은 조금 아쉬운 부분이지만 이 책의 난이도를 생각할 때 이 부분에서 막힐 독자는 거의 없을거라 생각한다.환경설정

다시 본론으로 돌아가 에이전트가 무엇을 학습해야 하는지 살펴볼 필요가 있다. 정책, 가치함수, 모델의 확률 분포 등을 학습해야 하는데 우선 정책은 상태가 주어지면 계산이 가능하다.

가치 함수의 경우 행동을 취함으로써 얻게되는 이득의 기대값이 포함된 Q함수와 정책에 따라 결정되는 V함수가 존재한다. 이러한 부분은 뒤에 등장하게 될 다양한 알고리즘의 특성 간 차이가 되기도 한다.알고리즘

이를 정리하면 아래 그림과 같다. 가치, 정책, 모델 중 어느 것을 기반으로 하고 있는지 또 이들을 어떻게 결합하여 활용할 것인지가 이 책이 말하는 핵심 내용들의 개요가 되겠다.요약

강화학습의 내용은 방대하기에 리뷰로는 일부도 정리하기 어렵다. 하지만 DQN, A2C, PPO 등 각 장의 알고리즘마다 직관적인 설명과 입체적인 구성이 장점이기에 이해하는데 많은 도움이 된다는 점을 강조하고 싶다.

책의 후반부로 넘어가면 실전에 적용하기 위한 기법들도 풍부하게 등장한다. 확실히 배운 것에 그치지 않고 SLM 라이브러리를 개발한 저자들의 실전 내공이 묻어나는 파트이며 전반부에서 쉽게 배운 것들을 실전에서 구현하는데 어떤 부분이 필요한지 잡아주고 있어 매우 효율적인 구성이라는 생각이 들었다.

동기 및 비동기에 대한 병렬화, 디버깅, 하이퍼파라미터, SLM Lab의 구성, 하드웨어, 환경 설계(상태, 행동, 보상, 전이 함수 등)에 대한 내용을 주로 담고 있다.

말미에는 강화학습의 타임라인을 요약하고 있어 저자들이 집필하는 과정에서 관련 내용들을 집대성하기 위해 얼마나 꼼꼼하게 임했는지 느낄 수 있었다. 예전에 TRPO가 이해되지 않아 끙끙댄 적이 있었는데 그 이후의 세월동안 강화학습이 이렇게나 빠르게 발전했구나라는 생각을 했다.

더불어 참고문헌에는 유명한 주옥같은 논문들이 가득들어 있어 초심자가 학습하기에 좋고 그 외 실전에서 눈으로 보고 이해하는데 도움이 될 예제들도 소개되어 있어 유익했다.

결론을 내리자면 심층강화학습의 깊은 난이도를 놓치지 않으면서도 비교적 적은 지면을 할애하였다는 점이 놀랍다. 이렇게 압축 시키는 능력은 그간 저자들이 학습하고 노력하며 지름길을 찾아 직관을 전달하기 위한 노력이 아니었을까 싶다.

이 책의 시리즈인 단단한 시리즈의 책들이 참 양서라는 생각이 든다. 첫번째 머신러닝의 경우 기저 필요 지식을 깊이있게 학습할 수 있어 극찬할만한 도서였다.

두 번째 도서인 강화학습은 내용은 알찼으나 전달력이 조금 부족하다는 생각이 들었는데 이번 세번째 심층강화학습 편은 전달력 또한 많이 향상되어 더욱 즐겁게 읽을 수 있었다.

이번에는 두번째 편과 달리 심층학습이 결합된 형태로 초점이 맞춰져 있어 딥러닝을 활용한다. 덕분에 함수 근사나 최적화에 있어 보다 좋은 성능의 결과물을 얻을 수 있다.

알파고의 내부 원리가 궁금했거나 강화학습에 관심있는 독자라면 이 책을 제일 먼저 접하는 것도 나쁘지 않을 것 같다. 생각보다 깊이 있는 내용을 입문서 수준의 난이도로 풀어낸 구성이 일품이다.




댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
저는 기업분석이 처음인데요 - 꼼꼼한 생초보의 기업분석 입문기, 2022년 개정판 처음인데요 시리즈 (경제)
강병욱 지음 / 한빛비즈 / 2022년 2월
평점 :
장바구니담기


경제, 산업 등 거시적 분석부터 재무제표, 핵심지표 분석에 이르기까지 애널리스트 수준으로 가치있는 기업을 분석하기 위한 책으로 입체적이고 실전적인 구성이 특징이다.

투자의 세계에 입문한지는 10년이 넘었지만 아직도 기업분석은 쉽지 않은 것 같다. 정량적 분석으로 들어가기 시작하면 재무제표는 물론이고 까다로운 공식이나 지표를 익혀야 하는데 배워야 할 분량이 경제학과 전공 수준을 넘어서는 것 같다.

정성적 분석도 마찬가지이다. 쉽게 계량화하기가 어려워 주관적인 입장이 개입되며 이는 투자 손실의 위험을 높히곤 한다. 뿐만 아니라 갑작스런 공시에 살아있는 것 처럼 요동치는 주가는 성장기의 아이를 돌보듯 꾸준히 지켜봐야할 요소이기도 하다.

그래도 10년의 세월을 거쳐서 개인적으로 커뮤니티나 어깨너머로 상당한 지식을 습득했다 자부하는데 그간 쌓아온 지식이 이 책 1권만도 못한 것 같아 씁쓸하면서도 반가운 마음이다.

특히 이 책의 특징은 위에서 언급한 내용들 대다수 상황에 잘 대처할 수 있게 입체적으로 구성되어 있다는 점이다. 입체적인 구성이 어떤 것인지 하나씩 발췌하여 예를 들어 보겠다.

이중에서도 가장 강조하고 싶은 것은 실전에 적용가능한 구성이다. HTS에는 보물과 같은 자원이 많다. 나도 처음엔 특정 주식에 대한 매도 매수 추천을 담은 기업의 주관적 광고 정보인줄 알고 사용을 기피했는데 제대로 알고나니 쓸만한 정보가 넘친다는 사실을 알게 된 이후 HTS 없이는 투자가 불가능할 정도에 이르렀다.

예를 들어 아래 그림이 한 예이다. 유동비율 200% 이상, 부채비율 200% 이하, PER 15배 이하, PBR 1.5배 이하인 종목을 HTS없이 정보를 구하고 계산한다고 가정하면 아찔하다.HTS

반면 HTS를 활용하면 이런 귀한 정보를 실시간으로 정확하게 분석해 볼 수 있다. 좌측 트리 메뉴에는 금융 전문가들이 만들어 온 유용한 지표가 가득하다. 수식이야 그렇다치고 심지어 차트 모양에 대한 검색 조건도 있다.

좌측의 지표를 우측 상단으로 끌고 와 원하는 조건으로 설정 후 검색하면 우측 하단과 같은 결과가 나온다. 이론을 배우는 것에 그치지 않고 HTS를 활용한 실전 분석 적용을 가능하게 하는 것이 이 책의 가장 큰 장점이다.

하나의 예만 들었지만 책의 1/3 정도가 HTS 실전 적용에 관련된다고 할 수 있을 정도로 상당히 많은 페이지에 실전적인 적용법을 할애하고 있어 개인적으로 마음에 들었다.

두번째 입체적인 구성으로 알찬 예제를 들고 싶다. 아래 그림이 한 예인데 경제적 부가가치 즉, EVA를 산출하는 방법이 등장한다. EVA는 나도 비교적 최근에 알게 된 지표인지라 대충 투하자본수익률과 가중평균자본비용의 차이 정도라는 것만 알고 있었는데 이 책을 통해 명확한 개념을 잡을 수 있었다.예제

그냥 개념 설명한 부분만 살펴봐도 이해하기 쉽게 잘 설명되어 있는데 한 발 더 나아가 위 예제가 등장한다. 구체적으로 수식이 어떻고 그 수식에 직접 값을 대입해 계산을 시도하면 자신감도 늘고 무엇보다 확실한 개념 습득이 가능해진다.

이러한 예제들이 각 장 말미마다 소개되고 있어 풍부하다. 실제 내 상황이라는 가정하에 이루어지는 문답법이기에 쏙쏙 잘 이해됨은 물론 한 번 풀고나면 기억에 오래 남는 장점인 셈이다.

세번째 구성은 각장 말미에 등장하는 인사이트들을 정리한 분석 비법 배우기 코너이다. 꽤 방대한 분량의 책이기에 하나의 챕터를 읽고 나면 기억이 흐려지는 경우가 생기는데 이 코너에 도달하면 다른 시각에서 배운 것들을 복습하는 효과가 생겨 기억에 오래 남음은 물론 다른 전문가들의 관점에서 비평적인 자세로 내용을 되새길 수 있다는 장점이 있다.분석비법

위 그림의 예와 같이 벤저민 그레이엄의 투자 철학과 실전적인 종목 선택 기준이 내 판단과 얼마나 상이한지 그렇다면 누가 옳은지 등의 비평적인 사고하에서 지식을 습득 가능하다. 주식은 학문과는 다르다. 사고와 판단 없이 지식만 정리하는 형태로는 실전에서 승리하기 어려운데 지식만으로 얻을 수 없는 이런 비평적인 사고방식을 키울 수 있다는 점이 또 하나의 장점이다.

마지막으로 공시 읽기 핵심 키워드라는 책 말미의 부록을 소개하고 싶다. 기업분석이 장기적 관점에서 이루어진다면 공시는 촉각을 다툴 일이 많은 정보다.공시

개별주 투자를 진행하다보면 갑작스런 유상증자로 엄청난 손실이 생기는 경우도 있고 영업 실적에 대한 공시 또한 주가를 변동시키는 요인이 되기도 한다. 어떤 거물이 주식을 들고 있는지 판단이 용이해지며 또 다른 투자 유치 건이 있는지 확인할 수도 있다.

이는 마치 아기와도 같다. 종목을 한 번 선정해도 쉽게 방치해서는 안된다. 철저한 분석과 믿음으로 올라탄 주식이겠지만 그럼에도 공시 정도는 나날이 확인하며 동태도 살피고 대응할 수 있는 전략을 구비하는 것이 좋다.

책을 모두 읽고 공시에 대한 언급이 없어 찝찝한 기분이었는데 신기하게도 부록 책자로 공시를 언급하는 것을 보고 책의 완성도에 감탄했다. 이 책은 정말이지 기업분석을 위한 거의 모든 것을 담고 있음은 물론 굉장히 쉽게 풀어서 서술한다는 점이 특징이다.

책의 분량이 400페이지가 넘어가기에 리뷰 분량 상 내용을 요약하지 못한 것이 약간 아쉽지만 온라인 서점 페이지 목차가 상세히 소개되어 있어 목차만 읽어봐도 어떤 내용을 다루는지 대강의 파악이 가능할 것이다.

개인적으로는 후반부로 넘어갈수록 더 가치있는 내용들을 만날 수 있었다. 특히 5장 재무제표 파트는 예술이었다. 어려웠던 공식들을 쉽게 정리해 주는 것에서 시작하여 어려운 용어들을 다시금 복습할 수 있었고 어려워서 읽기를 포기했던 부분도 도전할 수 있게 만들어 준 파트이다.

만약 본인이 너무 초보자라서 이 책조차 어렵다면 위에서 언급한 대로 HTS, 예제를 먼저 읽어볼 것을 추천드린다. Bottom-Up으로 가는 셈이다. 실전에서 먼저 적용해보고 왜 이렇게 하는지 혹은 세부 개념이 무엇을 의미하는지 궁금증을 가지고 본론으로 넘어간다면 더 이해가 잘 될수도 있겠다는 생각이 든다.

기업분석 경험이 없지만 새롭게 배우길 원한다면 이 책으로 시작할 것을 추천하고 싶다. 그동안 주식 책을 꽤 많이 읽어왔는데 긴 여정의 첫 기초를 이렇게 튼튼하게 다질 수 있었던 책은 보지 못한 것 같다.




댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
리버스 엔지니어링 기드라 실전 가이드 - 유사 멀웨어로 익히는 소프트웨어 정적 분석
나카지마 쇼타 외 지음, 이창선 외 옮김 / 한빛미디어 / 2022년 1월
평점 :
장바구니담기


미국 국가안보국(NSA)이 개발한 소프트웨어 리버스 엔지니어링 도구인 기드라(Ghidra)를 활용하여 멀웨어와 유사한 프로그램을 실전과 동일하게 정적 분석하는 책이다.

기드라는 소프트웨어 리버스 엔지니어링 도구이다. 그렇기에 먼저 리버스 엔지니어링의 개념이 무엇인지 알 필요가 있다. 이는 쉽게 말해 실행할 수 있는 바이너리 프로그램의 원본 소스를 복원하는 과정이라 보면 된다.

아래 그림이 이를 잘 설명하고 있는데 실행 파일의 헥스 코드를 이용하여 원본 소스코드를 추적하는 과정으로 이해할 수 있다.리버싱

복원한 결과물이 어셈블리어일 경우 디스어셈블이라 칭하고, C언어와 같은 고수준 언어로 복원 시 디컴파일이라 칭하는 차이가 있을 뿐 결국은 인간이 이해할 수 있는 언어로 복원하는 과정이다.

그럼에도 본 도서에서 언급한 바와 같이 함수명이나 변수명과 같은 심벌, 주석, 컴파일러에 의한 자동 최적화 등의 문제로 완벽한 복원은 불가능에 가깝다.

특히 5장부터 등장하는 OS별 실전 문제를 진행하다보면 정말 건초더미에서 바늘 하나 찾는 느낌의 지루함이 반복되기에 끈기와 인내심이 필요하다는 것을 알 수 있다.

기드라에 익숙하지 않았음에도 사람의 노가다를 기드라가 얼마나 크게 줄여주는지 실습을 따라하며 알 수 있었다. 아래 그림과 같이 기드라의 그래프 뷰 기능 하나만 봐도 if문의 디스어셈블 결과를 입체적으로 볼 수 있어 가독성에 큰 도움이 된다.그래프뷰

1장은 리버스 엔지니어링에 필요한 기초 지식이 정리되어 있다. 제어부, ALU, 레지스터, 명령포인터로 구성된 CPU의 기본 구조, 그 과정에서 활용되는 코드, 데이터, 헤더, 힙, 스택 등의 메모리 세부 구조, 호출규약 등의 기본 지식을 익힌다.

이어서 언어의 특성 기본을 배운다. 함수 호출, if, switch, for, while 등의 규약을 살펴보며 간단한 디컴파일의 과정을 거친다. 또한 OS와 칩셋 간 x64 등의 아키텍쳐를 학습한다.

기드라 본래의 기능에 집중하기 위해 이러한 백그라운드 지식은 짧게 서술되어 있지만 기드라 실전에 적용 시 큰 도움이 되므로 확실히 알아두는 것이 좋다. 예를 들면 뒷 부분의 main() 함수를 찾아내는 방법에서 경우의 수를 쉽게 줄일 수 있다.

이런 방법은 풍부한 경험을 통해 쌓이기도 하지만 1장의 기본 지식이나 규약을 잘 익혀두면 처음 겪는 문제나 패턴에서도 원하는 부분을 찾아내기에 좋은 감각을 유지 할 수 있겠다는 생각이 들었다.

2장은 기드라의 세부 구성을 살핀다. 디스어셈블, 디컴파일은 물론 헤더, 라이브러리, 스크립트 분석 등의 기능이 제공된다. 먼저 기드라를 설치하는 방법이 소개된 후 실행 파일을 임포트한다. 분석 실행을 마치면 아래아 같은 화면이 등장하는데 기드라에서 가장 자주 보게 되는 화면이다.코드브라우저

책에서 소개되는 몇가지 권장설정은 그대로 따라하면 된다. 이후 위 그림의 각 기능을 세부적으로 소개하는데 중앙의 Listing 창에는 디스 어셈블한 결과가 표시되며 디컴파일러 창에는 C언어로 변환된 결과가 표시된다.

Program trees 창에는 헤더나 섹션 등 프로그램 구성요소가 구조화되어 출력되며, Symbol Trees 창에는 함수명, 변수명 등의 심벌 정보가 표시된다. Data Type Manager창에는 데이터 타입에 관련된 정보가 출력된다.

각 기능은 읽어도 어떻게 활용하는 것인지 구체적으로 어떻게 동작하는지 파악하기 어렵기 때문에 5장과 같은 실전 예제를 진행한 후 다시 볼 것을 권하고 싶다.

본래 레퍼런스라는 것들은 직접 겪어보며 필요할 때마다 참조하는 것이 기억에도 오래남고 바로바로 이해되는 것이니 이 장에서 개념이 어렵다고 읽기를 포기하지 않길 바란다.

3장에서는 downloader.exe라는 외부에서 타 프로그램을 다운로드하여 실행하는 프로그램을 리버싱한다. 그런데 이 부분 역시 리버싱의 큰 그림은 그려지지만 구체적으로 실습을 따라가기 어려웠다. 가볍게 읽어보고 5장 이후의 실전을 전개하고 다시 돌어와서 보면 쉽게 이해된다.

4장 역시 바로 이해하기는 어렵다. 분석 자동화 기능을 제공하는 Script라는 기능과 UI플러그인을 활용하여 분석 기능을 추가할 수 있는 Extension 기능이 소개된다. Scritps의 기능엔 Python 바인딩 기능도 제공하고 있다는 점이 특이한 부분이다.

5장 이후에는 각 OS별로 실전 러비싱이 진행되는 데 매우 상세하게 분석하고 있어 따라하다보면 감이 잡힌다. 앞의 1 ~ 4장은 가볍게 큰 그림만 그려본다 생각하며 읽고 개념이 어느정도 잡히면 5 ~ 9장을 가급적 먼저 실습해 볼 것을 권한다.

예를 들면 5장은 리눅스에서 구동되는 ELF 바이너리를 분석한다. 예제로 크랙미라는 실행파일이 등장하는데 리버싱에 성공하면 엑세스 코드나 비밀번호를 찾아낼 수 있다.

이 프로그램을 실행하면 패스워드를 입력하라고 나오는데 아무 문자가 입력하면 Wrong이라고 틀렸다는 메시자 출력되는 프로그램이다. 결국 이 프로그램을 리버싱하여 정확한 패스워드를 알아내는 것이 본 리버싱 예제의 목적이라고 할 수 있다.

이 프로그램의 main() 함수를 디컴파일하면 아래 그림과 같은 리버싱 결과를 볼 수 있다. 25행에서 fgets()가 사용됨을 확인 가능하다. 위에서 설명한 사용자가 패스워드를 입력하면 fgets() 함수로 입력값을 가져와 변수에 저장하게 됨을 추측할 수 있다.main디컴파일

34행에는 비교문이 등장한다. 사용자가 입력한 값은 local_38 변수에 저장되고 local_68에 들어있는 값과 비교하는 셈이다. 그런데 자세히 보면 사용자의 입력값이 ^연산을 거친다. 즉, 0x7a값과 한글자씩 XOR 연산을 수행하는 것이다. 결과가 같다면 Correct라는 문자열을 출력하는 구조이다.

결국 핵심은 XOR 역연산에 달려 있음을 알 수 있다. 책에서는 2가지 방법을 활용하여 역연산에 도전한다. 솔버라는 기드라 Script를 활용하는 방법 하나와 CyberChef라는 GUI기반 웹애플리케이션을 활용하여 패스워드를 찾아내는 방법이 소개된다.

그렇게 얻은 패스워드로 Level2에 도전하며 Level4까지 진행하는 실습을 거치게 된다. 이어서 6장 이후에는 윈도우 운영체제의 PX파일, 안드로이드 APK파일 및 패킹 등을 풀어내는 방법들이 소개되는데 한 과정씩 따라하다보면 쉽고 재미있게 저자들의 풍부한 경험을 흡수할 수 있다.

본 도서의 장점을 정리하면 다음과 같다.

  • 매우 실전적이다.
    리버싱에 관심이 많아 서점에서 찾다보면 개념이나 방법론만 늘어놓은 책들이 부지기수이다. 대충 내용은 알겠는데 다 읽어도 프로그램 간단한 것 하나도 리버싱 할 수 없다. 반면 이 책은 따라만 해도 감이 오며 저자들이 그간 경험했던 풍부한 경험을 거저 먹는 느낌이 든다.

  • 기드라의 기능이 매우 풍부하다.
    구성된 GUI 자체만으로도 다 활용해보기 힘들 정도의 다양한 기능이 제공되는데 이것도 모자라 Script나 Extension 기능도 제공되며 관련 서드파티로 연동할 수 있는 프로그램도 풍부하다. 약 20년 전 즈음 소프트아이스라는 툴을 이용해 헥스코드로 일일이 수정하며 게임 머니를 올리려고 노력하며 진땀 흘렸던 것을 생각하면 기드라는 천상의 툴이라고 극찬할만 하다.

  • 주로 디컴파일의 기능을 활용하여 설명한다.
    C언어가 제아무리 어렵다고 한들 어셈블리어에 비하면 천국이다. 어셈블리 프로그래밍은 해 본 사람이라면 알겠지만 한정된 레지스터 안에 어떤 값이 존재할지 머리가 기억해야 하는 경우가 태반이다. 게다가 PUSH, CALL 등 한정된 명령어로 분기, 반복문 혹은 그 이상의 로직을 구현하려면 기억력이 남아나질 않는다. 이 책에서는 주로 C언어로 디컴파일의 결과만 설명하기에 이 역시 천국이 따로 없다.

단점은 거의 없다. 기드라 툴로 동적 분석이 안된다는 점이 단점이라고는 하나 분기점 우회 등 일부 편법으로 대체 가능한 팁들도 소개되며 무엇보다 나의 경우 정적 분석 하나 숙달하는데도 부족한 실력이어서인지 동적 분석까지 집중할 겨를이 없었다.

아무튼 지금까지 나온 리버싱 책 중 실전 감각을 키우는데 가장 훌륭한 책이라는 생각을 했다. 아무리 이론이 빠삭해도 눈앞에 작은 프로그램 하나 리버싱을 못한다면 무슨 소용이 있겠는가? 그런점에서 백견이 불여일타의 정신을 확실하게 고수하는 본 도서를 추천하고 싶다.




댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
나이스한 데이터 분석 - 데이터가 말하는 트렌드
나이스지니데이타 지음 / 이콘 / 2021년 11월
평점 :
장바구니담기


나이스 그룹의 데이터 사업을 담당하는 전문가들의 데이터를 통한 트렌드 분석서이자 실제 데이터 기업에서 수행하는 업무를 정리한 책이다.

책은 크게 두 부분으로 나뉘는데 1부의 핵심키워드는 트렌드와 데이터 리터러시이다.

코로나 이후의 집콕 트렌드에 대한 분석, 주류 수요 분석, 레트로 트렌드 분석, 수입차 구매 예측 지역 분석, 학군 분석 등 일반인들이 개인적으로나 비즈니스적으로나 가장 관심있어 할만한 주제들을 분석하고 있어 재미있게 읽을 수 있다.

이미 분석한 결과를 편히 읽을 수 있지만 읽는 것 만으로는 비즈니스적 지식을 얻는 것외에 특별히 얻을 것이 없다. 이 파트를 보다 의미있게 읽고 싶다면 저자들이 트렌드를 분석하는 과정에서 활용한 데이터 분석 방법과 그 과정을 잘 이해하고 인사이트를 도출할 수 있는 스스로의 데이터 리터러시를 키우는 일이 필요하다.

크게 눈에 띄는 장은 집콕을 분석한 1장과 수입차 수요를 분석한 4장이다. 1장은 데이터 리터러시에 관하여 문외한일지라도 쉽게 읽을 수 있다. 게다가 코로나 후 일상은 누구에게나 자신의 일이 되어 버렸기에 더 공감하며 읽을 수 있을 것이다. 데이터로 대충 이런 분석이 가능하구나 감을 잡고 쉽게 첫발을 딛게 도와주는 장이다.

가장 수준 높은 분석이 이뤄지는 장은 4장이다. 데이터 분석이나 통계에 대한 지식이 있는 사람은 아래 그림을 쉽게 해석할 수 있겠지만 데이터 문외한은 생각보다 어려운 그림이다.이상치

아래식은 수입차 구매 수요를 파악하기 위한 회귀식으로 소득이나 지역 등 여러 독립변수를 기반으로 수입차 구매라는 종속변수를 도출하는 과정에서 이상치를 추출하는 모습이다.

중앙의 은하수와 같은 선을 제외하면 부산 중구를 시작으로 아해 울산 남구에 이르기까지 외딴 섬 마냥 따로노는 데이터가 있는데 이런 데이터를 이상치라고 한다.

예를 들면 울산 동구, 남구의 경우 현대자동차가 있는 지역이므로 수입차 보다 국산차를 더 저렴하게 구입할 수 있기에 수입차 구매량이 적다는 인사이트를 도출할 수 있는셈이다.

이상치는 때로는 전체 트렌트를 분석하고자 버려지는 쓰레기 취급을 받을 때도 있지만 위 사례와 같이 의미있는 통찰을 전해주기도 하기에 처리하는데 주의가 필요하다. 4장은 이런 약간 고난이도의 분석 방법을 다루고 있어 데이터 과학이나 분석에 관심있는 독자들이 다음단계로 넘어가기 위한 징검다리로 괜찮은 장이라는 생각을 했다.

이어서 2부의 내용을 소개하고자 한다. 2부는 데이터 분석 부서에서 실제 어떤 일을 하고 있는지에 대해 다루는 장이다. 1부가 일반인들에게 도움이 되는 데이터 리터러시 수준의 분석을 다뤘다면 2부는 데이터 분석 회사로의 이직 혹은 취업을 목표로 하는 독자들에게 도움이 될 것이다.

6장은 데이터 분석을 위한 기본적인 개념을 총체적으로 잘 정리하고 있다. 군집분석, 연관분석, 시각화의 중요성과 의미 등 일반적인 데이터 분석팀에서 밥먹듯이 수행하는 일들이 대충 어떤 일들인지 포괄적으로 잘 정리하고 있다.

7장은 데이터 엔지니어링 및 인프라 업무를 잘 정리하고 있다. 아래 그림과 같이 데이터는 분석이나 모델링으로 끝나는 것이 아니다. 알고리즘이나 모델이 가설을 잘 검증하기 위해 데이터를 수집, 정제, 전처리 하여 알기 쉽게 떠먹여줘야 함은 물론 그 결과를 서빙하여 제품으로 만들어 낼 줄도 알아야 한다.파이프라인

이를 위한 총체적인 파이프라인 과정이 필요한데 각 과정의 세부 유닛들을 잘 정리하여 설명하고 있다.

8장에는 그 외 데이터 특성을 다룬다. 데이터 분석의 80%는 전처리라는 근거 없는 낭설을 주위에서 많이 듣곤 하는데 그만큼 전처리는 많은 시간을 잡아먹는 귀찮은 일임에는 이견의 여지가 없다.

아래 그림은 전처리가 무엇인지 가장 구체적으로 잘 설명해주는 그림이라 할 수 있다. 현실의 데이터는 위 테이블이고 이를 전처리를 거쳐 정제한 데이터는 아래 테이블이라 생각하면 된다.전처리

조금 더 자세히 들여다보면 주소는 도로명주소 우편번호로 정제하고 있고, 매장명은 업종으로, 메뉴는 어떤 분류에 속하는지 속성은 차가운지 뜨거운지 용량은 어떤지 등등의 세부 데이터로 분류된다. 그나마 판매가격은 숫자 데이터인지라 전처리 과정을 거칠일이 적다.

이 한 그림만 제대로 이해하고 있어도 전처리에 대한 대부분의 설명이 가능한데 이 책에서 좋은 예시를 담고 있다는 생각이 들었다. 2부에서 현장의 실무를 담기 위해 애썼다는 저자들의 소개에 공감할 수 있는 부분이었다.

마지막으로 9장에는 CEO를 위한 조언이 담겨 있다. 데이터 비즈니스를 꿈꾸는 이들은 무엇을, 어떻게가 아닌 왜라는 질문에 답할 수 있어야 함을 강조한다. 특히 3VD 과정을 통해 현재 보유하고 있는 데이터가 얼마나 더러운지 평가하는 방법이 소개되는데 꽤 도움이 될만한 사항이라 생각했다.

각각 얼마나 지저분하고 귀찮은 과정을 거쳐야 하는지, 얼마나 전문적이고 어려운 성격의 데이터인지, 분석할수록 위험해지며 법적 분석 검토가 필요해지는 데이터들이 3VD에 해당하는 데이터라 할 수 있다. 관련 세부 체크리스트가 제시되어 있어 실질적인 도움이 될 것이다.

정리하면 이 책은 일반인이 데이터 문해력에 관심이 있거나 기본적인 통계, 데이터 과학을 학습한 이들이 커리어를 위한 도전을 위해 입문 과정으로 읽을만한 도서이다. 저자들이 상당히 정성을 기울여 독자들이 잘 소화할 수 있게 떠 먹여주는 느낌이 들었다.

반면 개인적으로 한 가지 아쉬운 점은 실전에서 정확히 어떤 일을 하는지 매우 디테일한 예를 들면 신입 사원이 직접 나이스 데이터에 취업하여 겪는 일들 그러니까 조금 더 거친 실무 내용이 등장하길 바랬는데 보다 추상적이었다는 생각이 들어 아쉽다.

어쩌면 이런 거친 데이터와 일을 다루면 책이 전혀 안 팔릴지 모르겠다. 이는 내 취향이므로 책을 평가하는데에는 불필요한 요소이지만 그래도 요즈음은 일반적인 분석 방법론을 다루는 책이 포화상태인지라 나와 같은 생각을 갖고 있는 독자 수요층이 꽤 있진 않을런지 생각해본다.




댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
만화로 배우는 조선 왕실의 신화 한빛비즈 교양툰 15
우용곡 지음, 전인혁 감수 / 한빛비즈 / 2022년 2월
평점 :
장바구니담기


조선을 중심으로 우리 역사에서 국가, 민간에서 모셨던 신을 다룬 책으로 단순히 종교 개념을 넘어서 조상들의 교육, 사상, 문화와의 정서적 유대를 되새겨 볼 수 있게 해주는 명작이다.

불교는 부처님, 가톨릭은 삼위일체 주님, 개신교는 예수님, 이슬람교는 알라신… 다양한 종교마다 우리는 대표하는 유일신을 쉽게 떠올릴 수 있다. 그런데 유교는 어느 신을 모실까? 공자? 조금 더 나아가 우리 민족은 어떤 신을 모셨을까?

답부터 말하자면 무수히 많은 신이다. 대표적으로 공자를 말하곤 하지만 그는 유교의 창시자로써 상징적의 가치를 지닐 뿐 다른 종교에서 말하는 유일신, 절대자의 의미를 지니지는 않는다.

국토의 신 국사, 곡식의 신 국직, 토지의 신 후토, 오곡의 신 후직, 역대 제왕들을 모신 종묘, 조선의 사대고조, 공신들을 모신 공신당, 농사의 신 신농, 양잠의 신 서릉, 날씨의 신 풍운뇌우, 우사단의 여섯 신, 문묘의 18현, 단군왕검, 기자, 각 국의 시조묘, 동묘의 관우, 영성과 노인성, 마신, 무사귀신을 위한 여제에 이르기까지 본 도서에서 다루는 신들만 해도 헤아리기 어려울 정도이다.

왜 이리 많은 신을 모실까? 그리고 이런 관습이 오늘날 우리에게 왜 중요하고 어떤 의미를 지닐까?

역사가 발전할 수록 종교는 유일신의 형태로 발전한다고 했다. 하지만 그런 관점에서 본다면 우리나라를 포함한 중국 및 동북아시아 문화권은 미개하기 짝이 없는 셈이다.

하지만 세상 이치에 음, 양이 존재하지 않는 일이 없다. 서양은 예수 그리스도라는 유일신을 중심으로 강력한 사상적, 절대적 구심점을 모을 수 있었지만 받아들이는 관점에 따라 악용되며 수차례의 종교 개혁을 거치기도 했고 르네상스의 인본주의에서와 같이 사람을 신과 분리하거나 재평가 하는 진통을 겪기도 했다. 특히 신과 인간은 철저히 분리된 존재이며 과학이나 문화 또한 철저히 분리된 존재였다.

반면 이 책에서 다루는 우리나라나 유교 문화권의 국가에서 신은 언제 어느곳에서나 다양한 형태로 존재하며 그들과 정신적 유대관계와 친밀성을 갖는 표상으로서의 기능을 수행하고 있다는 생각을 했다.

책의 마지막 즈음 에필로그에서 저자가 아플때마다 할머니가 무당집에서 기도를 올리는 의미를 이제는 알 것도 같다는 말을 했다.

무당집에가서 소원을 관철시키고자 함은 종교적 관점 혹은 과학적 관점에서보면 의미없는 미신일 뿐이지만 그 시절 그 당시 사람들에게는 종교를 넘어선 일상이자 문화였으니 프레임을 어디에 두느냐의 문제일 뿐 폄하 여부의 문제가 아니라 생각한다.

최근 증조부님이 물려주신 땅의 소유권이 제대로 정리되어 있지 않아 골치를 썩는 일이 있었다. 아직도 해결중이지만 그 과정에서 남 모를 따뜻함을 느끼고 정서적 유대를 느끼기도 했다.

소유권을 정리하는 과정에서 상속 지분 때문에 제적 등본을 찾아보며 가족들간에도 구전되지 않은채 일찍 돌아가신 조상님을 알게되며 슬프기도 했고 먼 조상님이라고 생각했던 분의 자손들이 생각보다 가까운 곳에 살고 있음을 알게 되기도 했다.

또, 토지대장이나 구 등기부 등본을 떼어 보며 조상님들이 땅을 지키기 위해 일제시절부터 고군 분투했음을 느낄 수 있었으며 어려운 한자와 일본어를 해석해가며 대략적으로나마 그 옛날 어떤 활동을 하셨는지 상상을 하니 뵙지 못한 분들이 정겹게 느껴지기도 했다.

이런 느낌이 유교 문화권에서 살아온 후천적 유대감인지 사람 본성에 선천적으로 이어져 오는 각인인 것인지는 알 수 없으나 구구절절이 개인사를 떠드는 이유는 이 책에서 다루는 주제가 어떤 의미인지를 전달하고 싶기 때문이다.

위에서 수 많은 신들을 열거했듯 우리 선조들의 일상에는 항상 신이 있었다. 눈, 비, 바람도 과학이나 기후가 아닌 신이라는 매개체를 통해 소통하려 한다.

단군왕검은 물론 한민족 각 국가의 시조들을 모두 포용한다. 쿠데타라는 국가 정통성에 흠집이 생길 수 있음에도 이전 국가에 대한 배려와 존중, 포용이 있었다. 아래 그림처럼 한민족 각 국가의 시조들을 모신 사당들이 그 증거이다.시조

농사나 곡식과 관련된 신들도 모신다. 비단을 생산하기 위한 누에의 신도 모시고 집이나 마을을 지키는 신도 모시며 마을을 벗어난 산과 강의 신도 모신다. 과거부터 의식주는 가장 중요한 생계 수단이었던 만큼 중요하다고 생각하는 대상에는 모두 신을 부여하고 소통하고자 했다.

따뜻하다.

이러한 본질을 알고나니 교과서에서 배웠던 이원론이 무슨 의미인지 대강은 알 것도 같다. 이치라는 눈에 보이지 않는 대상과 어떻게든 연결하여 내 마음과 소통을 나누고 안녕을 꿈꿨던 조상들의 간절함과 왠지 모를 귀여움까지 느껴진다.

세상에 배척할 것이 없고 모든 것과 유대감을 맺어가고 심지어 그 속에서 충이나 효와 같은 예절을 배우고 교육을 하며 제사를 올리는 일련의 과정에서 숭고함과 지혜를 느낄 수 있었다.

자연을 배척하지 않고 자연과 항상 융화되며 자연에 인격을 부여하고 존중해 온 셈이다. 오죽하면 생계에 중요한 수단이었던 말의 신까지 모셨을까?

한가지 더 우리 민족의 자주사상과 관련된 부분도 이 책에서 재미를 느낄 수 있는 관전포인트이다.
대한제국

대한제국 즉, 황제국이 되고나서야 사직단에서 모시는 국사, 국직의 칭호를 태사, 태직으로 승격하여 모실 수 있었고 원구단에서 제를 올릴 수 있게 되었다.

당나라의 예법이 이어져 온 이래 황제와 제후는 모실 수 있는 신의 종류에 제한이 있었음은 어느 종교이든 사람이 어떻게 해석하고 악용하느냐에 따라 부작용이 있을 수 있음을 뜻한다.

씁쓸한 일이지만 어쨌든 당시 대한제국의 건국과 더불어 상당부분 자주성이 회복되었다는 것은 역사교과서에서 만난 것 이상으로 민중들에게 큰 의미를 지녔던 일이 아닐까 싶어 기쁜 마음이다.

스토리 중심으로 본 도서의 리뷰를 작성했지만 간간히 소개된 그림 처럼 이 책은 만화로 그려져 있어 매우 이해하기 쉽고 재미의 요소도 빼놓을 수 없는 책이다.

단순히 신과 종교 이야기만 나오는 것이 아닌 각국의 건국신화, 문화, 시대적 배경이 같이 소개되어 있어 재미있는 관점으로 역사를 접할 수 있는 책이기도 하다. 앞서 언급했듯 유교와 우리 문화권에서의 신은 모든 곳에 각기 존재하기 때문이다.

괜히 네이버 베스트 도전만화에서 최고 별점을 받은 것이 아니라는 생각이 든다. 딱딱하고 그 안에 숨은 진정한 의미를 역사 교과서를 통해 익히기란 시간도 부족하고 집중력도 떨어지는 법이다.

본 도서는 역사에 관심이 있는 이들에게 혹은 학생들에게 큰 가치를 지닌 책이다. 역사에 숨은 오묘한 뜻과 깊이를 누수없이 전달하면서도 쉽고 재미있다는 책을 만든다는 것은 쉬운일이 아니기 때문이다.




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