숫자가 우주를 가로지를 때
어떤 양은 미친 스케일에 살아. 별 밝기 — 태양에서 먼 은하까지. 지진 매그니튜드 — 거의 못 느낀 미진에서 대륙 흔드는 재앙까지. 소리 — 속삭임에서 제트 엔진까지. 언어 모델에서 확률 — "매우 흔함" 에서 "사실상 절대".
이걸 선형 스케일에 plot 하면 실패 — 작은 값이 보이지 않게 짓눌림. 로그가 압축. 지수 범위를 선형 느낌으로 변환.
데시벨: 네 귀가 이미 함
데시벨 스케일이 음 강도를 로그로 측정: . 0 dB = 청력 임계. 60 dB = 대화. 120 dB = 제트 엔진. 10 dB 단계마다 실제 음 에너지 10× 변화. 네 귀가 이미 이렇게 인식 — 강도가 ~10× 되면 "두 배 시끄럽다" 들림. 엔지니어가 dB 를 사람 인식에 맞게 만들었고, 그 인식 자체가 로그.
왜 AI 가 로그 사랑
세 가지 일:
- 수치 안정성. 작은 확률 곱셈 () 이 float32 에서 0 으로 underflow. 로그 합 (-50 + -50 = -100) 은 안 그래.
- 손실 함수. Cross-entropy 손실 = . 로그가 정답 근처엔 부드러운 gradient, 매우-틀림엔 가혹한 페널티 — 정확히 우리가 원하는 비대칭.
- 시각화. 손실 곡선이 보통 로그 y축에 — 초기 극적 drop 이 후기 미묘한 개선 묻지 않게.
로그 = 극한 범위용 압축기. 자릿수 가로지르는 데이터엔 선형 사고가 죽음. 로그로 전환하면 구조가 다시 보임.
큰 값 몇개에 밀려버리면 선형분포는 그 부분만 우뚝솟아서 다른 항목의 숫자를 잘 인지하지못하도록 압축시켜버림
로그스케일을 하면 때에 따라 이부분이 개선됨, 이게 맞나? 나는 가로로 로그스케일을 쓰긴했는데 주식차트같은 경우 세로로 로그스케일을 많이씀
import numpy as np import matplotlib.pyplot as plt
rng = np.random.default_rng(42)
1~10000에 걸쳐 자릿수가 고르게 퍼지도록 로그 균등 생성 (현실 데이터의 전형)
data = 10 ** rng.uniform(0, 4, 100)
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 5))
선형 x축 히스토그램
ax1.hist(data, bins=30, color='#378ADD', edgecolor='white') ax1.set_title("Linear x-axis") ax1.set_xlabel("value") ax1.set_ylabel("count")
로그 x축 히스토그램 — 로그 간격 구간 사용
bins = np.logspace(0, 4, 30) ax2.hist(data, bins=bins, color='#1D9E75', edgecolor='white') ax2.set_xscale('log') ax2.set_title("Log x-axis") ax2.set_xlabel("value (log scale)") ax2.set_ylabel("count")
plt.tight_layout() plt.savefig('loghist.png', dpi=130)