지수와 로그: 성장과 규모를 읽는 언어
거듭제곱과 지수 법칙, 지수적 성장과 복리, 로그의 뜻과 성질, 로그 스케일, 그리고 이진 탐색과 빅오, 정보량, 손실 함수까지 로그가 컴퓨터와 AI에서 쓰이는 곳을 익혀요.
종이를 반으로 접고 또 접어요. 42번 접으면 두께가 얼마나 될까요? 약 0.1mm 종이라면 달까지 닿아요. 이처럼 계속 몇 배씩 커지는 변화를 다루는 도구가 지수이고, 그 반대로 "몇 번 커져야 이만큼이 되나"를 묻는 도구가 로그예요. 알고리즘의 속도, 데이터의 크기, 정보의 양, AI의 학습까지 규모를 다루는 거의 모든 곳에서 이 둘을 만나요.
거듭제곱과 지수 법칙
같은 수를 여러 번 곱하는 것을 거듭제곱이라고 해요.
2를 밑, 5를 지수라고 불러요. 지수 법칙은 몇 가지만 기억하면 돼요.
이 법칙을 지키려면 0과 음수 지수의 뜻이 자연스럽게 정해져요.
예를 들어 인데, 같은 수를 나눴으니 1이어야 하죠. 그래서 이에요.
과학적 표기법
아주 크거나 작은 수는 10의 거듭제곱으로 써요.
- 빛의 속도: m/s
- 1나노초: 초
- 파이썬에서는
3e8,1e-9처럼 써요.
지수적 성장
더하기로 늘어나는 것과 곱하기로 늘어나는 것
매일 1만 원씩 모으는 것(선형)과 매일 1%씩 불리는 것(지수)은 처음엔 비슷해 보여도 결국 완전히 달라요.
| 일수 | 매일 +1만 원 (시작 100만 원) | 매일 ×1.01 (시작 100만 원) |
|---|---|---|
| 10 | 110만 원 | 약 110만 원 |
| 100 | 200만 원 | 약 270만 원 |
| 365 | 465만 원 | 약 3,778만 원 |
복리 공식
원금 를 연 이율 로 년 굴리면
1,000만 원을 연 5%로 20년 굴리면 만 원이에요.
P, r, t = 10_000_000, 0.05, 20
print(f"{P * (1 + r) ** t:,.0f}원") # 26,532,977원
72의 법칙
돈이 두 배가 되는 데 걸리는 해는 대략 이에요. 연 6%면 약 12년이에요. 왜 이렇게 되는지는 아래 로그 부분에서 밝혀져요.
로그: 몇 번 곱해야 하나
이면 는? 3이에요. 이 "몇 제곱인가"를 묻는 연산이 로그예요.
는 "b를 몇 번 곱해야 x가 되나"로 읽어요. 지수와 로그는 서로 되돌리는 관계, 즉 서로의 역함수예요.
자주 쓰는 로그
| 표기 | 밑 | 주로 쓰는 곳 |
|---|---|---|
| 2 | 컴퓨터 과학, 정보량(비트) | |
| 10 | 자릿수, 데시벨, 지진 규모 | |
| 수학, 통계, 머신러닝 |
는 자연 상수라고 불리는 특별한 수예요. 연속 복리를 계산하면 나오는 수로, 미분했을 때 자기 자신이 되는 함수 의 밑이라서 미적분과 머신러닝에서 가장 많이 쓰여요. 미적분 트랙에서 다시 만나요.
로그의 성질
지수 법칙을 뒤집으면 로그의 성질이 나와요.
곱셈을 덧셈으로 바꿔 준다는 것이 로그의 가장 강력한 성질이에요. 아주 작은 확률 수천 개를 곱하면 컴퓨터가 0으로 처리해 버리는데(언더플로), 로그를 씌우면 덧셈이 되어 안전하게 계산할 수 있어요. 머신러닝에서 확률 대신 로그 확률을 쓰는 이유예요.
밑을 바꾸는 공식도 있어요.
import math
print(math.log2(1024)) # 10.0
print(math.log10(1_000_000)) # 6.0
print(math.log(math.e)) # 1.0 (자연로그)
print(math.log(8, 2)) # 3.0 (밑 지정)
72의 법칙이 나오는 이유
두 배가 되는 시간 는 를 풀면 돼요. 양변에 자연로그를 씌우면
이 작을 때 이라서요. 0.693을 퍼센트로 쓰면 69.3인데, 계산하기 편하고 이율이 5~10% 근처일 때 더 잘 맞는 72를 쓰는 거예요.
로그 스케일: 큰 차이를 한눈에
1, 10, 100, 1000, 10000을 보통 눈금에 그리면 앞의 값들은 바닥에 붙어 안 보여요. 로그 눈금은 배수가 같으면 간격이 같게 그려요. 10배마다 한 칸씩요.
- 주식 장기 차트: 1만 원에서 2만 원, 10만 원에서 20만 원은 둘 다 같은 "2배" 상승이라 같은 높이로 보여요.
- 지진 규모: 규모가 1 오르면 에너지는 약 32배예요.
- 소리 크기(데시벨): 10dB이 오르면 세기는 10배예요.
데이터 분석에서 소득, 조회수, 가격처럼 범위가 넓은 값은 로그를 씌워서 보는 경우가 많아요. 머신러닝 전처리에서도 자주 쓰는 기술이에요.
컴퓨터 과학 속의 로그
이진 탐색: 반씩 줄이면 로그
정렬된 100만 개 중에서 값을 찾을 때 반씩 범위를 줄이면 몇 번이면 될까요? 범위가 1이 될 때까지 2로 나누는 횟수이니
20번이에요. 하나씩 확인하면 최악 100만 번인데요. 숫자 맞히기 게임에서 7번이면 충분했던 이유도 이기 때문이에요.
빅오 표기의 로그
알고리즘 속도를 나타내는 빅오 표기에서 로그는 "거의 공짜"에 가까운 좋은 속도예요.
| 표기 | 데이터 100만 개일 때 대략 연산 수 | 예 |
|---|---|---|
| 1 | 딕셔너리 조회 | |
| 20 | 이진 탐색 | |
| 1,000,000 | 리스트 전체 훑기 | |
| 20,000,000 | 좋은 정렬 알고리즘 | |
| 1,000,000,000,000 | 이중 반복으로 모든 쌍 비교 |
알고리즘 트랙에서 자세히 다루지만, 지금은 "이 커질수록 로그는 아주 천천히 자란다"는 감각만 가져가세요.
필요한 비트 수
가지를 구별하려면 몇 비트가 필요할까요? 비트예요(괄호 모양은 올림). 학생 300명에게 번호를 주려면 이니 9비트가 필요해요.
AI 속의 로그
정보량
자주 일어나는 일은 놀랍지 않고, 드문 일은 놀라워요. 정보 이론은 이 "놀라움"을 로그로 재요.
확률 1/2인 일(동전 앞면)은 1비트, 확률 1/1024인 일은 10비트의 정보를 가져요. 확률과 통계 트랙의 정보 이론 강의에서 엔트로피로 이어져요.
손실 함수의 로그
분류 모델을 학습시킬 때 가장 많이 쓰는 손실 함수인 교차 엔트로피는 이렇게 생겼어요.
모델이 정답에 높은 확률(예: 0.9)을 주면 손실은 작고(), 정답에 낮은 확률(예: 0.01)을 주면 손실이 커요(). 틀린 것을 자신 있게 틀릴수록 벌을 크게 주는 구조예요. 머신러닝을 공부하다 이 식을 다시 만나면, 오늘 배운 로그의 성질이 그대로 보일 거예요.
연습 문제
- 을 2의 거듭제곱으로 쓰세요.
- 은?
- 이 성립하는 이유는?
- 연 8% 수익률이면 원금이 두 배가 되는 데 대략 몇 년?
- 정렬된 10억 개 데이터에서 이진 탐색으로 값을 찾으면 최대 몇 번 비교할까요?
- 확률 1/8인 사건의 정보량은 몇 비트?
정답
- (= 128)
- 이에요.
- 이고, 로그는 곱셈을 덧셈으로 바꾸기 때문이에요.
- 년쯤이에요.
- 이니 약 30번이에요.
- 비트
다음 강의
다음 강의에서는 경우의 수와 조합론을 배워요. 비밀번호가 얼마나 안전한지, 로또에 당첨될 확률은 얼마인지, 알고리즘이 확인해야 할 경우가 몇 가지인지 계산하는 도구예요. 확률과 통계 트랙의 바탕이 되기도 해요.