시작하기무료로 시작하기

엔트로피 놀이터

엔트로피 개념이 처음이라면, 예시로 직접 확인해 보면 이해에 도움이 돼요.

확률 값의 리스트를 인자로 받아들이는 함수 plot_probabilities를 만들어 보세요. 이 함수는 엔트로피를 계산하고, 막대그래프로 확률을 시각화해요.

엔트로피를 여러 값으로 실험해 보면, 확률 분포가 여러 행동에 더 고르게 퍼져 있을수록 엔트로피가 커진다는 점을 알 수 있어요.

torch.distribution.Categorical 클래스는 환경에 Categorical로 로드되어 있어요. 이 클래스에는 엔트로피를 nats 단위로 반환하는 .entropy() 메서드가 있어요.

이 연습은 강의의 일부입니다

Python으로 배우는 Deep Reinforcement Learning

강의 보기

연습 안내

  • 확률 분포의 엔트로피를 nats 단위로 구하세요.
  • 편의를 위해, 엔트로피를 nats에서 bits로 변환하세요.
  • 함수의 입력으로 다른 리스트도 넣어 시도해 보세요.

실습형 인터랙티브 연습

이 예제를 이 샘플 코드를 완성하여 풀어보세요.

def plot_probabilities(probs):
  dist = Categorical(torch.tensor(probs))
  # Obtain the entropy in nats
  entropy = dist.____
  # Convert the entropy to bits
  entropy = entropy / math.log(____)
  print(f"{'Probabilities:':>15} {[round(prob, 3) for prob in dist.probs.tolist()]}")
  print(f"{'Entropy:':>15} {entropy:.2f}\n")
  plt.figure()
  plt.bar([str(x) for x in range(len(dist.probs))], dist.probs, color='skyblue', edgecolor='black')
  plt.ylabel('Probability'); plt.xlabel('Action index'); plt.ylim(0, 1)
  plt.show()
  
plot_probabilities([.25, .25, .25, .25])
plot_probabilities([.1, .15, .2, .25, .3])
# Try with your own list
plot_probabilities(____)
코드 편집 및 실행