요약

이 보고서는 비트코인 경제학 3부작 중 마지막인 세 번째 기사입니다. 1부에서는 은행의 대출실행 방법에 대한 오해와 그것이 은행의 신용 수준 확대 능력에 미치는 영향력에 대해 살펴보았고, 화폐의 고유한 특성을 사례를 통해 분석하고 이것이 경기 순환에 미치는 영향력에 대해 알아보았습니다. 2부에서는 비트코인이 기존 화폐와 비교해 독특한 조합의 특성 즉, 실물화폐와 전자화폐의 두 가지 특성을 모두 가지고 있는 이유와 그 특성이 은행의 신용 확대 능력에 미치는 영향에 대해 알아보았습니다. 3부에서는 비트코인의 디플레이션 특성 (deflationary nature)과 비트코인의 단점인 디플레이션이 불가피한 이유에 대해 살펴보고, 비판론자들의 예상보다 비트코인이 디플레이션의 타격에서 더 빨리 벗어날 수 있는 방법에 대해서도 알아보겠습니다.

 

PDF 파일을 다운로드 하시려면 여기를 클릭하십시오

 

비트코인의 디플레이션 문제

비트코인 및 암호화폐 관련 시스템에 대해 가장 흔한 비판은 공급 상한선 (비트코인의 경우 2천 1백만 개)이 있다는 것과 경제적 타격을 줄 수 있는 시스템의 디플레이션 특성입니다. 비판론자들은 시장 붕괴와 경제 문제를 악화시킬 수 있는 제한된 화폐 공급 (finite monetary supply)은 형편없는 방침임을 역사가 우리에게 가르쳐주었다고 주장해왔습니다. 가치가 상승한 화폐의 사용을 원치 않는 사람 혹은 채무의 실제 가치 상승 모두 채무율 높은 경제 상황을 야기시킵니다. 비트코인 옹호자들은 종종 과거의 교훈을 통해 깨달은 것이 없다는 이유로 “경제에 대해 아무것도 모르는 순진한 사람”으로 취급받기도 합니다.

비트코인 경제학에 관한 이번 기사에서 저희는 기존 화폐와 근본적으로 다른 비트코인 특성으로 인해 비판론자의 예상보다 더 복잡해진 현 상황에 대해 설명할 것입니다. 비트코인의 고유한 특성은 비트코인을 디플레이션 정책에 더 적합하게 만들지만, 제한사항 및 단점 역시 존재하며 이는 과도한 인플레이션이 기존 화폐 즉, 비트코인 출시 이전의 화폐에는 영향을 주지 않는 부정적인 결과를 초래할 수 있음을 의미합니다. 저희는 일부 비트코인 비판론자들이 위 같은 문제를 종종 간과한다고 생각합니다.

비트코인 인플레이션 문제에 관한 전문가들의 의견

중앙은행의 자금 공급은 쉽게 확장 및 축소될 수 있습니다.

은행 자금의 긍정적 수요 충격 (positive demand shock)을 위해 (소비액/투자액에서 은행권으로의 자금 이동: 예시. 디플레이션 쇼크) 중앙은행은 주식과 외화를 매수하여 자금 공급을 증가시키며, 부정적 수요 충격 (negative demand shock, 소비감소, 투자감소, 정부지출 감소 등)을 위해서 주식 혹은 기타 자산을 매도하여 유통 자금을 흡수합니다. [비트코인]의 경우, 후자는 프로토콜에 포함되어 있지 않습니다.

이는 암호화폐 프로토콜에 자금 흡수 (currency absorbation) 혹은 탕감 (write-off) 프로토콜이 아닌 자금 공급 (currency supply) 규칙만이 포함되어 있음을 의미합니다. 우리는 쉽게 변하지 않는 암호화폐의 비가역적 특성을 바꿀 수 있을까요?

– Mitsuru Iwamura (“우리는 암호화폐의 가격을 안정화시킬 수 있는가?: 비트코인 설계의 이해와 중앙 은행의 자금과 경쟁할 수 있는 비트코인의 잠재력”) – 2014

 

중요한 것은 인플레이션 현상을 만들어내지 않음으로써 사람들은 올해보다 내년에 가치가 상승할 것을 예상하며 전세계 비트코인 공급량 중 연간 2%를 사재기 할 것이고, 그 결과 여러분은 비트코인으로 인한 파산을 맞이할 것이라는 사실입니다.

 –  David Webb (링크 페이지 내 동영상 51초 부터) – 2014

 

폭넓은 관점에서, 엄격한 공급 상한선 (hard supply cap)과 시스템 내장형 디플레이션 프로토콜 (built-in deflation)은 화폐의 고유한 장점이 아닙니다. 화폐의 강점은 사회적 요구를 충족시킬 수 있는 능력에 있습니다. 저는 비트코인에 내장된 디플레이션 프로토콜이 사회적 요구를 충족시키는 데 도움이 되지 않는다고 생각합니다. 제 의견이 잘못되었을 수도 있지만, 어느 쪽이 맞는지는 지켜볼 일입니다.

 – 이코노미스트 (“비트코인의 디플레이션 문제”) – 2014

 

비트코인의 “공급”은 최대 2천 1백만 개로 제한될 것입니다. 비트코인 신봉자들에게 공급 상한선은 대부분의 암호화폐에게 치명적인 중앙은행의 인플레이션으로 인한 피해를 방지할 수 있는 좋은 방법입니다. 그러나 현대의 중앙은행은 낮은 수준의 긍정적 인플레이션 (positive inflation)을 선호합니다. 현실 세계에서 임금은 “경직되어 (sticky)” 있으며: 기업들은 임금 삭감이 어렵다는 것을 알게되어 인플레이션에 보조를 맞추지 못하는 직원의 임금을 삭감하고 이를 통해 아주 낮은 수준의 인플레이션이 원활한 시스템 운영을 돕게됩니다. 화폐 (자금) 공급 속도가 너무 느리면, 가격은 하락하고 임금 경직성이 높은 직원들은 더 큰 희생을 치르게 될 것입니다. 결국 실업률이 상승할 것이며, 직업이 있는 사람은 향후의 가격 하락을 예상하여 현금을 과도하게 저축할 것이고 경기 침체 가능성은 높아질 것입니다.

 – 이코노미스트 (“아무것도 없는 무의 상태에서 만들어진 화폐”) – 2014

 

저는 현재 전세계 금융시스템이 매우 형편없으며, 그 중에서도 최악은 비트코인이라고 생각합니다. 초보 투자자들에게 비트코인은 본질적으로 통화수축적 (deflationary) 특성을 가진 암호화폐입니다. 그 이유는 새로 생성될 수 있는 비트코인 수에는 상한선이 존재하기 때문입니다 (전문용어로 ‘채굴된다’라고 합니다: 새로운 비트코인은 더 많은 비트코인이 채굴될수록 난이도가 높아지는 연산 작업을 통해 생성됩니다. 이것은 더 큰 소수를 계산할수록 소수점 아랫자리 수가 늘어나는 것과 동일한 원리입니다). 이는 비트코인 생성 가격이 점점 상승해 그 가치가 시장 내 소비재와 서비스보다 높아짐을 의미합니다. 더 적은 돈을 가지고 제품 구매를 추구할수록 전체가 소비하는 비용은 더 낮아집니다 (제품 공급량이 화폐 공급량보다 높기 때문입니다).

 –  Charlie Stross (“비트코인을 불태워 없애버리고 싶은 이유”) – 2013

 

그러나 여전히 2천 1백만 개의 공급 상한선 문제가 존재합니다. 상한선에 도달하면, 비트코인 공급은 부분 지급 준비 은행과 같은 길을 가야합니다. 왜냐하면 –전통적 은행의 관행대로- 기존의 비트코인을 재대출 (re-lending)하거나 언젠가 비트코인으로 결산이 이루어질 수 있다는 근거에 기반한 대출을 하는 것만이 공급 부족 문제를 극복할 수 있는 방법이기 때문입니다.

 – Izabella Kaminska – 파이낸셜 타임스 (“비트코인의 문제점”) – 2013

 

 

[비트코인] 이 기존 화폐 체제에 대해 갖는 의미와 관계없이 비트코인은 금 본위제 같은 경우와 반대되는 사례에 힘을 실어줍니다 – 비트코인이 기존 체제가 화폐 사재기, 디플레이션 그리고 경기 침체에 굉장히 취약하다는 점을 증명해냈기 때문입니다.

–  Paul Krugman (“사이버 금 본위제”) – 2011

 

비트코인은 공급 상한선 문제를 스스로 어렵게 극복했지만, 수요에 대한 변동을 해결할 어떠한 매커니즘도 존재하지 않습니다. 비트코인에 대한 수요 증가는 비트코인 가격 하락 (디플레이션)을 야기하며, 반대로 수요 감소는 가격 상승 (인플레이션)을 야기할 것입니다. 두 상황이 실제로 발생할 경우 어떻게 될까요? 현재 비트코인 수요가 증가 중이므로 디플레이션 상황부터 알아보겠습니다. 무언가의 가치가 오늘보다 내일 더 높아질거라 생각하는 사람들은 어떻게 행동할까요? 우선 그것을 구매하고 가치가 오를 때까지 기다릴 것입니다! 가치가 계속해서 상승하는 화폐를 마다할 사람이 과연 있을까요? 다시 말해, 수요 증가는 더 많은 수요를 불러일으킨다고 할 수 있습니다. 이와 동일하게 디플레이션은 끝없는 디플레이션을 낳거나 최소한 어떤 사건이 발생할 때까지 이어질 것입니다. 

– 언더그라운드 이코노미스트 (“비트코인이 화폐가 될 수 없는 이유”) – 2010

 

디플레이션과 디플레이션성 채무의  (deflationary debt spiral)

많은 경제학자들은 수 십년간 지속된 인플레이션의 장단점에 대한 논쟁을 계속해 왔습니다. 그러나 요점은 하나의 이론에 대해 서로 다른 학파의 학자들이 매우 다양한 견해를 가지고 있다는 것입니다. 현재 학계의 공론은 디플레이션을 바람직하지 못한 경제 현상으로 규정하고 있으며, 경제학자들은 연간 2% 정도의 인플레이션이 필요하다고 주장합니다. 특정 목표를 위해 중앙에서 인플레이션을 통제 및 관리하는 것에 반대하는 오스트리아 경제 학파의 학자들은 디플레이션 특성을 가진 비트코인과 금을 지지 및 옹호하는 경향이 있습니다.

디플레이션에 대한 부정적인 견해의 주원인은 1929년 대공황과 디플레이션성 채무의 늪 (deflationary debt spiral) 이론의 등장이라고 생각합니다. 이 이론은 경기 침체와 디플레이션 기간 동안 채무의 실제 가치가 상승한다는 논리를 중심으로 한 이론이며, 채무 가치 상승은 이미 악화된 경제 상황을 더욱 심각하게 만듭니다. 경제학자 Irving Fisher는 1837년, 1873년 금융위기와 1929년 대공황에 대처하기 위한 해당 이론의 정립에 성공했습니다.

다음 9개의 링크를 통해 일련의 결과를 추론해볼 있습니다:

 

  1. 채무 청산은 투매 상황과
  2. 은행 대출 청산에 따른 예금 통화 수축을 야기하며, 화폐 유통 속도를 둔화시킵니다. 출혈 투매 (distress selling, 급하게 상품, 증권 등을 매도하는 . 손실 발생확률 높음) 인한 예금 통화 수축과 화폐 유통 속도 둔화는
  3. 가격 하락 즉, 달러 가치 상승을 야기합니다. 위에서 언급한대로 가격 하락이 리플레이션 (reflation, 통화 수축 후의 통화 재팽창)의 영향을 받지 않는다 가정할 때,
  4. 파산과 “자본주의적” 관점의 수익 즉, 개인 영리의 하락을 야기하는
  5. 심각한 수준의 기업 순자산 하락을 발생시킬 것입니다. 기업 순자산 하락은 생산량, 거래량 및 고용률을 감소시켜 적자 영업을 초래합니다.
  6. 이러한 손실, 파산 그리고 실업률은
  7. 사재기와 화폐 유통 속도를 둔화시키는 비관주의와 자신감 하락으로 이어집니다.
  8. 위의 8가지 변화는 이자율,
  9. 그 중에서도 명목 금리 및 화폐 가치의 하락 그리고 소비재 가격과 이율 상승에 심각한 영향을 미칩니다.

이와 같이 채무와 디플레이션은 대부분의 경제 현상을 설명할 수 있는 아주 간단하고 논리적인 방법입니다.

 – Irving Fisher (1933)

 

디플레이션은 비판론자의 주장만큼 해로운가?

비판론자들은 비트코인 옹호자를 경제에 대해 무지하며 순진하다고 비난하지만, 그들은 언제나 완벽히 옳지 않을 수도 있고 몇 가지 미묘한 차이를 간과할 수도 있습니다. 무엇보다도 디플레이션 (공급 상한선)은 항상 바람직하지 못한 방침인가에 대한 의문 제기를 위해 오스트리아 경제학파가 될 필요는 없습니다. 디플레이션이 몇몇 경제 상황에 해로울 수 있지만 이는 경제적 특성과 사회에서 유통되는 화폐 유형에 따라 달라질 수 있습니다. 사회과학에는 컴퓨터 공학의 수식처럼 정해진 해답이 존재하지 않습니다. 확실한 답을 아는 이는 아무도 없고 학계의 의견도 시간의 흐름에 따라 변합니다. 더욱이 경제 상황은 시간에 따라 변화하고 이는 현재와 다른 인플레이션 정책이 최선책이 되는 경제적 역학관계를 만들어낼 수 있습니다. 따라서 “디플레이션은 항상 해롭다”와 같은 고정불변의 법칙은 올바른 전제가 아닐 수도 있습니다. 예를 들어, 인플레이션에 대한 Irving Fisher의 관점은 20세기 경제 상황에 맞을 수 있지만, 2150년에는 기술이 근본적으로 변화하여 다른 인플레이션 정책이 그 사회에 더 적합할 수도 있습니다.

 

디플레이션성 채무의 논쟁과의 연관성을 감소시키는 기존 화폐와 다른 비트코인의 특성

지난 기사에서 설명드렸듯, 비트코인은 금 본위 체제 혹은 미화 달러 같은 기존의 화폐와 근본적으로 다른 특성을 가지고 있습니다. 채무에 기초한 미화 달러 같은 기존 화폐는 실물 화폐의 고유한 특성을 지니고 있습니다. 이와 달리 비트코인은 신용 확대에 대한 회복 탄력성이 있어 채무와는 근본적인 관련이 없습니다. 따라서 비트코인 기반 경제는 경제 위기와 디플레이션 상황에서도 채무의 실질 가치 증가로 인한 타격을 덜 받을 수 있으며, 이는 비트코인 기반 경제와 디플레이션성 채무의 늪 논쟁 간의 연관성을 낮출 수 있습니다. 저희는 다수의 비판론자들이 비트코인 디플레이션 통화 정책의 단점을 평가할 때, 이 점을 간과할 수 있다고 생각합니다.

 

비트코인의 단점이 되는 인플레이션 특성

비트코인은 디플레이션의 단점을 더 잘 극복할 수 있게 하는 잠재적 장점들을 지니고 있지만, 인플레이션에 취약하게 만드는 단점 또한 가지고 있으며 비트코인 비판론자들은 이를 간과할 수도 있습니다:

  • 환경 파괴 – 비트코인에 관한 또 다른 비판 중 하나는 에너지 집약적인 마이닝 절차가 환경 파괴를 야기한다는 것입니다. 마이닝 인센티브에 관한 두 번째 기사에서 설명드렸듯, 이 문제는 마이너가 마이닝 장소에 대한 선택권을 갖고 있다는 이유로 다소 그 심각성이 부풀려졌을 수 있습니다. 새로운 곳에 투자를 하는 대신 실패한 에너지 프로젝트를 활용하는 마이너의 유연성은 환경 파괴를 줄일 수 있습니다. 그러나 비트코인으로 인한 환경 파괴는 상당히 부정적인 외부효과 (negative externality)를 초래할 수 있다는 사실을 인지하는 것은 여전히 중요합니다. 마이닝 인센티브는 거래 수수료와 블록 보상 (인플레이션)으로 구성됩니다. 2% 인플레이션 정책 확정은 곧 해당 시스템 가치의 최소 2%가 매년 환경 “파괴”에 쓰일 수 있음을 의미합니다. 이러한 인플레이션 정책은 다소 독단적일 수 있으며, 더 높은 수준의 인플레이션 정책이 채택될수록 환경 파괴 범위는 더 넓어질 것입니다. 이러한 정책과 기존 금융시스템 간의 유사성이 존재할 수 있습니다. 일례로 경기 활성화와 인플레이션 목표 달성을 위한 중앙 은행의 정책 역시 높은 수준의 환경 파괴를 야기할 수 있습니다. 적어도 일부 비판론자들의 시각에서는 말이죠. 물론, 비트코인 기반 시스템 하에서의 환경 파괴와 인플레이션은 훨씬 더 직접적이고 주목할만한 연관성을 가지고 있지만, 비트코인은 지속적인 인플레이션 정책 대신 거래 수수료에 의해 마이닝 인센티브가 결정될 때까지 블록 보상이 4년마다 반으로 줄어듭니다. 이는 시장이 환경 파괴 정도를 결정할 수 있음을 의미하는 동시에 인플레이션성 통화 정책 (inflationary monetary policy)이 초래한 심각한 수준의 환경 파괴 대신 보안성에 투자하고자하는 사용자의 수가 더 많다는 것을 보여줍니다.
  • 마이너와 사용자 간의 이윤 (수익) 조정 – 현재 마이너에게 더 큰 동기부여가 되는 것은 거래 수수료가 아닌 블록 보상이며, 이는 암호화폐 생태계에 많은 잠재적 문제점을 야기할 수 있습니다. 예를 들어 마이너와 사용자 간 이윤(수익) 조정이 어려울 수 있고, 마이너는 사용자의 수익 창출을 막기 위해 블록에서 거래 내역을 고의로 누락시킬 가능성이 있습니다. 실제로 몇 가지의 비트코인 디플레이션 정책이 시행되어 거래 수수료가 더 큰 동기부여 수단이 되면, 마이너가 위와 같이 악의적으로 행동할 가능성은 현저히 낮아질 것입니다.
  • 화폐 가치 생성 불가능성 – 투자자에게 공급 상한선은 비트코인의 중요 장점이며 이는 시스템 운영을 가능케하는 투자자의 관심을 불러일으킬 수 있습니다. 경제학적 관점에서 디플레이션은 좋은 정책이 아니지만, 무기한 인플레이션 정책이 채택될 경우 비트코인은 이전만큼의 성과를 거두지 못할 수도 있습니다.

논쟁의 모순 – 비트코인이 엄청난 성공을 거둘 경우에만 유효한 비판론 

비트코인 경제학에 관한 논쟁의 대부분은 비트코인이 전세계에 널리 도입되어 인플레이션 역학관계가 사회에 영향을 미치는 상황을 전제로 합니다. 저희는 이 같은 결과가 도출될 가능성은 희박하다 생각하며 비판론자들 역시 이러한 상황의 발생 가능성은 거의 없다고 생각할 것입니다. 또한 감시저항적 특성과 전자 결제 기능으로 비트코인이 틈새 시장을 공략할 수는 있지만, 주류 화폐 (main currency)가 될 수 없다고 생각합니다. 이에 따라 비트코인의 디플레이션 특성은 실현 가능성이 매우 낮은 것으로 평가되어야 하며, 비판론자가 이 특성을 비트코인에 반대하는 논거로 활용하는 것은 다소 모순적이라고 할 수 있습니다.

경제학자 Paul Krugman은 2013년 발표한 “비트코인은 악마다 (Bitcoin is Evil)”에서 이와 비슷한 지적을 한 바 있습니다. 1998년 그가 남긴 “2005년 쯤 되면 인터넷이 경제에 미친 영향은 팩스 기계보다 대단하지 않을것이다”는 은 비트코인 커뮤니티에서 조롱당했지만, 저희는 그가 아래 인용문에서는 정확하고 합리적인 구분을 사용했다고 생각합니다:

지금부터 비트코인은 버블인가 아닌가 그리고 비트코인은 이로운가 해로운가에 대해 이야기헤보겠습니다. – 그 전에 부분적으로라도 두 질문을 서로 헷갈리지 않아야합니다. 

– Paul Krugman – “비트코인은 악마다” – 2013

 

비트코인 창시자인 나카모토 사토시는 공급 상한선과 디플레이션 특성이 비트코인 시스템의 성공을 가져다 줄 것이라 생각한 듯 합니다. 사회적 관점에서 낮은 수준의 인플레이션이 더욱 실용적이고 공리적일 수 있지만 말이죠. 그러나 시스템 설계의 관점에서는 작동가능한 결제 시스템 생산이 우선 순위가 되어야 합니다. 왜냐하면 비트코인이 사회에 가져다 줄 수 있는 잠재적 이익이 있다해도 시스템 생산에 실패한다면 모두 무용지물이 되기 때문입니다.

결론

저희는 몇몇 비트코인 옹호자들은 비판론자의 예상과 다르게 경제적 무지함과 순진함에 휘둘리지 않으며, 채무와 디플레이션, 화폐 특성과 신용확대 간의 관계를 자세히 이해하고 있다고 결론내렸습니다. 이와 반대로 누군가는 경제적 주류에 속한 이들이 화폐와 채무의 관계 그리고 두 가지를 분리할 수 있는 비트코인의 능력에 대한 이해가 부족하다고 주장할 수 있습니다. 실제로 대부분의 사람들은 버그 예방보다 디플레이션성 채무의 늪 문제 (deflationary debt spiral problem)없이 디플레이션 경제 환경을 조성할 수 있는 비트코인의 분리 능력을 가장 중요시 여깁니다.

비트코인이 위 문제를 해결할 수 있지만, 경제적 호황까지 가져다 줄 거란 기대는 다소 순진한 생각일 수 있습니다. 비트코인은 새롭고 독특한 화폐 시스템이기 때문에 예상치 못한 혹은 전혀 새로운 문제가 발생할 수 있으며, 결론적으로 완벽한 화폐는 존재하지 않습니다. 따라서 과거의 경제 문제를 새로운 유형의 화폐 즉, 비트코인에 적용하는 것은 적절하지 않을 수 있습니다. 그러므로 기반 기술에 대한 보다 자세한 분석과 심도있는 이해를 요하는 비트코인의 잠재적 문제점을 파악하는 일은 이보다 더 어려울 수 있습니다.

비판론자들이 간접적으로 언급했듯, 이러한 경제 문제와 디플레이션 간의 연관 가능성이 있다고 생각하는 것은 역설적이게도 비트코인이 널리 도입되어 주류 화폐로 채택될 가능성이 높으며 엄청난 성공을 거둘 수 있음을 의미합니다. 이 경우, 가장 합리적인 행동은 비트코인을 매수하여 “가격이 오를 때까지 팔지 않고 기다리는 것” (“HODL”)입니다.

학부 3학년 때다. 경영학과 수업 중에 우리과 전공으로 인정되는 몇 안 되는 수업 중 하나인 재무관리 수업 첫 시간으로 기억한다. 기업들의 Financing이 기업 가치 평가, 경영 의사 결정에 어떤 영향을 미칠 수 있는지에 대한 내용을 다루는 수업이었는데, 고학년 거시경제학 수업에서 ABS로 리파이낸싱하는 부분을 이해하는데 도움되는 수업이라는 말을 듣고 큰 기대를 하고 수업에 들어갔다.

다른 과 수업을 처음 들어서 주변 눈치를 슬쩍슬쩍 보고 있었는데, 뒷자리에 앉은 애들이 “이거 들어야 주식투자하는데 도움 된다며?” “이동 평균선이 골든 크로스 하는거 같은 내용 가르치는거야?” 같은 대화를 나누는걸보고 잠깐 수업을 잘못 들어왔나는 생각을 했었다.

아니나 다를까, 중간고사 칠 무렵이 되니 그 친구들은 수업을 억지로 나오는 티가 났고, 기말고사 칠 무렵이 되니 수업 잘못 골랐다고 불평을 잔뜩하더라.

런던에서 Financial Economics 석사 수업을 들을 때도 마찬가지였다. 그 수업, 아니 Finance의 가장 근본 철학인 “가격에는 모든 정보가 다 들어있다”, “Arbitrage는 장기간 존속할 수 없다” 같은 내용을 미시경제학과 수학적인 방법으로 증명하는 수업을 들으며 석사 프로그램을 잘못 골랐다고 불평하던 동기들을 꽤나 봤었다.

저런 수업을 들을 때는 이론이랑 실무랑 무슨 관계가 있냐고 불평하는 그들의 생각에 쬐끔 공감을 했었는데, 더 실력이 쌓이면서 그 이론이 어떻게 실무에 쓰이는지를 보고나니, “실무”를 주장하는 사람들이 얼마나 조악한 수학 실력으로 회사에서 “버티고” 있는지를 알게 되었다.

투자은행 다니던 시절, 재무관리 때 할인율 계산하는 공식을 그대로 외우기만 했던 Counterparty랑 기업 매각/인수 가격 모델을 놓고 한번 붙었던 적이 있는데, 자기 모델에 쓴 숫자에 대한 근거를 하나도 못 말하는 “꿀먹은 벙어리”(Read “영어 실력으로만 뱅킹 들어온 바보”)를 만났던 기억이 있다. 파생상품 가격 계산하는 모델을 볼 때도 단순하게 공식만 외워서 A상품의 가격을 넣으면 B상품의 가격이 나오는 줄만 알던 멍텅구리가 만든 ELS 파생상품이 특정 조건이 발생할 경우에 회사에 어마어마하게 큰 손실을 주는 걸 지적해줬던 적도 있다. 그러니까 책임회피할려고 그냥 다른나라에서 쓰는 상품을 그대로 베껴와서 쓰는거겠지ㅠㅠ

똑같은 경우를 데이터 사이언스 업무나 강의 중에도 곳곳에서 보는데, 요즘 그들을 “꼰대”라고 부르고 있다. 그 분들은 “실무”가 중요하다면서 “실무에서 쓰는 코드”를 달라고 몰아세우고, “이론 같은건 필요없다”고 주장들을 한다. 정작 문제가 생기는 경우를 보여주면서 이론적인 배경을 알아야되는 내용을 설명해주면, 자기가 알고 있는 내용이랑 다르다면서 학부 선형대수학도 모르는 망발을 읊어대기도 한다. 혼자서 저러면 시험 점수만 좀 낮게 받고 끝나겠지만, 저런 수준으로 회사 모델을 만들어 놓으면 심한 경우에 회사가 망할텐데?

 

사기 클릭 & 인스톨 (Fraud Click & Install) 잡아내기

전 직장에서 사기 클릭을 잡아내는 알고리즘을 고민하던 시절에 봤던 내용이다. 다른 회사들은 어떻게 접근할지 궁금해서 App 관련으로 DMP 사업을 하고 있는 글로벌 회사들이 소개해놓은 알고리즘을 살펴봤다. 물론 회사 기밀이니 자세한 내용을 공개해놓지는 않았지만, 어느 한 회사의 사기 인스톨 잡아내는 시스템을 보고 적잖이 충격을 먹었었다.

한 시간에 원래 X개의 인스톨이 발생하는데, 그거보다 더 많이 발생하면 “사기”라고 잡겠단다. 갑자기 다른 채널을 통해서 App 인스톨이 더 많이 생긴 경우에는 전부 다 “사기”라고 잡히겠네? 그건 또 내부적인 알고리즘이 있어서 분류를 할 수 있다는 식으로 두루뭉술하게 써 놨는데, 내부적인 알고리즘은 그냥 인간이 눈으로 보고 “사기”인지 아닌지 판단하겠다는 뜻이라고 봐도 무방할성 싶더라. 대충격이었다. 도대체 저 회사 Data Scientist는 아직까지 안 짤린 이유가 뭔가? 3류 로컬회사도 아니고, 글로벌 탑 티어 회사가 저런 모델을 쓰다니?

필자가 수업 시간에 소개하듯이, 당시 필자가 만들었던 모델은 클릭 or 인스톨 데이터의 주기 (Cycle)에 해당하는 부분과 노이즈 (Noise)에 해당하는 부분을 통계적인 필터링으로 분리한 다음, 그 주기를 Frequency 로 바꿔서 이상 Frequency가 발생하는 경우를 “사기일지도 모른다”고 잡아내는 방식으로 구성되어있다. 필터링이라는게 어지간한 학부 수업에서 다루지 않을수도 있지만, 사실 기본적인 시계열 통계학을 활용하는 방법 중 하나에 불과하다.

저런 수준의 회사가 협력사가 되면 빡침을 참기가 참 힘들어진다. 한번도 저런 모델링이라는걸 생각해본 적이 없는 사람들, 단순하게 평균치만 보면서 1차원의 숫자와 그래프로 살았던 사람들에게 분산과 표준편차도 아니고 필터링과 Frequency가 나오니 어떻게 이해를 할까? 모델을 이해 못하는 그들이 이해되지만, 한편으로는 학부와 석사시절에 수업들에 불평을 늘어놓던 친구들이 오버랩이 된다. 수업에 배우는 모델을 이해해본 적이 없기 때문에 회사 사정에 맞춰서 모델을 적절하게 변형해서 쓴다는 개념이 없는 것이다. 비지니스에서 누군가의 행동이 “이해”된다고해서 그들의 말도 안 되는 요구를 들어주지는 않는다. “바보”라고 판단되면 “무시”할 뿐이다.

 

데이터 사이언스 모델링 예시 – 로봇 청소기(?)

이미지 인식 같은 Low noise 데이터를 제외하면 거의 대부분의 데이터 기반 작업은 High noise 데이터를 여러가지 방식으로 전처리 (pre-processing)하는데서 시작한다. 그 중 저 위의 클릭 데이터 처리에 활용했던 Kalman filter를 다른 데이터 사이언스 프로젝트에 도입하는 예시 하나를 살펴보자.

거실에 로봇 청소기가 하나 있고, 그 청소기가 바퀴의 움직임에 대한 정보 + GPS 정보가 있다고 가정해보자. 참고로 바퀴의 각도와 속력으로 움직인 거리를 100% 맞출 수 없고, 실내에서 GPS 정보는 부정확하다. (KAIST에서 실내 GPS의 오차 보정을 위한 연구를 하고 있다. 관련논문) 말을 바꾸면, 오차가 가득 포함된 두 데이터를 바탕으로 로봇 청소기가 어디까지 움직였는지에 대한 “추측”을 해야된다는 뜻이다. 당연히 오차를 보정하기 위해서 오차 가득한 데이터를 Pre-processing 하고나서 결합을 시켜야한다. 데이터가 시간이 흐름에 따라 변하고 있고, 때로 주기적인 패턴이 나올 것이기 때문에 Kalman filter를 쓸 수 있는 매우 좋은 예시라고 생각된다.

오차를 제대로 보정하고 있는지 self-feedback을 줘야하니 여기에 Bayesian 모델링 아이디어를 추가해보자. 참고로 Bayesian 통계학은 기존의 데이터에서 나온 값을 Prior로 놓고, 새로운 데이터가 추가될 때 단순히 1/n의 가중치가 아니라 새로운 가중치로 기존 모델에 대한 “신뢰도” or “믿음” (Belief)를 바꾸는 통계학적 모델링 작업을 말한다. 다른 글에서도 언급했듯이 같은 아이디어가 자율주행차에도 도입되고 있다.

 

Kalman filter + Bayesian으로 위치 추정하는 법

필요한 가정

x값이 매번 새롭게 입력되는 바퀴 움직임의 정보, y값은 GPS 센서가 가르쳐주는 정보라고 생각해보자. 오차값이 정규분포를 따른다고 가정하면, 아래의 식으로 정리할 수 있다.

방금전의 바퀴 움직임이 다음 바퀴 움직임에 영향을 주는 정도를 A로 표현한 것이고, 바퀴 움직임에 따라 GPS 위치가 변화되는 정도를 G로 표현했다고 보면 된다. Q와 R은 그렇게 “추측”한 값이 어느 정도의 오차를 가질 것인지에 대한 가정이다. (보통 기존 데이터에서 뽑은 수치를 활용한다.)

Kalman filter에 의하면 위의 A, G, Q, R 값들로 아래의 필터를 만들 수 있다.

수식이 복잡하니 무슨 작업인지 좀 이해가 안 되겠지만, 쉽게 생각하면 이동평균처럼 중간 값들을 계속해서 찾아주는 작업이라고 보면 된다. 바퀴 움직임에 따라 예상되는 다음 바퀴의 움직임이나 로봇 청소기의 현재 위치의 범위를 구해놓고, 그 범위에 확률을 곱해서 가중평균된 값이 다음 바퀴의 움직임 & 로봇 청소기의 새로운 위치라고 정하는 것이다.

저 위에서 든 사기 클릭 데이터에 같은 필터를 적용시킬 때는 가중평균된 값이 기준 주기, 가중 평균과 실제 클릭 로그 값의 차이를 Noise라고 생각했었다.

 

최초 출발점 설정

일단 단순하게 (가로, 세로) = (0.2, -0.2) 라고 생각해보자. 가로, 세로가 얼마나 많이 움직일지 (분산), 얼마나 많이 같은 방향으로 움직일지 (공분산)을 모아서 Covariance matrix를 만들고, 아래 코드에 Sigma = (0.4, 0.3, 0.3, 0.45)로 잡아놨다. 실제로 업무에 적용할 때는 기존의 측정 데이터를 활용하면 된다.

# 출발점 (Prior) 기준의 예상되는 범위 - Prior distribution
library(mnormt)
xhat = c(0.2, -0.2)
Sigma = matrix(c(0.4, 0.3, 0.3, 0.45), ncol=2)
x1 = seq(-2, 4,length=151)
x2 = seq(-4, 2,length=151)
prior.density = function(x1,x2, mean=xhat, varcov=Sigma)
dmnorm(cbind(x1,x2), mean,varcov)
z = outer(x1,x2, prior.density)
mycols = topo.colors(100,0.5)

#그래프
image(x1,x2,z, col=mycols, main="Prior density", xlab=expression('x'[1]), ylab=expression('x'[2]))
contour(x1,x2,z, add=TRUE)
points(0.2, -0.2, col='red', pch=4, lwd=6)
text(0.1, -0.2, labels = expression(hat(x)), adj = 1)

 

GPS 센서에서 받은 정보

y값은 시작 포인트를 (2.3, -1.9)로 잡고, 공분산(covariance)을 x의 절반으로 잡았다. (아래 코드 확인)

여기서 y가 G와 x에 의해 결정된다는 위의 식을 “수학”대신 “언어”로 풀어보면, x (바퀴 움직임)이 어느 정도일 때, y (GPS 센서)가 어느정도가 될 것이다는 조건을 이야기한다고 할 수 있다. 확률&통계적으로 말하면 “조건부 확률”이다. 아래 그래프는 G를 Identity matrix로 잡았을 때다.

# 센서 정보 - 기본 셋팅
R = 0.5 * Sigma
z2 = outer(x1,x2, prior.density, mean=c(2.3, -1.9), varcov=R)

#그래프
image(x1, x2, z2, col=mycols, main="센서값에 따른 분포")
contour(x1, x2, z2, add=TRUE)
points(2.3, -1.9, col='blue', pch=4, lwd=6)
text(2.2, -1.9, labels = "y", adj = 1)
contour(x1, x2,z, add=TRUE)
points(0.2, -0.2, col='red', pch=4, lwd=6)
text(0.1, -0.2, labels = expression(hat(x)), adj = 1)

 

필터링이란?

위의 두 작업을 통해서 x값들이 어떻게 움직이고 있는지, 주어진 x에 대해서 y값이 어떻게 반응하는지를 간단하게 모델화했다. 이제 x가 주어지면 y값을 (대략적으로) 알 수 있으니까, 반대로 y가 주어지면 x를 찾아보자. 어떻게? Bayesian을 활용한다.

위 식을 이용해 현재 x값, y값, 그리고 x가 있을 때 y값을 알고 있으니, y가 주어졌을 때 x값이 얼마인지 추측할 수 있다.

그렇게 y가 주어졌을 때 x의 값과 분산을 구해보면,

이런 전환 방식을 Bayesian에서는 Conjugate prior라고 부른다. 위의 값을 계산하는 방법은 여러가지가 있을테니 계산과정은 생략하고, x의 최종적인 범위를 보면,

# 필터된 정보
G = diag(2)
y = c(2.4, -1.9)
xhatf = xhat + Sigma %% t(G) %% solve(G %% Sigma %% t(G) + R) %% (y - G %% xhat)
Sigmaf = Sigma - Sigma %% t(G) %% solve(G %% Sigma %% t(G) + R) %% G %% Sigma
z3 = outer(x1, x2, prior.density, mean=c(xhatf), varcov=Sigmaf)

#그래프

image(x1, x2, z3, col=mycols, xlab=expression('x'[1]), ylab=expression('x'[2]), main="Filtered density")
contour(x1, x2, z3, add=TRUE)
points(xhatf[1], xhatf[2], pch=19)
text(xhatf[1]-0.1, xhatf[2], labels = expression(hat(x)[prior.density]), adj = 1)
lb = adjustcolor("black", alpha=0.5)
contour(x1, x2, z, add=TRUE, col=lb)
points(0.2, -0.2, col='red', pch=4, lwd=6)
text(0.1, -0.2, labels = expression(hat(x)), adj = 1, col=lb)
contour(x1, x2, z2, add=TRUE, col=lb)
points(2.3, -1.9, col='blue', pch=4, lwd=6)
text(2.2, -1.9,labels = "y", adj = 1, col=lb)

 

위에서 노란색으로 반전된 분포를 베이지안 통계학에서 Posterior distribution 이라고 부른다. 다시 “수학”에서 “언어”로 표현 방식을 바꾸면, 로봇 청소기의 위치를 판별하는데 바퀴 움직임 정보와 GPS 정보를 결합할 때 GPS 정보가 좀 더 정확하다고 판단을 내린 것을 눈으로 확인할 수 있다. 실제 데이터로 작업할 때에는, 바퀴 움직임과 GPS 업데이트가 많아질수록 분산 값 (Q, R) 이 작아져서 분포 함수가 지금보다 덜 넓게 퍼질 것이고, 당연히 노란색의 결과값도 덜 퍼지게 된다. 또 계속해서 정보가 주어지면 x, y 중 어느 쪽에 더 가중치를 줄 것인지 (A, G)를 매번 조정할 수 있다.

이런 작업을 할 때, 머신러닝을 활용한다면 어떤 값에 손을 대야할까? Q, R은 데이터 포인트가 증가해야 조절되는 값이므로, A, G가 머신러닝 같은 (응용) 통계학 작업으로 조절할 수 있다는 감을 잡을 수 있을 것이다. 센서가 하나 밖에 없다면 머신러닝이 큰 의미가 없겠지만, 여러개의 센서가 제각각의 위치에서 보내주는 정보를 어떤 방식으로 결합하면 정확도가 더 올라갈지를 고민해본다면? 각 센서들에게 주는 가중치를 x, y 값의 레벨에 따라 다르게 작업할 수 있을텐데, 머신러닝은 딱 이런 포인트에 활용된다.

 

정리

내용을 요약하면, Noise가 많은 데이터를 필터링한 다음에, A에 대한 불확실한 정보와 A-B간 관계에 대한 정보를 이용해서 B로 A를 보정하는 모델을 만들었다. 이 때 A가 여러 소스에서 나온다면 (A1, A2, A3, …) 각각이 B에게 미치는 영향들을 결합해서 A1, A2, A3들이 상호 보정이 되도록 만들수도 있다. 이렇게 작업이 진행되기 때문에 필자가 줄곧 데이터 사이언스 프로젝트의 일부로 머신러닝을 활용한다고 표현하고, 그 속에는 깊이있는 통계학 지식이 필요하다고 주장하는 것이다.

 

나가며

요즘 회사에 CTO를 뽑겠다고 개발자들을 참 많이 만나고 다니는 중이다. (자신있으면 연락하시라 ㅎㅎ) 처음에는 VC가 왜 저렇게 깐깐하게 CTO의 학벌과 학력, 직장 경력, 프로젝트 포트폴리오, Challenge가 주어졌을 때 극복하는 방식 같은 내용들을 살펴보고, 왜 저렇게까지 민감한 이슈들을 확인하려고 하는지 잘 이해를 못했다. 개발자가 머신러닝하는 거 아니냐는 저급 VC들에게 투자받을 생각은 처음부터 없었던터라 실력없어보이는 VC는 모조리 대화를 끊었고, 개발은 그냥 SI성 개발 밖에 못 본데다, (듣는 개발자 기분 나쁘겠지만) 단순하게 벽돌 쌓는 막노동꾼과 개발자가 뭐가 다른가는 생각까지 했었기 때문이다. 만나봤던 꽤 많은 초짜 개발자들이 아카데믹 코딩만 했던 필자보다 개발 실력이 부족해서 회사가 피해를 입기도 했다. 그런 개발자들과 여러번 좌충우돌하면서 경험치가 쌓이고 나서야 개발이라는 걸 너무 왜곡된 시야로 봤구나는걸 깨닫게 되었다. 멀쩡한 설계도가 있는 집을 엉망으로 만드는 인테리아 업자들이 있듯이, 개발자들도 실력과 센스가 천차만별이더라.

몇 번 데어보고서야 비로소 개발자라는 직업군이 얼마나 다양한 “등급”이 있는지 절감하고, 왜 VC가 CTO에게 엄청난 스펙을 요구하는지 공감하게 됐다. Ad-Tech 회사라고 이름달고 있는 “좀 덩치커진” 스타트업들의 CTO들을 만나면서 공감은 확신이 되고 있는 중이다. 아마 데이터 사이언스 관련된 프로젝트를 주먹구구식으로 해보려는 개인이나 회사들도 마찬가지일 것이다. 이걸 단순한 개발 지식의 일부라고 생각하고 CTO에게 일임하고 있는 CEO나, 깊이 없이 코드 Copy & Paste해서 쓰는 CTO들이 모델링이라는 관점을 이해하려면 몇 번 당해봐야겠지. 아니면 그저그런 CTO로 회사 성장의 한계에 다달은 Ad-Tech 회사들처럼 모델링을 제대로 하는 영역에 영원히 진입하지 못하던가.

참고로, 90년대 말에 파생상품 하나 잘못 사서 JP Morgan에 3천억을 갖다바친 국내의 어느 대기업 계열 증권사는 20년이 지난 요즘도 제대로 파생상품을 이해하는 사람을 못 뽑고 있더라. 심지어 그 대기업 오너는 큰 손실의 기억이 채 가시기도 전인 2000년대 초반에 회사 돈으로 파생상품 투자(?)를 하다가 천억도 넘는 손실을 보고 횡령 혐의로 곤욕을 치르기도 했다. 이젠 좀 배우셨을라나?

요약: 2018년 비트코인의 주요 쟁점은 이 문제를 넘어 다른 쪽으로 옮겨갈 수도 있지만, 합의 포크(consensus fork)와 체인 분할 (chainsplits)에 관한 저희의 여섯 번째 보고서에서 비트코인 캐시 분할 이후 포크를 통해 비트코인에서 갈라져 나온 것으로 추정되는 44개의 토큰 목록을 보여드리고자 합니다.

(출처: gryb25)

2015년 후반부터 2017년 말까지 비트코인 커뮤니티는 체인 분할에 관한 매우 집중적인 분석을 했고, 이는 결과적으로 비트코인 캐시의 출시 및 기타 토큰의 과잉공급을 야기했습니다. 저희는 체인 분할에 관한 몇 가지 주제를 아래 5개의 블로그 기사에서 다룬 적이 있습니다:

이번 보고서에서 저희는 비트코인 포크로 형성된 44개의 토큰 목록을 만들었습니다.

비트코인 캐시 이후 비트코인에서 갈라져 나온 암호화폐 목록

이름 URL/출처 포크 헤이트 (Fork Height)
비트코인 캐시
(Bitcoin Cash)
https://www.bitcoincash.org 478,558
비트코인 클래식  (Bitcoin Clashic) http://bitcoinclashic.org (비트코인 캐시에서 갈라져 나옴)
비트코인 캔디      (Bitcoin Candy) http://cdy.one (비트코인 캐시에서 갈라져 나옴)
비트코인 골드
(Bitcoin Gold)
https://bitcoingold.org 491,407
비트코어 (Bitcore) https://bitcore.cc 492,820
비트코인 다이아몬드(Bitcoin Diamond) http://btcd.io 495,866
비트코인 플래티넘(Bitcoin Platinum) Bitcointalk 498,533
비트코인 핫
(Bitcoin Hot)
https://bithot.org 498,777
유나이티드 비트코인(United Bitcoin) https://www.ub.com 498,777
비트코인 엑스 (BitcoinX) https://bcx.org 498,888
슈퍼 비트코인
(Super Bitcoin)
http://supersmartbitcoin.com 498,888
오일 비트코인
(Oil Bitcoin)
http://oilbtc.io 498,888
비트코인 페이
(Bitcoin Pay)
http://www.btceasypay.com 499,345
비트코인 월드
(Bitcoin World)
https://btw.one 499,777
비트클래식 코인(Bitclassic Coin) http://bicc.io 499,888
라이트닝 비트코인(Lightning Bitcoin) https://lightningbitcoin.io 499,999
비트코인 스테이크(Bitcoin Stake) https://bitcoinstake.net 499,999
비트코인 페이스
(Bitcoin Faith)
http://bitcoinfaith.org 500,000
비트코인 에코
(Bitcoin Eco)
http://biteco.io 500,000
비트코인 뉴
(Bitcoin New)
https://www.btn.org 500,100
비트코인 탑
(Bitcoin Top)
https://www.bitcointop.org 501,118
비트코인 갓
(Bitcoin God)
https://www.bitcoingod.org 501,225
패스트 비트코인
(Fast Bitcoin)
https://fbtc.pro 501,225
비트코인 파일
(Bitcoin File)
https://www.bitcoinfile.org 501,225
비트코인 캐시 플러스(Bitcoin Cash Plus) https://www.bitcoincashplus.org 501,407
비트코인 세그윗2x (Bitcoin Segwit2x) https://b2x-segwit.io 501,451
비트코인 피자
(Bitcoin Pizza)
http://p.top 501,888
비트코인 오어
(Bitcoin Ore)
http://www.bitcoinore.org 501,949
월드 비트코인
(World Bitcoin)
http://www.wbtcteam.org 503,888
비트코인 스마트 (Bitcoin Smart) https://bcs.info 505,050
비트보트 (BitVote) https://bitvote.one 505,050
비트코인 인터레스트(Bitcoin Interest) https://bitcoininterest.io 505,083
비트코인 에이톰 (Bitcoin Atom) https://bitcoinatom.io 505,888
비트코인 커뮤니티(Bitcoin Community) http://btsq.top/ 506,066
빅 비트코인
(Big Bitcoin)
http://bigbitcoins.org 508,888
비트코인 프라이빗(Bitcoin Private) https://btcprivate.org 511,346
클래식 비트코인 (Classic Bitcoin) https://https://bitclassic.info 516,095
비트코인 클린
(Bitcoin Clean)
https://www.bitcoinclean.org 518,800
비트코인 허쉬
(Bitcoin Hush)
https://btchush.org 2018년 2월 1일
비트코인 로듐
(Bitcoin Rhodium)
https://www.bitcoinrh.org 알려지지 않음
비트코인 라이트 (Bitcoin LITE) https://www.bitcoinlite.net 알려지지 않음
비트코인 루나
(Bitcoin Lunar)
https://www.bitcoinlunar.org 알려지지 않음
비트코인 그린
(Bitcoin Green)
https://www.savebitcoin.io 알려지지 않음
비트코인 힉스
(Bitcoin Hex)
http://bitcoinhex.com 알려지지 않음

(출처: BitMEX Research, Forked coin websites, findmycoins.ninja)

위와 같은 새로운 토큰들을 신중히 다뤄야 한다는 점은 매우 중요합니다. 특히 저희는 토큰 스냅샷 포인트 (token snapshot point) 이후에 생성된 다른 프라이빗 키와 연관된 새로운 아웃풋에 비트코인을 최소 1번 이상 소비하기 전에는 여러분의 비트코인 프라이빗 키를 새로운 포크 토큰 지갑에 보관하지 말 것을 조언합니다. 이렇게 하시면, 여러분의 비트코인은 아무런 문제없이 안전할 것입니다. 

2018년 5월 17일 금일, 비트멕스 거래엔진에 피드 대기시간 지연과 온 종일 단발적으로 엔진 작동이 중  단되는 몇 가지 개별적이며 이제까지 예측하지 못한 문제가 발생했습니다.

주 거래엔진 하드웨어에 장착된 디스크는 대략 10:00 UTC경에 성능이 급격히 저하되었습니다. 해당 디스크 성능 저하는 미리 예정된 보관 및 재 색인 (reindex) 작업동안 심각한 엔진 역압 (backpressure)을 일으킨 피드 대기시간 지연 현상을 발생시켰습니다. 디스크 인풋 / 아웃풋 작업은 예상 속도의 20분의 1 수준에서 이루어졌습니다.

비트멕스는 중복 드라이브 (redundant drive)를 실행하고 있습니다. 그러나 이번 사태의 경우, 두 개의 중복 드라이브에 동시다발적으로 성능 저하현상이 발생했습니다. 따라서 저희는 문제 해결을 위해 선택의 여지없이 드라이브 유지보수를 위한 엔진 작동 정지 조치를 취할 수 밖에 없었습니다. 불행히도 엔진 역압 (backpressure)이 예상보다 더 빠른 속도로 심각한 수준에 도달하여 저희는 원래의 계획을 앞당겼습니다.

이번 문제로 인해 데이터 완전성에 결함이 생기지는 않겠지만, 저성능의 디스크로 엔진 기능을 정상적으로 복구시키는 일은 실행 및 검증 과정으로 인해 예상보다 오랜 시간이 걸렸습니다.

이 작업이 완료된 후, 거래가 재개되었습니다. 하지만 불행히도 다음 보관 작업 도중, 재 색인 작업과 특정 테이블 상에서 예기치 못한 색인 재생성 (index regeneration)과 기호 재검증 (symbol revalidation)을 일으킨 굉장히 드문 요청 패턴이 결합하며 또 다른 문제가 발생했습니다. 이는 비슷한 현상을 보이는 다른 엔진 역압 문제 시나리오를 만들었습니다.

저희 비트멕스는 위 문제의 다양한 원인들을 규명하고 이를 해결했으며, 거래 엔진 담당 팀은 속도 저하에 대한 근본 원인 분석을 계속하면서 24시간 동안 엔진성능을 면밀히 관리 및 감독하고 있습니다.

펀드매니저를 하고 있는 절친이 진지한 상담을 원한다면서 늦은 밤에 사무실로 찾아왔다. 요즘 4차산업 어쩌고 저쩌고에 블록체인이라고 말들이 많고, 머신러닝이 펀드매니저 업무를 대체하는 수준을 넘어서서 아예 코인이라는게 완전히 우리가 아는 금융 시스템을 바꿔놓을 것처럼 말들하는데, 진짜 그렇게 되냐고 걱정이 가득한 표정이었다.

여의도에서 소문만 듣고 주식사고 있는 애들은 좀 걱정하고 정신차려야 한다고 놀리고 싶은 욕구가 샘솟았지만, 그래도 가까운 친구가 근거없는 낭설에 휘말려서 엉뚱한 회사들에 투자하는 걸 보고 있을 수가 없어서 몇 마디 정리해줬다.

우선 머신러닝이 펀드매니저 업무 어쩌고 부분은 이전에 로보 어드바이저 컨셉에 대해서 언급한 것처럼, 투자 전략이 데이터 속의 패턴으로 정리될 수 있다면 머신러닝으로 대체되는 부분이고, 데이터로 정리가 되지 않는다면 니네가 당장 짤릴 일은 없으니 안심해라고 위안(?)을 해줬다ㅋㅋ (물론 니네 보스가 초보적인 지식 수준으로 무조건 로봇으로 바꾼다고 우격다짐으로 나오면 어쩔 수 없겠지만…)

결국엔 조건 A, B, C,….. 가 결합될 때 자산 가격 움직임이 random이 아니라 매우 높은 확률로 예측 가능한 경우의 수를 찾는 작업이기 때문에, 언제 어디에서 무슨 종류의 uncertainty가 나타날지 모르는 시장에서는 쉽지 않은 게임이라고, 그리고 그런 성공하는 rule이 나오면 순식간에 Copy해서 Arbitrage할 기회가 빠르게 사라지는게 금융 시장의 특성이다보니, 기업의 잠재가치를 깊이 있는 지식으로 평가해서 투자전략을 짜는 팀은 오래 살아남을 거라고 말해줬다.

친구가 가져온 내용 중에 기초 지식 없이 화려한 미사어구만 잔뜩 늘어놓은 글이 하나 더 있었는데, 바로 블록체인의 탈중앙화된 거래 구조가 금융 시장의 모든 시스템을 다 바꿀 것이라는 “뇌피셜”이 가득 담긴 보고서였다.

(Source: Learn Networking)

탈중앙화 시스템, 정말로 꿈처럼 될까? – 증권선물거래소

가장 눈에 띄인 타이틀이 증권 거래소, 선물 거래소의 기능이 블록체인으로 대체될 것이라는 “망상”이었다.

왜 한국에는 증권/선물 거래소가 하나 밖에 없을까? 왜 그 기관을 정부가 운영하고 있을까? 우리나라는 거래 규모가 작고, 항상 정부가 모든 걸 개입하는 후진 국가니까? 그럼 정부가 직접 개입하지 않는 다우존스지수, 나스닥, 시카고 선물 시장 같은 대형 거래소들이 왜 SEC같은 정부기관의 규제를 받고 있을까?

첫번째는 사기(Fraud)를 방지하기 위해서다. 팔았다고 해 놓고 돈을 넘겨받으면 그 자산을 이전해야하는데, 정작 자신이 갖고 있지도 않은 자산을 팔 수도 있고, 제한적으로 그런 공매도를 허용해줬다고 하면 더더욱 돈을 지불한 사람이 자산 인수에 대한 확신을 가질 수 있도록 해 줘야 한다. 이 부분까지는 블록체인의 탈중앙화 시스템으로 제어가 가능할지도 모른다. 굳이 거래소가 없어도 개인간의 거래를 기록해 놓은 다른 블록들의 정보를 바탕으로 실거래를 증명할 수 있으니까. 다만 손해가 났을 경우에 얼마나 빠른 속도로 손해 배상을 받을 수 있을지에 대한 효율성에 대해서는 잠재적인 의구심이 있다.

두번째는 시스템 자체의 효율성 극대화를 위해서다. 모든 네트워크는 중앙집권화되어 있는 구조가 (거의 대부분의 경우에) 가장 효율적이다. 이걸 Star Network라고 한다. Star Net이 효율성 최적화를 달성하지 못하는 유일한 경우는 중앙의 제어 기관이 제대로 다른 Entity간의 정보 공유를 못 하는 경우 밖에 없다. 서버라고 치면, 중앙서버가 트래픽 폭주를 못 이기고 터진 상태, 중앙집권적인 국가라고 치면 중앙정부가 지방 정부들보다 더 작아져서 컨트롤을 못하는 경우라고 생각하면 된다. 요컨대, 중앙에 있는 Star만 멀쩡하면 그 시스템은 항상 가장 효율적이다.

그런데 블록체인식 탈중앙화된 시스템으로 거래소 기능을 대체할 수 있을까? 당장 미국의 지역 거래소들이 매수/매도 주문을 신속하게 처리하지 못하는 한계를 악용해서 대차거래 (Arbitrage)를 하는 High Frequency Trading이 2000년대 초반까지도 대유행이었다. 속도가 빨라지면 해결된다고? 네트워크 서버 용량을 무한대로 키운다고 해도, 매수 주문량과 각 네트워크 노드별 매도량의 차이를 악용할 수 있는 가능성은 얼마든지 있다. Mesh Net에서는 정보가 네트워크의 Node를 타고 흐르기 때문에, 반드시 어느 구간에서는 병목현상이 생길 수 밖에 없기 때문이다. 속도가 더 빨라지면 차라리 한국처럼 하나의 Center를 갖는 Star net으로 전환될 가능성이 더 크다. Star의 서버 용량만 무한대로 업그레이드 해 놓으면 지방 네트워크가 필요없어지니까.

(Source: Accolade Technology)

세번째는 금융 위기에 대한 두려움이다. 2008년 Global Financial Crisis를 겪고 난 다음에 시장이 한 방향으로 움직이는 위험 (Herding behavior risk)에 대한 연구가 활발해졌다. 선물(Futures, 생일 선물 아님-_-) 시장의 경우, 매일의 종가에 따라서 이익/손해가 결정되고, 손해 본 만큼 증거금을 채워넣어야한다. 그래서 이익 본 계정에 그 만큼의 이익을 채워넣어줄 수 있기 때문이다. 이걸 Marking-to-market이라고 하는데, 대폭락이 있을 때마다 모두가 손해를 보고, 그래서 증거금이 부족하니 모두가 자산을 더 매각하려고 하고, 살려는 사람은 없고 팔 사람만 있으니 가격이 더 떨어지고, 증거금이 더 필요해지고, 다시 더 팔려고 하는…. 그런 악순환이 반복되는, 이른바 시스템의 구조적인 형태 때문에 모두가 한 가지 선택만 하려는 상황에서 나오는 위험 (Systemic risk)를 줄일 방법, 최소한 그 위험을 계산해서 수량화하려는 시도들이 줄을 이었다. (필자의 박사시절 연구 주제였다 ;;;)

현재의 거래소 운영 방식을 네트워크로 표현하면 Star net이다. 이런 시스템에서는 매도-매수자 사이에 파생상품 청산소 (Clearing house)가 Center에 있어서, 둘 중 한 쪽이 파산하더라도 중간에서 정산을 해 준다. 그런데, 탈중앙화된 블록체인 방식으로 거래가 이뤄졌다면 어떻게 되었을까? 상대방이 파산했을 때, 내 이익금을 받을 수 있을 것이라는 기대도 낮을 수 밖에 없고, 감독하는 기관이 없으니 블록들끼리 다수결로 담합을 해버리면 Fraud가 정상 내역보다 더 많아져서 정확성을 담보하기도 힘들어진다. Mesh net이 블록 하나하나에 대한 공격에는 매우 강력하게 방어할 수 있는 체계이지만, 블록 그룹의 절반 이상이 오염되어 버리면 모든 블록들을 일일히 조사해야하는 꼴이 된다. 중앙 시스템 하나만 감시하면 되었던 Star net보다 오히려 관리 비용이 더 커진다.

 

탈중앙화 시스템이 가능한 영역

요즘 한국의 벤쳐 업계가 블록체인에 관심을 가지는 내용을 살펴보면, 모두들 “코인”에 대한 관심에서 출발하고 있다. 비트코인으로 소위 “대박”을 겪은 것만 눈에 보이는지, 너도나도 ICO 를 해서 자기네 코인을 팔아 자금을 모으고, 그 사업이 잘 되면 코인의 가치가 오를 것이라는 말만 열심히 한다. 정작 초점은 코인이 아니라 그 코인으로 만든 자본으로 하는 사업, 그 코인과 맞물려서 돌아가는 사업의 사업성인데, 아무도 관심이 없다. 외국계 IT업체 한국 대표를 지낸 어느 분은 필자더러 “백서” 하나만 잘 써서 그걸로 ICO하는게 차라리 더 낫지 않냐고 그러던데, 말씀하시면서도 “이거 사기아냐?”라는 말투가 묻어나오더라.

코인은 블록을 결합하고 해체하는데 쓰는 암호의 한 형태다. 말을 바꾸면, “코인” 사업을 하는게 아니라, “블록체인” 사업을 한다고 쓰는 편이 옳고, 당연히 “블록체인”이 어느 영역에 어떻게 작동하는 사업인지를 구체적으로 설명할 수 있어야 진짜로 “블록체인” 사업이다. 미안한데, 아직 한국에서 제대로 블록체인을 활용하는 사업 모델을 본 적이 없다. 블록체인 어쩌고 저쩌고라고 주장하는 사업체 대표들을 만나보면 블록체인이 돌아가는 네트워크 구조를 이해하고 있는 사람은 정말 한 명도 못 봤다. 실상 모든 Buzzword들이 한국에 들어왔을 때, 그걸 제대로 이해하는 사람이 한번이라도 제대로 있었던 적이 있겠냐만은…

(Source: Ventureradar.com)

실리콘 밸리에 가 보면 블록체인으로 한다는 재밌는 사업 모델들이 참 많다. 이베이와 아마존이 제일 걱정하는 사업 모델은 블록체인 기반의 쇼핑몰들이다. 어차피 상품을 팔고 사는 사람들이 모두 개개인들인데, 아예 플랫폼 자체를 개개인들이 참여하는 형태로 바꾸자는 아이디어가 온라인 쇼핑몰 페이지에도 구현된 것이다. 거래 내용을 기록하고 제대로 배송이 되는지 같은 모든 내용이 쇼핑몰 웹 사이트가 직접 통제하는게 아니라, 각각의 블록(개개인)들의 네트워크에서 처리된다.

같은 아이디어가 SNS에도 침투해있고, 보안에도 꽤나 많은 기술적인 발전이 있었는지 작은 회사들을 사고 팔았다는 기사들이 수시로 올라온다. 심지어는 1인 미디어도 블록 형태로 구성해서 아프리카 TV나 팟캐스트 같은 서비스들의 경쟁자로 떠올랐고, 요즘 Youtube가 1인 미디어의 주요 채널인만큼 Youtube 내부적으로도 유사한 시스템을 카피하는데 관심이 있다는 뉴스 기사들이 흘러나온다.

한국은 새로운 기술을 사업에 적용하기는 커녕 아직도 ICO해서 “한탕” 벌어볼 생각하는 IT 사기꾼개발자(?)들만 있는데….

 

왜 이렇게 분산처리하는 아이디어가 나왔을까?

중앙서버를 구축하는 비용이 어마무시하기 때문이다. 당장 구글이나 페이스북 같은 대형 IT 회사들이 서버에 쓰던 비용을 재무제표에서 찾아보라.

(Source: SocialTube)

위의 그림을 보면 오른쪽이 기존의 Client – Server 중심 네트워크 (Star Network)이고, 왼쪽이 블록체인에서 그렇게 주장하는 탈중앙화된 네트워크이다. 기존 방식대로 서비스를 제공하려면 동영상을 하나 보고 싶다고 할 때 모든 Client들이 Server에 접속해야한다. 모든 Traffic을 Server가 감당하려면 서버는 얼마나 대용량 데이터 전송을 감당할 수 있어야할까? 1990년대 초반처럼 간단한 텍스트 몇 줄만 전송되는 인터넷 초기 시대야 서버 용량에 관심을 안 가져도 되겠지만, 요즘 우리가 온라인으로 접속해서 보는 동영상은 어지간하면 FHD 화질이다. 압축 기술에 따라 약간씩 차이는 있겠지만, 1시간 영상을 보는데 1기가의 동영상 파일을 이용하고, 그걸 한 100만명 정도가 한꺼번에 서버에 접속해 있는 상태라고 하자. 서버 비용이 엄청나게 많이 든다는 말이 무슨 뜻인지 공감할 수 있을 것이다.

탈중앙화 네트워크를 활용하면 서버를 무겁게 가져가지 않아도 각각의 Client들이 서로의 자원을 이용해서 다른 Client에게 서비스를 제공해 줄 수 있다. Torrent 같은 유사 P2P 프로그램으로 파일을 다운 받으면 내가 이미 받은 부분은 남들에게 공유하고, 아직 받지 못한 부분은 이미 받은 사람에게서 전송을 받아서, n명의 네트워크가 서버를 대신하는 구조를 만들 수 있다. 말을 바꾸면, 모든 사람이 자기의 하드 디스크와 인터넷을 다른 사람에게 제공해주면서 동시에 자신도 혜택을 받는 관계다. Torrent가 서버를 대체할 수 있는 Network 구조는 블록체인과 동일하다는 설명에 약간 공감이 되시는가?

증권 선물 거래소가 없어지고 탈중앙화된 시스템이 만들어 질 것이라고 주장하시는 분들을 보면, 탈중앙화가 마치 독재에 저항하는 민주주의 정신인 것처럼 포장되어 있다. 그런데, 사실 그 속에는 중앙 서버를 안 갖추고 내 서비스를 “저렴하게” 만들어 보겠다는 개발자들의 “검은” 속내가 숨어있다. 비용이 적게 드는건 충분히 공감하지만, 정작 문제가 생겨도 아무도 책임지지 않아도 되어버리는 구조를 산업 곳곳에 마구 갖다 쓸 수 있을까? 이런식의 탈통제 구조는 “히피 마인드”를 갖고 있는 IT 개발자들에게는 꿈의 구조일지 모르지만, 제도권의 시스템을 운영하는 사람 입장에서는 안정성을 담보하기 굉장히 어려운 위험한 구조다.

 

나가며 – ICO충 Out!

ICO에만 몰두하는 바람에 블록체인이라는 기발한 네트워크 아이디어 활용 방식을 반쯤 “사기”의 영역으로 끌고가고 있는 일부 수학 실력 zero의 IT 개발자들에게 한 마디 하고 싶다. 사회에 효용을 주는 것은 “코인”이 아니라, “블록체인”을 쓸 수 있는 “사업 모델”이다. 블록체인 오픈소스 코드를 구해놓고 블록체인 전문가인양 으시대는 꼴을 보는 것도 백번양보해서 감수할 수 있는데, 그걸 화려한 미사어구만 잔뜩있는 “백서”로 ICO에 쓸려고 하지만 말고, 무슨 사업에 어떻게 적용할 생각인지는 한번쯤 고민해줬으면 좋겠다. 한국만큼 IT 인프라가 잘 갖춰져 있는 나라가 전세계에 몇 군데 없는데, 다양한 사업 모델을 많이 테스트해볼 수 있을텐데, 왜 그렇게 “사기”에 가까운 작업에만 몰두하고 있나?

무슨 기술이건 깊이 있게 이해를 못하면 잘못된 이야기를 할 수 밖에 없다. 블록체인이라는 것도 서버를 중앙 서버 하나에서 Network 서버로 바꿀 때 보안을 처리하는 방식 중 하나에 불과하다. 알파고와 인공지능이라는 단어에만 현혹이 되어서 통계학은 필요없고 인공지능이 알아서 모든 변수를 다 찾아주고 곧 인류는 멸망한다는 식의 “망상”만 퍼붓는 사람들에게 굉장히 불편한 글을 그동안 써 왔던 것처럼, 블록체인이라는 아이디어를 코인과 연결지어서 돈을 마구 찍어낼 수 있는 기계인 것처럼 인식하고 홍보하고 그걸로 돈을 벌려는 사람들에게도 같은 불편함을 느낀다. 요즘 사회악인 존재들에게 “~충”이라는 단어를 붙이던데, 이렇게 말하고 싶다.

“ICO충 Out!”

 

학부 4학년 1학기 무렵으로 기억한다. 고교시절부터 오직 Finance에만 관심을 갖고, 언젠가는 한국에 IMF 구제금융 쇼크를 날린 유태계 자본들을 갖고노는 월가 최고의 거물이 되겠다던 부질없는 망상만 갖고 대학과 전공을 정해서 열심히 살던 시절이다. 3학년 때 한국고등교육재단 (SK그룹 산하)의 경제학 전공 장학생으로 선발되고, 그 학생들을 지도(?)해주셨던 경제학과 교수님께 진로 상담차 30분 정도만 시간을 내 주시면 안 되겠냐고 부탁을 드렸다.

보통 교수님께 메일을 보내서 답을 받은 적이 거의 없었던 터라 일말의 기대도 없었는데 (항상 여자애들한테는 시간이 많으시던 교수님들….), 장학재단 이름을 들먹여서인지 용케 시간을 내주신다는 답변을 받았다. 감사한 마음에 큰 기대를 갖고 찾아뵈었는데, 며칠 밤을 샌 것 같은 피로에 쩔은 표정으로 키보드를 열심히 두들기면서 필자의 고민에 아주 짧은 답변을 주셨던 기억이 난다.

금융시장에서 채권을 re-financing하는 쪽 비지니스, 혹은 그런 채권들을 rating 해주는 비지니스를 목표로 커리어를 잡으면 어떨까는 질문을 드렸는데, 학부 4학년이 목표로 하기에는 너무 범위가 좁으니 시장을 좀 더 크게보라는, 대략 15초 정도가 걸린 아주아주 짧은 답변을 들었다.

당시에는 매우 짧은 답변에 좀 섭섭했던 기억이 있는데, 투자은행가로 첫 직장 생활을 하면서, 나중에는 대학원 수업을 듣고 교수님들 따라 연구 프로젝트차 미국의 큰 기업들을 보면서 왜 그 때 교수님이 그런 말씀을 해 주셨는지 가슴 깊숙한 곳에서부터 공감을 할 수 있었다.

금융시장에서 채권 rating 하는 자리에 있는 사람들이 시장에서 받는 대접, Financing 소스 중 금융시장이 위기에 직면할 때만 제외하면 가장 저평가 받는 상품이라는 시장의 분위기, rating이라는 작업 자체가 심하게 보수적인 저난이도 작업이라는 것 등등을 학부 4학년의 코흘리개에게 상세하게 설명해줄 교수가 과연 얼마나 있을까? 그전에 코흘리개들이 들어도 이해할 수 있을까?

 

진로상담? 수학 수업 상담?

요즘 진로 상담을 원한다는 메일을 꽤나 받는다. 그리고 많은 수의 질문자들이 “문과” 출신이고, “문과” 출신인 티가 나는 질문을 한다.

  • 선형대수는 챕터 몇몇만 보면 되나요?
  • 미분방정식을 다 알아야 하나요?
  • 선대, 미방 동영상 강좌 링크를 걸어놨으니 (좋은 수업인지) 한번 봐 주세요

좀 미안한 말인데, 이런 질문을 받으면 대답을 안 해주고 싶다. 이과 애들은 저학년 때 저 과목들을 한 학기동안 들으면서 매주 숙제하느라 꽤나 고생했을 과목들인데, 그렇게 숙제하면서 & 시험 준비하면서 문제 풀이와 증명의 개념을 “손”(Not “머리”)에 익혔을텐데, “얍샵”하게 동영상 강의 하나만 보면, 챕터 몇 개만 휙휙보면 다 이해할 수 있을것이라는 기대를 담은 질문 같아 보인다. (문과 과목들은 그런 경우가 꽤나 있으니까)

머리를 쥐어 뜯으며 박사 커리큘럼까지 공부했던 필자도 헷지펀드 퀀트나 IT회사들 데이터 사이언티스트 면접볼 때 가끔 못 봤던 방식으로 선형대수와 미분방정식을 쓰는 걸 보고 충격먹고 다시 책을 펴는 일이 꽤나 있었는데, 저 과목들로 숙제 한 번도 안 낸 “주제에” 어떻게든 쉽게 공부하겠다는 약은 술수가 보여서 얼굴을 찌푸리게 된다.

필자가 학부 시절에 교수님들께 메일 답장을 못 받았던게 같은 이유가 아니었을까 조심스레 자문해보고 싶은 순간들이다.

지식이 없어서 못 할테니 포기해라는 말을 해 주고 싶은 건 둘째 문제고, 태도부터 바꾸라고 일침을 놔주고 싶을 때가 많다.

(Source: MBC)

 

뼈를 때리는 팩폭

더 솔직히 말하면, 그런 자세로는 어차피 공부해도 데이터 사이언티스트 되기 어려우실테니 포기하라고 말해주고 싶다. 고교시절부터 수학 공부 어떻게 해야하냐고 묻는 친구치고 수학 잘하게 된 친구는 하나도 없었던 경험에 미뤄볼 때… 선대나 미방같은 기초 수학 수업을 들은적이 없는 사람이 머리 회전이 가장 빠를 학부 새내기 시절도 아니고 직장 생활하면서 깊이 있게 이해하기는 좀 어렵지 않을까? 당장 손으로 꼼꼼하게 문제들을 풀이할 시간도 찾기 어려울 것이다. 비디오 동영상이나 제대로 보시기는 할지… 그런 분들에게 냉정하게 제일 가능성이 높은 직장은 수학 없이 그래프로 Business Insight를 뽑아내는 Data Analyst다.

어떤 메일에는 자기는 문과 출신이지만 Business Intelligence (BI, Data Analyst의 옛 명칭)는 향후 비전이 없어보여서 하고 싶지 않고, Data Scientist를 하고 싶다면서, 저 위에 예시를 들어놓은 질문을 하셨더라. 욕심은 Quantitative 박사들이 할 일에 맞춰져 있는데, Quantitative 학부 전공자들이 저학년 때 기초로 배웠던 과목 조차도 “스리슬쩍” or “대충” 넘어가도 되겠지라는 안이한 마인드라는 말로 해석이 된다.

사실 그런 기초 과목에 선생님이 누구인가가 무슨 큰 의미가 있나? 아주 대단히 직관을 갖추신 분들이 있겠지만, 내용을 하나도 모르는데 직관만 받아서 어떻게 그 지식들을 하나의 묶음으로 묶어낼 수 있을까? 누구 강의를 봐야되나, 무슨 챕터를 봐야되나는 질문에 아래의 한 문장으로 답하겠다.

“교과서에 있는 증명들 다 증명해보고, 문제들 다 풀어보고 난 다음에 다시 질문해주시기 바랍니다.”

 

진짜 진로 상담

본인이 아주 뛰어나고 여러가지 경험이 쌓인 특이한 케이스가 아니라면 Data Scientist라는 직업을 고용주들이 학부 출신들에게 주지 않을 것이다. 특히 통계학이나 Computer Science (Not Computer Engineering)로 단단하게 준비가 안 된 비전공자들은 어렵다고 본다. 수업에 오시는 고학력 학위자들 (ex. 통계학 석사, 경제학/공학 석/박사 등)이 무리없이 이해하고 있는 표정들, 그런 이해가 스며나오는 질문들을 접하면서, 이 직업의 학력 기준 “최소 사양”이 잡히더라.

필자가 Data Scientist 팀을 구성하게 된다면 Quantitative 전공으로 석사 이상의 학위를 가진 분들 중에, 필자가 내는 “수학”적인 “통계학” 문제를 “코드”로 구현해낸 결과물로 1차 스크리닝을 할 것이다. (생각해보니 실리콘 밸리에서 잡서칭하던 시절에 겪었던 모든 면접이 이랬다 ㅋ)

무사히 통과한 후보들이 정말 자기가 친 코드를 제출했는지 확인하기 위해서 답안에 등장한 “수학”적인 “통계학” 질문 폭탄을 던지고, 제대로 대답하는 분들만 고려대상으로 삼고 싶다. (이것도 필자가 겪은 면접들이다 ㅋㅋ)

강의 시간에 질문들의 수준을 감안해봤을 때, 필자의 질문을 통과하실려면 학부 전공만으로는 쉽지 않을 것이다. 아래의 예시를 보라.

(Source: Dezyre.com)

두 개의 그래프를 놓고 L1, L2 Regularization간 Parameter Sparcity에 대해서 설명하실 수 있는 분? 통계학 학부 출신이신 분이 수학 & 통계학 수업에 왔다가 했던 질문을 약간 변형시킨 내용이다. (굳이 따지자면, 그래프를 그려줬으니 힌트를 준 셈이다. 참고로 질문하신 분은 Ridge, Lasso의 Regularization 작동 방식에 대한 질문을 하시면서 저 위의 그래프를 그리셨다.) 이 질문을 받고 정말로 학부만 하신 분인지 한번 되물어 봤었다. 대답을 아시는 분, 그리고 유사한 수준의 문제에 대답을 하실 수 있을만큼 “수학”적인 “통계학” 지식이 있으신 분은 Data Scientist 면접을 볼 자격이 있다고 생각한다.

아니라면? 글쎄, 잘 모르겠다.

 

나가며 – EE의 관점 vs. DS의 관점

며칠 전 전기 공학 전공의 교수님을 만났다. 가까운 지인을 통해 만난 탓에 사업 이야기, 교육 이야기 등등 여러 이야기를 나눴는데, 굉장히 겸손하게 머신러닝, 딥러닝 같은 부분은 전공하신 교수님과 같이 팀을 이뤄서 논문을 쓰거나 프로젝트를 진행한다고, 본인은 나와있는 모듈들을 활용하는 수준으로 밖에 모른다고 하시더라. 겸양이기도 하겠지만, 다른 한편으로는 솔직한 증언이 아닐까 싶다. EE 쪽 전공은 분야도 다르고, 필자가 강조하는 수학 & 통계학을 교육과정에서 무겁게 다루지도 않는다. 학부-대학원 간 “언어”(Read 수학)적인 장벽이 없다는 뜻이다. 그렇다보니 학부생이 대학원 주제에 도전하는 일을 꽤나 볼 수 있단다. (경제학부 4학년이 대학원 수준의 모델링 스킬을 갖춘 경우가 과연 얼마나 될까?)

진로 상담을 원한다는 메일을 쓰시는 분들 중에 많은 분들이 그냥 나와있는 모듈을 쓰면 되는데 왜 수학과 통계학 훈련을 받아야되고, 석사, 박사 학위가 필요한 것처럼 주장하느냐고 묻는다. 왜냐고? 필자는 그냥 갖다 쓰는 사람이 아니니까. 그걸 갖다 쓰는 수준의 단순한 이미지 인식이나 언어처리에 별로 관심이 없으니까. 그건 Data Science (DS)가 아니니까. 그걸로는 새로운 문제들을 해결할 수 없으니까. 모듈의 API도 바꿀 수 없을테니까. 여긴 EE의 영역이 아니니까.

Reinforcement learning 모델을 이용해야하는 문제, 그 때 Bellman equation을 어떻게 이용해서, State variable들을 어떻게 조합해서 풀어야할지 꽤나 무게있게 느껴지는 프로젝트를 제안한 회사가 있었다. 이런 엄청난 도전을 EE 학부 출신에게 혼자 힘으로 모델을 만들고 풀어내라고 시켰다고 하더라. 위의 EE 교수님 덕분에 왜 개발자가 이걸 할 수 있을 것이라고 생각하는 사람들이 우리나라 IT 업계에 잔뜩 있는지, 왜 개발자 그룹이 필자의 데이터 사이언스 수업을 따라오지 못하는지, 왜 그들이 석, 박 학위에 큰 존경을 안 하는지, 왜 그들 중 일부는 심지어 마이스터 고교 출신인지, 왜 기업들이 그런 개발자들에게 머신러닝 “코딩” 교육을 시키면 된다고 생각하는지, 참 많은 것들을 이해하게 되었다.

저 위의 Data Scientist 면접 문제를 풀 수 있는 EE가 있을까?

요즘 자주 듣는 표현 중에 필자의 귀를 매우 거스르는 표현들이 몇 가지 있다

  • 빅데이터를 배운다
  • 딥러닝을 배운다

빅데이터는 용량만 큰 데이터가 아니라 유저들의 행동을 초 단위로 추적한 데이터라고 이미 여러번 포스팅을 했다. 딥러닝도 머신러닝의 Neural net 모델 중 layer의 숫자가 좀 많은 모델들을 부르는 이름이라는 것도 같은 맥락에서 여러번 언급을 했었다. 말을 바꾸면 빅데이터와 딥러닝은 특정한 데이터나 모델인데 이걸 마치 “기술”인 것처럼, 특히 각각이 개별적인 기술인 것처럼 이해하고 있기 때문에 쓰는 표현이다. 정확한 표현이 되려면

  • (데이터 사이언스 수업에서) 빅데이터를 활용하는 방법을 배운다
  • (데이터 사이언스 수업에서) 딥러닝을 활용하는 방법을 배운다

가 맞을 것이다. 이런 표현의 차이는 “시장의 오해 vs. 필자의 철학”라는 프레임과도 맞닿아 있다. 필자가 제시하는 표현은, 빅데이터라는 것이 기존의 데이터와 다른 형태이기 때문에 기존에 쓰던 통계학과 다른 통계학 테크닉들 or 다른 철학의 통계학이 필요하다는 맥락이 들어간 표현이고, 딥러닝이라고 불리는 신경망 모델 응용법도 마찬가지 맥락에서 데이터 사이언스 모델 중 하나라는 측면에서 접근하는 철학을 담고 있다. (이래서 수업 이름이 “빅데이터 강의”, “머신러닝 강의”, “딥러닝 강의”가 아니라 “데이터 사이언스” 강의인 것이다.)

 

빅데이터를 배웠다? or 빅데이터를 활용하는 법을 배웠다?

좀 더 속 마음을 털어놓으면, “빅데이터를 배웠다”면서 기존의 통계학은 아무 쓸모짝에도 없는 테크닉인 것처럼 표현하는 사람들, “딥러닝”을 배웠다면서 “딥러닝 >> 4차원의 벽 >> 머신러닝 >> 3.5차원의 벽? >> 통계학” 이라고 생각하는 사람들에 대한 불편함이 깔려있기 때문에 글 머리의 단순한 표현들이 거북한 것 같다.

심지어 며칠전엔 명문대 통계학과 4학년이라는 분이 보낸 메일에도 “빅데이터를 배웠더니 그게 데이터 마이닝이더라”는 표현이 들어있었는데, “빅데이터”라는 명사를 “빅데이터를 활용하는 법”이라는 동사형 명사로 활용하고 있는 모습에서 유저의 행동 데이터라는 개념 이해대신 데이터 마이닝 수업에서 들을만한 테크닉을 빅데이터라고 인식한다는 느낌을 받았다. 그런 모델들은 “빅”이 아니라 “스몰”데이터에서도 쓸 수 있을텐데? (써봐야 아무 도움도 안 되겠지만ㅋ) 왜 “데이터 마이닝 = 빅데이터”라고 이해하는걸까? 당장 Non-linear 패턴이 없는 랜덤 데이터라면 데이터 마이닝 테크닉들이 아무런 도움도 안 된다는 사실을 모른채, 무작정 회귀분석은 구식이고 “빅데이터”는 진보한 모델이라는 식의 단순한 이해를 이름있는 학교의 통계학과 졸업반이 갖고 있다니…

비슷한 사건을 어느 “딥러닝 개발자”라는 분한테서도 겪었는데, “언제 딥러닝을 써야하는지 아는 것도 중요하다”면서 정작 “언제”에 대해서 애매모호한 결론 밖에 없는 경우도 있었다. 이게 Logistic regression + Ensemble = Neural net 이라는 개념 이해, Activation function이 사실은 Kernel이라는 이해가 결합된 필자의 입장에서 보면 “언제”라는 표현에 대한 답은 굉장이 명확하다. 데이터가 랜덤이 아니고, 강한 패턴이 반복되고 있고, 그 패턴을 찾아내는게 드는 계산 비용이 중요하지 않을 때에 국한된다. 이미지 인식, 자연어 처리가 대표적인 영역이고, 그 이외에 모든 High noise 데이터를 다룰 때 Neural net 기반한 모델들은 큰 장점이 없다.

이런 사건들이 모두 통계학을 수박 겉핡기 식으로만 배운채로 응용 통계학의 한 분야인 데이터 마이닝 (or 머신러닝)을 접했기 때문일 것이다.

필자는 그나마 통계학이 전공이었던 사람이 아니라, 통계학을 밥벌이로 삼고 있는 사람들이 얼마나 불쾌할지 제대로 가늠하질 못했는데, 얼마전에 필자의 “빡침”과는 비교도 안 되는 진정한 “빡침”을 담은 댓글을 하나 봤다. (링크의 첫번째 댓글 참조)

 

진퉁 통계학자의 눈에 비친 머신러닝

(Source: AmSantac.co)

Ensemble 모델은 서로 다른 (Heterogeneous) 모델들을 결합하면 결과적으로 더 나은 정확도를 얻을 수 있다는 아이디어에서 출발한다. 그런데, 모델의 결과값이 서로 다르다는 이야기는 Error에 해당하는 분산 값도 매우 크게 다르다는 것을 의미한다. 위의 코멘트는 통계학의 모든 테크닉들이 분산을 최소화하는데 초점을 맞추고 있는데, Ensemble 모델의 이면에는 서로 다른 모델들을 결합하다가 Error가 더더욱 괴상망측한 형태로 바뀌는 것을 방치하고 있지 않냐는 질문이다. 모델의 분산(or 모델의 퀄리티)은 결국 Error의 분포에 달려있는데, 그 분포가 엉망진창이라면 과연 그 모델을 쓸 수 있을까? 전통적인 통계학에서는 그런 모델을 쓰질 않는다. “틀렸”으니까.

Analytic solution을 찾는 전공들 (수학, 경제학 등)은 여러가지 시뮬레이션으로 결과값을 “예측”하는 것만으로도 이미 신성모독이라고 생각한다. 저널에 논문이 실리지도 않는다. (필자가 전공을 바꾼 이유 중 하나다.) 그런데 시뮬레이션도 받아들일만큼 열려있는 통계학자 입장에서도 데이터 마이닝에서 다루는 대부분의 테크닉들에 대해서 심한 거부감을 느끼는 것 같다. “bastardization”, “notable oversimplication”, “ill-conceived ideas” 같은 표현을 학자가 다른 사람의 연구에 쓴다는 것은 대단히 크게 잘못되었다는 판단이 깔려있다는 뜻이다. 왜냐고? 공대라서 “다른” 방법을 쓰는게 아니라, 아예 “틀렸”다고 생각한다니깐ㅋ

꼴에 수학적으로 좀 훈련받았다고 필자도 공감하는 부분이 많은데, 필드에 있는 사람도 아니고 학계에 있는 학자들마저도 “그냥 정확도 올라가면 좋은거 아냐?”라고 타협하는 말들을 가끔하는 걸 보면서 마음 속 어딘가에 무거운 감정이 항상 깔려 있었다. 저 분들이 수학 모르고 막 가져다 쓰는 공학 박사들도 아닌데…

학생들을 어떻게 가르치길래, 얼마나 확률론 기초 없이, 얼마나 “기술”적으로만 가르치길래, 이름있는 학교 통계학과 졸업반이 “데이터 마이닝을 배우고 나니 회귀분석을 왜 배웠는지 모르겠다”, “회귀분석은 그냥 기초적인 지식에 불과한거 같다”는 식으로 폄하하는 말을 하게될까… 수업하신 교수 분이 정말 그렇게 가르치셨다면, 공대 아니라 통계학과 교수님이라면, 진지하게 반성해주셨으면 좋겠다. 당신이 가르친 학생들이 다음 세대 한국의 “인공지능”, “IoT”, “빅데이터”같은 키워드로 대표되는 4차산업을 이끌어갈 핵심 인재들이다.

 

딥러닝은 언제 써야하나?

(Source: Online Stat Book)

몇 달전에 데이터 숫자가 적으면 딥러닝을 쓸 수 없다는 어느 블로거의 글에 반박하는 공대 출신임이 분명한 짝퉁 데이터 사이언티스트의 반박을 봤다. 데이터가 적어도 딥러닝의 결과물이 얼마든지 좋아질 수 있지 않냐고 Python 코드까지 붙여놨던데, 저 위에서 말한 어느 “딥러닝 개발자”와 별반 다르지 않은 수학 & 통계학 실력을 가진 사람이지 않을까 싶다.

데이터의 숫자가 적고 많고는 둘째 문제고, 데이터 안에 비선형의 강한 패턴이 반복될 때만 신경망 모델이 유의미하다는 것을 이해하고 나면 절대로 저런 블로그 글을 쓸 수도 없고, 또 “언제 딥러닝을 써야하느냐”면서 애매모호한 글을 쓰지도 않을 것이다. 제대로 통계학과 확률론을 이해했다면, 필자가 수업 시간에 반복적으로 이야기하듯이, 우선 데이터가 랜덤인지 아닌지 눈으로 확인하기 위해서 Q-Q plot 하나라도 그려놓고 “데이터 작업”을 시작할 것이다.

링크의 글을 보면, 회사에서 “딥러닝으로 풀 수 있지 않냐?”라고 묻는 사람들은 정말 아예 아무 것도 모르는 사람이고, 그 글을 쓴 사람은 최소한 뭔가 굳이 복잡한 모델링이 필요없다는 것 정도는 감을 잡으신 분이라고 보인다. 물론 통계학을 제대로 공부 안 했기 때문에 정확히 뭐가 어떻게 필요없는지는 잘 모른다. 엔지니어의 한계다. 수학적인 모델들이 어떻게 구성되었는지를 이해하기도 전에 코드 돌려서 결과값 보기 바빴던 전공 출신이니까. 괜히 Keyword in Data Science is NOT data BUT science라는 표현이 돌아다니는게 아니다.

“틀렸”다는 통계학자의 주장은 다 이유가 있다.

 

나가며

필자가 계속 수학 & 통계학 베이스 강조하는 글을 쓰다보니, 여기저기서 유사한 철학을 가지신 분들의 응원(?) 메일을 받는다. 그 분들의 분노를 담은 표현 중 강도가 좀 센(?) 문장을 몇 개 소개해보고 싶다.

“어따쓰냐는거만큼 무식한 소리가 없다. 니가 그 가치를 못 알아볼만큼 어리석은 눈을 가졌다는 뜻이니까.”

“수학적인 사고를 두려워하는 인간의 삶의 질은 중세시대 인간이랑 다를바가 없다.”

왜 이런 식의 무서운(?) 표현들을 소개하냐고? 몇 달전에 딥러닝이라는거 써 봤더니 별로 뾰족히 “인공지능”스러운거 없더라면서 필자더러 모델을 뜯어고쳐달라는 식의 뚱딴지 같은 메일을 보내는 싸가지“초짜”들이 좀 있었다. 내 밥벌이로도 바빠 죽겠는데 왜 내가 니 밥벌이를 위해서 시간을 써야하냐고 더 싸가지 없는 불편한 글을 쓰려다가, 아예 답을 하질 않았었다. 모델에 대한 기본적인 이해는 없고, 그냥 코드만 copy & paste해서 돌려봤는데 자기 입맛대로 결론이 안 나오고, 그렇다고 이걸 직접 수정해볼려는 의도는 전혀 없는, 말 그대로 “양아치”스러운 개발자라는 느낌을 받았었기 때문이다.

그 분들은 “어리석은 눈”을 가지고 사는 “중세시대 인간”인 것 같아서, 그냥 눈도 다르고 시대도 다른 분께 괜히 불편 가득한 싸가지 없는 답을 쓰길 싫었다고 변명하겠다.

필자도 학부 시절에 한심한 메일을 썼다가 교수님들께 무시당하거나 모욕(?)에 가까운 폭언을 들은 적도 몇 번 있는데, 그 시절로 돌아가면 타이핑하는 필자의 손가락을 부러뜨려서라도 말리고 싶다. 이젠 그런 메일을 받는 사람들의 기분을 알아버렸으니까. 멍청한 질문에 “미시 누구한테 들었냐?”, “학점이 뭐였냐?”고 되물으시던 전XX 교수님, 이젠 이해합니다ㅋㅋ 그리고 죄송합니다ㅠㅠ