기본 콘텐츠로 건너뛰기

정보이론에서의 엔트로피 이해

정보이론에서의 엔트로피 이해

차례

  1. 정보 교환(Communication)
  2. 특정 사건의 정보량(Information Content)
  3. 정보원으로부터 얻을 수 있는 정보량에 대한 기댓값
  4. 정보원의 엔트로피(Entropy)
  5. 개별 사건의 엔트로피 기여도
  6. 엔트로피라는 용어에 대하여
  7. 정리
  8. 부록

1. 정보 교환(Communication)

A가 B에게 정보를 전달하는 상황을 상상해 봅니다.

  • A: 정보의 송신자(정보원)
  • B: 정보의 수신자

상황-1. 두 종류의 과일이 담겨 있는 바구니

바구니에 사과와 배가 들어 있습니다.

  1. A는 바구니에서 과일 한 개를 집고 어떤 과일인지 말한다.
  2. B는 A의 말을 듣고 그가 어떤 과일을 집었는지 안다.

A는 자신이 집은 과일이 무엇인지에 따라 아래와 같이 숫자로 말합니다.

  • 1 (사과)
  • 2 (배)

이 정보를 비트 단위로 표현한다면 필요한 비트 수는 1입니다.

log2(가능한 경우의 수)=log22=1 \begin{align} & \log_2{(가능한\ 경우의\ 수)} = \log_2{2} = 1 \end{align}

상황-2. 네 종류의 과일이 담겨 있는 바구니

바구니에 사과, 배, 감, 복숭아가 들어 있습니다.

  1. A는 바구니에서 과일 한 개를 집고 어떤 과일인지 말한다.
  2. B는 A의 말을 듣고 그가 어떤 과일을 집었는지 안다.

A는 자신이 집은 과일이 무엇인지에 따라 아래와 같이 숫자로 말합니다.

  • 1 (사과)
  • 2 (배)
  • 3 (감)
  • 4 (복숭아)

이 정보를 비트 단위로 표현한다면 필요한 비트 수는 2입니다.

log2(가능한 경우의 수)=log24=2 \begin{align} & \log_2{(가능한\ 경우의\ 수)} = \log_2{4} = 2 \end{align}

2. 특정 사건의 정보량(Information Content)

위에서 예로 든 <상황-1>과 <상황-2>를 다음 두 가지 측면에서 비교해 보는 것이 정보의 정량화를 이해하는데 도움이 됩니다.

  1. B의 입장에서 A의 말을 듣기 전에 자신이 예측했던 과일의 종류와 A의 말을 듣고 알게 된 과일의 종류가 일치했을 때 B가 우연히 맞춘 것에 대해 느끼는 놀람의 정도
  2. A가 집은 과일의 종류를 알고 있는 B와 이를 모르는 C가 A가 집은 과일 종류 맞추기 내기를 할 때 C가 정보 부재에 대하여 느끼는 아쉬움의 정도

먼저 놀람의 정도 측면에서 살펴보겠습니다.

상황-1. 두 종류의 과일이 담겨 있는 바구니

과일 종류별 분포에 대한 정보가 없기 때문에 균등 분포, 그리고 무작위 추출이라고 가정합니다.

  • B가 정보를 얻기 전
    • B는 A가 집은 과일이 사과일 것이라고 예측 (맞을 확률: 12=0.5\frac{1}{2} = 0.5)
  • B가 정보를 얻은 후
    • B는 A가 사과를 집었다는 말을 듣고 자신의 예측이 맞았다는 사실에 조금 놀람

상황-2. 네 종류의 과일이 담겨 있는 바구니

과일 종류별 분포에 대한 정보가 없기 때문에 균등 분포, 그리고 무작위 추출이라고 가정합니다.

  • B가 정보를 얻기 전
    • B는 A가 집은 과일이 사과일 것이라고 예측 (맞을 확률: 14=0.25\frac{1}{4} = 0.25)
  • B가 정보를 얻은 후
    • B는 A가 사과를 집었다는 말을 듣고 자신의 예측이 맞았다는 사실에 많이 놀람

B의 예측이 맞을 확률이 낮을수록 결과가 예측한 대로 나오면 더 놀라는 경향이 있습니다.

이번에는 아쉬움의 정도 측면에서 살펴보겠습니다.

B는 A가 무슨 과일을 집었는지 알고 있습니다. 이 사실을 모르는 C는 B와 내기를 합니다. 한 사람은 A가 집은 과일을 맞추고 다른 사람은 맞추지 못하면 맞춘 쪽이 이깁니다. 아래 각 상황에서 내기에 건 금액(예: 100만원)은 동일합니다.

상황-1. 두 종류의 과일이 담겨 있는 바구니

  • 정답 확인 전
    • B는 A가 집은 것이 무엇인지 알고 있으므로 사과라고 답함
    • C는 A가 집은 것이 무엇인지 모르므로 두 종류 중 무작위로 배라고 답함 (맞을 확률: 12=0.5\frac{1}{2} = 0.5)
  • 정답 확인 후
    • B: 내기에 이겨서 이득 발생 (자신이 가지고 있는 정보로 인해 이길 확률이 조금 높아졌므로 정보가 조금 가치 있었다고 여김)
    • C: 내기에 져서 손실 발생 (정보 부재로 자신이 이길 확률이 조금 낮아졌으므로 정보 부재에 대해 조금 아쉬워함)

상황-2. 네 종류의 과일이 담겨 있는 바구니

  • 정답 확인 전
    • B는 A가 집은 것이 무엇인지 알고 있으므로 사과라고 답함
    • C는 A가 집은 것이 무엇인지 모르므로 네 종류 중 무작위로 배라고 답함 (맞을 확률: 14=0.25\frac{1}{4} = 0.25)
  • 정답 확인 후
    • B: 내기에 이겨서 이득 발생 (자신이 가지고 있는 정보로 인해 이길 확률이 매우 높아졌으므로 정보가 매우 가치 있었다고 여김)
    • C: 내기에 져서 손실 발생 (정보 부재로 자신이 이길 확률이 매우 낮아졌으므로 정보 부재에 대해 매우 아쉬워함)

C의 입장에서는 <상황-1>에 비해 <상황-2>에서 내기에 질 가능성이 높습니다. 따라서 A가 집은 과일이 무엇인지 알고 내기에 참여할 수 있다면 그 정보의 가치는 <상황-1>보다 <상황-2>에서 더 크다고 여길 것입니다.

위에서 다룬 놀람의 정도, 아쉬움의 정도와 같은 정성적 평가들을 반영하여 정보량을 정의한 수식은 아래와 같습니다.

I(x)=log2P(x) \begin{align} & I(x) = -log_2{P(x)} \end{align}

  • xx는 개별 사건(값)
    • <상황-1>에서 xx가 가질 수 있는 값: 사과, 배
    • <상황-2>에서 xx가 가질 수 있는 값: 사과, 배, 감, 복숭아
  • P(x)P(x)xx가 발생할 확률
  • I(x)I(x)는 발생한 사건이 xx임을 알았을 때 얻게 되는 정보량

상황별로 위 수식에 따라 계산한 정보량은 다음과 같습니다.

상황-1. 두 종류의 과일이 담겨 있는 바구니

P(x)=12I(x)=log2P(x)=log212=1 \begin{align} & P(x) = {1 \over 2} \\ & I(x) = - log_2{P(x)} = - log_2{1 \over 2} = 1 \end{align}

I(x=사과)=1I(x=)=1 \begin{align} & I(x=사과) = 1 \\ & I(x=배) = 1 \end{align}

가 됩니다.

상황-2. 네 종류의 과일이 담겨 있는 바구니

P(x)=14I(x)=log2P(x)=log214=2 \begin{align} & P(x) = {1 \over 4} \\ & I(x) = - log_2{P(x)} = - log_2{1 \over 4} = 2 \end{align}

I(x=사과)=2I(x=)=2I(x=)=2I(x=복숭아)=2 \begin{align} & I(x=사과) = 2 \\ & I(x=배) = 2 \\ & I(x=감) = 2 \\ & I(x=복숭아) = 2 \end{align}

가 됩니다.

각 상황별로 계산한 정보량의 상대적인 크기가 놀람의 정도, 아쉬움의 정도라는 정성적 비교와 어긋나지 않음을 알 수 있습니다.

3. 정보원으로부터 얻을 수 있는 정보량에 대한 기댓값

정보량에 대한 기댓값은 각 사건 xix_i의 정보량 I(xi)I(x_i)에 해당 사건이 발생할 확률 P(xi)P(x_i)를 곱한 값들을 모두 더하여 계산합니다.

E[I(X)]=iP(xi)I(xi)=iP(xi)log2P(xi) \begin{align} & E[I(X)] = \sum_i P(x_i) I(x_i) = - \sum_i P(x_i) log_2{P(x_i)} \end{align}

여기서,

  • XX는 확률변수입니다.

상황별로 정보량에 대한 기댓값을 계산하면 아래와 같습니다.

상황-1. 두 종류의 과일이 담겨 있는 바구니

E[I(X)]=P(x1)I(x1)+P(x2)I(x2)=121+121=1 \begin{align} E[I(X)] & = P(x_1) I(x_1) + P(x_2) I(x_2) \\ & = {1 \over 2} \cdot 1 + {1 \over 2} \cdot 1 \\ & = 1 \end{align}

위 수식에서

x1:사과x2: \begin{align*} & x_1: 사과 \\ & x_2: 배 \end{align*}

입니다.

상황-2. 네 종류의 과일이 담겨 있는 바구니

E[I(X)]=P(x1)I(x1)+P(x2)I(x2)+P(x3)I(x3)+P(x4)I(x4)=142+142+142+142=2 \begin{align} E[I(X)] & = P(x_1) I(x_1) + P(x_2) I(x_2) + P(x_3) I(x_3) + P(x_4) I(x_4) \\ & = {1 \over 4} \cdot 2 + {1 \over 4} \cdot 2 + {1 \over 4} \cdot 2 + {1 \over 4} \cdot 2 \\ & = 2 \end{align}

위 수식에서

x1:사과x2:x3:x4:복숭아 \begin{align*} & x_1: 사과 \\ & x_2: 배 \\ & x_3: 감 \\ & x_4: 복숭아 \end{align*}

입니다.

<상황-1>에서 개별 사건이 발생할 확률들이 모두 같기 때문에 아래 두 값은 서로 일치합니다.

  • 발생한 사건이 무엇인지 알았을 때의 정보량 I(x)I(x)
  • 정보원으로부터 하나의 정보를 얻게 될 때의 정보량에 대한 기댓값 E[I(X)]E[I(X)]

이것은 <상황-2>에도 동일하게 적용됩니다.

정보량과 기댓값에 대한 이해를 더 높이기 위하여 아래의 <상황-3>와 <상황-4>를 가정해 봅니다.

상황-3. 두 종류의 과일이 담겨 있는 바구니 (사과 3개, 배 1개 담겨 있고 무작위 추출)

B와 C는 다음 두 가지 정보를 추가로 알고 있습니다.

  • 바구니에 사과 3개, 배 1개가 들어 있다.
  • A는 무작위로 과일을 집는다.

위 두 가지 정보를 알고 있는 상태에서 A가 집은 과일이 무엇인지 알게 되었을 때의 정보량을 과일 종류별로 계산하면 다음과 같습니다.

I(x1)=log2340.415I(x2)=log214=2 \begin{align} I(x_1) &= -log_2{3 \over 4} \approx 0.415 \\ I(x_2) &= -log_2{1 \over 4} = 2 \end{align}

개별 사건이 발생할 확률을 적용하여 정보량에 대한 기댓값을 구하면 아래와 같습니다.

E[I(X)]=P(x1)I(x1)+P(x2)I(x2)34×0.415+14×20.811 \begin{align} E[I(X)] &= P(x_1) I(x_1) + P(x_2) I(x_2) \\ &\approx {3 \over 4} \times 0.415 + {1 \over 4} \times 2 \\ &\approx 0.811 \end{align}

상황-4. 두 종류의 과일이 담겨 있는 바구니 (사과 15개, 배 1개 담겨 있고 무작위 추출)

B와 C는 다음 두 가지 정보를 추가로 알고 있습니다.

  • 바구니에 사과 15개, 배 1개가 들어 있다.
  • A는 무작위로 과일을 집는다.

위 두 가지 정보를 알고 있는 상태에서 A가 집은 과일이 무엇인지 알게 되었을 때의 정보량을 과일 종류별로 계산하면 다음과 같습니다.

I(x1)=log215160.093I(x2)=log2116=4 \begin{align} I(x_1) &= -log_2{15 \over 16} \approx 0.093 \\ I(x_2) &= -log_2{1 \over 16} = 4 \end{align}

개별 사건이 발생할 확률을 적용하여 정보량에 대한 기댓값을 구하면 아래와 같습니다.

E[I(X)]=P(x1)I(x1)+P(x2)I(x2)1516×0.093+116×40.337 \begin{align} E[I(X)] &= P(x_1) I(x_1) + P(x_2) I(x_2) \\ &\approx {15 \over 16} \times 0.093 + {1 \over 16} \times 4 \\ &\approx 0.337 \end{align}

위에서 살펴 본 내용으로부터 XX의 확률 분포가 달라지면 다음 두 가지 값들도 달라진다는 사실을 알게 되었습니다.

  • 개별 사건이 발생했음을 알았을 때의 정보량 I(x)I(x)
  • 정보원으로부터 얻게 될 정보량에 대한 기댓값 E[I(X)]E[I(X)]

이를 다음과 같이 정성적으로 설명할 수 있습니다.

  1. XX의 확률 분포가 균등하지 않고 특정 형태를 가진다는 것을 알게 되었다. 즉 정보원과 관련하여 추가 정보를 얻었다.
  2. 추가 정보를 활용하면 예측의 불확실성이 감소한다.
    • 개별 사건별로 정보량이 증가할 수도 있고, 감소할 수도 있다.
    • 정보량에 대한 기댓값이 줄어든다. 달리 표현하자면 정보 부재에 대한 아쉬움이 감소한다.

4. 정보원의 엔트로피(Entropy)

정보이론에서의 엔트로피는 정보량에 대한 기댓값과 같은 말입니다.

H(X)=E[I(X)] \begin{align} H(X) = E[I(X)] \end{align}

여기서,

  • XX는 확률 변수
  • E[]E[\cdot]는 기댓값

사과를 집는 것과 같은 개별 사건에 대하여

  • 발생 확률이 작을수록 정보를 얻게 되었을 때의 가치, 즉 정보량이 크다.
    • 자주 일어나지 않는 사건이 일어났음을 아는 것은 정보로서의 가치가 크다.
  • 발생 확률이 클수록 정보를 얻게 되었을 때의 가치, 즉 정보량이 작다.
    • 자주 일어나는 사건이 일어났음을 아는 것은 정보로서의 가치가 작다.

과일을 집는 A, 즉 정보원에 대하여

  • 예측 불확실성이 클수록 정보량의 기댓값, 즉 엔트로피가 크다.
    • 확률 변수의 확률 분포가 넓게 퍼진 형태일수록 예측 불확실성이 높은 것이고 이러한 상태에서 어떤 결과를 알게 된다면 얻게 될 정보량은 클 것이라고 기대한다. 이 말은 다음 두 가지 표현과 동일한 의미를 가진다.
      • 정보원으로부터 얻게 될 정보량에 대한 기댓값이 크다.
      • 정보원의 엔트로피가 크다.
  • 예측 불확실성이 작을수록 정보량에 대한 기댓값, 즉 엔트로피가 작다.
    • 확률 변수의 확률 분포가 좁게 치솟은 형태일수록 예측 불확실성이 낮은 것이고 이러한 상태에서 어떤 결과를 알게 된다면 얻게 될 정보량은 작을 것이라고 기대한다. 이 말은 다음 두 가지 표현과 동일한 의미를 가진다.
      • 정보원으로부터 얻게 될 정보량에 대한 기댓값이 작다.
      • 정보원의 엔트로피가 작다.

5. 개별 사건의 엔트로피 기여도

개별 사건이 엔트로피, 즉 정보량에 대한 기댓값에 기여하는 정도는 아래와 같이 같습니다.

P(xi)×I(xi)=P(xi)×log2P(xi) \begin{align} P(x_i) \times I(x_i)= -P(x_i) \times log_2{P(x_i)} \end{align}

위 수식으로부터 다음과 같은 내용들을 알 수 있습니다.

  • xix_i가 정보량에 대한 기댓값에 기여하는 정도는 PP가 0.35와 0.4 사이의 값을 가질 때 가장 크다.
  • 발생 확률이 작은 사건 xix_i가 발생했음을 알았을 때 얻는 정보량은 크지만 그것이 정보량에 대한 기댓값에 기여하는 정도는 작다.

6. 엔트로피라는 용어에 대하여

정보량에 대한 기댓값을 지칭하는 엔트로피라는 용어는 통계역학으로부터 유래했습니다.

  • 통계역학에서의 엔트로피: 물리적 시스템의 미시적 상태에 대한 정보의 부족
  • 정보이론에서의 엔트로피: 메시지나 신호의 불확실성

그렇다면 정보이론에서 없어도 될 엔트로피라는 용어를 굳이 차용한 것은 잘한 선택일까요?

  • 물리 영역에서의 엔트로피는 다양한 측면에서 광범위하게 논의되고 있는 물리량인데 그 중에서도 열역학 제2법칙, 즉 엔트로피 증가의 법칙과 같은 내용은 정보이론에서의 엔트로피라는 개념과 혼재되어 이해를 더 어렵게 만드는데 크게 일조합니다.
  • 엔트로피의 개념을 개별 사건의 개수와 확률 분포의 형태에 따라 달라지는 예측의 불확실성을 나타내는 것으로 국한시킨다면 정보이론에서 엔트로피라는 용어를 차용한 것은 꽤나 괜찮아 보이는 선택입니다.

7. 정리

상황별로 정보량, 그리고 정보량에 대한 기댓값(엔트로피)을 정리하면 다음과 같습니다.

상황-1. 두 종류의 과일이 담겨 있는 바구니

I(x1)=1I(x2)=1E[I(X)]=1 \begin{align} I(x_1) &= 1 \\ I(x_2) &= 1 \\ E[I(X)] &= 1 \end{align}

상황-2. 네 종류의 과일이 담겨 있는 바구니

I(x1)=2I(x2)=2I(x3)=2I(x4)=2E[I(X)]=2 \begin{align} I(x_1) &= 2 \\ I(x_2) &= 2 \\ I(x_3) &= 2 \\ I(x_4) &= 2 \\ E[I(X)] &= 2 \end{align}

상황-3. 두 종류의 과일이 담겨 있는 바구니 (사과 3개, 배 1개 담겨 있고 무작위 추출)

I(x0)=log2340.415I(x1)=log214=2E[I(X)]=P(x1)I(x1)+P(x2)I(x2)34×0.415+14×20.811 \begin{align} I(x_0) &= -log_2{3 \over 4} \approx 0.415 \\ I(x_1) &= -log_2{1 \over 4} = 2 \\ E[I(X)] &= P(x_1) I(x_1) + P(x_2) I(x_2) \\ &\approx {3 \over 4} \times 0.415 + {1 \over 4} \times 2 \\ &\approx 0.811 \end{align}

상황-4. 두 종류의 과일이 담겨 있는 바구니 (사과 15개, 배 1개 담겨 있고 무작위 추출)

I(x0)=log215160.093I(x1)=log2116=4E[I(X)]=P(x1)I(x1)+P(x2)I(x2)1516×0.093+116×40.337 \begin{align} I(x_0) &= -log_2{15 \over 16} \approx 0.093 \\ I(x_1) &= -log_2{1 \over 16} = 4 \\ E[I(X)] &= P(x_1) I(x_1) + P(x_2) I(x_2) \\ &\approx {15 \over 16} \times 0.093 + {1 \over 16} \times 4 \\ &\approx 0.337 \end{align}

위에서 정리한 내용을 토대로 다음과 같은 결론을 얻을 수 있습니다.

<상황-1>과 <상황-2>의 비교

각각의 상황에서 개별 사건이 발생할 확률은 균등하게 분포되어 있고 <상황-2>에서 사건의 종류가 증가하였습니다. 이로 인해 <상황-2>는 <상황-1>에 비해 다음과 같은 특성을 보입니다.

  1. 개별 사건의 발생 확률 감소
  2. 개별 사건이 가지는 정보량 증가 (필요한 비트 수 증가)
  3. 정보원으로부터 얻을 수 있는 정보량에 대한 기댓값 증가 (엔트로피 증가)

과일 종류가 추가됨으로 인해 A가 집은 과일을 맞추는 것이 더 어려워졌고, 즉 예측 불확실성이 증가했고 이것은 엔트로피 증가가 의미하는 바와 일치합니다.

<상황-1>과 <상황-3>의 비교

각각의 상황에서 과일 종류는 동일한데 <상황-3>에서는 과일 종류별 분포에 대한 정보가 추가되었습니다. 이로 인해 <상황-3>는 <상황-1>에 비해 다음과 같은 특성을 보입니다.

  1. 개별 사건의 발생 확률이 균등하지 않음 (증가한 것도 있고 감소한 것도 있음)
  2. 개별 사건이 가지는 정보량이 사건별로 다름 (발생 확률이 낮은 사건이 발생했을 때의 정보량이 더 큼)
  3. 정보원으로부터 얻을 수 있는 정보량에 대한 기댓값 감소 (엔트로피 감소)

특정 과일이 얼마나 더 많은지에 대한 정보가 추가됨으로 인해 A가 집은 과일을 맞추는 것이 더 쉬워졌고, 즉 예측 불확실성이 감소했고 이것은 엔트로피 감소가 의미하는 바와 일치합니다.

8. 부록

  1. 정보량의 정의에서 로그의 밑으로 2를 사용하였는데 이는 비트 수를 구할 때 적합한 것이며 단위로서의 비트를 섀넌(Shannon)이라고도 부릅니다. 비트 수를 구하는 것이 아닐 때에는 자연 상수나 10을 밑으로 사용해서 정보량과 기댓값을 구하기도 합니다.
    • 냇(nats): 자연 상수(e)를 로그의 밑으로 사용
    • 하틀리(hartleys) 또는 딧(dits): 10을 로그의 밑으로 사용

Written with StackEdit.

댓글

이 블로그의 인기 게시물

Intel MKL 예제를 Microsoft Visual C++로 빌드하기

Intel MKL 예제를 Microsoft Visual C++로 빌드하기 인텔 프로세서 시스템에서 아래의 영역에 해당하는 수학 계산을 빠르게 수행하고자 한다면 Intel MKL 라이브러리를 사용할 수 있습니다. Linear Algebra Fast Fourier Transforms (FFT) Vector Statistics & Data Fitting Vector Math & Miscellaneous Solvers 이 문서는 Intel MKL 이 제공하는 예제 파일을 Microsoft Visual C++ 로 컴파일하고 링크하여 실행 파일을 만드는 과정을 소개합니다. 빌드 환경 다음은 이 문서를 작성하는 과정에서 Intel MKL 예제를 빌드하기 위하여 사용한 환경입니다. 시스템 운영체제: Windows 10 (64비트) 프로세서: Intel Core i7 설치 제품 IDE: Microsoft Visual Studio Community 2019 (version 16) 라이브러리: Intel Math Kernel Library 2019 Update 5 환경 변수 명령 프롬프트 창을 엽니다. 아래 스크립트를 실행하여 환경 변수 INCLUDE , LIB , 그리고 PATH 를 설정합니다. @echo off set CPRO_PATH=C:\Program Files (x86)\IntelSWTools\compilers_and_libraries\windows set MKLROOT=%CPRO_PATH%\mkl set REDIST=%CPRO_PATH%\redist set INCLUDE=%MKLROOT%\include;%INCLUDE% set LIB=%MKLROOT%\lib\intel64;%LIB% set PATH=%REDIST%\intel64\mkl;%PATH% REM for OpenMP intel thread set LIB=%CPRO_PATH%\compiler\lib...

Llama 3.2로 문장 생성 및 챗팅 완성 실습

Llama 3.2로 문장 생성 및 챗팅 완성 실습 Running Meta Llama on Linux 문서의 내용을 참고하여 Llama 3.2 1B 모델로 다음 두 가지 기능을 실습합니다. 문장 완성 챗팅 완성 실습 환경 Ubuntu 20.04.6 LTS Python 3.12.7 Llama3.2-1B, Llama3.2-1B-Instruct rustc 1.83.0 NVIDIA RTX 4090 24GB 프로그램 준비 실습에서 사용할 wget , md5sum 설치 sudo apt-get install wget sudo apt-get install md5sum NVIDIA GPU 설치 여부 확인 nvidia-smi 실습 디렉토리 만들기 mkdir llama3-demo cd llama3-demo git clone https://github.com/meta-llama/llama3.git Python 3.10 이상의 버전으로 가상환경 만들고 활성화 python -m venv llama-venv . llama-venv/bin/activate Rust 컴파일러 설치 How To Install Rust on Ubuntu 20.04 문서를 참고하여 Rust 컴파일러를 설치합니다. curl --proto '=https' --tlsv1.3 https://sh.rustup.rs -sSf | sh 위 명령을 실행하면 아래와 같이 세 가지 선택 옵션이 나타나는데 그냥 엔터를 쳐서 1번 옵션으로 진행합니다. ... 1) Proceed with installation (default) 2) Customize installation 3) Cancel installation 아래 명령을 실행하여 현재 쉘에 반영하고 설치된 컴파일러 버전을 확인합니다. source $HOME/.cargo/env rustc --version 의존 라이브러리 설치 pip install ...