suyeongpark

지성을 추구하는 사람/ suyeongpark@abyne.com

21세기 자본/ 공공부채의 문제

  • 정부가 재정을 마련하는 주된 방식은 세금과 부채다.
    • 일반적으로 공정성과 효율성 측면에서 부채보다 과세가 훨씬 더 바람직하다.
    • 부채는 상환을 해야 하기 때문에, 채권을 통한 조달은 정부에 빌려줄 자산이 있는 사람들에게만 이익이 된다는 문제가 있다.
    • 공익적 관점에서는 부자들에게 자금을 빌리는 것보다 부자들에게 과세를 하는 것이 더 바람직하다.
  • 부유한 국가들은 아직 1년치 국민소득에 해당하는 공공부채를 떠안고 있는데, 이것은 1945년 이래 전례가 없는 일이다.
    • 신흥국들은 빈곤하지만 공공보채는 훨씬 더 적다 (평균적으로 GDP의 30%)
  • 이는 공공부채가 부의 분배, 특히 공공부분과 민간부문 사이의 문제이지 절대적인 부의 문제는 아님을 보여준다.
    • 부유한 국가는 부유하지만 그 국가의 정부는 가난하다. 유럽이 가장 극단적인 사례다.

공공부채의 감축: 자본세, 인플레이션, 긴축

  • 대규모 공공부채를 감소시키는데는 3가지 방법이 있는데, 자본에 대한 세금, 인플레이션, 긴축재정이 그것이다.
    • 민간자본에 파격적인 세금을 부과하는 것이 가장 공정하고 효율적이지만 그것이 실패한다면 인플레이션이 유용한 방법이다.
    • 역사적으로 인플레이션은 대규모 공공부채를 처리하는 주된 방법이었다.
    • 공정성과 효율성 측면에서 최악의 해결책은 지속적인 긴축재정이다.
  • (유럽의 재정 상황 설명 생략)
  • 이런 상황에서 어떻게 공공부채를 감소시킬 것인가? 한 가지 방법은 공공자산을 민영화하는 것이다.
    • (설명 생략)
    • 그러나 내 생각에 이러한 해결 방안은 고려할 필요도 없이 제외되어야 한다.
  • 공공부채를 줄이는 더 만족스러운 방법은 민간자본에 파격적인 세금을 부과하는 것이다.
    • 민간자본에 일률적으로 15%를 과세하면 1년치 국민소득과 맞먹는 수입을 올릴 수 있고 이로 인해 모든 공공부채를 즉시 상환할 수 있다.
    • 이런 해결책은 두 가지 차이를 제외하면 공공부채 갚기를 거부하는 것과 동일하다.
    • (채무 불이행 설명 생략)
  • 좀 더 현실적인 사례가 누진적 자본세이다.
    • 이 세금은 유로존 내 GDP의 2%에 해당하는 세수를 확보할 수 있다.
    • (이하 설명 생략)

인플레이션은 부를 재분배하는가?

  • 자본에 세금을 부과하는 것 외에 인플레이션이 또 다른 선택지가 될 수 있다.
    • 인플레이션이 소폭 상승하는 것으로 공공부채의 실질 가치를 상당히 낮출 수 있다.
    • 다른 조건이 동일할 때 인플레이션이 연 2%가 아니라 5%라면 공공부채의 실질 가치는 GDP에 대한 비율로 나타냈을 때 15% 이상 감소할 것이다.
    • 20세기 유럽에서는 인플레이션이 대부분의 거대한 공공부채를 감소시킨 방법이었다.
    • (이하 설명 생략)
  • 지속적인 긴축재정을 통한 해결책의 사례는 19세기 영국이 있다.
    • 영국은 나폴레옹 전쟁을 거친 뒤 엄청난 공공부채를 없애는데, 한 세기 동안의 기초재저웃지 흑자가 필요 했다.
    • 이러한 선택은 국채 소유자들의 이익에 부합했지만 영국인들의 일반적인 공익에 기여하지는 못했다.
    • (이하 설명 생략)
  • 인플레이션은 누진세에 비해 불완전한 대체 수단에 지나지 않으며, 바람직하지 못한 2차적인 효과를 불러올 수 있다.
    • 첫 번째 문제는 인플레이션을 통제하기 어렵다는 것이고, 두 번째 문제는 인플레이션이 고착화되고 예측 가능해지면 대부분의 수많은 바람직한 효과는 사라진다는 것이다. 예컨대 정부에 돈을 빌려주는 사람들은 더 높은 이자율을 요구할 것이다.
  • (이하 설명 생략)

중앙은행은 어떤 일을 하는가?

  • 1차대전 이전 전 세계가 금본위제를 기반으로 하던 시기에 중앙은행은 오늘날보다 훨씬 더 작은 역할을 수행했다.
    • 특히 화폐를 만들어내는 능력은 금과 은의 보유고에 크게 제한되었다.
  • 통화가 귀금속으로 교환되는 것이 중단되면 화폐를 찍어내는 중앙은행의 권력이 잠재적으로 무한해지기 때문에 반드시 엄격하게 규제되어야 한다.
    • 이는 중앙은행의 독립성에 대한 논쟁의 핵심이자 수많은 오해의 원인이다.
  • (이하 설명 생략)

통화 창조와 국민총자본

  • 중앙은행이 부 자체를 창출하지는 않는다는 사실을 인식하는 것이 중요하다. 즉, 중앙은행은 부를 재분배할 뿐이다.
  • (이하 설명 생략)
  • 중앙은행은 강력한 힘을 가지고 있다. 그들은 신속하게, 그리고 이론상으로 그들이 원하는대로 광범위하게 부를 재분배할 수 있다.
    • (이하 설명 생략)
  • 중앙은행의 약점은 분명히 통화정책의 결과로 나타난 금융 포트폴리오의 관리가 어려울 뿐 아니라 누가, 얼마나, 어느 정도의 만기로 대출 받을 것인지 결정할 수 있는 능력이 제한되어 있다는 것이다.
  • (이하 설명 생략)

키프로스의 금융위기: 자본세와 은행 규제가 결합되었을 때

  • 중앙은행의 기본적, 필수적 역할은 금융시스템의 안정성을 보장하는 것이다.
    • 중앙은행은 유일하게 시스템을 구성하는 다양한 은행의 상태를 평가할 준비가 되어 있고, 지불 시스템의 정상적인 작동을 보장하기 위해 필요하다면 이 은행들에 재융자를 해줄 수 있다.
    • 또한 중앙은행은 때로는 은행 규제라는 특정 책임을 맡은 다른 정부 기관들의 도움을 받기도 한다.
  • (이하 설명 생략)
  • 키프로스 사태는 중앙은행과 금융당국의 한계를 흥미롭게 보여준다. 중앙은행과 금융당국은 사태에 재빨리 대응할 수 있다는 강점을 지닌 반면, 그들이 야기할 자산 재분배의 표적을 정확하게 조준하는데는 제한적이라는 약점이 있다.
    • 결론적으로 누진적 자본세는 지속적인 세제로서 유용할 뿐만 아니라 주요한 금융위기가 일어날 때 예외적으로 부과되어 위기 해결 기능을 담당할 수도 있다.

유로화: 21세기를 위한 국경 없는 통화인가?

  • 유로화의 탄생은 통합 유럽을 향한 긴 과정 가운데 한 단계에 지나지 않는다.
  • (이하 설명 생략)
  • 2002년 유로화가 도입되고 2007-2008년 금융위기가 발생하기 전까지 유럽 전역의 이자율은 대체로 동일했다. 그 누구도 특정 국가의 유로존 탈퇴 가능성을 예상하지 않았고 모든 것이 순조로워보였다.
    • 하지만 금융위기가 발생하자 국가별로 금리 차가 급속히 커지기 시작했고, 이는 정부 예산에 심각한 영향을 미쳤다.
    • 이와 같은 불확실성에 직면한 상황에서는 채무 조정의 분담이라든지 필수적인 사회적 국가의 개혁에 관해 차분한 자세로 민주적 토론을 하기 불가능하다.
  • (이하 설명 생략)

유럽 통합의 문제

  • 이런 모순들을 극복할 유일한 방법은 유로존 국가들이 공공부채를 한데 모으는 것이다.
  • (이하 유로존 통합에 대한 내용 생략)

21세기의 정부와 자본축적

  • 이상적인 사회의 바람직한 공공부채 수준은 어느 정도일까? 이에 대한 확실한 정답은 없아. 이는 각 국가가 마주한 상황과 각 사회가 설정한 목표에 따라 민주적인 논의를 거쳐서만 결정할 수 있다.
  • 자본이 너무 많이 축적되어 이론상 자본의 한계생산성과 동일한 자본수익률 r이 성장률 g와 똑같아질 때 자본은 최대 수준에 도달한다.
    • 1961년 에드먼드 펠프스(Edmund Phelps)는 자본수익률과 성장률이 동일한 r=g 등식을 자본축적의 황금률이라고 명명했다.
    • 만약 그의 주장을 그대로 받아들인다면 이 황금률은 역사적으로 관찰된 것보다 훨씬 더 높은 자본/소득 비율을 의미한다. 왜냐하면 자본수익률이 언제나 성장률보다 상당히 높았기 때문이다.
  • 어떤 사회에서도 그렇게 많은 자본을 축적하지는 못할 것이기 때문에 황금률이 제시한 대답은 현실적으로 유용하지 않지만 황금률에 내재된 논리는 흥미를 끈다.
    • 만약 황금률이 충족되어 r=g가 된다면 당연히 장기적으로 국민소득에서 자본이 차지하는 몫은 정확히 저축률과 일치한다.
    • 반대로 r>g 상황이지속되는 한 국민소득에서 자본의 몫은 저축률보다 크다.
    • 다시 말해 황금률이 충족되려면 자본이 더 이상 아무것도 생산해낼 수 없을 정도로 엄청나게 축적되어야 한다는 의미다.
    • 더 정확하게는 자본이 너무 많이 축적되어 오로지 동일한 수준의 자본 총량을 유지하기 위해 해마다 모든 자본수익을 자본에 재투자해야 한다.
  • 황금률은 ‘자본 포화(capital saturation)’ 전력과 관련이 있다.
    • 이는 너무 많은 자본을 축적해 자본소득자들에게 소비할 돈이 전혀 남지 않은 상태다. 그들이 높은 사회적 지위를 계속 유지하기 위해 경제성장률과 동일하게 그들의 자본을 증가시키기를 원한다면 모든 자본을 재투자해야 하기 때문이다.
    • 반대로 r>g라면 자본수익률 중 성장률과 동일한 부분만 자본에 재투자하고 나머지는 소비할 수 있다. r>g는 자본소득자 사회의 기반이 된다.
  • (이하 설명 생략)

법과 정치

  • (설명 생략)
  • 정부 예산에 관한 제한을 헌법이나 법률에 명시하는 것은 여러 이유로 현명한 처사가 아니다.
  • 국부에 영향을 미치는 수많은 다른 요인은 고려하지 않은 채 부채와 적자의 적정 수준을 판단하는 것은 불가능하다.
  • (이하 설명 생략)

기후변화와 공공자본

  • 2006년 발표된 스턴 보고서는 금세기가 끝날 무렵이면 환경오염 때문에 발생하는 잠재적 손실액이 최악의 경우 연간 전 세계 GDP의 수십 %에 이를 것이라는 시나리오를 제시했다.
  • (이하 설명 생략)

경제적 투명성과 자본의 민주적 통제

  • 좀더 일반적으로 나는 새로운 형태의 소유권의 발전과 자본에 대한 민주적 통제가 향후 가장 중요한 문제 가운데 하나라는 주장이 중요하다고 생각한다.
  • 핵심은 다양한 형태의 민주적 자본통제는 각각의 관련 당사자에 대한 경제 정보를 이용할 수 있는 가능성에 크게 좌우된다는 것이다.
  • (이하 투명성이 중요하다는 내용 생략)

21세기 자본/ 글로벌 자본세

  • 민주주의가 현 세기의 세계화된 금융자본주의를 통제하려면 새로운 수단을 개발해야 한다. 여기서 이상적인 수단은 매우 높은 수준의 국제적 금융 투명성과 결부된 누진적인 글로벌 자본세가 될 것이다.
    • 이와 같은 세금은 끝없는 불평등의 악순환을 피하고 세계적인 자본 집중의 우려스러운 동학을 통제하는 방법이 될 수 있다.

글로벌 자본세: 유용한 유토피아

  • 글로벌 자본세는 유토피아적인 이상이고 가까운 시일 내에 그와 같은 세금에 합의하는 나라들이 있을거라고 생각하기는 어렵다.
    • 이 목적을 이루려면 세계의 모든 자산에 적용할 수 있는 세율표를 만들고 세수를 어떻게 배분할지를 결정해야 한다.
  • 확실히 글로벌 자본세는 매우 높은 수준의 비현실적인 수준의 국제 협력을 필요로 한다. 그러나 이 방향으로 나아가려는 나라들은 지역적인 차원에서 점진적으로 이를 실현할 수 있다.
    • 보호주의와 자본통제는 글로벌 자본세의 만족스러운 대안이 아니다.
  • 글로벌 자본세의 이상적인 해법은 대륙이나 지역수 준에서 그 다음에는 지역 간의 긴밀한 협력을 통해 충분히 실현 가능하다.
  • 금융 투명성과 정보 공유 문제는 이상적인 자본세와 밀접하게 관련되어 있다.
    • 내 생각에는 개인 자산에 매년 부과하는 누진세가 목표가 되어야 한다.
    • 그래서 지구상에서 가장 부유한 사람들에 대한 세금은 개인의 순자산을 바탕으로 해야 할 것이다.
  • (이하 설명 생략)

민주적 투명성과 금융의 투명성

  • 글로벌 자본세는 결코 기존의 모든 세금을 대체하는 것이 아니다. 현대의 사회적 국가가 의존하는 다른 세원을 적당히 보충해주는 정도 이상은  아닐 것이다. 그 세수는 고작해야 국민소득의 3-4%이다.
  • 자본세의 주된 목적은 사회적 국가의 재원을 조달하는게 아니라 자본주의를 규제하는 것이다.
    • 첫 번째 목적은 부의 불평등이 끝없이 증가하는 것을 막는 것이고,
    • 두 번째 목적은 금융 및 은행 제도의 위기를 피하기 위해 금융과 은행 시스템에 효과적인 규제를 가하는 것이다.
  • 이 두 가지 목적을 달성하기 위해 자본세는 민주적 투명성과 금융 투명성을 확보해야 한다.
  • (이하 설명 생략)

간단한 해법: 은행 정보의 자동 전송

  • 글로벌 자본세 과세를 위한 첫 걸음은 사전에 계산되어 개별 납세자에게 통지되는 자산 내역서에 해외 은행에 유치된 자산에 관한 정보를 포함하기 위해 이러한 방식의 은행 데이터의 자동 전송을 국제적 차원으로까지 확대하는 것이다. 이를 위한 기술적 장애는 없다.
  • (이하 설명 생략)

자본세의 목적은 무엇인가?

  • 누진적 소득세와 상속세가 존재하는데, 누진적 자본세의 목적은 무엇인가?
    • 사실 이 세 가지 누진제는 서로 다르면서 상호 보완적인 역할을 한다. 각각은 이상적인 조세 체계에서 필수적인 주축이다.
  • 자본세를 정당화하는 논리는 담세 능력과 유인 두 가치 측면으로 구분할 수 있다.
  • (이하 설명 생략)
  • 최상위 부유층의 자산이 매우 높은 수익을 낸다는 관점에서 담세 능력에 따라 과세를 하자는 주장은 누진적 자본세를 정당화하는 가장 중요한 논리다.
  • 기본적인 아이디어는 자본세가 한 사람의 자본총량으로 최고의 수익을 추구하게 하는 유인이 된다는 것이다.
    • 자산을 기껏해야 2-3% 수익율에 내는 투자 수단에 맡겨두는 사람에게는 자본세가 무겁기 때문에 자신의 재산을 비효율적으로 활용하는 사람들이 세금을 내기 위해 자산을 팔도록 하고 그리하여 그 자산이 확실히 더 역동적인 투자자들의 손에 가도록 하는 것이다.
    • (이거는 말이 안되는 듯)
  • (이하 설명 생략)

유럽 부유세를 위한 청사진

  • 나는 영구적인 연간 자본세를 말하는 것이므로 세율은 상당히 낮아야 한다.
  • 오늘날 유럽에서 민간의 부가 매우 높은 수준임을 감안하면 연간 누진세로도 상당한 세수를 창출할 수 있다.
    • 예컨대 100만 유로 이하에는 0%, 100-500만 유로에는 1%, 500만 유로 이상에는 2%의 부유세를 매긴다면, 인구의 2.5%에 영향을 미칠 것이고 유럽 GDP의 2%에 맞먹는 세수를 가져올 것이다.
    • 이는 민간의 부가 GDP의 5배에 달하고 있기 때문이다.
  • (이하 설명 생략)

역사적 관점에서 본 자본세

  • 모든 문명에서 자본소유자들이 노동을 하지 않고도 연 4-5%의 수익을 거둔 사실은 다양한 정치적 대응과 격렬하고 분개에 찬 반응을 일으켜왔다.
    • 정치적 대응 중 가장 일반적인 형태는 고리대금업을 금지하는 것이었는데, 이는 기독교, 이슬람교를 포함한 대부분의 종교 전통에서 다양한 형태로 발견된다.
    • 그러나 이자놀이를 금지하려는 시도는 흔히 비논리적이었다.
    • 마르크스와 19세기 많은 사회주의자가 제시하고 20세기 소련과 다른 곳에서 실행된 자본 문제에 대한 해결책은 훨씬 급진적이며 논리적으로는 더 일관성 있었다.
  • (이하 설명 생략)
  • 누진세 혁명은 20세기와 두 차례 세계대전 사이의 기간을 기다려야 했다.
    • 혁명은 혼돈의 와중에 일어났으며, 주로 소득 및 상속에 대한 누진세의 형태로 나타났다.
  • (이하 설명 생략)

규제의 다른 형태: 보호무역주의와 자본통제

  • 세습자본주의를 규제하는 다른 방법들이 있으며, 이들 중 일부는 이미 세계적으로 다양한 지역에서 시도되고 있지만, 그럼에도 불구하고 이런 규제 형태들은 자본세보다 만족스럽지 않으며, 때때로 문제를 해결하기보다 더 많은 문제를 낳기도 한다.
  • 가장 단순한 방법은 보호무역주의와 자본통제에 의한 것이다.
    • (이하 각 방법의 문제점 생략)

중국의 자본 규제 미스터리

  • 중국은 자국으로 유입되는 자본과 국외로 나가는 자본을 엄격히 통제해왔다.
  • (이하 설명 생략)
  • 나는 중국의 자본 규제 체계를 옹호할 생각은 없지만 그럼에도 불구하고 자본통제는 부의 불평등의 동학을 규제하고 제한할 수 있는 하나의 방법이다.
    • 게다가 중국의 소득세는 충분히 누진적이라고 할 수는 없지만, 러시아보다는 더 누진적이다.
    • 이 세수는 다른 신흥국들에서보다 훨씬 더 큰 규모로 교육, 의료, 사회기반시설에 투자되는데, 이런 면에서 중국은 이들보다 훨씬 앞서나가고 있다.
  • (이하 설명 생략)

석유 지대의 재분배

  • 만약 지구촌이 하나의 민주적 글로벌 공동체라면 이상적인 자본세는 석유 지대를 공평한 방식으로 재분배할 것이다.
    • 그러나 현실은 아니기 때문에 천연자원의 재분배는 평화롭지 못한 방식으로 결정된다.
  • (이하 설명 생략)
  • 석유 지대의 더 공정한 분배를 위한 다른 방법들을 찾아내야 한다. 석유가 없는 나라들에게 발전할 기회를 주기 위해 각종 제재와 조세, 대외원조와 같은 방법들을 쓸 수 있을 것이다.

이민을 통한 재분배

  • 미인은 평화로운 방식으로 글로벌 부의 불평등에 대한 규제와 재분배를 할 수 있는 수단으로 보인다.
    • 미국이 독립전쟁 당시 300만명이었던 인구가 오늘날 3억 명 이상으로 성장한 것은 지속적인 이민 행렬 덕분이었다.
    • 이민을 통한 재분배의 메커니즘, 즉 가난한 국가에서 태어난 이들이 부유한 국가로 이주함으로써 자신의 운명을 개척할 수 있도록 하는 것은 미국뿐만 아니라 유럽에서도 중요한 요소가 되고 있다.
  • 그러나 이민을 통한 재분배는 바람직하기는 하지만, 불평등 문제를 부분적으로만 해결한다는 점을 강조할 필요가 있다.
  • (이하 설명 생략)
  • 거듭 강조하지만 금융 투명성과 누진적인 글로벌 자본세가 올바른 해답이다.
    • (자본통제, 보호무역주의, 석유 지대 분배, 이민 같은 방법보다 자본세가 낫다는 이야기)

21세기 자본/ 누진적 소득세를 다시 생각한다

현대적 재분배: 누진세의 문제

  • 과세는 기술적인 문제가 아니라 상당히 정치적이며 철학적인 문제이고, 모든 정치 문제 가운데 가장 중요하다.
  • 보통 세금은 소득세, 자본세, 소비세로 구분된다. 각각의 세금은 거의 모든 시기에 다양한 비율로 나타난다.
  • 20세기에 네 번째 범주의 세금이 등장했는데 그것은 정부가 후원하는 사회보장제도에 대한 기여금이었다. 이는 특별한 유형의 소득세인데, 보통 노동소득에만 과세된다.
  • ‘비례세’는 세율이 모두에게 똑같이 적용되는 세금이고 ‘누진세’는 소득이나 소유한 자산 또는 소비가 더 많은 사람에게 더 높은 세율이 적용되는 세금이다.
    • ‘역진세’는 더 부유한 사람에게 적용되는 세율이 낮은 경우인데, 세금부담을 최적화하거나 회피하거나 법률이 역진적인 세율을 부과했기 때문에 발생한다.
    • 1990년 마거릿 대처를 실각시킨 ‘인두세(poll tax)’가 역진적인 세율을 부과한 대표적인 경우이다.

누진세: 제한적이지만 중요한 역할

  • 누진세가 현대적 재분배에서 제한된 역할만 한다는 결론은 잘못된 것이다.
  • 첫 번째 이유는 전반적인 과세가 대다수 인구의 소득과 상당 수준 비례한다고 해도, 가장 높은 소득과 가장 많은 재산에 더 높은 세율로 과세하는 것은 불평등 구조에 큰 영향을 줄 수 있기 때문이다.
    • 특히 매우 높은 소득과 상속재산에 대한 누진세는 1914-1945년 충격 이후 부의 집중이 벨 에포크 시대만큼 돌아가지 않았는가를 부분적으로 설명해준다.
    • 반면 2차대전 이후 누진세의 선도국가들이었던 영국과 미국에서 나타난 매우 높은 노동소득의 증가는 아마도 소득세의 누진성이 극적으로 감소한 것으로 상당 부분 설명이 가능할 것이다.
  • (세율 관련 내용 생략)
  • 사회적 계층 구조의 상류층에 대한 과세가 미래에 더욱 역진적으로 바뀌면 그것이 부의 불평등의 역학에 미치는 영향은 더 커질 것이고 그 결과 매우 심한 자본의 집중이 나타날 것이다.
  • (이하 설명 생략)
  • 이 모든 이유로 인해 누진세는 사회적 국가의 핵심적인 요소다. 누진세는 20세기 불평등 구조의 발전과 변화에서 중요한 역할을 했으며, 미래의 사회적 국가의 지속가능성을 확보하기 위해서도 중요하다.

20세기의 누진세: 단명한 혼돈의 산물

  • 누진세는 민주주의뿐만 아니라 두 차례에 걸친 세계대전의 산물임을 깨닫는 것이 중요하다.
    • 1900-1910년 사이 모든 선진국이 누진세를 도입한 것은 아니지만 누진성의 원칙과 총소득에 대한 누진세 적용에 관한 국제적인 합의가 등장하고 있었다.
  • (전쟁으로 인한 비용 증가 때문에 누진세가 빠르게 도입 될 수 있었다는 내용 생략)

제3공화정의 누진세

  • 누진세와 함께 20세기 초 두 번째로 중요한 조세제도 혁신이었던 누진적 상속세도 낮은 세율부터 시작했다.
    • 상속세의 세율은 1914까지 꽤 낮았다.
  • (이하 상속세 도입과 관련한 프랑스 내용 생략)

  • 다른 국가들에서도 상속세는 1차대전 이후 근본적인 변화를 겪었다.
  • (이하 설명 생략)

과다소득에 대한 몰수적 과세: 미국의 발명

  • 두 차례의 세계대전 사이에 모든 선진국은 매우 높은 최고세율의 적용을 실험하기 시작했다. 그러나 1919년부터 1922년 사이 70% 이상의 세율을 시도한 최초의 국가는 바로 미국이었다.
    • 1919-1922년에 먼저 소득에 적용했고, 이후 1937-1939년에 상속재산에 적용했는데, 정부가 이처럼 소득이나 상속에 대해 70-80% 세율을 부과한 주된 목표는 세수 확보가 아니라 지나치게 많은 소득과 대규모의 상속을 억제하려는데 있었다.
    • 이런 높은 소득 구간에서 얻을 수 있는 세수가 많지 않았기 때문이다.
  • (이하 누진세에 대한 당시 논의 생략)
  • 웨지우드는 “경제민주화 없는 정치적 민주주의는 본질적으로 불안정하다”고 확신했다. 그의 관점에서는 매우 누진적인 상속세가 그가 필수적이라고 생각했던 경제민주화를 달성하기 위한 주요한 도구였다.

최고위 경영진 급여의 폭발적 증가: 조세의 역할

  • 1930-1970년대까지 열정적으로 평등을 추가했던 영국과 미국은 최근 10년간 정반대 방향으로 진로를 바꾸었다.
    • 그 결과 과거 30년 동안 프랑스와 독일보다 훨씬 더 높았던 영국과 미국의 소득세 최고 한계세율은 프랑스와 독일 수준보다 훨씬 낮게 떨어졌다.
  • 1980년대부터 현재까지 나타난 소득세 최고한계세율의 감소 규모가 같은 기간에 국민소득에서 상위 1%의 소득이 차지하는 비율이 증가한 규모와 긴밀한 관련이 있다는 사실을 발견할 수 있다.
    • 구쳊거으로 보면 이 두가지 현상은 서로 완벽하게 관련되어 있다. 즉, 최고세율이 가장 크게 인하된 국가는 국민소득에서 최고소득자가 차지하는 비율, 특히 대기업 최고위 경영진의 급여가 가장 크게 증가한 국가다.
    • 반면 최고세율이 그리 많이 인하되지 않은 나라에서는 국민소득에서 최고소득자가 차지하는 비율이 훨씬 더 완만하게 증가했다.
  • (이하 설명 생략)
  • ‘협상력(bargaining power)’에 기초한 설명은 1970년대 이후 선진국들에서 최고한계세율의 하락과 생산성 상승률 사이에 통계적으로 유의미한 관련성이 없다는 사실과 일치한다.
    • 구체적으로 말해 1970-1980년 이후 모든 부유한 국가에서 1인당 GDP 성장률은 비슷했다는 사실이 중요하다.
    • 달리 말하면 소득세 최고한계세율의 인하와 최상위 소득의 증가는 생산성을 촉진하지 못했으며, 어쨌든 통계적으로 거시적인 수준에서 유의미할 정도로 생산서을 촉진하지는 못했던 것으로 보인다.
  • (이하 설명 생략)

국가의 정체성과 경제적 성과

  • (설명 생략)
  • 우리의 연구는 급증하는 최고위 경영진의 보수가 협상력 이론으로 잘 설명되며, 한계생산성 상승 가설과는 그다지 관련이 없다는 사실을 보여준다.
    • 우리는 ‘재능’ 보다는 ‘행운’과 관련된 최고위 경영진 보수의 탄력성이 더 높았다는 사실을 다시 한번 확인했다.
    • 이러한 결과는 최고위 경영진의 높은 급여가 좋은 성과에 따른 보상이라는 견해에 심각한 문제를 제기한다.
    • 게다가 우리는 행운과 관련된 탄력성이 최고한계세율이 더 낮은 나라에서 더 높다는 사실을 발견했다.
  • 우리의 연구는 1980년 이전에 미국과 영국에서 적용되었던 고율의 과세와 같은 수단만이 효과적일 수 있음을 시사한다.

다시 생각하는 최고한계세율

  • 조사 결과에 따르면 사실상 최고소득에 매우 높은 세율을 부과하는 것은 매우 높은 급여의 증가를 억제하는 유일한 방법이다.
    • 우리의 추정에 따르면 선진국의 최적최고세율은 아마도 80%를 넘을 것이다.
  • 연 50만 달러 내지 100만 달러 이상의 소득에 80% 세율을 적용한다고 해도 정부의 세수 변화는 그리 크지 않을 것이다. 미국 경제의 생산성을 떨어뜨리지 않으면서 이 최고 수준의 보수를 급격히 줄이는 목적이 달성될 것이고, 따라서 낮은 수준의 급여는 상승할 것이기 때문이다.
    • 미국의 빈약한 사회적 국가를 발전시키고 의료와 교육에 더 많은 투자를 하기 위해 절실히 필요한 재원을 확보하기 위해서는 더 낮은 수준의 소득에 대한 세금도 역시 인상되어야 할 것이다.
  • (이하 설명 생략)

21세기 자본/ 21세기를 위한 사회적 국가

  • 이미 언급한 바와 같이 끝없는 불평등의 악순환을 피하고 자본축적의 동학에 대한 통제권을 되찾기 위한 이상적인 정채은 자본에 대한 글로벌 누진세다.
    • 이러한 세금은 또 다른 장점도 갖고 있는데, 부를 노출시켜 민주적인 감시가 이뤄지도록 하는 것이다.
    • 이 자본세는 경제의 투명성과 경쟁의 힘을 유지시키는 한편 사적 이익에 앞서 공공의 이익을 증진할 것이다.

2008년 금융위기와 국가의 귀환

  • 2008년 금융위기는 1929년 대공황 이후 자본주의의 가장 심각한 위기로 묘사된다.
    • 그러나 금융위기는 대공황만큼 파괴적일 정도의 불황을 야기하지는 않았다.
    • 1929년과 1935년 사이 선진국의 생산량은 1/4이나 감소했고, 실업률도 같은 비율로 증가했으며 2차대전이 발발할 때까지도 세계 경제는 대공황으로부터 완전히 회복되지 못했다.
    • 그래서 지금의 위기는 위험이 덜한 ‘대침체(Great Recession)’라는 이름이 붙여졌다.
    • 하지만 분명한 사실은 2013년 세계 경제를 주도하는 경제 선진국들의 총생산은 2007년 수준을 전혀 회복하지 못했고, 정부 재정 상태는 심각한 수준이며, 가까운 장래의 성장 전망도 밝지 않다는 것이다.
    • 끝없는 국가 채무 위기에 휩싸여 있는 유럽은 특히 더 심각하다.
    • 2008년 세계 경제 위기는 21세기의 세계화된 세습자본주의 최초의 위기다. 그리고 마지막 위기도 아닐 것이다.
  • 많은 전문가들은 경제를 관리하는데 진정한 의미의 ‘국가의 귀환’이 부재함을 한탄하고 있다.
    • 그들은 대공황이 실로 끔찍했지만 적어도 조세정책과 예산정책에 있어서 급진적인 변화를 가져온 공은 인정받을 만하다고 지적한다.
    • 루스벨트 대통령은 취임 후 몇 년 내 후버 대통령 시절 25%에 불과했던 초고소득층에 대한 연방소득세의 최고한계세율을 80% 이상으로 끌어 올렸다.
  • 훌륭한 경제 및 사회 정책은 단순히 최고소득자에게 높은 한계세율을 부과하는 것 이상을 요구한다.
    • 이러한 과세는 본질적으로 거의 득이 되지 않는다. 20세기를 위해 고안된 누진적 소득세보다 자본에 대한 누진세가 21세기의 진정한 도전 과제를 해결하는데 좀 더 적절한 조치일 것이다.
  • (이하 정치적인 내용 설명 생략)

20세기 사회적 국가의 성장

  • 사회와 경제에 관한 정부의 역할 변화를 측정할 수 있는 가장 간단한 방법은 국민소득과 비교하여 세금과 과징금의 총액을 살펴보는 것이다.
    • 다음 도표는 부유한 4개 국가들 –미국, 영국, 프랑스, 스위스– 에서 어떤 일이 일어 났는지를 보여주는데, 놀랄만한 유사점과 중요한 차이점이 나타난다.

  • 첫 번째 유사점은 19세기부터 1차대전까지 이들 4개국 모두 세금 부담이 국민소득의 10% 미만이었다는 사실이다.
    • 이것은 당시 국가가 경제 및 사회생활 전반에 거의 개입하지 않았다는 사실을 말해준다. 국민소득의 7-8% 만으로는 정부가 ‘기본적’ 기능만 수행할 수 있을 뿐이다. 치안 유지, 재산권 집행 및 군대 유지를 위한 비용을 지불하고 나면 정부 금고에는 남는 것이 거의 없었다.
    • 당시에도 국가는 학교, 대학, 병원 및 도로와 사회기반시설을 건설하는데 비용을 댔지만, 대부분의 사람은 매우 기초적인 수준의 교육 및 의료 서비스만 받을 수 있었다.
  • 1920-1980년 사이 부유한 국가들이 국민소득 중 사회적 지출에 투입하기로 한 금액의 비중은 상당히 증가했다.
    • 불과 반세기 만에 국민소득에서 세금이 차지하는 비중은 적어도 3-4배 정도 늘어났다.
    • 또한 국민소득에서 세금이 차지하는 비중은 9180년부터 2010년대인 오늘날까지 모든 국가에서 거의 완벽한 안정성을 유지하고 있다.
    • 사실 국가간 차이는 상당하지만 장기간의 전체적 변화가 유사하다는 점은, 특히 지난 30년간 모든 국가에서 관찰된 거의 완벽한 안정화는 놀랄 만한 일이다.
  • (국가의 역할이 커졌다는 내용 생략)

사회적 국가의 형태

  • 19세기를 거쳐 1914년에 이르기까지 정부는 기본적 기능을 수행하는데만 만족했다. 오늘날 이 기능을 담당하는데 드는 지출은 국민소득의 1/10 미만이다.
    • 지금은 증대된 세수 덕분에 정부가 더 폭넓은 사회적 기능을 수행할 수 있으며 나라에 따라 국민소득의 1/4-1/3 정도가 여기에 쓰이고 있다.
    • 이러한 지출은 대략 두 분야로 동일하게 나누어지는데, 절반은 의료와 교육에 쓰이고 나머지는 대체소득과 이전지출을 위해 쓰인다.
  • 교육과 의료 관련 지출은 오늘날 모든 선진국에서 국민소득의 10-15%를 차지한다.
    • 대체소득과 이전지출은 오늘날 대부분의 선진국에서 10-15%를 차지한다. 정부는 세금과 사회보장 기여금으로 많은 돈을 거두어 이를 다시 대체소득의 형태로 가계에 분배한다.
    • 연금은 대체소득과 이전지출 전체에서 가장 큰 부분을 차지한다.
    • 실업보험급여는 연금 지출에 비해 더 적은 비중을 차지하는데 이는 실업 기간이 은퇴 기간보다 짧기 때문이다.
  • (이하 설명 생략)

현대적 재분배: 기본권의 논리

  • 현대적 재분배는 부자로부터 빈자에게 소득이 이전되는 것이 아니라 의료, 교육, 연금을 비롯해 대체로 모두에게 동등한 혜택이 돌아가는 공공서비스와 대체소득을 위한 재원을 조달하는 방식으로 이뤄진다.
  • 비교적 추상적인 관점에서 보자면 이런 기본권에 근거한 접근 방식은 다양한 국가의 정치 및 철학적 전통에서 그 정당성을 찾아볼 수 있다.
  • (이하 관련 논의 설명 생략)

사회적 국가: 해체가 아닌 현대화

  • 정부가 국민소득의 2/3 또는 3/4을 세금으로 걷겠다고 결정하지 못할 이유는 없다. 세금 자체는 좋은 것도 나쁜거솓 아니고 세금을 어떤 방식으로 걷느냐와 어디에, 무엇을 위해 쓰느냐가 중요하기 때문이다.
  • 그럼에도 사회적 국가의 규모를 급격히 키우는 것이 현실적이지도 바람직하지도 않다고 생각할 수 밖에 없는 이유는 다음과 같다.
  • 첫째, 2차대전 이후 30년간 정부의 역할이 급격히 확대된 것은 적어도 유럽 대륙에서는 당시 예외적으로 빠른 경제성장이 이를 대대적으로 촉진하고 가속화 시켰기 때문에 가능한 일이었다.
    • 국민소득이 연간 5%씩 성장할 때 국민에게 성장으로 인해 늘어난 소득 가운데 많은 부분을 사회적 지출에 사용하는데 동의하도록 설득하는 것이 그렇게 어려운 일이 아니었다.
    • (이하 설명 생략)
  • 세다가 성장의 과실이 다양한 필요들 사이에 어떻게 배분되는지와 상관없이, 공공부문이 일단 일정 규모 이상으로 성장하면 심각한 조직 문제와 씨름해야 한다.
    • (이하 설명 생략)

교육 기관들은 사회적 이동성을 촉진시키고 있는가?

  • 모든 나라에서 교육에 공공지출을 하는 주요한 목적은 ‘사회적 이동성’ 즉 계층 이동을 촉진하는데 있다. 공언된 목표는 사회적 신분에 상관없이 모두에게 균등한 교육 기회를 주는 것이다.
    • 3부에서 20세기를 거치면서 교육의 평균 수준이 상당히 높아졌음에도 불구하고 노동소득의 불평등이 감소하지 않았다는 것을 살펴보았다.
    • (이하 설명 생략)
  • 이런 결과들은 한때 미국 사회학계를 지배했던 ‘미국 예외주의’ 신념과 극명하게 대비된다.
    • 개척자 사회였던 19세기 초반 미국에서의 계층 이동은 좀더 활발했다는데에 의심의 여지가 없다. 더구나 미국에서 상속된 부는 유럽보다 그 역할이 미미했다.
    • 그러나 20세기 전체를 놓고 보면, 이용 가능한 데이터는 미국의 사회적 계층 이동성이 유럽보다 낮았고 오늘날에도 여전히 낮다는 것을 보여준다.
    • 이에 대한 한 가지 설명은 미국 최고 엘리트 대학들이 극히 높은 수업료를 요구하고 있다는 사실이다.
    • (이하 설명 생략)
  • 그러나 이런 고등교육 기회의 불평등이 미국만의 문제라 생각한다면 오산이다. 이는 21세기에 세계 도처의 사회적 국가가 직면한 가장 중요한 문제 중 하나다. 이 문제에 대해 지금까지 정말로 만족할 만한 해답을 내놓은 국가는 없다.
    • (이하 설명 생략)
  • 고등교육의 실질적인 기회균등을 달성할 수 있는 쉬운 방법은 없다. 이는 21세기 사회적 국가에서 핵심 사안이 될 것이며, 이상적인 제도는 아직 고안되지 않았다.
  • (이하 설명 생략)

퇴직연금의 미래: 부과식 연금 제도와 저성장

  • 적립식 연금제도와 대조적으로 부과식 연금 시스템에서 투자되는 것은 아무것도 없고 들어오는 기금은 즉시 현재의 은퇴자에게 지출된다.
    • 부과식 연금 시스템은 세대 간 연대의 원리를 기반으로 하는데, 여기서 연금 수익률은 기본적으로 경제성장률과 같은 개념이다.
    • 미래의 은퇴자들에게 지급할 수 있는 기금은 평균 임금이 상승하는만큼 늘어날 것이다.
  • 20세기 중반 부과식 연금 시스템이 도입되었을 때는 사실 선순환적인 일련의 사건이 일어나기 적합한 상황이었다.
    • 인구증가율은 높았고 생산성 상승률은 더 높았다. 유럽 대륙 국가들의 성장률은 5%에 가까웠고, 이 성장률이 곧 부과식 연금 시스템의 수익률이었다.
  • (이하 연금 관련 문제 설명 생략)

빈곤국과 신흥국에서의 사회적 국가

  • 서유럽 국가들의 국민소득 대비 세수는 약 45-50%에서 안정된 것으로 보이는데 비해 미국과 일본의 경우 30-35% 수준에 고정된 것으로 보인다.
    • 1970-1980년까지 전 세계에서 가장 빈곤한 국가들을 보면 세수가 보통 국민소득의 10-15%에 불과하다는 것을 알 수 있다.
  • (이하 설명 생략)
  • 이러한 변화는 염려스럽다. 오늘날 전 세계 모든 선진국에서 재정 확보와 사회적 국가 건설은 현대화와 경제발전 과정의 핵심적인 부분이었기 때문이다.
    • 역사적 증거를 보면 국민소득의 10-15%에 불과한 세수로는 국가가 전통적으로 수행했던 기본적인 책임 이상을 수행하는 것이 불가능함을 알 수 있다.
  • (이하 설명 생략)
  • 오늘날 빈곤국과 신흥국에서는 매우 다른 여러 경향이 나타나고 있다. 중국과 같은 나라들은 조세 체계의 현대화에서 상당히 앞서 있다.
    • 예컨대 중국은 많은 인구를 대상으로 소득세를 징수해 상당한 세수를 거두고 유럽, 미국, 아시아에서 찾아볼 수 있는 것과 비슷한 사회적 국가를 발전시키는 과정에 있다.
    • 인도와 같은 다른 나라들은 낮은 수준의 세수에 기반을 둔 균형 상태에서 벗어나는데 더 많은 어려움을 겪어 왔다.
  • (이하 설명 생략)

21세기 자본/ 21세기 글로벌 부의 불평등

자본수익률의 불평등

  • 많은 경제 모형이 재산의 많고 적음에 상관없이 자본수익률을 동일한 것으로 가정하지만, 이것은 결코 확실하지 않다. 부유한 사람의 평균 수익률이 그렇지 않은 사람의 평균 수익률보다 높은 것은 가능한 일이다.
    • 부유한 사람은 자산관리자와 금융 자문을 고용할 수 있고, 예비 자금을 갖고 있기 때문에 위험을 감수하고 인내하기가 더 쉽기 때문이다.
  • 이런 메커니즘이 자본의 분배에 자동적으로 근본적인 격차를 만들어낸다는 것을 알 수 있다.
    • 글로벌 부의 계층 구조에서 최상위 십분위 혹은 백분위의 재산이 더 낮은 십분위의 재산보다 구조적으로 더 빠르게 성장한다면, 부의 불평등은 무한히 증가하게 될 것이다.
  • 엄밀한 논리를 적용하면 유일하게 ‘자연적’ 대항력은 역시 성장이다.
    • 세계의 경제성장률이 높으면, 대규모 자산의 상대적 성장률은 그리 높지 않게 유지될 것이다.
  • (이하 설명 생략)

세계적인 부자들의 순위 변화

  • (포브스지의 자산 순위 설명 생략)
  • 포브스에 따르면 지구촌의 억만장자는 1987년 140명을 넘겼지만, 2013년에는 1400명 이상으로 10배 증가했다.

  • 1980년대부터 세계의 부는 평균적으로 소득보다 약간 빠르게 증가했고, 거액의 자산들은 평균치 자산보다 훨씬 더 급속하게 증가했다.

억만장자 순위부터 ‘글로벌 자산보고서’까지

  • (국제 금융기관이 발간하는 ‘글로벌 자산보고서’ 설명 생략)
  • 지구상에서 가장 부유한 사람들에 속하는 0.1%는 평균 1000만 유로의 자산을 소유하는데, 이는 1인당 6만 유로인 세계 평균 자산의 200배이며, 전 세계 부의 20%를 차지한다.
    • 가장 부유한 1%는 평균 300만 유로를 소유하며 이는 세계 평균 자산의 약 50배이고, 전 세계 부의 50%를 차지한다.
  • (이하 자료의 불완전성 설명 생략)

부자 순위에 오른 상속자와 기업가

  • 포브스 순위에서 가장 교훈적인 것 중 하나는 특정 한도를 넘으면 거액의 재산은 그것이 무엇이든 모두 극단적으로 높은 성장률을 보여준다는 것이다.
  • (이하 빌게이츠, 스티브잡스나 포브스에 대한 내용 생략)

부의 도덕적 위계

  • 누구도 사회에서 기업가, 발명, 혁신이 중요하다는 것을 부인하지 않는다. 벨 에포크 시대에도 오늘날과 마찬가지로 자동차, 영화, 전기 같은 혁신이 많이 등장했다.
    • 문제는 단순하다. 부의 불평등이 기업가적인 노력 때문이라는 주장은 부의 모든 불평등을 그것이 얼마나 극단적인지와 상관없이 정당화할 수는 없다는 사실이다.
    • r>g는 초기의 부에 따라 달라지는 자본수익률의 불평등과 결합되어 과도하고 지속적인 자본의 집중을 낳을 수 있다.
    • 처음에 부의 불평등이 어떻게 정당화되었건 재산은 모든 이성적인 한계를 넘어 스스로 성장하고 영속할 수 있다.
  • 기업가는 세대를 거치면서 자신의 일생 동안 자본소득자로 변모해가는 경향이 있다. 특히 인간의 기대수명이 늘어나면서 이런 현상은 더 심해진다.
    • 40세애 좋은 아디이어를 가졌던 사람이라도 90세까지 그럴 수는 없을 것이고, 자녀가 좋은 아이디어를 가질 수도 없다.
    • 그러나 재산은 항상 그대로 남아 있으며, 빌 게이츠와 릴리앙 베탕쿠르처럼 20년 만에 재산이 10배가 넘게 늘어나는 경우도 있다.
  • 이것이 세계적으로 대규모 재산에 대해 매년 부과하는 누진세가 필요한 중요하고 타당한 이유다.
    • 그런 세금은 이와 같이 자산이 잠재적으로 폭발적으로 성장하는 과정을 기업의 역동성과 국제적인 개방경제를 보호하면서 민주적으로 통제하는 유일한 방법이다.
  • 조세적 접근은 부의 도덕적 위계에 대한 헛된 논쟁에서 벗어나는 방법이다. 모든 재산은 부분적으로는 정당하지만, 잠재적으로는 과도하다.
    • 자본에 대한 누진제의 이점은 다양한 상황에 유연하고 일관되며 예측 가능한 방식으로 대처하는 방법인 동시에 대규모 재산을 민주적으로 규제할 수 있는 방법이라는 점이다.
  • (부에 대한 도덕적인 논쟁 내용 생략)
  • 대체로 중요한 사실은 자본의 수익에는 흔히 진정한 기업가적 활동, 순수한 행운, 노골적인 도둑질 등의 요소가 복잡하게 결합되어 있다는 것이다.
    • 재산 축적에서의 임의성은 상속재산에서의 임의성보다 훨씬 더 광범위한 현상이다.
    • 자본의 수익은 원래 변동성이 크고 예측 불가능하며 수십 년간 벌어들인 소득에 달하는 자본이득을 쉽게 만들어낼 수 있다.
    • 부의 최상위 계층에서 이런 현상은 더 극단적이다.

대학 기금의 순수한 수익률

  • (대학 기금과 수익률 내용 생략)

자본과 규모의 경제

  • 하버드 대는 현재 자신의 기금을 운용하는데 매년 거의 1억 달러를 사용하는데 이 금액은 일류 자산운용자들에게 지불된다.
    • 그러나 하버드대 기금이 약 300억 달러임을 생각해 보면 1억 달러의 관리 비용은 0.3%에 불과하고, 이만큼 비용을 지불해서 수익률을 5%에서 10%로 높일 수 있으면 매우 바람직한 거래다.
    • 반면 기금이 10억 달러에 그치는 대학이 관리 비용으로 전체 자산의 10%에 달하는 비용을 지불할 수는 없다.
    • 이렇게 높은 수익률은 미국 최고 일류 대학의 번영을 잘 설명해 준다. 그들의 부흥은 졸업생들이 대학에 준 기부금 때문이 아니다.
    • 졸업생의 연간 기부금은 기금 수익의 10-20%로 기금의 수익에 비해 훨씬 적다.
  • (이하 이런 메커니즘에 의해 커지는 불평등 관련 내용 생략)

인플레이션이 자본수익률의 불평등에 미치는 영향은 무엇인가?

  • 0%가 아닌 2% 혹은 5%에 이르는 인플레이션이 자본수익률에 미치는 영향은 무엇인가?
  • 일부 사람들은 인플레이션이 평균 자본수익률을 감소시켰다는 그릇된 생각을 갖고 있는데, 평균 자산 가격은 소비자물가와 동일한 속도로 상승하는 경향이 있기 때문에 이 생각은 옳지 않다.
    • 만약 소비자물가가 연 2% 상승한다면 평균적으로 자산 가격 역시 2% 상승할 것이다. 따라서 어떤 자본이득이나 자본손실도 발생하지 않을 것이며, 자본수익률은 여전히 5%일 것이다.
    • 반면 인플레이션은 개별 시민 간 자본수익률의 분표를 변화시킬 가능성이 있다.
  • 인플레이션이 계속되는 상황에서 은행에 돈을 맡겨 놓고 마냥 앉아 있다면 부에 대해 세금을 물지 않아도 눈 앞에서 그 돈의 가치가 조금씩 줄어들어 마침내 아무것도 남아 있지 않게 될 것이다.
    • 이렇게 보면 인플레이션은 게으른 부자에 대한 세금, 혹은 더 정확히 말해 투자되지 않은 재산에 부과되는 세금이다.
    • 부동산이나 주식 같은 실질자산에 투자하는 것만으로도 인플레이션이라는 세금은 충분히, 완전하게 회피할 수 있다.
    • (사실 자산은 Risk를 동반하기 때문에, 금융위기 같은 일이 벌어지면 손실이 발생할 수 있다. 이런 경우에는 오히려 자산이 아니라 화폐를 들고 있는게 더 나은 상태가 됨)
  • (이하 인플레이션과 자산 수익률에 대한 설명 생략)
  • 요약하자면 인플레이션의 주요한 영향은 평균 자본수익률을 감소시키는 것이 아니라 자본수익을 재분배하는 것이다.
    • 인플레이션의 효과가 복잡하고 다차원적이기는 해도 수많은 증거를 볼때, 인플레이션이 유발하는 재분배 효과는 주로 가난한 사람들에게는 손해가, 부유한 사람들에게는 이익이 된다.
    • 따라서 인플레이션은 일반적으로 바람직한 방향과 반대되는 결과를 가져온다.
  • 인플레이션은 지대를 없애지 못한다. 아마도 그와 반대로 자본 분배의 불평등을 더 심화시킬 뿐이다.

국부펀드의 수익: 자본과 정치

  • (석유를 가진 나라들의 국부 펀드 내용 생략)

국부펀드는 세계를 소유할 것인가?

  • 2013년 국부펀드의 총투자가치는 5조 3000억 달러를 조금 넘었는데 –이중 석유수출국은 3조 2000억이고, 비산유국 펀드는 2조 1000억을 차지한다–, 이는 포브스에서 억만장자로 지목한 무자들의 재산 총계와 정확히 동일한 금액이라는 사실에 주목할 필요가 있다.
    • 달리 말하면 오늘날 억만장자는 세계 총민간자산 가운데 1.5%를 소유하며, 국부펀드가 또 다른 1.5%를 소유한다.
  • (이하 국부펀드와 억맍장자의 투자처 설명 생략)

중국은 세계를 소유할 것인가?

  • 비석유수출국의 국부펀드는 다른 종류의 문제를 제기한다. 어째서 이렇다 할 특정한 천연자원이 없는 나라가 다른 나라를 소유하려 할까?
    • 한 가지 가능성은 물론 유럽 식민주의 시대와 같은 신식민주의적 야심 및 권력에 대한 순수 의지다.
    • 그러나 차이점은 그 당시 유럽 국가들은 그들의 지배를 확실하게 해주는 기술적 우위를 향휴하고 있었다는 사실이다.
    • 중국과 다른 신흥 비산유국들은 분명 빠르게 성장하고 있지만, 일단 그들의 생산성 및 생활수준 면에서 선두 주자를 따라잡는다면 이런 습속한 성장은 끝난다는 것을 시사하는 증거가 많다.
  • 지식과 생산 기술의 확산은 근본적으로 균등화 과정이다. 다시 말해 덜 발전된 국가가 더 발전된 국가를 따라잡게 되면 그들은 선진국보다 더 급속한 성장을 멈추게 된다.
  • (이하 설명 생략)

국제적 격차 확대와 과두적 격차 확대

  • 어쨌든 중국(또는 석유 수출국들의 국부펀드)이 부유한 국가들을 점진적으로 사들임으로써 발생하는 이 국제적 격차 확대의 위협은 한 국가 내의 과두적 형태의 격차 확대(oligarchic divergence) 보다는 발생 가능성이나 위험성이 적어 보인다.
    • 과두적 형태의 격차 확대는 부유한 국가들이 자국의 억만장자에 의해 소유되는 과정, 혹은 더 일반적으로 말하면 중국과 석유 수출국을 포함한 모든 국가가 점점 더 지구촌 부호들의 소유가 되는 과정을 의미한다.
    • 이러한 과정은 이미 상당히 진행되고 있다.
  • 전 세계에서 중국의 소유가 확대되는 현상과 관련하여 현재 확산되고 있는 두려움은 순전히 환상이라는 점을 강조하는 것이 중요하다.
    • 부유한 국가들은 그들이 생각하는 것보다 사실 훨씬 더 부유하다.
    • 오늘날 유럽의 가계가 소유한 부동산과 금융자산의 총가치는 부채를 빼고 대략 70조 유로에 달하는데, 이에 반해 중국의 다양한 국부펀드에 중국런민은행의 외환보유액을 더한 총 자산은 3조 유로로 유럽 가계 자산의 1/20 미만이다.
    • 부유한 국가들은 가난한 국가들에게 넘어갈 위험에 처해있지 않다. 그와 같은 일이 벌어지기 위해서는 가난한 국가들이 한참 더 부유해져야 하는데, 그러려면 수십 년 이상이 걸릴 것이다.
  • (이하 설명 생략)

부유한 국가들은 정말로 가난한가?

  • 우리는 지금 적어도 부유한 국가들이 세계의 나머지 국가들에 비해 훨씬 더 큰 플러스의 순자산 포지션을 향유하던 식민지 시대에 비하면 국제적 포지션이 비교적 균형을 이룬 시대에 살고 있다.
  • 물론 이런 공식적인 자료에서 약간 마이너스 값을 기록한 순자산 포지션은 원칙적으로 세계 나머지 국가들에게 상응하는 플러스 값으로 균형이 맞춰져야 한다.
    • 그러나 실제로는 그렇지 않은데, 즉 세계 여러 국가의 금융 통계자료를 종합하면 가난한 나라들 역시 순자산 포지션이 마이너스 수준이고, 따라서 세계 전체의 순자산 포지션이 상당한 마이너스 상태다.
    • 다시 말해 지구는 화성을 소유한 것이 틀림 없다.
    • 이것은 상당히 오래된 ‘통계적 모순’이지만, 다양한 국제기구에 따르면 이런 상황은 최근에 더 악화되었다. (전 세계 국제수지의 총합은 보통 마이너스로, 국가들에게 유입되는 돈보다 유출되는 돈이 더 많다)

21세기 자본/ 장기적 관점에서 본 능력과 상속

  • 자본의 중요성은 18세기와 크게 다르지 않고, 그 형태만 달라졌다.
    • 자본은 이전에 주로 토지였으나, 현재는 산업자본, 금융자본, 부동산이다.
    • 우리는 100년 전보다는 덜하지만 부의 집중이 여전하다는 것을 살펴 보았다.
  • 전세계적으로 자본의 규모는 똑같이 유지되었다. 그러나 자본이 과거에는 주로 상속되었으나 이제는 스스로 벌어들인 소득 가운데 일부가 저축되어 평생 동안 누적된다는 의미에서 그 심층적인 구조는 극적으로 변화한 듯 하다.
    • 그러한 변화를 설명해 주는 것 중 하나는 기대수명의 연장인데, 이는 사람들이 퇴직 이후를 대비하여 구조적으로 자본축적을 늘리게 했을 수 있다.
    • 그러나 자본의 속성상 일어났다고 추정되는 거대한 전환은 실제로는 생각만큼 극적이지는 않았다.
  • 나는 다음과 같은 결론을 제시할 것이다. 자본수익률이 현저하게 그리고 지속적으로 경제성장률보다 높은 경우, 거의 필연적으로 상속이 저축을 압도한다.

상속액의 장기적인 추이

  • 모든 사회에는 부를 축적하는 두 가지 주요한 방법이 있는데, 바로 노동과 상속이다. 부의 계층 구조에서 상위 1%와 10%에게 각각의 방법이 얼마나 흔하게 나타날까 하는 것이 핵심적인 질문이다.
  • 장기간에 걸친 연간 상속액의 변화를 살펴보는 것에서 시작하면 도움이 될 것이다. 그것은 국민소득에 대비한 비율로 표시되는 1년 동안의 유산의 총가치를 의미한다.
    • 아래 도표는 해당 연도에 벌어들인 총소득과 비교한 과거 자산의 연간 상속액을 보여준다.

  • 도표 11.1은 1820-2010년까지 프랑스의 연간 상속액의 변화 추이인데, 두 가지 사실이 뚜렷히 드러난다.
    • 첫째, 19세기에는 상속액이 매년 소득의 20-25%에 이르렀고, 19세기 말이 되면서 약간 상승 추세를 보였다.
    • (이하 도표 설명 생략)

조세적 추정과 경제적 추정

  • (자료 수집에 대한 설명 생략)

세가지 힘: 상속의 종말이라는 환상

  • 일반적으로 b_{y} 로 표시되는 국민소득 대비 연간 상속액과 증여액의 비율은 세 가지 힘을 곱한 값과 같다.

b_{y} = \mu \times m \times \beta

  • 여기서 \beta 는 자본/소득 비율, m 은 사망률, \mu 는 사망자의 평균 자산과 살아 있는 개인들의 평균 자산의 비율이다.
  • 세 가지 힘을 살펴보자
    • 첫째는 자본/소득 비율 \beta 이다. 이 힘은 자명한데, 만약 어떤 사회에서 상속되는 부의 금액이 크려면 상속될 수 있는 민간자산의 총량도 당연히 커야 할 것이다.
    • 두 번째 힘 사망률 m 도 이와 같은 자명한 메커니즘을 보여준다.다른 모든 조건이 동일하다면 사망률이 높을수록 상속액이 커진다.
    • 세 번째 힘, 사망자의 평균 자산과 살아 있는 개인들의 평균 자산의 비율 \mu 도 마찬가지다.
  • 사망자의 평균 자산이 인구 전체의 평균 자산과 같다고 가정해 보자
    • 그러면 \mu = 1 이고 상속액 b_{y} 는 단순하게 사망률 m 과 자본/소득 비율 \beta 를 곱한 값이 될 것이다.
    • 예컨대 자본/소득 비율이 600%이고 성인 인구의 사망률이 2%라면 연간 상속액은 자동적으로 국민소득의 12%가 될 것이다.
    • 분명 \mu 는 연령별 분포표에 달려 있다. 연령과 함께 부가 증가할 수록 \mu 는 더욱 높아질 것이고 따라서 상속액도 커질 것이다.
  • (이하 설명 생략)

사망률의 장기적 변화 추이

  • 상속의 자연적인 종말을 설명할 수 있는 두 번째 힘은 기대수명의 상승인데, 이는 사망률 m 을 하락시키고 상속받을 때까지 기다리는 시간을 길게 만든다.

  • 그러나 사망률의 변화로 경제의 중요한 요소인 상속자산이 필연적으로 사라지리라는 생각은 심각한 잘못일 것이다.
  • (이하 설명 생략)

부도 인구와 함께 늙는다: \mu \times m 효과

  • 나는 장기적인 관점을 택해 인구 집단의 규모는 안정적이라고 가정할 것이다. 그러면 기대수명의 상승은 상속자산의 중요성에 실제로 어떤 영향을 미칠까?
    • 분명 기대수명의 증가는 사망률의 구조적인 감소를 가져온다.
  • 그러나 사람들이 더 늦게 사망하고 더 늦게 상속받는다는 사실이 상속 자산의 중요성이 약화되었다는 것을 의미할까? 꼭 그렇지는 않다.
    • 부분적으로는 살아 있는 개인들 사이의 증여가 더 중요해져서 이 고령화 효과를 상쇄하기 때문이고, 부분적으로는 고령화 사회에서 부도 나이가 들어서 나중에 상속받는 이들이 더 많은 액수를 상속 받기 때문이다.

  • 구체적으로 말하면, 사망률의 지속적인 하락에도 불구하고 정의상 상속에 의한 연간 이전율을 나타내는 \mu m 의 곱은 지난 수십 년 동안 확실히 상승하기 시작했다.
  • (중간 설명 생략)

  • 요약하자면 고령화 사회에서는 상속이 더 나중에 이루어지지만 부도 함께 늙어가기 때문에 이 효과가 고령화 효과를 상쇄한다.

사망자의 자산과 살아 있는 사람의 자산

  • 사망자의 평균 자산과 살아 있는 사람의 평균 자산의 비율 \mu 의 변화 추이를 더욱 자세히 살펴보면 흥미롭다.
  • (이하 설명 생략)

50대와 80대: 벨 에포크 시대의 연령과 재산

  • 부의 축적 동학과 \mu 를 계산하기 위해 사용된 상세한 데이터를 더 잘 이해하기 위해서는 평균적인 부의 분포를 연령 함수로 검토하는 것이 유용할 것이다.
  • (이하 설명 생략)

  • 그럼에도 부의 집중 현상을 대부분 설명해 주는 지배적인 동학은 r>g라는 부등식의 필연적인 결과이다.
    • 개인이 50세나 60세에 보유한 자산이 상속된 것이든 노동으로 얻은 것이든, 어떤 한도를 넘어서면 자본은 스스로 재생산하고 기하급수적으로 증가하는 경향이 있다.
    • r>g의 논리는 기업가가 언제나 자본소득자로 변하는 경향이 있음을 의미한다.
    • 그런 일이 인생의 뒤늦은 시기에 일어난다 해도, 기대수명이 늘어나면서 그런 현상은 더욱 중요해진다.

전쟁으로 젊음을 되찾은 부

  • 이런 자립적인 메커니즘은 1914-1945년 자본과 그 소유자들이 겪었던 반복된 충격들로 인해 붕괴되고 말았다.
    • 두 차례 세계대전이 가져온 결과는 상당한 수준에서 일어난 부의 회춘이었다.
    • 도표 11.5가 이를 뚜렷이 보여준다.
  • (중간 설명 생략)
  • 이것이 2차대전 이후 수십 년간 상속액이 예외적으로 감소했던 현실에 대한 주된 설명이다.
    • 1950-1960년 재산을 상속받았어야 할 개인들은 그리 많이 상속받지 못했다. 그들의 부모가 이전 수십 년 동안의 충격으로부터 회복할 만한 충분한 시간이 없었고 그들의 이름으로 지닌 재산이 많지 않은 상태에서 죽었기 때문이다.
  • (이하 설명 생략)

21세기에는 상속액이 어떻게 변화될 것인가

  • 최근 수십 년간 나타난 상속액의 급격한 증가를 고려하면 이러한 증가가 계속될 것인지 묻는게 당연하다.
    • 아래 그림은 21세기 가능한 두 가지 변화를 보여준다. 중심 시나리오는 2010-2100년의 연간 성장률을 1.7%, 자본수익률을 3%로 가정한다.
    • 다른 대안적인 시나리오는 2010-2100년 자본수익률이 5%로 상승하는 반면 연간 성장률은 1% 하락한다고 추정한다.

  • 첫 번째 시나리오를 따르면 상속액은 2060-2070까지 많이 증가한 뒤 국민소득의 24-25% 수준에서 안정을 찾는다.
    • 첫 번째의 경우 상속 자산은 부분적으로만 귀환하지만 두 번째 경우는 모조리 귀환할 것이다.
  • (이하 설명 생략)
  • 여기서 본질적인 요점은 주어진 저축 행위의 구조에서 자본수익률이 상승하고 성장률이 하락하면 누적적 과정이 더욱 빨라지고 불평등해진다는 것이다.
  • (이하 설명 생략)

연간 상속액에서 상속자산 총액까지

  • 연간 상속액이 국민소득의 20-25%이던 19세기와 20세기 초에는 상속자산이 민간자산의 거의 전부를 차지했다.
    • 이때 상속자산은 민간자산의 80-90%를 차지했을 뿐만 아니라 증가 추세였다.
    • 그러나 모든 사회, 모든 계층에서 10-20%에 이르는 상당수의 부유한 개인들이 무일푼으로 시작해 일생 동안 재산을 모았다는 점에 주의하자.
    • 그럼에도 상속받은 자산으로 부유해진 경우가 대다수를 차지했다.
    • 국민소득의 20%에 해당되는 연간 상속액을 30년간 더하면 국민소득의 약 6배에 상당하는 거액의 유산과 증여 재산이 축적되는데, 이는 민간자산의 거의 전부를 차지한다.
  • 20세기에 상속액이 격감하면서 이 균형 상태가 극적으로 변화했다. 1970년대 상속액이 최저 수준으로 떨어졌다.
    • 수십 년간 상속과 새로운 자산축적이 소규모로 이뤄진 뒤, 총민간자본에서 상속받은 자본이 차지하는 몫은 40%를 약간 넘는 수준으로 감소했다.
    • 신생국을 제외하면 역사상 처음으로 개인이 살명서 축적한 재산이 전체 부의 거의 60%에 육박하며 대부분을 차지한 것이다.
  • (이하 설명 생략)

  • 저축률은 일반적으로 국민소득의 약 10%다.
    • 19세기 처럼 상속액이 20-25%라면 해마다 유산과 증여로 받는 액수가 신규 저축의 두 배가 넘는다. 신규 저축의 일부가 상속받은 자본에서 얻은 소득이라는 점까지 더하면 상속자산이 저축한 자산을 크게 능가한다.
    • 역으로 1950년대 상속액이 국민소득의 5%, 즉 신규 저축의 절반으로 떨어지면 당연히 저축된 자본이 상속받은 자본보다 우세할 것이다.
    • 핵심은 1980년대 연간 상속액이 저축액을 다시 넘어섰고 2000-2010년에는 저축액을 훨씬 웃돌았다는 사실이다.
    • 오늘날에는 국민소득의 거의 15%를 차지한다.

보트랭의 설교로 돌아가기

  • 1790년대 프랑스에서 태어난 모든 사람을 살펴보면 평생 이용할 수 있었던 총자원에서 상속이 약 24%를 차지했다. 따라서 노동소득의 비율은 약 76%였다.
    • 이는 1차대전 전까지 모든 집단에서 대략적으로 같은 양상이 나타났다.
  • 1870년대 그 이후 태어난 집단에서는 총자원에서 상속이 차지하는 비율이 서서히 감소하기 시작한다.
  • (이하 내용은 앞선 내용을 계속 반복하고 있어서 생략)

라스티냐크의 딜레마

  • 상속자산의 주요 특징 중 하나는 매우 불평등하게 분배되어 있다는 것이다.
    • 아래 도표는 18세기 말과 19세기에 태어난 집단들이 실제로 보트랭이 설명한 끔찍한 딜레마에 직면했다는 것을 보여준다.
    • 어떻게든 상속받은 자산을 손에 넣은 사람들은 공부와 일을 해서 생활해야 하는 사람들보다 훨씬 더 잘살았다.

  • 19세기 가장 부유한 1%의 상속인들이 평생 이용할 수 있었던 자원은 하류층이 이용할 수 있었던 자원의 25-30배였다.
    • 다시 말해 부모나 배우자를 통해 그 정도의 상속을 받을 수 있는 사람은 평생 25-30명의 하인을 부리며 임금을 지불할 수 있었다.
    • 동시에 상위 1의 노동소득자가 이용할 수 있는 자원은 하류층의 10배였는데, 이 수치는 무시할 정도는 아니지만 상위 1%의 상속인들에 비하면 분명 낮았다.
  • (이하 설명 생략)

자본소득자와 경영자에 대한 기초적 계산

  • 요약하자면 사회계층 구조의 최상위층이 상속자본에서 얻는 소득이 노동소득보다 우세한 사회에서는 두 가지 조건이 충족되어야 한다.
  • 먼저 자본총량이 많아야 하고, 그중 상속받은 자본의 비율이 높아야 한다.
    • 일반적으로 자본/소득 비율이 대략 6, 7이 되어야 하고 자본총량 대부분이 상속받은 자본으로 구성되어야 한다.
    • 그런 사회에서 상속자산은 각 집단이 이용할 수 있는 평균 자원의 약 1/4을 차지할 수 있다.
  • 두 번째 조건은 상속자산이 극도로 집중되어야 한다는 것이다.
    • 상속자산이 노동소득과 같은 방식으로 분배되면 보트랭이 말한 세계는 결코 존재할 수 없을 것이다.
    • 노동소득이 상속자산에서 얻는 소득보다 항상 훨씬 더 많을 것이고 (적어도 3배) 노동소득 상위 1%의 소득이 상속자산 소득 상위 1%의 소득을 체계적이고 자동적으로 넘어설 것이기 때문이다.
  • 집중효과가 물량효과를 누르려면 상속계츠으이 상위 1%가 상속받은 부에서 대단히 큰 몫을 차지해야 한다.
    • 상속계층의 상위 1%가 총자산의 50-60%를 소유해 노동소득 상위 1%가 노동소득에서 차지하는 몫 보다 거의 10배가 높았던 18-19세기가 이런 경우였다.
  • 자본소득자와 경영자에 대해 이런 기초적인 계산을 해보면 오늘날 상속 자산 상위 1%와 노동소득 상위 1%가 거의 균형이 맞는 이유를 이해하는데도 도움이 된다.
  • (이하 설명 생략)

고전적 세습사회: 발자크와 오스틴의 세계

  • (소설 속 등장한 당시 사회 불평등 내용 생략)

부의 극심한 불평등: 가난한 사회에서 문명의 한 조건인가?

  • (소설 속 등장한 당시 사회 불평등 내용 생략)

부유한 사회에서의 극단적인 능력주의

  • 임금불평등은 상속에 따른 불평등보다 더 많이 정당화된다는 생각들이 있다.
  • (중간 설명 생략)
  • 현대사회의 불평등을 능력주의로 정당화 하는 모습은 최상위층 뿐만 아니라 하층과 중산층 사이의 더 낮은 계층에서도 뚜렷이 나타난다는 점 역시 강조해야 한다.
  • (이하 설명 생략)

소자본소득자들의 사회

  • 1970년 이후 태어난 집단에게 상속은 평생의 총자원에서 1/4을 차지한다. 총액의 관점에서 보면 상속은 19세기 태어난 인구집단에서만큼의 중요성을 회복했다.
    • 그러나 총액이 과거 수준을 회복했다고 해서 상속이 동일한 사횢거 역할을 수행한다는 의미는 아니다.
    • 부의 현저한 분산과 세습 중산층의 등장은 오늘날 19세기에 비해 아주 많은 재산을 소유한 사람이 훨씬 더 드물다는 것을 암시한다.
  • (이하 소설 속 내용 설명 생략)
  • 불평등에 대한 사회적 표현의 이러한 커다란 변화는 어느 정도는 당연하지만 많은 오해에 근거하고 있다.
    • 첫째, 분명 오늘날에는 18세기보다 교육이 더 중요한 역할을 한다. 그렇다고 사회가 더욱 능력 본위로 바뀌었다고 말할 수는 없다.
    • 사실 교육 불평등은 그저 상향 이동했을 뿐이며, 교육으로 세대 간의 이동성이 높아졌다는 증거도 없다.
  • 상속자산이 사라져 더 공정한 사회로 나아왔다는 믿음이 널리 퍼지고 부분적으로 정당화 되었지만 여기에는 중요한 오해가 있다.
    • 첫째, 상속은 거의 사라지지 않았다. 상속자본의 분배가 변화했을 뿐이므로 이것은 전적으로 다른 문제다.
    • (저자의 글에 특징 중 하나인데, 첫째라고 해놓고 둘째가 안보이는 경우가 대단히 많다. 뒤에 나오는 title 밑에서 둘째가 나오는 경우도 있음)
  • 다시 말해 우리는 소수로 이루어진 아주 부유한 자본소득자의 사회에서 훨씬 더 많은 수의 덜 부유한 자본소득자의 사회로 옮겨왔다. 말하자면 소자본소득자(pefits rentiers)의 사회인 셈이다.
    • (이하 그래프 설명 생략)

자본소득자, 민주주의의 적

  • 둘째, 21세기에 상속자본의 분배가 19세기만큼 불평등해지지 않으리라는 보장이 없다.
    • (관련 설명 생략)
  • (이하 지대에 대한 설명 생략)
  • 경제적, 기술적 합리성은 계몽주의에서 유래했고, 사람들은 흔히 민주주의적 합리성이 경제적, 기술적 합리성에서 마치 마술처럼 저절로 파생될 것이라고 가정한다.
    • 그러나 진정한 민주주의와 사회적 정의를 이루려면 시장의 제도, 단지 의회나 그 외의 형식적인 민주주의적 제도 뿐만 아니라 민주주의와 사회적의 스스로의 특정한 제도들이 필요하다.
  • 이 책에서 계속 강조했던, 격차를 확대하는 근본적인 힘은 r>g라는 부등식으로 요약될 수 있는데, 이것은 시장의 불완정성과는 아무 관계가 없으며 시장이 더욱 자유로워지고 경쟁이 강화되어도 사라지지 않을 것이다.
    • 무제한적인 경쟁이 상속을 없애고 능력이 더욱 중시되는 사회를 향해 움직일 것이라는 생각은 위험한 착각이다.
    • 보통 선거권이 생기고 투표시 재산에 대한 자격이 없어지면서 부자들의 합법적인 정치적 지배는 끝났다.
    • 그러나 이것이 자본소득자 사회를 낳을 수 있는 경제적 힘을 없애지는 않았다.

상속자산의 귀환: 유럽의 현상인가 아니면 세계적 현상인가?

  • (프랑스의 사례를 다른 국가에 적용할 수 있는가에 대한 설명 생략. 나라별로 조건이 다르고, 자료가 부족한 경우도 있다)

21세기 자본/ 자본 소유의 불평등

  • 부의 불평등 문제가 중요한 이유는 이런 유형의 불평등과 여기서 비롯된 소득의 불평등이 완화된 것이 20세기 전반기에 총소득의 불평등을 완화시킨 유일한 원인이었기 때문이다.
    • 총소득 불평등이 급격히 완화된 것은 본질적으로 자본으로 인한 고소득의 급속한 감소 때문이었다.

극심한 부의 집중: 유럽과 미국

  • 부의 분배, 그리고 자본소득의 분배는 항상 노동소득의 분배보다 훨씬 더 집중되어 있다.
    • 알려진 모든 사회에서 어느 시기든 인구의 가난한 절반은 거의 아무것도 소유하지 않으며 일반적으로 전체 부의 5% 조금 넘게 소유한다.
    • 반면 상위 10%의 부유층이 소유할 수 있는 것의 대다수를 소유한다. 이들은 일반적으로 부의 60% 때로는 90%까지 소유한다.
    • 그리고 구조상 중간 계층의 40%인 나머지 인구가 전체 부의 5-35%를 소유한다.

프랑스: 민간 부의 관측소

  • (자료 수집에 대한 내용 생략)

세습사회의 변형

  • 아래 도표는 1810년부터 2010년까지 부의 분배의 변화에 관해 얻은 주요 결론을 보여준다.

  • 첫 번째 결론은 1914-1945년의 충격 이전에는 자본 소유의 불평등이 축소되는 추세가 가시적으로 나타나지 않았다는 점이다.
    • 19세기 내내 자본의 집중이 심화되는 추세가 약하게 나타났고, 1880-1913년에는 심지어 불평등의 악순환이 가속화되는 경향까지 보였다.
    • (부의 집중 정도에 대한 사례 생략)

  • 18세기 프랑스 혁명 직전(1789년)에는 상위 10%의 부유층이 전체 부의 90% 이상을 차지했고, 상위 1%의 몫은 60% 이상이었다.

벨 에포크 시대 유럽의 자본 불평등

  • 다른 유럽 국가들에 관해 이용할 수 있는데이터는 18세기와 19세기 1차대전 직전까지 나타난 부의 극단적인 집중이 단지 프랑스 뿐 아니라 유럽 전반의 현상임을 보여준다.
  • (각국 사례 생략)

세습중산층의 등장

  • 도표 10.1에 제시된 프랑스의 데이터에서 분명히 드러나는 두 번째 결론은 자본소득의 집중 뿐만 아니라 부의 집중이 1914-1945년의 충격에서 아직 완전히 회복되지 않았다는 것이다.
    • 전체 부에서 상위 10%가 차지하는 몫은 1910-1920년의 90%에서 1950-1970년에 60-70%로 떨어졌다.
    • 상위 1%가 차지하는 몫은 더 가파르게 떨어져서 1910-1920년 60%에서 1950-1970년에는 20-30%까지 낮아졌다.
  • 1980-1990년 부의 불평등 정도는 다시 높아지기 시작했지만, 오늘날 부의 불평등은 1세기 전보다 상당히 낮은 수준이다.
    • 전체 부에서 상위 10%가 차지하는 몫은 현재 60-65%로 높기는 하지만 벨 에포크 시대보다는 현저히 낮은 수준이다.
    • 지금은 국부의 1/3 가량을 소유한 ‘세습중산층’이 존재한다. 국부의 1/3이면 그리 적은 비중이 아니다.

미국의 자본 불평등

  • 유럽과 미국이 그린 궤적에는 중요한 차이점이 두드러진다. 첫째, 1800년경 미국의 부의 불평등은 1970-1980년의 스웨덴보다 높지 않았다.
    • 미국은 재산이 거의 없이 신대륙으로 건너온 이민자들로 인구가 구성된 새로운 국가였기 때문에 이는 그리 놀랍지 않다. 부가 축적되거나 집중될 만큼 충분한 시간이 흐르지 않았던 것이다.
  • 19세기가 흘러가면서 미국에서 부가 점차 집중되었다는 것은 확고한 사실이다. 1910년에 미국의 자본 소유의 불평등은 매우 높았지만 유럽보다는 여전히 현저하게 낮았다.
    • 상위 10%의 부유층이 전체 부의 약 80%를, 상위 1%가 약 45%를 소유했다.

  • 미국에서는 1910-1950년에 부의 불평등이 소득불평등과 마찬가지로 완화되었지만, 유럽보다는 그 정도가 훨씬 덜했다.
  • 미국은 2010년에 상위 10%가 차지하는 몫이 70%를 넘었고 상위 1%의 몫은 35%에 가까웠다.

  • 20세기 동안 미국에서 나타난 부의 불평등 감소는 상당히 제한적이었다. 상위 10%가 차지하는 몫이 미국에서는 80%에서 70%로 떨어진 반면, 유럽에서는 90%에서 60%로 떨어졌다.
  • 유럽은 20세기에 완전히 변화했는데, 1차대전 직전 앙시앵레짐 시대만큼 높았던 부의 불평등이 전례 없이 낮은 수준으로 떨어졌다.
    • 인구의 거의 절반이 어느 정도의 부를 획득할 수 있었고 처음으로 국가의 전체 부에서 상당한 몫을 차지할 정도로 불평등 정도가 낮아졌다.
    • 이 현상은 1945-1975년 유럽을 휩쓸었던 낙관주의를 부분적으로 설명해 준다.
  • 오늘날 미국의 부의 불평등은 19세기 초보다 훨씬 높다.

부의 양극화 메커니즘: 역사 속 자본수익률 대 성장률

  • 유럽은 1914-1945년 충격 후 부의 불평등이 상당히 완화되었으며 지금까지 과거 수준으로 회귀하지 않았다.
  • 여기에는 몇 가지 메커니즘이 작용했을 수 있는데, 다음은 우리가 알고 있는 자료에서 도출 가능하다고 생각되는 주요 결론이다.
  • 격차를 확대하는 근본적인 힘은 다음과 같이 작용한다.
    • 가령 연간 성장률이 0.5~1% 정도로 낮은 세계를 생각해 보자. 이는 18세기와 19세기 이전에는 모든 곳이 그러했다.
    • 따라서 연간 4-5% 정도인 자본수익률이 성장률보다 높았다.
    • 구체적으로 말하면 과거에 축적된 부가 경제성장보다 훨씬 더 빠른 속도로 다시 자본으로 축적된다는 뜻이다. 심지어 노동소득이 전혀 없는 경우에도 그렇다.
    • 예컨대 g가 1%, r이 5%일 경우 자본소득의 1/5을 저축하면 이전 세대에서 물려받은 자본이 경제성장과 같은 비율로 증가하도록 하는데는 충분하다.
    • 수학적인 이유로 이는 ‘상속사회(inheriance society)’가 번창하기에 이상적인 조건이다.
  • 역사적으로 많은 나라에서 이런 조건이 성립했다. 다음 도표에서 알 수 있는 것처럼 1820-1913년까지 프랑스에서는 자본수익률이 성장률보다 현저히 높았다.

자본수익률은 왜 성장률보다 높은가

  • 오랜기간 r이 g보다 더 높았다는 것은 반박의 여지가 없는 역사적 사실이다.
  • 다음 도표에서 알 수 있는 것처럼, 일반적으로 4-5%인 자본수익률은 역사를 통틀어 항상 글로벌 성장률보다 뚜렷하게 높았다.

  • 20세기 특히, 세계 경제가 연간 3.5-4%의 성장률을 보인 20세기 후반 이 둘의 격차는 크게 줄어들었는데, 21세기에는 성장 (특히 인구 성장)이 둔화되면서 십중팔구 차이가 다시 벌어질 것이다.
    • 세계성장률은 2050년에서 2100년 사이에 매년 1.5%일 것으로 추정되는데 이는 19세기와 거의 같은 성장률이다. 이러면 r과 g의 격차는 산업혁명 당시와 맞먹는 수준으로 되돌아갈 것이다.
  • 이런 상황에서는 자본에 대한 과세와 다양한 종류의 충격이 중요한 역할을 할 수 있다는 것을 쉽게 알 수 있다.
    • 1차대전 이전에는 자본에 대한 세금이 매우 낮았다. 1차대전 이후 최상위층 소득, 이윤 그리고 부에 대한 세율이 빠른 속도로 상승해 높은 수준이 되었다.
    • 그러나 1980년 이후 금융세계화와 국가들 간의 자본 유치 경쟁 격화에 따라 세율이 떨어지기 시작했고, 어떤 경우에는 완전히 사라지다시피 했다.
  • 아래 도표는 세금을 빼고 1913-1950년 재산 파괴로 인한 자본손실 추정치를 반영한 뒤 평균 자본수익률을 추정한 것이다.

  • 우리는 1913-1950년에 세금 공제 뒤의 자본수익률이 1-1.5%로 떨어져 성장률보다 낮았다는 것을 발견했다. 이런 새로운 상황은 이례적일 정도로 높은 성장률 덕분에 1950-2012년에도 계속되었다.
    • 결과적으로 우리는 20세기 조세적, 비조세적 충격들로 인해 역사상 최초로 자본의 순수익률이 성장률보다 낮은 상황이 나타났다는 것을 발견했다.
  • 21세기 어느 시점에 r과 g의 차이가 19세기와 비슷한 수준으로 돌아갈 것으로 예상되는 자본에 대한 세율이 평균 30% 정도에 머물 경우 자본의 순수익률이 성장률보다 상당히 높은 수준으로 상승할 가능성이 높다.

시간선호 문제

  • 자본수익률이 자연적이고 지속적으로 2-3% 이하로 떨어진 적은 없으며, 우리가 볼 수 있는 평균 수익률은 일반적으로 세전 4-5%에 가깝다.
  • 이렇게 자본수익률이 4-5%로 비교적 고정되는 현상, 그리고 2-3% 아래로 결코 떨어지지 않는다는 사실을 설명하기 위해 일반적으로 사용되는 경제모형은 현재를 선호하는 ‘시간선호(time preference)’ 개념에 바탕을 두고 있다.
    • 달리 말하면 경제 주체들은 얼마나 인내심이 있는지와 얼마나 미래를 고려하는지를 측정하는 시간선호율(보통 세타 \theta 로 표시된다)에 따라 특징 지어진다.
    • 예컨대 \theta = 5% 라면 해당 주체는 오늘 100유로를 더 쓰기 위해 미래에 쓸 수 있는 105유로를 희생할 의사가 있다는 것이다.
    • 이 이론은 따른 예측은 과격하고 무자비한데, 성장률이 제로인 경제라면 자본수익률이 시간선호율 \theta 와 동일해야 한다는 것이 놀랍지 않은 일이다.
    • 이 이론에 따르면 자본수익률이 역사적으로 4-5%로 고정적이었던 것은 궁극적으로 심리적인 이유 때문이다.
  • 다른 상황이 모두 같다면 인내심이 좀 더 강한 사회, 즉 미래의 충격을 예측하는 사회가 당연히 더 많은 예비 자금을 모으고 더 많은 바존을 축적할 것이다.
    • 마찬가지로 한 사회가 너무 많은 자본을 축적해서 자본수익률이 지속적으로 낮다면 –가령 연간 1%라면– 재산을 소유한 개인들 가운데 상당수가 집이나 금융자산을 팔 것이고, 그리하여 수익률이 상승할 때까지 자본총량이 줄어들 것이다.
  • 이 이론의 문제점은 지나치게 단순하고 체계적이라는 것이다. 모든 저축 행위나 미래에 대한 태도를 심리적 매개변수 하나로 요약할 수는 없다.
    • (이하 이론에 대한 내용 생략)
  • 내가 생각하기에 r>g 부등식은 절대적인 논리적 필연성으로서가 아니라 다양한 메커니즘에 의존하는 역사적 사실로서 분석되어야 한다. r>g 는 각각 상당히 독립적인 요인이 함께 작용한 결과다.
    • 성장률 g는 구조적으로 낮은 경향이 있는데, 인구 변천이 완료되고 국가 기술력이 세계적인 첨단 수준에 이르러 혁신의 속도가 둔화되면 일반적으로 1%를 크게 웃돌지 않는다.
    • 자본수익률 r은 무수한 기술적, 심리적, 사회적, 문화적 요인에 의존하며 이 요인들이 함꼐 작용해서 약 4-5%의 수익률을 낳는 것으로 보인다.

균형 분배는 존재할까?

  • 자본수익률이 성장률보다 지속적이고 명백하게 높다는 사실은 부의 분배를 더 불평등하게 만드는 강력한 동인이다. 이런 상황에서 불평등의 무한한 악순환을 막고 부의 불평등을 제한된 수준으로 안정시킬 수 있는 유일한 힘은 다음과 같다.
    • 첫째, 부유한 개인의 재산이 평균 소득보다 빠른 속도로 증가하면 자본/ 소득 비율이 무한히 높아질 것이고 결국 자본수익률 감소로 이어질 것이다. 그러나 이 메커니즘이 작동하려면 수십 년이 걸릴 수 있다.
  • (상속 관련 내용 생략)

민법과 프랑스 혁명에 대한 환상

  • 실제로 일단 자본수익률이 성장률보다 지속적으로 훨씬 더 높으면 부의 축적과 상속의 동학이 자동적으로 매우 심각한 부의 집중을 낳고 이때 형제자매 간의 평등한 분배는 별로 영향을 미치지 않게 된다.
    • 개별 가족이 소유한 재산의 궤적에 영향을 미치는 경제적, 인구적 충격들이 항상 존재한다.
  • 아주 간단한 수학적 모형을 활용하면 이런 유형의 충격들이 발생하는 일정한 틀 안에서 부의 분배는 장기적으로 균형을 향해 나아가는 경향이 있으며, 불평등의 균형 수준은 자본수익률과 성장률의 차이, 즉, r-g의 증가함수라는 사실을 입증할 수 있다.
    • 직관적으로 봤을 때, r-g는 자본소득을 전혀 소비하지 않고 모두 자본에 재투자했을 경우 자본소득과 평균 소득 간 격차의 정도를 나타낸다. r-g 차이가 클수록 격차가 확대되는 힘이 강해진다.
    • 인구적, 경제적 충격이 곱셈적 형태를 띤다면 장기적인 균형 분포는 파레토 법칙에서 예상한 형태가 된다.
    • 또한 파레토 분포의 계수는 r-g의 가파른 증가함수라는 것을 쉽게 보일 수 있다.
  • 이것이 의미하는 바를 구체적으로 살펴보자. 연간 5%의 평균 수익률과 1%의 성장률을 기록한 19세기 프랑스의 수준만큼 자본수익률과 성장률이 차이날 경우, 이 모델은 부가 축적되는 누적적 동하긍로 인해 자동적으로 상위 10%가 약 90%, 상위 1%가 약 50 이상의 자본을 소유할 정도로 부가 극도로 집중될 것으로 예측한다는 것이다.
  • 다시 말해 r>g라는 기본적인 부등식은 19세기 관찰되는 매우 높은 수준의 자본의 불평등을 설명해주고, 따라서 어떤 의미에서는 프랑스혁명의 실패까지 설명할 수 있다.
  • (장자상속제나 프랑스 상황 설명 생략)
  • 마지막으로 r-g 차이가 일정한 한도를 넘으면 균형 분배가 나타나지 않는다는데 주의하자. 이때 부의 불평등은 한없이 심화되고, 부의 분포에서 최대치와 평균 사이의 차이가 무한정 증가할 것이다.

파레토와 안정적인 불평등에 대한 환상

  • 지니계수는 불평등 정도를 하나의 수치로 나타내기 위해 고안되었지만 실제로는 상황을 단순하고 지나치게 낙관적이며 해석하기 어렵게 묘사한다. 더 흥미로운 것은 파레토의 법칙이다.
    • 놀라운 것은 파레토가 자신의 안정성 이론을 지지할 증거를 제시하지 않았다는 점이다.
  • 파레토 법칙으로 불리게 된, 혹은 일반적인 함수의 한 예로 ‘멱법칙’이라고 알려진 수학법칙을 통해 부와 소득의 분배를 연구한다. 그러나 멱법칙은 분포의 상위 꼬리 부분에만 적용되며, 그 관계는 대략적이고 국지적으로만 유효하다는 점에 유의해야 한다.
  • (사례 생략)
    • 그 각각에 대해 우리는 파레토 분포를 다루지만 계수들은 상당히 다르다. 그리고 각각의 경우에 해당하는 사회적, 경제적, 정치적 현실들은 완전히 다르다.
  • 오늘날에도 어떤 사람들은 파레토가 그랬던 것처럼 부의 분포가 마치 자연법칙처럼 견고하게 안정적이라고 생각하는데, 실제로 이런 견해는 사실과 전혀 맞지 않는다.
    • 역사적 관점에서 불평등을 연구할 때 설명해야 할 중요한 사항은 분포의 안정성이 아니라 때때로 발생하는 커다란 변화다.

부의 불평등이 과거 수준으로 돌아가지 않는 이유

  • 이제 본질적인 의문에 이르렀다. 왜 부의 불평등이 벨 에포크 시대의 수준으로 돌아가지 않을까? 이 의문에 대해 내가 확실한 답을 가지고 있는 것은 아니다.
  • (20세기 부의 변화에 대한 설명 생략)

부분적인 설명: 시간, 세금, 성장

  • 결국 1910-1950년 사이에 모든 곳에서 부의 집중이 급격히 완화되었다는 것은 그리 놀랄 일이 아니다.
  • 자본축적이 몇 세대애 걸친 장기적인 과정임을 인식하는 것은 분명 중요하다. 벨 에포크 시대 유럽에서 진행된 부의 집중은 수십 년 혹은 수백 년에 걸쳐 누적된 과정의 결과였다.
  • 오늘날 부가 과거만큼 불평등하게 분배되지 않은 이유는 1945년 이후 충분한 시간이 지나지 않았기 때문이다.
  • (중간 설명 생략 -결론이 눈에 보이는데 자꾸 몇 단락 째 빙빙 돌리고 있다)
  • 1914-1945년 사이 어떤 구조적인 변화가 일어났을까? 이 변화들은 오늘날 민간의 부가 전반적으로 과거만큼 거의 성공적으로 번창하고 있는데도 부의 집중이 예전의 수준을 회복하지 못하게 가로막고 있다.
    • 가장 자연스럽고 중요한 설명은 20세기의 정부들이 자본과 자본소득에 상당한 세율로 세금을 부과하기 시작했다는 사실이다.
    • 1900-1910년 관찰된 매우 높은 부의 집중은 장기간 큰 전쟁이나 재난이 일어나지 않았을 뿐 아니라 세금이 거의 없었던 결과다.
    • 1차대전까지는 자본소득이나 기업 이윤에 세금이 부과되지 않았고, 드물게 부과되더라도 세율이 아주 낮았다.
    • 따라서 상당한 재산을 축적해 물려주고, 그런 재산에서 얻은 소득으로 생활하기 이상적인 환경이었다.
  • (세율에 대한 설명 생략)
  • 이런 맥락에서 볼 때 자본에 부과된 세금의 효과는 부의 전체적인 축적을 줄이는 것이 아니라 장기적인 부의 분배 구조를 변화시키는 것임에 주의해야 한다.
    • 역사적 데이터나 이론 모형에서 보면 자본소득에 대한 세금이 30%로 올라도 (자본에 대한 순수익률이 5%에서 3.5%로 줄어도) 장기적으로 자본총량은 변하지 않을 것이다.
    • 상위 1%가 차지하는 몫의 감소가 중산층의 부상으로 상쇄되기 때문이다.
    • 이것이 바로 20세기에 일어난 일이다.
  • 20세기에 최대 규모의 상속재산에 대한 상속세와 함께 누진세, 즉 최상위 소득과 특히 최상위 자본소득에 더 높은 세율을 적용하는 세금이 강화되었다는 점에 주목해야 한다.
  • 1914-1945년 군사적, 경제적, 정치적 충격에 뒤이어 대부분의 부유한 국가에서 부과된 20-30% 혹은 그 이상의 세율은 완전히 다른 영향을 미쳤다.
    • 이러한 세금의 결과로 인해, 만약 가족의 재산이 평균 소득만큼 빠르게 증가하기를 원한다면 이후 세대가 지출을 줄이고 저축을 많이 해야 했다.
    • 그리하여 부자들은 부의 계층 구조에서 원래의 지위를 유지하기 점점 더 어려워졌고, 거꾸로 바닥에서 출발한 사람들은 위쪽으로 올라가기가 쉬워졌다.
    • 간단한 시뮬레이션을 해보면 누진적 상속세가 장기적으로 상위 1%가 부에서 차지하는 몫을 상당히 줄일 수 있음을 알 수 있다.

21세기는 19세기보다 훨씬 더 불평등할까?

  • 지금까지의 분석은 세금 제도의 변화와 관계없이 아마도 두 요인이 중요한 역할을 했으며, 미래에도 그럴 것임을 보여주었다.
    • 첫 번째는 소득에서 자본이 차지하는 비중과 자본수익률이 장기적으로 약간 낮아질 가능성이고,
    • 두 번째는 성장률이 21세기에 약간 둔화될 것으로 보이지만 18세기까지 인간의 역사 대부분의 기간에 관찰된 극도로 낮은 수준보다는 높을 것이라는 점이다.
    • 구체적으로 말하면 미래에는 r>g라는 차이가 18세기 이전보다 작을 것이다. 자본수익률이 낮아질 것이고 성장률이 높아질 것이기 때문이다.
  • 그러나 기뻐할 이유는 없다. 여전히 부의 불평등은 상당히 높아질 것이기 때문이기도 하고, 시뮬레이션에 상당히 불확실성이 존재하기 때문이기도 하다.
  • 요약하면 다음과 같다. 오늘날 유럽에서 부의 집중이 벨 에포크 시대보다 두드러지게 낮은 현실은 주로 우연적인 사건들과 자본 및 자본소득에 부과된 세금 같은 특정한 제도의 결과다.
    • 그러한 제도들이 결국 무너진다면 부의 불평등이 과거 수준과 비슷해지고 어떤 상황에서는 더 높아질 위험이 있다.

21세기 자본/ 노동소득의 불평등

임금불평등: 교육과 기술 간의 경주?

  • 노동소득의 불평등, 특히 임금불평등이 시기에 따라 차이가 나는 것에 대해 널리 인정되는 이론은 교육과 기술 간의 경주 때문이라는 주장이다.
    • 이 이론은 모든 것을 설명하진 못하는데, 특히 슈퍼경영자의 등장이나 1980년 이후 미국의 임금불평등에 대해서 만족스러운 설명을 내놓지 못한다.
    • 그럼에도 이 이론은 특정한 역사적 전개과정을 설명하는데 흥미롭고 중요한 단서를 제공한다.
  • 이 이론은 다음 두 가지 가설을 바탕으로 한다.
    • 첫째, 한 노동자의 임금은 그의 한계생산성, 즉 그가 일하는 기업이나 사무실의 생산에 기여한 가치와 동일하다.
    • 둘째, 노동자의 생산성은 무엇보다 그가 보유한 기능 그리고 주어진 사회에서 그 기능의 수급에 따라 좌우된다.
  • 이 이론은 제한적이고 고지식하다고 할 수 있는데, 노동자의 생산성은 객관적인 수치가 아니며, 노동자의 급여를 결정하는데는 종종 다른 사회집단들의 상대적인 힘이 중요한 역할을 하기 때문이다.
    • 그러나 이 이론은 임금불평등을 결정짓는데 근본적인 영향을 미치는 두 가지, ‘수요’와 ‘공급’을 강조한다는 장점이 있다.
    • 실제로 기능의 공급은 다른 무엇보다 교육제도의 상태에 좌우된다. 그리고 기능에 대한 수요는 무엇보다 사회가 소비하는 상품과 서비스를 생산하기 위해 이용 가능한 기술의 상태에 좌우된다.
  • 다른 어떤 요인들이 관련되었든 간에 교육제도의 상태와 기술의 상태는 중요한 역할을 한다. 물론 이 두 요인 자체도 다른 많은 힘에 좌우된다.
    • 교육제도는 공공정책, 다양한 교육과정에 대한 선택 기준, 재원 확보 방식, 학생과 가족들이 부담하는 학비, 평생교육의 이용 가능성에 의해 형성되고,
    • 기술의 진보는 혁신이 얼마나 빠른 속도로 이루어지고 실행되는지에 달려있다. 기술의 진보는 새로운 기능에 대한 수요를 증대시키고 새로운 직업을 창출한다.
  • 여기서 교육과 기술 간의 경주라는 개념이 도출된다.
    • 기능의 공급이 그 수요와 같은 속도로 증가하지 않으면 충분한 고등교육을 받지 못한 집단들은 소득이 낮아질 것이고 저평가되는 직업으로 밀려나며, 그리하여 노동과 관련된 불평등이 심화될 것이다.
    • 이런 문제를 피하려면 교육제도가 새로운 유형의 교육과 그 교육 결과로서의 새로운 기능들을 충분히 빠른 속도로 공급해야 한다.
    • 더 나아가 불평등을 줄이려면 새로운 기능의 공급이 훨씬 더 빠른 속도로 늘어나야 하는데, 특히 교육을 가장 덜 받은 사람들의 경우 더욱 그러하다.
  • 프랑스의 임금불평등을 생각해 보자. 프랑스에서 임금불평등은 오랜 시간 꽤 안정적이었는데, 20세기가 흘러가면서 평균 임금은 엄청나게 상승했음에도 최고 10%와 최저 10% 사이의 격차는 그대로였다.
    • 이에 대한 가장 자연스러운 설명은 모든 기능의 수준이 거의 같은 속도로 발전함으로써 불평등한 급여 체계가 위쪽으로 이동했다는 것이다.
    • 과거 초등학교 졸업장으로 만족했던 집단은 이제 대학이나 대학원에 진학한다.
    • 교육제도의 민주화는 교육 불평등을 제거하지 못했고, 임금불평등도 제거하지 못했다. 그러나 교육 민주화가 이루어지지 않았다면 임금불평등은 더 심화되었을 것이 분명하다.
  • 반면 미국은 1970년대까지 규칙적으로 감소했던 임금 격차가 1980년대 다시 증가했는데, 이 자료를 조사한 클라우디아 골딘(Claudia Goldin)과 로런스 카츠(Lawrence Katz)는 그 원인을 고등교육에 충분히 투자하는데 실패했기 때문이라고 믿었다.
  • 프랑스의 미국의 사례는 같은 교훈을 가리키는데, 궁극적으로 노동과 관련된 불평등을 줄이고, 생산성과 경제성장률을 높이려면 교육에 투자해야 한다는 것이다.
    • 장기적으로 봤을 때 교육과 기술은 임금 수준을 결정하는 요인이다.
    • (이에 대한 반론도 있는 것으로 아는데, 교육 수준이 올라가도 GDP는 올라가지 않는 사례가 아프리카에 많다고 함. 이에 대해 반론을 제기하는 사람들은 교육은 그저 교육일 뿐 경제성장과는 관계가 없다고 주장한다.)

이론 모형의 한계: 제도의 역할

  • 교육과 기술은 장기적으로 결정적인 역할을 하지만, 한 노동자의 임금이 그의 한계생산성에 의해, 따라서 주로 그가 보유한 기능에 의해 완전하게 결정된다는 개념을 바탕으로 한 이 이론 모형은 여러 측면에서 한계를 갖고 있다.
    • (여러 자잘한 설명들 생략)
  • 임금불평등이라는 좁은 맥락에서 한계생산성 이론의 주된 문제는 이 이론이 서로 다른 시기의 서로 다른 국가들에서 관찰한 다양한 임금 분포 양상을 설명하지 못한다는 것이다.
    • 임금불평등의 동학을 이해하려면 각 사회 노동시장의 작동을 지배하는 제도와 규칙 같은 다른 요인들을 끌어들여야 한다.
    • 노동 시장은 특정한 규칙과 타협에 근거한 하나의 사회적 구조이며 이런 특징이 다른 시장들보다 훨씬 강하기 때문이다.
  • 1950년 이후 프랑스에 나타난 임금불평등의 전개과정을 설명하려면 최저임금의 변화가 중요하다.
    • 이 기간은 명확히 세 시기로 구분되는데, 최저임금이 조절되지 않고 임금의 계층구조가 확장된 시기(1950-1968)와, 최저임금이 상승하고 임금불평등이 급격히 줄어든 시기(1968-1983), 최저임금이 비교적 서서히 상승하고 임금불평등이 확장되는 시기(1983-현재)가 그것이다.
  • 미국에서는 프랑스보다 거의 20년 앞선 1933년 연방 최저임금제가 도입되었는데, 프랑스에서와 마찬가지로 임금불평등이 전개되는데 중요한 역할을 했다.
    • (설명 생략)
  • 미국의 임금 분포에서 최하위층의 불평등은 최저임금의 변화에 긴밀하게 반응하며 움직여왔다.
    • 임금 분포에서 하위 10%와 전체 평균 임금 간의 격차는 1980년대 상당히 벌어지다가 1990년대 좁아졌고, 2000년대 들어서는 다시 확대되었다.
    • 반면 임금 분포에서 최상위층의 불평등은 이 시기에 꾸준히 증가했다.
    • 최저임금은 임금 분포의 최하위층에는 영향을 미쳤지만, 다른 요인들이 작용하는 최상위층에 미치는 영향은 그보다 훨씬 덜하다.
    • (국내에서 최저임금 급격히 올리다가 문제가 발생한 사건도 있고, 위 설명 종합해 보면 최저임금과 불평등의 관계는 상관성이 낮다고 보는게 맞지 않을까?)

임금 체계와 최저임금

  • 최저임금제가 임금불평등의 형성과 전개에 중요한 역할을 한다는데는 의심의 여지가 없다.
    • (이하 국가별 설명 생략)
  • 최저임금제와 고정된 임금 체계는 왜 필요할까?
    • 특정 노동자의 한계생산성을 측정하기가 쉬운 것이 아니기 때문이다.
    • 한계생산성의 측정이 불확실한데 임금은 어떻게 설정되어야 할까? 경영진에게 절대 권력을 부여한다면 독단적이고 불공정한 요소가 끼어들 뿐 아니라 기업에도 비효율적일 것이다.
  • 일당 대신 월급을 지급하는 것은 혁신적인 방법이었다.
    • 이런 변화는 노동자 계급의 형성에 결정적인 단계였는데, 노동자들은 법적 지위를 누리고 안정되고 예측 가능한 보수를 받게 되었다.
    • 그리하여 18-19세기 전형적인 피용자였던 일용직 노동자, 개수급 노동자(piece worker)와 명확히 구분되었다.
  • (이하 최저임금제와 정액 임금제를 지지하는 설명 생략)
  • 요약하자면 임금을 인상하고 궁극적으로 임금불평등을 줄이는 가장 좋은 방법은 교육과 기술에 투자하는 것이다.
    • 장기적으로 최저임금과 임금제도가 임금을 5배, 10배 늘리지 못하지만, 그러한 수준의 진전을 이루기 위해서는 교육과 기술의 역할이 결정적이다.

미국에서의 불평등 폭발을 어떻게 설명할 것인가?

  • 한계생산성 이론과 교육과 기술 간의 경주 이론에서 가장 뚜렷하게 눈에 띄는 한계는 1980년 이후 미국 최상위 노동소득이 폭발적으로 증가한 현상을 적절히 설명할 수 없다는 점이다.
    • 미국의 일부 경제학자는 최상위 노동소득이 평균 임금보다 훨씬 빠른 속도로 증가한 이유는 특별한 기능들과 신기술로 인해 이 노동자들의 생산성이 훨씬 더 높아졌기 때문이라 생각한다.
  • 미국에서 임금불평등이 심화된 것은 주로 임금 분포의 최상위층, 즉 상위 1%와 더 나아가 0.1%의 임금이 높아졌기 때문이다.
    • 상위 10% 전체를 살펴보면 9%임금은 평균 노동자들보다는 빠른 속도로 인상되었지만 1%의 인상 속도에는 훨씬 못 미쳤다.
    • 교육 기간이나 교육 기관의 선택성, 전문적인 경험 등 어떤 기준을 선택해도 9%와 1% 사이의 불연속성은 찾아보기 힘들다.
  • (중간 설명 생략)
  • 이런 현상을 교육 요인에 초점을 맞추는 것은 적절하지 않다.

슈퍼경영자의 부상: 영미권 국가들의 현상

  • 또 다른 문제는 일부 선진국에서는 고액 연봉의 폭등이 일어났지만 다른 국가들에서는 그렇지 않았다는 점이다.
    • 이런 현상은 기술 변화 같은 전반적이고 선험적인 요인보다 국가 간의 제도적 차이가 이 문제에 중심적인 역할을 한다는 것을 시사한다.
  • (아래 그래프들에 대한 설명 생략)

  • 지역별 차이를 간단히 표현하면 다음과 같다.
    • 미국에서는 2000-2010년 소득불평등이 1910-1920년에 관찰되던 수준으로 되돌아갔다. 하지만 소득의 구성은 달라져서 노동으로 버는 고소득의 역할이 커지고 자본으로 얻는 고소득의 역할을 줄어들었다.
    • 영국과 캐나다에서도 같은 방향으로 변화가 일어난 반면, 유럽 대륙 국가들과 일본의 임금 불평등은 장기적인 관점에서 보면 20세기 초보다 훨씬 더 낮은 수준에 머물러 있고 실제로 1945년 이후 크게 변하지 않았다.
  • 세계의 부유한 지역들 간에 나타나는 차이가 놀라운 것은 모든 곳에서 기술 변화가 어느 정도 비슷했기 때문이다. 특히 정보기술 혁명은 미국, 영국, 캐나다 못지 않게 일본, 독일, 프랑스, 스웨덴, 덴마크에서도 영햐을 미쳤다.
    • 이런 사실을 볼 때 부유한 국가들의 소득분배 변화 과정에서 나타난 이 커다란 차이는 한계생산성 이론이나 교육과 기술 간의 경주 이론으로는 설명하기 어렵다.

1900-1910년대에는 신대륙보다 불평등했던 유럽

  • 미국이 유럽보다 항상 불평등했던 것은 아니다. 20세기 초 유럽은 소득불평등이 매우 높았다.
    • 벨 에포크 시대에는 모든 유럽 국가에서 비슷한 수준으로 소득의 집중이 나타났다. 이 시기 최상위 소득은 거의 전적으로 자본소득으로 이루어졌기 때문에 주로 자본의 집중리나는 부문에서 설명의 근거를 찾아야 한다.
    • 유럽과 비교하면 미국과 캐나다, 호주와 뉴질랜드의 불평등 정도가 더 낮았다. 벨 에포크 시대에는 신대륙, 그중에서도 가장 최근에 정착이 이뤄진 지역이 구유럽보다 더 평등했다.
  • 유럽과 일본에서 나타난 훨씬 더 높은 부의 불평등은 낮은 인구성장률로써 꽤 자연스럽게 설명된다. 인구성장률이 낮으면 거의 자동으로 자본축적과 집중이 심화된다.
  • 여기서는 국가와 대륙 간의 상대적 지위를 바꿔 놓은 변화의 크기를 설명하려는데, 이는 국민소득에서 상위 10%가 차지하는 비율의 변화 양상을 살펴보면 명확히 알 수 있다.
    • (이하 그래프 관련 설명 내용 생략)

신흥경제국에서의 불평등: 미국보다 더 낮을까?

  • (자료 수집에 대한 내용 생략)
  • 내 추정치는 도표 9.9에 제시했다. 몇 가지 점을 강조하는데 다음과 같다.
  • 가장 놀라운 결과는 가난한 신흥경제국들에서 상위 1%의 소득이 국민소득에서 차지하는 비율이 부유한 국가들과 비슷하다는 점이다.

  • (이하 그래프에 대한 설명과 자료 수집에 대한 설명 생략)

한계생산성이라는 환상

  • 앞서 언급했듯이 한계생산성 이론이나 기술과 교육 간의 경주 이론은 그다지 설득력이 없다.
    • 폭발적으로 늘어난 보수는 임금 분포상 상위 1% 혹은 0.1%에 고도로 집중되어 있는데, 어떤 나라들의 불평등에는 큰 영향을 미친 반면, 다른 나라들에는 그다지 영향을 미치지 않았다.
  • 2000-2010년 미국의 소득불평등이 과거 여러 시기에 가난한 국가와 신흥경제국에서 관찰된 수준 보다 높아졌다는 사실은 생산성의 객관적인 불평등에만 근거한 설명에 의문을 제기한다.
  • 내가 생각하기에 미국의 최상위 소득의 폭발적인 증가에 대한 가장 설득력 있는 설명은 다음과 같다.
    • 앞서 언급한 것처럼 최고소득자 중 대다수는 대기업의 고위경영자다. 이들이 받는 높은 급여를 개인적인 ‘생산성’에서 찾는 것은 순진한 생각이다.
    • (이하 한계생산성의 추정이 정확할 수 없다는 설명 생략)
  • 불확실한 정보와 인지적 어려움을 감안할 때 실제로 보수는 어떻게 결정되는 것일까?
    • (경영자의 보수는 노동자들과 다른 방식에 의해 책정된다는 내용 생략)
  • 간단히 말하면 미국과 영국에서 임금불평등이 급속도로 증대된 것은 1970-1980년 이후 양국 기업들이 극도로 후한 급여 패키지에 훨씬 관대해졌기 때문이다.
    • 유럽과 일본 기업에서도 사회 규범들이 비슷한 방향으로 진화했지만 이 경향이 더 늦게 나타났고 지금까지는 미국처럼 큰 변화가 일어나지 않았다.
    • 어떤 자료를 보더라도 고위경영진에 대한 보수의 변화가 각국의 임금불평등의 변화에 핵심적인 역할을 했음을 알 수 있다.

슈퍼경영자들의 도약: 강력한 양극화 요인

  • 분명히 말하지만 나는 지금 모든 임금불평등이 공정한 보수와 관련된 사회 규범에 의해 결정된다고 주장하는 것이 아니다.
  • 하지만 선험적으로 결코 분명하게 나타나지 않는 핵심적인 사실은 1970-1980년 이후 부유한 국가들이 보여준 서로 다른 변화 양상에서 알 수 있듯이 총임금에서 상위 1%가 차지하는 몫은 국가나 시기마다 상당히 다를 수 있다는 점이다.
    • 최상위 소득의 폭발적인 증가는 ‘극단적 능력주의’의 한 형태로 설명될 수 있다.
  • 어쨌든 최고위 경영자들에게 주어진 극도로 후한 보수는 부의 분배를 불평등하게 만든 강력한 요인이다.
    • 가장 많은 보수를 받은 개인들이 자신의 급여를 스스로 정한다면 불평등은 계속 커져 갈 것이다.
  • 경영진의 급여가 가장 빠른 속도로 상승하는 것은 외부적인 요인들로 매출과 이익이 증가할 때다.
    • 미국 기업들에서 특히 이런 현상이 뚜렷하다. 베르트랑과 멀레이너선은 이런 현상을 ‘행운의 보수’라고 부른다.

저자가 교수라서 그런지 노동자와 경영자의 역할 차이를 전혀 이해하지 못하고 있는 것이 아닐까 싶다. 노동자는 자신의 기술을 바탕으로 한 노동을 회사에 공급하고 그에 대한 보수를 받는 사람들인거고, 경영자는 회사의 자원 –여기에는 유무형의 각종 인프라 뿐만 아니라 노동자도 포함된다– 을 이용해 사업을 수행하고 그 성과를 통해 보수를 받는 사람들이다.

사업은 당연히 Risk –투자보다 사업의 Risk가 훨씬 크다– 가 따르는 것이고 그에 반대로 성과가 높을 때 그만큼의 보수가 따르는 것이다. 그렇기 때문에 회사에 이익이 발생하면 그만큼 많은 보수를 받을 수 있는 것.회사가 어려워지면 가장 유연하게 깎을 수 있는게 경영진의 임금과 성과급이지 않은가. 기업은 이익을 고려하지 않아도 되는 정부 기관이 아니다.

자신의 기술력에 대한 생산성을 대가로 확정된 임금을 지급받는 일반 노동자들과는 역할이 아예 다른데, 경영진에게도 노동자와 같은 잣대를 들이대면서 왜 그들은 높은 보수를 받을까 하는 것은 내가 보기에 현실을 전혀 모르고 하는 판단에 불과하다.

글의 내용을 미루어 짐작해 보면 왜 그들이 높은 연봉을 받는가가 아니라 어떻게 그렇게 높은 연봉을 받을 수 있었는가가 중요한거고, 그것이 가능한 이유는 그만큼 미국의 기업들이 많은 이익을 낼 수 있었기 때문이었다는 것인데, 그것은 미국 기업이 글로벌 시장에서 큰 경쟁력을 가지고 글로벌 시장의 점유율을 키웠기 때문이라고 보는게 합당하지 않을까 싶다.

안티프래질

안티프래질

여러 면에서 유명한 나심 탈레브의 책. 그가 스스로 ‘인세르토(Incerto, 불확실성)’ 라고 부르는 책의 3번째 책이다. –엄밀히 말하면 4번째이긴 한데, 3번째인 블랙스완과 함께 가라는 블랙스완에 대한 것이므로 제외하면, 3번째이고, 인세르토 시리즈는 이후의 <스킨 인 더 게임>과 함께 총 4권이라 할 수 있음.

인세트로의 첫 번째 책인 <행운에 속지 마라>가 실력과 운의 구별에 대한 것이고, <블랙 스완>이 세상은 정상 분포 범위가 아니라는 것에 대한 것이라면 이 책은 일종의 회복탄력적인 자세 중심으로 삶에 대한 자세에 대한 내용을 다루고 있다. –외부의 충격에 부러지는 것을 프래질 하다고 하고, 그에 반대 되는 모습으로 외부 충격을 이겨내고 더 튼튼해지는 것을 안티프래질이라고 정의한다.

쉽게 말하면 니체의 ‘죽을 만큼의 시련은 너를 더 강하게 한다는 것’과 같은 맥락 –물론 나심 탈레브는 니체의 그 표현을 다르게 다르게 해석해서 오히려 그 말을 비판하던데 내 입장에서는 좀 웃긴 일이었음. 참고로 순서상 마지막인 <스킨 인 더 게임> 은 책임, 리스크를 지지 않고 말로만 떠드는 사람을 믿지 말라는 내용

나심 탈레브는 좋아하는 사람도 있고, 안 좋아하는 사람도 있는데, 나는 복잡성을 대하는 태도에 대하여 그의 주장에 전반적으로 동의하지만 모든 주장에 동의하지는 않는 편이다. 이 책에도 동의하는 내용과 그렇지 않는 내용이 모두 있다.

복잡성에 대해서는 전반적으로 동의가 되지만 그 외의 내용 중에는 애매하게 느껴지는 부분도 많았다. –나심 탈레브는 설탕을 독처럼 생각하던데 그런 사람이 와인은 왜 마시는지 웃기는 일이다. 영양이 부족한 시대에 설탕은 약으로도 쓰였던 반면, 알코올은 검증된 발암 물질인데 말이지.

책 자체도 두껍고 나심 탈레브가 하고 싶었던 말이 많았는지 책이 너무 too much talk 느낌이 강하다. 책 후반부 내용은 <스킨 인 더 게임>의 내용과 거의 동일하던데, 거기서 못 다한 말을 또 책으로 낸 게 아닌가 싶었음.

내용이 나쁘지는 않고 흥미로운 내용도 많으니 나심 탈레브를 좋아한다면 읽어보면 좋을 듯.

머신 러닝 교과서/ 순환 신경망으로 시퀀스 데이터 모델링

시퀀스 데이터 소개

시퀀스 데이터 모델링: 순서를 고려한다

  • 다른 데이터 타입과 다르게 시퀀스는 특별하다. 시퀀스 원소들은 특정 순서를 가지므로 상호 독립적이지 않기 때문이다.
  • 일반적으로 지도 학습의 머신 러닝 알고리즘은 입력 데이터가 독립 동일 분포(Independent and Identically Distributed, IID)라고 가정한다.
    • 예컨대 n 개의 데이터 샘플 x^{(1)}, x^{(2)}, ... , x^{(n)} 이 있을 떄 머신 러닝 알고리즘을 훈련하기 위해 데이터를 사용하는 순서는 상관없다.
    • 시쿠너스 데이터를 다룰 때는 이런 가정이 유효하지 않다. 시퀀스는 정의 자체가 순서를 고려한 데이터이기 때문이다.

시퀀스 표현

  • 입력 데이터에서 의미 있는 순서를 가지도록 시퀀스를 구성한다. 그 다음 머신 러닝 모델이 이런 유용한 정보를 사용하도록 만들어야 한다.
  • 이 장에서는 시퀀스를 x^{(1)}, x^{(2)}, ... , x^{(T)} 처럼 나타내겠다. 위 첨자는 샘플 순서이고 T 는 시쿠너스 길이이다.
    • 시퀀스의 좋은 예시는 시계열 데이터이다. 여기서 각 샘플 포인트 x^{(t)} 는 특정 시간 t 에 속한다.
  • 아래 그림은 시계열 데이터 예를 보여준다. x y 는 시간축을 따라 순서대로 나열되어 있다. 따라서 x y 는 시퀀스 데이터이다.

  • MLP와 CNN 같이 지금까지 다룬 기본적인 신경망 모델은 입력 샘플의 순서를 다루지 못한다. 쉽게 생각해서 이런 모델은 이전에 본 샘플을 기억하지 못한다.
    • 샘플이 정방향과 역방향 단계를 통과하고 가중치는 샘플이 처리되는 순서와 상관없이 업데이트 된다.
  • 반면 RNN은 시쿠너스 모델링을 위해 고안되었다. 지난 정보를 기억하고 이를 기반으로 새로운 이벤트를 처리할 수 있다.

시퀀스 모델링의 종류

  • 시퀀스 모델링은 언어 번역, 이미지 캡셔닝, 텍스트 생성처럼 흥미로운 애플리케이션이 많이 있다.
  • 적절한 모델을 개발하기 위해 시퀀스 모델링의 종류를 이해할 필요가 있다. 아래 그림은 각기 다른 종류의 입력과 출력 데이터에 대한 관계를 보여준다.

  • 어떤 입력 데이터와 출력 데이터가 있다고 가정하자. 입력과 출력 데이터가 시퀀스로 표현되지 않는다면 일반 데이터로 처리한다.
    • 이런 데이터를 모델링하려면 MLP나 CNN 같은 방법 중 하나를 사용할 수 있다.
  • 만일 입력이나 출력이 시퀀스라면 데이터는 다음 세 가지 중 하나로 구성된다.
    • 다대일(many-to-one): 입력 데이터가 시퀀스이다. 출력은 시퀀스가 아니라 고정 크기의 벡터이다. 예컨대 감성 분석에서 입력은 텍스트고 출력은 클래스 레이블이다.
    • 일대다(one-to-many): 입력 데이터가 시퀀스가 아니라 일반적인 형태이다. 출력은 시퀀스이다. 이런 종류의 예로는 이미지 캡셔닝이 있다. 입력이 이미지고 출력은 영어 문장이다.
    • 다대다(many-to-many): 입력과 출력 배열이 모두 시퀀스이다. 이런 종류는 입력과 출력이 동기적인지 아닌지에 따라 더 나눌 수 있다. 동기적인 다대다 모델링의 작업의 에는 각 프레임이 레이블되어 있는 비디오 분류이다. 그렇지 않은 다대다 모델의 예는 한 언어에서 다른 언어로 번역하는 작업이다.

시퀀스 모델링을 위한 RNN

RNN 구조와 데이터 흐름 이해

  • RNN 구조를 소개하겠다. 아래 그림에 비교를 위해 기본 피드포워드 신경망과 RNN을 나란히 놓았다.

  • 두 네트워크 모두 하나의 은닉층만 있다. 위 그림에서는 유닛을 표시하지 않았다.
    • 입력층(x ), 은닉층(h ), 출력층(y ) 모두 벡터고 여러 개의 유닛이 있다고 가정한다.
  • 기본 피드포워드 네트워크에서 정보는 입력에서 은닉층으로 흐른 후 은닉층에서 출력층으로 전달된다.
    • 반면 순환 네트워크에서는 은닉층이 입력층과 이전 타임 스텝(time step)의 은닉층으로부터 정보를 받는다.
    • 인접합 타임 스텝의 정보가 은닉층에 흐르기 때문에 네트워크가 이전 이벤트를 기억할 수 있다.
    • 이런 정보 흐름을 보통 루프(loop)로 표시한다. 그래프 표기법에서는 순환 에지(recurrent edge)라고도 하기 때문에 이 구조 이름이 여기서 유래되었다.
    • 아래 그림은 하나의 은닉층을 가진 순환 네트워크와 다층 순환 네트워크를 비교하여 보여준다.

  • RNN 구조와 정보 흐름을 설명하게 위해 순환 에지를 위 그림과 같이 펼쳐서 나타낼 수 있다.
  • 표준 신경망의 은닉 유닛은 입력층에 연결된 최종 입력 하나만 받는다. 반면 RNN의 은닉 유닛은 두 개의 다른 입력을 받는다.
    • 입력층으로부터 받은 입력과 같은 은닉층에서 t - 1 타임 스텝의 활성화 출력을 받는다.
    • 맨 처음 t = 0 에서는 은닉 유닛이 0 또는 작은 난수로 초기화 된다.
    • t > 0 인 타임 스텝에서는 은닉 유닛이 현재 타입 스텝의 데이터 포인트 x^{(t)} 와 이전 타입 스텝 t-1 의 은닉 유닛 값 h^{(t-1)} 을 입력으로 받는다.
  • 비슷하게 다층 RNN의 정보 흐름을 다음과 같이 요약할 수 있다.
    • layer=1: 은닉층의 출력을 h_{1}^{(t)} 로 표현한다. 데이터 포인트 x^{(t)} 와 이 은닉층의 이전 타입 스텝 출력 h_{1}^{(t-1)} 을 입력으로 받는다.
    • layer=2: 두 번째 은닉층의 h_{2}^{(t)} 는 이전 층의 현재 타임 스텝 출력 h_{1}^{(t)} 와 이 은닉층의이전 타임 스텝 출력 h_{2}^{(t-1)} 을 입력으로 받는다.

RNN의 활성화 출력 계산

  • RNN의 구조와 일반적인 정보 흐름을 이해했으므로 구체적으로 운닉층과 출력층의 실제 활성화 출력을 계산해 보겠다.
    • 간소하게 나타내기 위해 하나의 은닉층만 고려하지만 다층 RNN에도 동일한 개념이 적용된다.
  • 그림 16-4에서 유향 에지(directed edge)는 가중치 행렬과 연관된다. 이 가중치는 특정 시간 t 에 종속적이지 않고 전체 시간 축에 공유된다.
  • 단일층 RNN의 각 가중치는 다음과 같다.
    • W_{xh} : 입력 x^{(t)} 와 은닉층 h 사이의 가중치 행렬
    • W_{hh} : 순환 에지에 연관된 가중치 행렬
    • W_{hy} : 은닉층과 출력층 사이의 가중치 행렬
  • 아래 그림에 이 가중치를 나타냈다.

  • 구현에 따라 가중치 행렬 W_{xh} W_{hh} 를 합쳐 연결된 행렬 W_{h} = [W_{xh};W_{hh}] 를 사용한다. 나중에 이런 방식을 사용해 보겠다.
  • 활성화 출력의 계산은 기본적인 다층 퍼셉트론이나 다른 피드포워드 신경망과 매우 비슷하다.
    • 은닉층의 최종 입력 z_{h} (활성화 함수를 통과하기 전의 값)는 선형 조합으로 계산한다.
    • 즉, 가중치 행렬과 대응되는 벡터를 곱해서 더한 후 절편 유닛을 더한다. (z_{h}^{(t)} = W_{xh} x^{(t)} + W_{hh} h^{(t-1)} + b_{h} )
    • 그 다음 타입 스텝 t 에서 은닉층의 활성화를 계산한다.

h^{(t)} = \phi_{h} (z_{h}^{(t)}) = \phi_{h} (W_{xh} x^{(t)} + W_{hh} h^{(t-1)} + b_{h})

  • 여기서 b_{h} 은 은닉 유닛의 절편 벡터이고 \phi_{h}(\cdot) 는 은닉층의 활성화 함수이다.
  • 가중치 행렬을 W_{h} = [W_{xh};W_{hh}] 처럼 연결하면 은닉 유닛의 계산 공식은 다음과 같이 바뀐다.

h^{(t)} = \phi_{h}( [W_{xh};W_{hh}] \ \left[ \begin{array}{rr} x^{(t)} \\ h^{(t-1)} \end{array} \right] + b_{h} )

  • 현재 타임 스텝에서 은닉 유닛의 활성화 출력을 계산한 후 출력 유닛의 활성화를 다음과 같이 계산한다.

y^{(t)} = \phi_{y} (W_{hy} h^{(t)} + b_{y})

  • 이해를 돕기 위해 아래 그림에 두 공식으로 활성화 출력을 계산하는 과정을 나타냈다.

긴 시퀀스 학습의 어려움

  • 앞서 노트에서 간략히 소개한 BPTT(BackPropagation Through Time)는 새로운 도전 과제가 되었다.
  • 손실 함수의 그래디언트를 계산할 때 곱셈 항인 {\partial h^{(t)} \over \partial h^{(k)}} 때문에 소위 그래디언트 폭주(exploding gradient) 또는 그래디언트 소실(vanishing gradient) 문제가 발생한다.
    • 이 문제를 아래 그림에서 하나의 은닉 유닛이 있는 예를 들어서 설명하겠다.

  • {\partial h^{(t)} \over \partial h^{(k)}} t - k 개의 곱셈으로 이루어진다. 즉, 가중치 w t-k 번 곱해져 w_{t-k} 가 된다.
    • 결국 |w| < 1 이면 t-k 가 클 때 이 항이 매우 작아진다.
    • 반면 순환 에지의 가중치 값이 |w|>1 이면 t-k 가 클 때 w_{t-k} 가 매우 커진다.
    • t-k 값이 크다는 것은 긴 시간 의존성을 가진다는 의미이다.
  • 그래디언트 소실이나 폭주를 피하는 간단한 해결책은 |w| = 1 이 되도록 만드는 것이다. 자세한 정보는 관련 논문을 참고하고 실전에서 이 문제의 해결책은 다음과 같다.
    • T-BPTT(Truncated BackPropagation Through Time)
    • LSTM(Long Short-Term Memory)
  • T-BPTT는 주어진 타임 스텝 너머의 그래디언트를 버린다. T-BPTT가 그래디언트 폭주 문제를 해결할 수 있지만 그래디언트가 시간을 거슬러 적절하게 가중치가 업데이트 될 수 있는 타임 스텝을 제한한다.
  • 다른 방법으로 1997년 호크라이더(Hochreiter)와 슈미트후버(Schmidhuber)가 고안한 LSTM은 그래디언트 소실 문제를 극복하여 긴 시퀀스를 성공적으로 모델링할 수 있게 되었다.

LSTM 유닛

  • LSTM은 그래디언트 소실 문제를 극복하기 위해 처음 소개되었다. LSTM의 기본 구성요소는 은닉층을 의미하는 메모리 셀(memory cell)이다.
  • 이전에 언급 했듯이 그래디언트 소실과 폭주 문제를 극복하기 위해 메모리 셀에 적절한 가중치 w = 1 를 유지하는 순환 에지가 있다. 이 순환 에지의 출력을 셀 상태(cell state)라고 한다.
    • 자세한 LSTM 구조가 아래 그림에 나타나 있다.

  • 이전 타임 스텝의 셀 상태 C^{(t-1)} 은 어떤 가중치와도 직접 곱해지지 않고 변경되어 현재 타임 스텝의 셀 상태 C^{(t)} 를 얻는다.
  • 메모리 셀의 정보 흐름은 다음에 기술된 몇 개의 연산으로 제어된다.
    • 위 그림에서 \odot 는 원소별 곱셈(element-wise multiplication), \oplus 는 원소별 덧셈(element-wise addition)을 나타낸다.
    • x^{(t)} 는 타임 스텝 t 에서 입력 데이터고 h^{(t-1)} 는 타임 스텝 t-1 에서 은닉 유닛의 출력이다.
    • 네 개의 상자는 시그모이드 함수(\sigma )나 하이퍼볼릭 탄젠트(tanh) 활성화 함수와 일련의 가중치로 표시된다.
    • 이 상자는 입력에 대해 행렬-벡터 곱셈을 수행한 후 선형 조합된다.
    • 시그모이드 함수로 계산하는 유닛을 게이트(gate)라고 하며 \odot 을 통해 출력된다.
  • LSTM 셀에는 세 종류의 게이트가 있다. 삭제 게이트(forget gate), 입력 게이트(input gate), 출력 게이트(output gate)이다.
  • 삭제 게이트(f_{t} )는 메모리 셀이 무한정 성장하지 않도록 셀 상태를 다시 설정한다.
    • 사실 삭제 게이트가 통과할 정보와 억제할 정보를 결정한다.
    • f_{t} 는 다음과 같이 계산된다.

f_{t} = \sigma (W_{xf} x^{(t)} + W_{hf} h^{(t-1)} + b_{f})

  • 삭제 게이트는 원본 LSTM 셀에 포함되어 있지 않았다. 초기 모델을 향상시키기 위해 몇 년 후에 추가되었다.
  • 입력 게이트(i_{t} )와 입력 노드(g_{t} )는 셀 상태를 업데이트하는 역할을 담당하며 다음과 같이 계산한다.

i_{t} = \sigma (W_{xi} x^{(t)} + W_{hi} h^{(t-1)} + b_{i})

g_{t} = tanh(W_{xg} x^{(t)} + W_{hg} h^{(t-1)} + b_{g})

  • 타임 스텝 t 에서 셀 상태는 다음과 같이 계산한다.

C^{(t)} = (C^{(t-1)} \odot f_{t}) \oplus (i_{t} \odot g_{t})

  • 출력 게이트 (o_{t} )는 은닉 유닛의 출력 값을 업데이트 한다.

o_{t} = \sigma (W_{xo} x^{(t)} + W_{ho} h^{(t-1)} + b_{o})

  • 이를 가지고 현재 타임 스텝에서 은닉 유닛의 출력을 다음과 같이 계산한다.

h^{(t)} = o_{t} \odot tanh(C^{(t)})

  • LSTM 셀의 구조와 연산이 매우 복잡해 보일 수 있다. 다행히 텐서플로의 tf.keras API에 래퍼 함수로 이미 모두 구현되어 있어서 간단하게 LSTM 셀을 정의할 수 있다.

텐서플로의 tf.keras API로 시퀀스 모델링을 위한 다층 RNN 구현

  • RNN 이론을 소개했으므로 tf.keras API를 사용하여 RNN을 구현하는 구체적인 단계로 넘어가 보겠다. 이 장 나머지에서 두 개의 문제에 RNN을 적용하겠다.
    • 감성 분석
    • 언어 모델링

첫 번째 프로젝트: 다층 RNN으로 IMDb 영화 리뷰의 감성 분석 수행

데이터 준비

  • 8장의 전처리 단계에서 만든 정제된 데이터셋인 movie_data.csv 파일을 다시 사용하겠다.
import pyprind
import pandas as pd
from string import punctuation
import re
import numpy as np

df = pd.read_csv('movie_data.csv', encoding='utf-8')
  • 데이터프레임 df에는 ‘review’와 ‘sentiment’ 두 개의 컬럼이 있다.
    • ‘review’ 에는 영화 리뷰 텍스트가 담겨 있고 ‘sentiment’에는 0 또는 1 레이블이 들어 있다. 영화 리뷰 텍스트는 단어의 시퀀스이다.
    • RNN 모델을 만들어서 시퀀스 단어를 처리하고 마지막에 전체 시퀀스를 0 또는 1 클래스로 분류해보자.
  • 신경망에 주입할 입력 데이터를 준비하기 위해 텍스트를 정수 값으로 인코딩해야 한다. 이를 위해 전체 데이터셋에서 고유한 단어를 먼저 찾아야 한다.
    • 파이썬의 set를 사용할 수 있지만, 대규모 데이터셋에서 고유한 단어를 찾는데 집합을 사용하는 것은 효율적이지 않으므로 collection 패키지에 있는 Counter를 사용하자.
  • 아래 코드에서 Counter 클래스의 counts 객체를 정의하고 텍스트에 있는 모든 고유한 단어의 등장 횟수를 수집한다.
    • 특히 이 애플리케이션은 (BoW(Bag-ofWord) 모델과 달리) 고유한 단어의 집합만 고나심 대상이고 부수적으로 생성된 단어 카운트는 필요하지 않다.
    • 그 다음 데이터셋의 고유한 단어를 정수 숫자로 매핑한 딕셔너리를 만든다. 이 word_to_int 딕셔너리를 이용하여 전체 텍스트를 정수 리스트로 변환하겠다.
    • 고유한 단어가 카운트 순으로 정렬되어 있지만 순서는 최종 결과에 영향을 미치지 않는다.
from collections import Counter

counts = Counter()
pbar = pyprind.ProgBar(len(df['review']), title='단어의 등장 횟수를 카운트 한다')

for i, review in enumerate(df['review']):
    text = ''.join([c if c not in punctuation else ' ' + c + ' ' for c in review]).lower()
   df.loc[i, 'review'] = text
    pbar.update()
    counts.update(text.split())

word_counts = sorted(counts, key=counts.get, reverse=True)
print(word_counts[:5])

word_to_int = {word: ii for ii, word in enumerate(word_counts, 1)}

mapped_reviews = []
pbar = pyprind.ProgBar(len(df['review']), title='리뷰를 정수로 매핑합니다')

for review in df['review']:
    mapped_reviews.append([word_to_int[word] for word in review.split()])
    pbar.update()
  • 단어 시퀀스를 정수 시퀀스로 변환했지만 한 가지 풀어야 할 문제가 있다. 이 시퀀스들은 길이가 서로 다르다. RNN 구조에 맞게 입력 데이터를 생성하려면 모든 시퀀스가 동일한 길이를 가져야 한다.
    • 이를 위해 sequence_length 파라미터를 정의하고 200으로 값을 설정한다.
    • 200개의 단어보다 적은 시퀀스는 왼쪽에 0으로 패딩된다. 반대로 200개의 단어보다 긴 시퀀스는 마지막 200개의 단어만 사용하도록 잘라낸다.
    • 두 단계로 전처리 과정을 구현하면 다음과 같다.
      1. 행 길이가 시퀀스 크기 200에 해당하는 행렬을 만들고 0으로 채운다.
      2. 행렬 오른쪽부터 시퀀스의 단어 인덱스를 채운다. 시퀀스 길이가 150이면 이 행의 처음 50개 원소는 0으로 남는다.
    • 이 두 단계를 그림으로 나타내면 아래와 같다.

  • 사실 sequence_length는 하이퍼파라미터이므로 최적의 성능을 위해 튜닝해야 한다.
    • 여기서는 지면 관계상 생략했지만 sequence_length를 바꾸어보며 시도해 볼 것.
  • 코드는 아래와 같다.
sequence_length = 200
sequences = np.zeros((len(mapped_reviews), sequence_length), dtype=int)

for i, row in enumerate(mapped_reviews):
    review_arr = np.array(row)
    sequences[i, -len(row):] = review_arr[-sequence_length:]
  • 데이터셋을 전처리한 후 데이터를 훈련 세트와 테스트 세트로 나눈다. 이미 무작위로 섞여 있기 때문에 75%를 훈련 세트로, 25%를 테스트 세트로 사용한다.
    • 훈련 세트 중 일부를 모델의 fit 메서드를 호출할 때 검증 세트로 지정하겠다.
X_train = sequences[:37500, :]
y_train = df.loc[:37499, 'sentiment'].values

X_test = sequences[37500:, :]
y_test = df.loc[37500:, 'sentiment'].values

임베딩

  • 이전의 데이터 준비 단계에서 동일한 길이의 시퀀스를 생성했다. 이 시퀀스의 원소는 고유한 단어의 인덱스에 해당하는 정수 숫자이다.
    • 이런 단어 인덱스를 입력 특성을 변환하는 몇 가지 방법이 있다. 간단하게 원-핫 인코딩을 적용하여 인덱스를 0 또는 1로 이루어진 벡터로 변환할 수 있다.
    • 각 단어는 전체 데이터셋의 고유한 단어의 수에 해당하는 크기를 가진 벡터로 변환된다. 고유한 단어의 수가 2만 개라면 입력 특성 개수는 2만개가 된다.
    • 이렇게 많은 특성에서 훈련된 모델은 차원의 저주(curse of dimensionality)로 인한 영향을 받는다.
    • 또 하나를 제외하고 모든 원소가 0이므로 특성 벡터가 매우 희소해진다.
  • 좀 더 고급스러운 방법은 각 단어를 실수 값을 가진 고정된 길이의 벡터로 변환하는 것이다. 원-핫 인코딩과 달리 고정된 길이의 벡터를 사용하여 무한히 많은 실수를 표현할 수 있다.
  • 임베딩(embedding)이라고 하는 특성 학습 기법을 사용하여 데이터셋에 있는 단어를 표현하는데 중요한 특성을 자동으로 학습할 수 있다.
    • 고유한 단어의 수를 unique_words 라고 하면 고유 단어의 수보다 훨씬 작게(embedding_size << unique_words) 임베딩 벡터 크기를 선택하여 전체 어휘를 입력 특성으로 나타낸다.
  • 원-핫 인코딩에 비해 임베딩의 장점은 다음과 같다.
    1. 특성 공간의 차원이 축소되므로 차원의 저주로 인한 영향을 감소 시킨다.
    2. 신경망에서 임베딩 층이 훈련되기 때문에 중요한 특성이 추출된다.
  • 아래 그림은 임베딩이 어휘 사전의 인덱스를 어떻게 훈련 가능한 임베딩 행렬로 매핑하는지 보여준다.

  • 텐서플로에는 고유한 단어에 해당하는 정수 인덱스를 훈련 가능한 임베딩 행렬의 행으로 매핑해 주는 tf.keras.layers.Embedding 클래스가 구현되어 있다.
    • 예컨대 정수 1이 첫 번째 행으로 매핑되고 정수 2는 두 번째 행에 매핑되는 식이다.
    • <0, 5, 3, 4, 19, 2, … > 처럼 정수 시퀀스가 주어지면 시퀀스의 각 원소에 해당하는 행을 찾는다.
  • 실제로 임베딩 층을 어떻게 만드는지 알아보자. Sequential 모델을 만들고 [n_words x embedding_size] 크기의 Embedding 층을 추가하면 된다.
from tensorflow.keras import models, layers

model = models.Sequential()
model.add(layers.Embedding(n_words, 200, embeddings_regularizer='l2'))
  • Embedding 클래스의 첫 번째 매개변수는 입력 차원으로 어휘 사전의 크기가 된다. 앞서 word_to_int 크기에 1을 더해 n_words를 구했다.
    • 두 번째 매개변수는 출력 차원이다. 여기서는 200차원의 벡터로 단어를 임베딩한다.
    • 다른 층과 마찬가지로 임베딩 층도 가중치를 규제할 수 있는 매개변수를 지원한다. 이 예제에서는 L2 규제를 추가했다. 가중치 초기화는 기본적으로 균등 분포를 사용한다.
    • embeddings_initializer 매개변수에서 다른 초기화 방법을 지정할 수 있다.
  • 임베딩 층을 추가한 후에 summary 메서드로 모델 구조를 출력해 보자.
model.summary()

### 결과
# _________________________________________________________________
# Layer (type) Output Shape Param #
# =================================================================
# embedding (Embedding) (None, None, 200) 20593400
# =================================================================
# Total params: 20,593,400
# Trainable params: 20,593,400
# Non-trainable params: 0
  • 임베딩 층의 출력은 3차원 텐서이다. 첫 번째 차원은 배치 차원이고, 두 번째 차원은 타임 스텝이다. 마지막 차원이 임베딩 벡터의 차원이다.
    • 앞서 n_words 크기가 102,967이었으므로 200차원을 곱하면 전체 모델 파라미터 개수는 20,593,400이 된다.

RNN 모델 만들기

  • 이제 본격적으로 RNN 층을 추가할 차례다. 여기서는 긴 시퀀스를 학습하는데 유리한 tf.keras.layers.LSTM 층을 사용하겠다. 이 LSTM 층은 16개의 순환 유닛을 사용한다.
model.add(layers.LSTM(16))
  • LSTM 층의 첫 번째 매개변수는 유닛 개수이다. 나머지 매개변수는 모두 기본값을 사용한다.
    • 몇 가지 언급할 만한 매개변수가 있는데, activation 매개변수는 히든 상태(층의 출력)에 사용할 활성화 함수를 지정한다. 기본 값은 ‘tanh’이다.
    • recurrent_activation은 셀 상태에 사용할 활성화 함수를 지정한다. 기본값은 ‘hard_sigmoid’이다.
  • 순환층에도 드롭아웃을 추가할 수 있다. dropout 매개변수는 히든 상태를 위한 드롭아웃 비율을 지정하며, recurrent_dropout은 셀 상태를 위한 드롭아웃 비율을 지정한다.
    • 기본값은 0이다.
  • 기본적으로 순환층은 마지막 타임 스텝의 히든 상태만 출력한다. 이는 마지막 출력 값을 사용하여 모델을 평가하는데 사용하기 때문이다.
    • 만약 두 개 이상의 순환층을 쌓는다면 아래층에서 만든 모든 스텝의 출력이 위층 입력으로 전달되어야 한다. 이렇게 하려면 return_sequences 매개변수를 True로 지정해야 한다.
  • 순환층을 추가한 후에는 출력층에 연결하기 위해 펼쳐야 한다. 앞서 합성곱 신경망에서 보았던 것과 유사하다.
    • 감성 분석은 긍정 또는 부정 리뷰를 판단하는 것이므로 출력층의 유닛은 하나이고, 활성화 함수는 시그모이드 함수를 사용한다.
model.add(layers.Flatten())
model.add(layers.Dense(1, activation='sigmoid'))
  • 순환 신경망 모델이 만들어졌다. 완전 연결 신경망이나 합성곱 신경망 보다 어렵지 않다. 전체 모델 구조를 살펴보자.
model.summary()

### 결과
# _________________________________________________________________
# Layer (type) Output Shape Param #
# =================================================================
# embedding (Embedding) (None, None, 200) 20593400
# _________________________________________________________________
# lstm (LSTM) (None, 16) 13888
# _________________________________________________________________
# flatten (Flatten) (None, 16) 0
# _________________________________________________________________
# dense (Dense) (None, 1) 17
# =================================================================
# Total params: 20,607,305
# Trainable params: 20,607,305
# Non-trainable params: 0
  • LSTM 층의 출력 크기는 (None, 16)이다. 첫 번째 차원은 배치 차원이고, 두 번째 차원은 셀의 출력(유닛 개수) 차원이다. LSTM 층이 가지는 모델 파라미터 개수는 13,888개 이다.
  • 좀 더 자세히 분석해 보자. 먼저 삭제 게이트(f_{t} )에 필요한 모델 파라미터를 계산해 보자.
    • 임베딩된 입력 벡터와 곱해지는 W_{xf} 는 (16, 200) 차원이고 이전 셀의 히든 상태와 곱해지는 W_{hf} 는 (16, 16) 차원이다. 마지막으로 절편은 유닛마다 하나씩 있으므로 b_{f} 는 (16,) 차원이다. 이를 모두 더하면 16 x 200 + 16 x 16 + 16 = 2,472 개이다.
    • LSTM 층에는 삭제 게이트와 같은 계산이 세 개 더 있다. i_{t}, g_{t}, o_{t} 이다. 이들 모두 동일한 차원의 가중치 두 개와 절편을 가진다. 따라서 LSTM 층에 있는 전체 모델 파라미터는 3,472 x 4 = 13,888개가 된다.
    • 마지막 Dense 층은 16개의 입력을 처리하기 위한 가중치와 절편을 합쳐서 17개의 모델 파라미터가 있다.

감성 분석 RNN 모델 훈련

  • 모델 구성을 완료 했으므로 Adam 옵티마이저를 사용하여 모델을 컴파일해 보자. 감성 분석 문제는 이진 분류 문제이므로 손실 함수는 binary_crossentropy로 지정한다.
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['acc'])
  • 합성곱 신경망에서 했던 ㄱ서처럼 가장 좋은 검증 점수의 모델 파라미터를 체크포인트로 저장하고 텐서보드를 취한 출력을 지정하겠다.
import time
from tensorflow.keras.callbacks import ModelCheckpoint, TensorBoard

callback_list = [ModelCheckpoint(filepath='sentiment_rnn_checkpoint.h5', monitor='val_loss', save_best_only=True), TensorBoard(log_dir="sentiment_rnn_logs/{}".format(time.asctime()))]

# 역시나 log_dir 폴더가 안 만들어져서 그냥 TensorBoard()만 사용
# callback_list = [ModelCheckpoint(filepath='sentiment_rnn_checkpoint.h5', monitor='val_loss', save_best_only=True), TensorBoard()]
  • 이제 모델을 훈련할 단계이다. 배치 크기는 64로 지정하고 열 번 에포크 동안 훈련하겠다.
    • validation_split을 0.3으로 지정하여 전체 훈련 세트의 30%를 검증 세트로 사용한다.
history = model.fit(X_train, y_train, batch_size=64, epochs=10, validation_split=0.3, callbacks=callback_list)
  • fit 메서드에서 반환된 history 객체에서 손실과 정확도를 추출하여 그래프로 그려보자. 먼저 손실 점수에 대한 그래프이다.
import matplotlib.pyplot as plt

epochs = np.arange(1, 11)

plt.plot(epochs, history.history['loss'])
plt.plot(epochs, history.history['val_loss'])
plt.xlabel('epochs')
plt.ylabel('loss')
plt.show()

  • 정확도 그래프를 그려보자.
epochs = np.arange(1, 11)

plt.plot(epochs, history.history['acc'])
plt.plot(epochs, history.history['val_acc'])
plt.xlabel('epochs')
plt.ylabel('loss')
plt.show()

  • 출력 결과를 보면 2번째 에포크만에 손실이 크게 감소하고 정확도가 상승한 것을 볼 수 있다.
    • 그 이후에는 훈련 정확도와 간격을 두며 검증 정확도가 조금씩 상승하고 있다. 이런 효과는 임베딩 층에 L2 규제를 추가했기 때문이다.
    • 임베딩 층에 규제가 없다면 훈련 세트에 금방 과대적합될 것이다.

감성 분석 RNN 모델 평가

  • 훈련 과정에서 만들어진 최상의 체크포인트 파일을 복원하여 테스트 세트에서 성능을 평가해보자.
    • 체크 포인트를 복원 하려면 모델의 load_weights 메서드를 사용하면 된다.
model.load_weights('sentiment_rnn_checkpoint.h5')
model.evaluate(X_test, y_test)

### 결과
# ...======] - 27s 2ms/sample - loss: 0.4732 - acc: 0.8777
  • evaluate 메서드는 기본적으로 손실 점수를 반환한다. 만약 compile 메서드의 metrics 매개변수에 측정 지표를 추가했다면 반환되는 값이 늘어난다.
    • 앞서 반환된 결과의 첫 번째 원소는 손실 점수고, 두 번째는 정확도 이다.
    • LSTM 층 하나로 테스트 세트에서 87% 정도의 정확도를 달성했는데, 8장에서 얻은 테스트 정확도와 비교할 만하다.
  • 샘플의 감성 분석 결과를 출력하려면 predict 메서드를 사용한다.
    • 이전 장에서 보았듯이 predict 메서드는 확률 값을 반환한다. 감성 분석 예제는 이진 분류 문제이므로 양성 클래스, 즉 긍정 리뷰일 확률을 반환한다.
    • Sequential 클래스는 predict 메서드와 동일하게 확률을 반환하는 predict_proba 메서드를 제공한다.
    • 의도를 분명하게 하기 위해 predict_proba 메서드로 테스트 샘플 열 개의 확률을 출력해 보자.
print(model.predict_proba(X_test[:10]))

### 결과
# [[0.00631011]
# [0.00777742]
# [0.00151676]
# [0.95133054]
# [0.99530613]
# [0.9786582 ]
# [0.00557807]
# [0.8497387 ]
# [0.00201363]
# [0.5879719 ]]
  • 다중 분류에서는 가장 큰 확률의 레이블이 예측 클래스가 되고 이진 분류 문제에서는 0.5보다 크면 양성 클래스가 된다.
    • 간단하게 0.5보다 큰 값을 구분할 수 있지만 Sequential 클래스는 친절하게 이를 위한 predict_classes 메서드도 제공한다.
print(model.predict_classes(X_test[:10]))

### 결과
# [[0]
# [0]
# [0]
# [1]
# [1]
# [1]
# [0]
# [1]
# [0]
# [1]]
  • 최적화를 위해 LSTM 층의 유닛 개수, 타임 스텝의 길이, 임베딩 크기 같은 모델의 하이퍼파라미터를 튜닝하면 더 높은 일반화 성능을 얻을 수 있다.
    • 6장에서 설명한 것처럼 테스트 데이터를 사용하여 편향되지 않은 성능을 얻으려면 평가를 위해 테스트 세트를 반복적으로 사용하면 안된다는 점에 주의하라.

두 번째 프로젝트: 텐서플로로 글자 단위 언어 모델 구현

  • 언어 모델링(language modeling)은 영어 문장 생성처럼 기계가 사람의 언어와 관련된 작업을 수행하도록 만드는 흥미로운 애플리케이션이다.
    • 이 분야에서 관심을 끄는 결과물 중 하나는 서스키버(Sutskever), 마틴(Martens), 힌튼(Hinton)의 작업이다.
  • 앞으로 만들 모델의 입력은 텍스트 문장이다. 목표는 입력 문서와 비슷한 새로운 텍스트를 생성하는 모델을 개발하는 것이다.
    • 입력 데이터는 책이나 특정 프로그래밍 언어로 쓰여진 컴퓨터 프로그램일 수 있다.
  • 글자 단위 언어 모델링에서 입력은 글자의 시퀀스로 나뉘어 한 번에 글자 하나씩 네트워크에 주입된다.
    • 이 네트워크는 지금까지 본 글자와 함께 새로운 글자를 처리하여 다음 글자를 예측한다.
    • 아래 그림은 글자 단위 언어 모델링의 예이다.

  • 데이터 전처리, RNN 모델 구성, 다음 글자를 예측하고 새로운 텍스트를 생성하는 세 개의 단계로 나누어 구현하겠다.
  • 이 장의 서두에서 그래디언트 폭주 문제를 언급했는데, 이 애플리케이션에서 그래디언트 폭주 문제를 피하기 위해 그래디언트 클리핑 기법을 사용해 보겠다.

데이터 전처리

  • 글자 수준의 언어 모델링을 위한 데이터를 준비하자.
    • 수천 권의 무료 전자책을 제공하는 구텐베르크 프로젝트 웹사이트에서 입력 데이터를 구하겠다. 이 예에서는 셰익스피어의 햄릭 텍스트를 사용하겠다. (http://www.gutenberg.org/cache/epub/2265/pg2265.txt)
  • 데이터가 준비되면 파이썬에서 일반 텍스트로 읽는다.
    • 다음 코드에서 파이썬 매개변수 chars는 이 텍스트에 있는 고유한 글자 집합이다.
    • 그 다음 각 글자와 정수를 매핑한 딕셔너리 char2int와 거꾸로 정수와 글자를 매핑한 int2char 딕셔너리를 만든다.
    • char2int 딕셔너리를 사용하여 텍스트를 넘파이 정수 배열로 변환한다.
    • 아래 그림은 변환 예시이다.

import numpy as np

with open('pg2265.txt', 'r', encoding='utf-8') as f:
    text = f.read()

text = text[15858:]
chars = set(text)
char2int = {ch:i for i, ch in enumerate(chars)}
int2char = dict(enumerate(chars))
text_ints = np.array([char2int[ch] for ch in text], dtype=np.int32)

print(len(text))
print(len(chars))

### 결과
# 163237
# 68
  • 이 텍스트를 char2int 딕셔너리를 사용하여 모두 정수로 바꾸어 text_ints 배열에 저장했다.
  • 데이터 전처리에서 가장 중요한 단계는 이 데이터를 시퀀스의 배치로 바꾸는 작업이다. 지금까지 본 글자 시퀀스를 기반으로 새로운 글자를 예측하는 것이 목적이다.
    • 따라서 신경망의 입력(x )과 출력(y )을 한 글자씩 이동한다.
    • 텍스트 데이터셋에서 데이터 배열 x y 를 생성하는 것부터 시작해서 아래 그림에 이 전처리 단계를 나타냈다.

  • 그림에서 볼 수 있듯이 훈련 배열 x y 는 동일한 크기 또는 차원을 가진다. 행 개수는 배치 크기와 같고, 열 개수는 배치 횟수 x 스텝 횟수이다.
  • 텍스트 데이터의 글자를 표현한 정수 입력 배열 data가 주어지면 다음 함수는 위의 그림과 동일한 구조의 x y 를 만든다.
def reshape_data(sequence, batch_size, num_steps):
    mini_batch_length = batch_size * num_steps
    num_batches = int(len(sequence) / mini_batch_length)

   if num_batches * mini_batch_length + 1 > len(sequence):
       num_batches = num_batches - 1   

   x = sequence[0: num_batches * mini_batch_length]
    y = sequence[1: num_batches * mini_batch_length + 1]

   x_batch_splits = np.split(x, batch_size)
    y_batch_splits = np.split(y, batch_size)

    x = np.stack(x_batch_splits)
    y = np.stack(y_batch_splits)

    return x, y
  • 시퀀스 길이를 10으로 가정하고 reshape_data 함수를 사용하여 배치 크기 64에 맞게 데이터를 바꾸어 보자.
train_x, train_y = reshape_data(text_ints, 64, 10)

print(train_x.shape)
print(train_x[0, :10])
print(train_y[0, :10])
print(''.join(int2char[i] for i in train_x[0, :10]))
print(''.join(int2char[i] for i in train_y[0, :10]))

### 결과
# (64, 2550)
# [49 48 2 63 48 14 2 38 49 48]
# [48 2 63 48 14 2 38 49 48 40]
# e of more
# of more t
  • text_ints를 64개의 행을 가진 2차원 배열 train_x와 train_y로 바꾸었다. train_x 크기를 출력해 보면 배치 크기의 행이 만들어진 것을 확인할 수 있다.
    • train_x와 train_y를 정수 크기대로 출력하고 int2char 딕셔너리를 사용하여 문자로도 출력했다.
    • 출력 결과를 보면 train_y가 한 글자씩 밀려 있다는 것을 확인할 수 있다.
  • 다음 단계에서 배열 x y 를 나누어 열 길이가 스텝 횟수와 동일한 미니 배치를 만든다. 데이터 배열 x 를 나누는 과정이 아래 그림에 나와있다.

  • 다음 코드에서 위 그림에 나온 데이터 배열 x y 를 나누어 배치를 출력하는 create_batch_generator를 정의한다.
    • 차후에 이  제너레이터를 사용하여 네트워크를 훈련하는 동안 미니 배치를 반복하겠다.
def create_batch_generator(data_x, data_y, num_steps):
    batch_size, tot_batch_length = data_x.shape[0:2]
    num_batches = int(tot_batch_length/num_steps)

    for b in range(num_batches):
        yield (data_x[:, b * num_steps:(b+1) * num_steps], data_y[:, b * num_steps: (b+1) * num_steps])
  • 이 코드에서 정의한 제너레이터는 메모리 부족을 해결할 수 있는 좋은 기법이다.
    • 신경망을 훈련하는 동안 모든 데이터를 미리 나누어 메모리에 저장하지 않고 데이터셋을 미니 배치로 나누는 방식이 바람직하다.
  • train_x와 train_y 배열에서 길이 100까지만 사용하여 배치 데이터를 테스트로 만들어보겠다.
    • 시퀀스 길이는 15로 설정하고, 길이가 100이므로 제너레이터 함수는 길이 15인 시퀀스의 배치를 여섯 번 반환한다.
bgen = create_batch_generator(train_x[:, :100], train_y[:, :100], 15)

for x, y in bgen:
   print(x.shape, y.shape, end='  ')
    print(''.join(int2char[i] for i in x[0, :]).replace('\n', '*'), '  ', ''.join(int2char[i] for i in y[0, :]).replace('\n', '*'))

### 결과
# (64, 15) (64, 15) e of more than of more than 3
# (64, 15) (64, 15) 30 different*Fi 0 different*Fir
# (64, 15) (64, 15) rst Folio editi st Folio editio
# (64, 15) (64, 15) ons' best pages ns' best pages.
# (64, 15) (64, 15) .**If you find **If you find a
# (64, 15) (64, 15) any scanning er ny scanning err
  • 64개 배치 중 첫 번째 배치만 문자로 바꾸어 출력했다. 훈련 데이터와 타깃 데이터가 올바르게 추출되었다.
  • 실제 모델에 사용할 데이터를 만들기 위한 준비를 거의 마쳤다. 먼저 reshape 메서드를 사용하여 text_ints 배열을 64개의 배치 행을 가진 형태로 바꾼다.
batch_size = 64
num_steps = 100
train_x, train_y = reshape_data(text_ints, batch_size, num_steps)

print(train_x.shape, train_y.shape)

### 결과
# (64, 2500) (64, 2500)
  • 배치 크기를 64, 타임 스텝 길이를 100으로 설정했으므로 text_ints에서 자투리 부분은 제외하고 (64, 2500) 크기의 배열이 되었다.
  • 데이터 전처리의 마지막 단계는 이 데이터를 원-핫 인코딩으로 바꾸는 작업이다.
    • 이전 감성 분석 예제에서는 임베딩 층을 사용하여 단어를 길이가 200인 벡터로 인코딩했었다. 이때 타깃 데이터는 긍정 또는 부정 리뷰를 나타내는 1차원 배열이었다. 일련의 시퀀스를 처리한 후 손실 함수로부터 그래디언트를 계산했다.
    • 글자 단위 RNN 모델에서는 조금 다른 방식을 사용하는데, 모델에서 처리하는 글자마다 그래디언트를 모두 계산하여 사용한다. 이렇게 하려면 타깃 데이터도 전체 타임 스텝에 걸쳐 원-핫 인코딩 되어야 한다.
    • 텐서플로에서 제공하는 to_categorical 함수를 사용하여 원-핫 인코딩을 간단하게 만들어보자.
from tensorflow.keras.utils import to_categorical

train_encoded_x = to_categorical(train_x)
train_encoded_y = to_categorical(train_y)

print(train_encoded_x.shape, train_encoded_y.shape)

### 결과
# (64, 2500, 68) (64, 2500, 68)
  • to_categorical 함수는 입력된 데이터에서 가장 큰 값에 맞추어 자동으로 원-핫 인코딩된 벡터로 변환시킨다.
    • 정수 값이 0부터 시작한다고 가정하므로 원-핫 인코딩 벡터의 길이는 최댓값에 1을 더해야 한다.
    • 만약 train_x와 train_y에 있는 최댓값이 다르면 원-핫 인코딩 크기가 달라진다. 여기서는 train_y가 train_x에서 한 글자만 이동했기 때문에 최댓값이 같지만 문제에 따라 다를 수 있으므로 주의하라

글자 단위 RNN 모델 만들기

  • Sequential 클래스를 사용하여 글자 단위 RNN 모델을 만들어보겠다. 먼저 Sequential 클래스 객체를 생성한다.
from tensorflow.keras import models, layers

char_model = models.Sequential()
  • 훈련 데이터를 원-핫 인코딩 했으므로 임베딩 층 대신 LSTM 층을 바로 추가하겠다. 이때 두 가지를 고려해야 한다.
  • 첫째, 이 모델은 훈련할 때 길이가 100인 시퀀스를 주입한다. 즉, 타임 스텝 길이가 100이다. 하지만 새로운 글자를 생성할 때는 이전 글자를 주입하여 한 글자씩 생성한다. 다시 말해 샘플링 시에는 배치 크기가 1이 된다. 따라서 훈련과 샘플링 시에 배치 크기와 타임 스텝 크기가 다음과 같이 정의된다.

sampling mode = \begin{cases} batch size = 1 \\ num steps = 1 \end{cases}

training mode = \begin{cases} batch size = 64 \\ num steps = 100 \end{cases}

  • 훈련과 샘플링 모드에서 사용하는 시퀀스 길이가 다르다. 흔히 이런 RNN 네트워크의 구조를 ‘시간에 따라 동적으로 펼친다’라고도 한다.
    • 텐서플로의 케라스 API를 사용하면 가변 길이 시퀀스를 다루는 작업도 간단하게 처리할 수 있다.
  • 이전 장의 합성곱 모델에서 보았듯이 모델에 추가하는 첫 번째 층에는 input_shape 매개변수로 배치 차원을 제외한 입력 크기를 지정해야 한다.
    • LSTM 층에서 가변 길이 시퀀스를 처리하려면 타임 스텝 길이에 해당하는 input_shape의 첫 번째 차원을 None으로 지정하면 된다.
    • 두 번째 차원은 원-핫 인코딩 벡터의 크기가 된다.
  • 둘째, 모든 타임 스텝에 대해 그래디언트를 계산하여 모델을 업데이트할 것이다. 따라서 LSTM 층이 시퀀스의 마지막 타임 스텝의 출력만 반환하지 않고 전체 시퀀스에 대해 출력을 만들어야 한다.
    • 이렇게 하려면 앞서 언급한 대로 LSTM 층의 return_sequences 매개변수를 True로 지정해야 한다.
  • 이런 점을 고려하여 다음과 같이 128개의 순환 유닛을 가진 LSTM 층을 모델에 추가한다.
num_classes = len(chars)
char_model.add(layers.LSTM(128, input_shape=(None, num_classes), return_sequences=True))
  • 이 모델에 입력할 데이터는 num_classes 크기로 원-핫 인코딩 되었다는 것을 기억하라. num_classes는 텍스트에 있는 모든 글자 수이다.
  • 그 다음은 각 글자에 대한 확률을 출력하는 완전 연결 층을 추가한다. 이 출력층의 유닛 개수는 num_classes가 된다. 다중 출력이므로 활성화 함수는 소프트맥스 함수를 사용한다.
  • 지금까지는 Dense 층을 추가하기 전에 Flatten 층을 추가했다. 이 층은 배치 차원을 제외하고 입력 텐서의 나머지 차원을 일렬로 펼친다. Dense 층은 이렇게 전형적으로 2차원 텐서를 다룬다.
    • 하지만 이 예제에서는 모든 타임 스텝에 대한 손실을 계산해야 하기 때문에 LSTM 층에서 출력되는 3차원 텐서를 그대로 다루어야 한다.
    • LSTM 층에서 출력되는 텐서 크기는 (배치 개수, 타임 스텝 개수, 순환 유닛 개수)이다. Dense 층을 통과할 때 이 텐서츼 엇 번째와 두 번째 차원이 유지되어야 한다.
    • 이 작업을 처리하기 위해 Flatten 층을 추가하지 않고 LSTM 층의 출력을 타임 스텝 순으로 Dense 층에 주입하고 결과를 받아 다시 타임 스텝 순서대로 쌓아야 한다.
    • 이런 작업을 위한 클래스도 텐서플로에 이미 준비되어 있다. tf.keras.layers.TimeDistribute 클래스를 사용하면 Dense 층을 감싸서 타임 스텝을 가진 입력을 다룰 수 있다.
char_model.add(layers.TimeDistributed(layers.Dense(num_classes, activation='softmax')))
  • 전체 모델 구성이 끝났다. tf.keras API를 사용하면 간단하게 RNN 모델을 만들 수 있다.
    • summary 메서드로 구성된 네트워크를 출력해 보자.
char_model.summary()

### 결과
# _________________________________________________________________
# Layer (type) Output Shape Param #
# =================================================================
# lstm (LSTM) (None, None, 128) 100864
# _________________________________________________________________
# time_distributed (TimeDistri (None, None, 68) 8772
# =================================================================
# Total params: 109,636
# Trainable params: 109,636
# Non-trainable params: 0
  • 가변 길이 시퀀스를 다루기 위해 LSTM 층과 TimeDistributed 층의 출력에서 두 번째 차원이 None으로 된 것을 볼 수 있다. 또 최종 출력에 타임 스텝 차원이 포함되었다.
  • 모델 구성을 마치면서 각 츠으이 모델 파라미터의 크기를 계산해 보자.
    • 순환 유닛이 128개이고 원-핫 인코딩의 크기가 65이므로 W_{xf} 는 (128, 65) 차원이다. 셀의 히든 상태와 곱해지는 W_{hf} 는 (128, 128)이다. 여기에 절편을 더하면 삭제 게이트에 필요한 모델 파라미터 개수는 128 x 65 + 128 x 128 + 128 = 24,832 개가 된다.
    • LSTM 층에는 이런 가중치가 네 벌 더 있으므로 전체 모델 파라미터 개수는 99,328개가 된다.
  • TimeDistributed 층은 모델 파라미터를 가지고 있지 않다. summary 메서드에서 출력한 값은 Dense 층의 모델 파라미터 개수이다.
    • Dense 층의 입력 차원은 128이고 65개의 유닛이 있으므로 절편을 고려한 전체 모델 파라미터 개수는 65 x 128 + 65 = 8,386개이다.

글자 단위 RNN 모델 훈련

  • 이전 예제에서는 옵티마이저의 기본값을 사용했다. 이 예제에서는 그래디언트 폭주를 피하기 위한 대표적인 방법인 그래디언트 클리핑을 적용해 보겠다.
    • 그래디언트 클리핑을 하려면 옵티마이저 클래스의 객체를 직접 만들어 모델의 compile 메서드에 전달해야 한다.
    • 앞선 예제와 같이 Adam 옵티마이저를 사용한다.
from tensorflow.keras.optimizers import Adam

adam = Adam(clipnorm=5.0)
  • tf.keras.optimizers에 있는 옵티마이저들은 그래디언트 클리핑을 위한 두 개의 매개변수를 제공한다. 하나는 L2 노름 임계 값을 지정하는 clipnorm이고 다른 하나는 절댓값으로 임계 값을 지정하는 clipvalue이다.
    • clipnorm 매개변수가 설정되면 그래디언트의 L2 노름이 clipnorm 보다 클 경우 다음과 같이 클리핑 된 그래디언트를 계산한다.
      • 클리핑된 그래디언트 = 그래디언트 * clipnorm / 그래디언트의 L2 노름
    • clipvalue 매개변수가 설정되면 -clipvalue 보다 작은 그래디언트는 -clipvalue가 되고 clipvalue 보다 큰 그래디언트는 clipvalue로 만든다.
  • 이 두 클리핑 방식을 동시에 사용할 수도 있다. 여기서는 clipnorm 매개변수만 사용했다.
    • 65개의 글자에 대한 확률을 출력하는 다중 클래스 모델이므로 손실 함수는 categorical_crossentropy를 사용한다.
    • 그 다음 옵티마이저 객체와 함께 char_model을 컴파일 한다.
char_model.compile(loss='categorical_crossentropy', optimizer=adam)
  • 훈련된 모델을 저장하여 나중에 학습을 이어 가거나 텍스트를 생성할 수 있도록 체크포인트 콜백을 준비한다.
from tensorflow.keras.callbacks import ModelCheckpoint

callback_list = [ModelCheckpoint(filepath='char_rnn_chckpoint.h5')]
  • 이제 500번의 에포크 동안 모델을 훈련하겠다. Sequential 모델은 입력과 타깃 배치를 반환하는 제너레이터와 함께 쓸 수 있는 fit_generator 메서드를 제공한다.
    • 앞서 만든 create_batch_generator 함수로부터 제너레이터 객체를 만들어 fit_generator 메서드에 전달하겠다.
    • file_generator 메서드는 파이썬 제너레이터에서 배치를 끝없이 반환할 것으로 기대한다. 데이터가 끝없이 생성되므로 하나의 에포크를 정의하기 위해 제너레이터로부터 몇 번이나 배치를 뽑을 것인지 알려주어야 한다.
    • fit_generator 메서드의 steps_per_epoch 매개변수에서 이를 설정한다.
  • 이 예제에서는 시퀀스 길이가 100이므로 전부 25번의 배치가 생성된다.
    • 사실 create_batch_generator 함수는 배치를 순환하지 않기 때문에 25번째 배치 이후에는 더는 추출하지 못하고 에러가 발생된다.
    • 이를 해결하기 위해 for 반복문에서 fit_generator 메서드를 호출할 때 epochs를 1로 설정한다.
    • 전체 훈련 횟수는 500번이고 훈련할 때마다 제너레이터를 다시 초기화 해야 한다.
for i in range(500):
    bgen = create_batch_generator(train_encoded_x, train_encoded_y, num_steps)
   char_model.fit_generator(bgen, steps_per_epoch=25, epochs=1, callbacks=callback_list, verbose=0)

### 결과
# 윈도우 설정 문제인지, 책 코드가 있는 git의 소스를 그대로 써도 에러가 나서 이 예제는 이후 결과 없이 종료
  • 반복 횟수가 많기 때문에 verbose 매개변수를 0으로 설정하여 훈련 과정을 출력하지 않았다.

글자 단위 RNN 모델로 텍스트 생성

  • 텍스트를 만들기 위해 앞서 설명한 것처럼 배치 크기 1, 타임 스텝 길이 1을 만들어 모델에 주입한다. 그 다음 예측된 문자를 다음번 예측을 하기 위해 다시 모델에 주입하는 과정을 반복한다.
  • 먼저 모델에서 출력된 65개의 확률 값에서 하나를 랜덤하게 선택할 get_top_char 함수를 정의하자. 이 함수는 전달된 확률을 정렬하고 numpy.random.choice 함수로 상위 다섯 개의 확률 중 하나를 랜덤하게 선택한다.
np.random.seed(42)

def get_top_char(probas, char_size, top_n=5):
    p = np.squeeze(probas)
   p[np.argsort(p)[:-top_n]] = 0.0
    p = p / np.sum(p)
    ch_id = np.random.choice(char_size, 1, p=p)[0]

    return ch_id
  • “The ” 란 초기 문자열을 사용하여 이어지는 텍스트를 생성하겠다. 텍스트를 생성하는 방법은 다음과 같다.
    • 먼저 모델에 문자열 “The “를 한 글자씩 주입하고 마지막 글자에서 다음 글자를 예측한다.
    • 그 다음 이글자를 사용하여 계속 다음 글자를 예측하는 식이다.
  • 모델에 주입할 데이터를 만드는 과정은 앞서 훈련 데이터에서 했던 것과 유사하다. 한 가지 주의할 점은 한 글자씩 인코딩 하기 때문에 to_categorical 함수를 호출할 때 num_classes 매개변수로 원-핫 인코딩될 벡터 크기를 지정해야 한다.
    • 배치 차원을 만들기 위해 넘파이 expand_dims 함수로 첫 번째 차원을 추가했다.
    • 만들어진 onehot 배열의 차원은 (1, 1, 65)이다.
seed_text = "The "

for ch in seed_text:
   num = [char2int[ch]]
   onehot = to_categorical(num, num_classes=65)
    onehot = np.expand_dims(onehot, axis=0)
    probas = char_model.predict(onehot)

num = get_top_char(probas, len(chars))
seed_text += int2char[num]
  • 초기 문자열 “The “를 모델에 차례대로 주입한 후 마지막에 얻은 probas 출력을 사용하여 다음 글자를 예측한다.
    • 이 값은 정수이기 때문에 int2char를 사용하여 문자로 바꾼 후 seed_text 문자열 끝에 추가한다.
  • 이제 예측한 문자열을 비슷한 과정으로 인코딩하여 다시 모델에 주입한다.
    • 반환된 클래스 확률 값을 사용하여 다시 다음 글자를 선택한다.
    • 이런 과정을 for 반복문을 사용하여 500번 되풀이 하여 긴 텍스트를 만들어 보자.
for i in range(500):
   onehot = to_categorical([num], num_classe=65)
    onehot = np.expand_dims(onehot, axis=0)
    probas = char_model.predict(onehot)
   num = get_top_char(probas, len(chars))
    seed_text += int2char[num]

print(seed_text)
  • 결과에서 볼 수 있듯이 일부 영어 단어는 거의 그대로 유지되었다. 이 예제는 오래된 영어 텍스트를 사용했으므로 원본 텍스트에는 낯선 단어가 일부 포함되어 있다.
  • 더 나은 결과를 얻으려면 에포크 수를 늘려서 모델을 훈련하거나 훨씬 더 큰 문서를 사용해도 좋다. np.random.choice 대신 확률 값의 크기에 따라 글자 선택 가능성을 높일 수도 있다.