점수(score)를 0~1 사이로 바꾸고, 전부 더하면 1이 되게 만드는 방법
이 셀은 앞으로 쓸 도구만 준비해요. 실행해도 화면에 출력은 없어요.
import numpy as np
import matplotlib.pyplot as plt
(출력 없음)
이 셀은 '점수(score) → 확률처럼 보이는 값'으로 바꾸는 함수를 준비해요.
- percent: 합으로 나눠서 비율 만들기
- softmax: exp로 차이를 키운 뒤 다시 합으로 나누기
# percent: 전체 합으로 나눠서 '비율'로 바꿔주는 함수
def percent(x):
total = np.sum(x)# 여기서 total은 "전부 더한 값"이에요
return x / total# 각 값을 total로 나누면, 자연스럽게 비율이 돼요
# softmax: exp로 차이를 키운 뒤, 전체 합으로 나눠서 '확률처럼' 만듦
def softmax(x):
exp_x = np.exp(x)# exp를 씌우면 큰 값이 더 눈에 띄게 커져요
exp_total = np.sum(exp_x)# exp 결과들을 전부 더해서 기준(분모)을 만들어요
return exp_x / exp_total# 마지막으로 나눠주면 합이 1이 돼서 '확률처럼' 보여요
(출력 없음)
이 셀은 예시 점수를 넣고, percent와 softmax 결과를 숫자로 비교해요.
보면서 딱 하나만 느끼면 돼요: softmax는 큰 점수를 더 '티 나게' 만들어줘요.
value = np.linspace(1.5, 2.5, 5)# 점수 5개를 예시로 만들어볼게요
p = percent(value)# percent를 적용하면, 단순 비율이 돼요
s = softmax(value)# softmax를 적용하면, 확률처럼(합이 1) 돼요
print('value:', value)# 원래 점수(아직 확률 아님)
print('percent:', p)# 비율이라서 합이 1이긴 한데, 차이 강조는 약해요
print('softmax:', s)# 큰 점수 쪽이 더 강하게 커져서 "선택"이 쉬워져요
value: [1.5 1.75 2. 2.25 2.5 ] percent: [0.15 0.175 0.2 0.225 0.25 ] softmax: [0.155 0.199 0.255 0.327 0.42 ] (대략)
이 셀은 숫자 말고 그림으로도 이해되게 그래프를 그려요.
- 왼쪽: 원래 점수(value)
- 오른쪽: percent vs softmax
plt.figure(figsize=(10, 3))# 그래프 전체 캔버스 크기를 잡아요
plt.subplot(1, 2, 1)# 1행 2열 중 왼쪽 칸이에요
plt.title('value (raw scores)')# 왼쪽 그래프 제목
plt.plot(value, 'r.-')# value를 빨간 선으로 그려요
plt.grid(True, alpha=0.3)# 격자를 깔아주면 읽기 편해요
plt.subplot(1, 2, 2)# 1행 2열 중 오른쪽 칸이에요
plt.title('percent vs softmax')# 오른쪽 그래프 제목
plt.plot(p, 'b.-', label='percent')# percent는 파란 선으로
plt.plot(s, 'g.-', label='softmax')# softmax는 초록 선으로
plt.legend()# 라벨(설명표)을 붙여줘요
plt.grid(True, alpha=0.3)# 오른쪽도 격자
plt.show()# 최종적으로 화면에 보여줘요
그래프가 화면에 표시됨(아래 이미지 참고)