이 부록은 마지막 수학 준비물이다. 본문 3장에서 신경망 출력을 확률처럼 만드는 소프트맥스, 4장에서 학습이 얼마나 틀렸는지를 재는 교차 엔트로피가 나오는데, 둘 다 exp와 log라는 낯선 기호를 쓴다. 이름만 무섭지 사실은 “곱하기”와 “그 반대”일 뿐이다. 여기서 딱 필요한 만큼만, 숫자로 하나씩 떼어 보자. 겁먹지 않아도 된다.
지수 — 같은 수를 여러 번 곱하기
지수는 어려운 말 같지만 그냥 같은 수를 여러 번 곱한 것이다. 곱셈을 짧게 쓰는 약속이다.
은 “2의 3제곱”이라고 읽는다. 작게 붙은 숫자 3은 “2를 3번 곱해라”는 뜻이다. 손으로 따라가 보자.
- (2를 1번)
- (2를 2번)
- (2를 3번)
- (2를 4번)
위에 붙은 숫자가 1씩 커질 때마다 결과는 2배씩 뛴다. 4 → 8 → 16. 이렇게 곱셈이 쌓이면 숫자는 아주 빨리 커진다. 이걸 “지수적으로 커진다”고 한다.
한 가지만 미리 약속해 두자. 아무 수든 0제곱은 1이다.
이상해 보이지만 규칙을 거꾸로 내려오면 자연스럽다. , , — 하나 내려올 때마다 2로 나눴다. 한 번 더 내려오면 , 그래서 이다.
이것만 기억하자: 은 “2를 3번 곱해라”는 뜻이고, 위 숫자가 커지면 결과는 무섭게 커진다.
exp와 — 자연스럽게 자라는 곱셈
방금은 밑(아래 큰 숫자)이 2였다. 딥러닝에서는 밑으로 라는 특별한 수를 자주 쓴다.
는 “자연상수”라고 읽고, 값은 대략 2.718이다. 원주율 가 3.14…로 딱 안 떨어지는 것처럼, 도 2.718…로 끝없이 이어지는 수다. 지금은 “2보다 조금 큰, 3보다는 작은 어떤 수” 정도로만 생각하면 충분하다.
를 밑으로 하는 지수를 특별히 exp라고 쓴다. 와 는 완전히 같은 말이다.
숫자로 보자.
밑이 2일 때는 한 칸에 2배씩 뛰었는데, 는 2.718…배씩 뛴다. 그래서 조금 더 가파르게 커진다. 를 왜 하필 쓰냐고 물으면, 미분(부록 ②)을 했을 때 식이 가장 깔끔해지는 “자연스러운” 밑이기 때문이다. 지금은 “곱셈이 가장 매끄럽게 자라는 밑” 정도로 넘어가자.
이것만 기억하자: exp(x)는 2.718…을 번 곱한 것이고, 가 커지면 빠르게 커진다.
그래프 — 왜 항상 양수이고, 왜 급히 커지나
에는 딥러닝에서 아주 중요한 두 가지 성질이 있다. 표로 확인하자.
| 약 0.135 | |
| 약 0.368 | |
| 1 | |
| 약 2.718 | |
| 약 7.389 | |
| 약 20.09 |
성질 1 — 결과는 언제나 양수다. 가 음수여도 0보다 작아지지 않는다. 처럼 아주 작은 양수가 될 뿐, 절대 음수나 0이 되지 않는다.
왜 그럴까? 곱셈이라서 그렇다. 음수 지수는 “나누기”를 뜻한다.
을 양수로 나눈 값이니 여전히 양수다. 아무리 많이 나눠도 0에 가까워질 뿐 0을 넘어 음수가 되지는 않는다.
성질 2 — 오른쪽으로 갈수록 급격히 치솟는다. 가 1에서 2로, 2에서 3으로 갈 때 결과는 2.7 → 7.4 → 20으로 껑충껑충 뛴다. 입력의 작은 차이가 출력에서는 큰 차이로 벌어진다.
헷갈리기 쉬워요: “항상 양수”와 “0이 될 수 있다”는 다르다. 는 아무리 작아져도 0.000…1 같은 양수이지 결코 0이 아니다. 이 사실이 뒤에 로그를 쓸 때 아주 중요해진다.
이것만 기억하자: exp는 무슨 숫자를 넣어도 결과가 양수이고, 입력이 커지면 출력은 훨씬 더 크게 벌어진다.
그래서 시그모이드·소프트맥스가 를 쓴다
방금 본 두 성질이 바로 신경망이 를 사랑하는 이유다.
신경망 계산의 중간값은 음수도 되고 양수도 된다. 예를 들어 어떤 뉴런의 값이 , 다른 뉴런은 이라고 하자. 그런데 우리는 이걸 “확률”처럼 0과 1 사이 값으로 바꾸고 싶다. 음수인 확률은 말이 안 되니까.
여기서 exp가 등장한다. 성질 1 덕분에 음수를 넣어도 양수가 나온다.
- (음수였던 게 양수가 됐다)
시그모이드는 이걸 이용해 어떤 값이든 0과 1 사이로 눌러 담는 함수다. 소프트맥스는 여러 값을 각각 exp로 양수로 만든 뒤, 전체 합으로 나눠 “비율”로 바꾼다.
또 성질 2 덕분에 큰 값과 작은 값의 차이가 더 벌어진다. 위에서 원래 차이는 였는데, exp를 씌우니 7.389 대 0.223으로 33배 넘게 벌어졌다. 그래서 소프트맥스는 “제일 그럴듯한 답”을 더 또렷하게 강조해 준다.
이것만 기억하자: 시그모이드·소프트맥스가 exp를 쓰는 건, 음수를 양수로 바꾸고(성질 1) 큰 차이를 더 벌리기(성질 2) 위해서다.
로그 — 지수의 반대, “몇 번 곱했나”
지수가 “몇 번 곱하면 이 값이 되나”의 답을 만든다면, 로그는 거꾸로 그 횟수를 되찾는 것이다. 로그는 지수의 반대다.
은 “로그 2의 8”이라고 읽고, **“2를 몇 번 곱해야 8이 되나?”**라는 질문이다. 답은 3번. 그래서 이다. 곱셈을 되감는 되돌리기 버튼이라고 생각하면 된다.
- (2를 1번 곱하면 2)
- (2를 2번 곱하면 4)
- (2를 3번 곱하면 8)
딥러닝에서는 밑을 로 쓰는 로그를 특히 많이 쓴다. 이걸 그냥 라고만 쓰기도 한다(이 부록에서 밑이 안 적힌 는 밑이 인 로그다). “를 몇 번 곱해야 이 값이 되나”를 묻는 것이다.
의 표를 뒤집어 놓은 것과 똑같다. exp가 오른쪽 계단이라면 log는 그 계단을 되짚어 올라가는 것이다.
이것만 기억하자: 는 “를 몇 번 곱해야 가 되나?”라는 질문의 답이다.
로그의 성질 — 곱을 합으로 바꾼다
로그에는 딱 하나 기억할 마법 같은 성질이 있다. 곱하기를 더하기로 바꿔 준다.
숫자로 확인하자. , 라고 하자.
- 곱을 먼저:
- 합으로:
정확히 같다! 곱셈이 덧셈으로 바뀌었다. 컴퓨터는 아주 작은 수를 여러 개 곱하면 값이 너무 작아져 0으로 뭉개지는데(언더플로), 로그로 바꾸면 곱셈이 덧셈이 되어 이 문제가 사라진다. 그래서 확률을 다룰 때 로그가 요긴하다.
두 가지 값만 더 외워 두자.
를 0번 곱하면(아무것도 안 곱하면) 1이다. 그래서 이다.
이게 핵심이다. 입력이 1보다 작아 0으로 다가갈수록, 로그는 아래로 뚝 떨어져 아주 큰 음수가 된다.
0.1 → 0.01 → 0.001로 작아질수록 로그는 로 끝없이 깊게 내려간다.
이것만 기억하자: 로그는 곱을 합으로 바꾸고(), 이며, 0에 가까울수록 아주 큰 음수가 된다.
그래서 손실에 로그를 쓴다
방금 본 “0에 가까울수록 큰 음수”라는 성질이 학습에 딱 맞는다.
신경망이 정답을 얼마나 잘 맞혔는지 하나의 숫자로 재고 싶다. 이 숫자를 **손실(loss)**이라고 한다. 손실은 잘 맞히면 작고, 못 맞히면 커야 한다. 그래야 “손실을 줄이자”는 방향이 곧 “더 잘 맞히자”가 된다.
여기에 로그를 쓴다. 정답에 대해 신경망이 내놓은 확신(확률)이 일 때, 벌점을 로 준다. 앞에 마이너스를 붙이는 건, 로그가 음수라서 뒤집어 양수 벌점으로 만들기 위해서다.
- 잘 맞힘 → 가 1에 가까움 → 가 0에 가까움 → 벌점 가 작다 (거의 0)
- 못 맞힘 → 가 0에 가까움 → 가 큰 음수 → 벌점 가 크다
로그의 “0에서 뚝 떨어지는” 성질 덕분에, 틀릴수록 벌점이 눈덩이처럼 커진다. 다음 절에서 이걸 숫자로 보자.
이것만 기억하자: 손실에 로그를 쓰는 건, 정답을 확신하면 벌점이 0에 가깝고 틀리면 벌점이 폭발하게 만들기 위해서다.
확률 기초 — 0과 1 사이, 다 더하면 1
로그를 씌울 그 “확신”이 바로 확률이다. 확률은 어렵지 않다. 규칙은 둘뿐이다.
규칙 1 — 모든 확률은 0과 1 사이다. 0은 “절대 안 일어남”, 1은 “반드시 일어남”, 0.5는 “반반”이다. 1.3짜리 확률이나 짜리 확률은 없다.
규칙 2 — 일어날 수 있는 모든 경우의 확률을 다 더하면 정확히 1이다.
동전을 보자. 앞면과 뒷면, 각각 확률 이다.
주사위를 보자. 1부터 6까지 각각 이다.
여섯 눈의 확률을 다 더하면 1이 된다. 세상 어딘가에 답이 반드시 있으니 전체를 더하면 100%, 즉 1인 것이다.
이것만 기억하자: 확률은 0과 1 사이의 값이고, 가능한 모든 경우를 더하면 항상 1이다.
그래서 소프트맥스 출력이 “확률처럼” 읽힌다
앞에서 소프트맥스는 여러 값을 exp로 양수로 만든 뒤 전체 합으로 나눈다고 했다. 바로 그 “전체 합으로 나누기” 때문에 확률의 두 규칙이 저절로 지켜진다.
숫자 그림(0~9)을 알아보는 신경망이 어떤 이미지를 보고 이런 출력을 냈다고 하자.
| 숫자 | 소프트맥스 출력 |
|---|---|
| ”2일 확률” | 0.7 |
| ”3일 확률” | 0.2 |
| ”8일 확률” | 0.1 |
- 각 값이 모두 0과 1 사이다 → 규칙 1 통과
- 다 더하면 → 규칙 2 통과
그래서 우리는 이 출력을 “이 신경망은 이 그림을 70% 확신으로 2라고 본다”처럼 확률로 읽을 수 있다. 소프트맥스가 확률을 “진짜로 아는” 건 아니지만, 확률의 규칙을 지키도록 모양을 잡아 주기 때문에 확률처럼 다뤄도 된다.
이것만 기억하자: 소프트맥스는 출력이 0~1이고 합이 1이 되게 만들어, 결과를 확률처럼 읽을 수 있게 해 준다.
교차 엔트로피 — 정답에 낮은 확률을 주면 큰 벌점
이제 마지막 조각이다. 소프트맥스가 확률을 내놓았고, 로그로 벌점 매기는 법도 배웠다. 이 둘을 합친 게 교차 엔트로피라는 손실이다.
이름은 거창하지만 하는 일은 단순하다. 정답 자리에 신경망이 준 확률만 꺼내서 를 씌운다.
위 예에서 정답이 진짜 “2”였다고 하자. 신경망은 2에 0.7을 줬다. 잘 맞혔다.
벌점이 작다. 반대로 신경망이 헷갈려서 정답인 2에 겨우 0.1만 줬다고 하자.
벌점이 6배 넘게 커졌다. 표로 나란히 보자.
| 정답에 준 확률 | 벌점 |
|---|---|
| 약 0.105 | |
| 약 0.357 | |
| 약 0.693 | |
| 약 2.303 | |
| 약 4.605 |
정답을 강하게 확신할수록() 벌점은 0에 가깝고, 정답을 거의 무시할수록() 벌점이 무섭게 치솟는다. 이게 로그의 “0에서 뚝 떨어지는” 성질이 일하는 모습이다. 학습은 이 벌점을 줄이는 쪽으로 조금씩 값을 고쳐 가고(부록 ②의 미분·부록 ③의 기울기가 여기서 방향을 알려준다), 그렇게 신경망은 정답에 점점 더 큰 확률을 주게 된다.
이것만 기억하자: 교차 엔트로피는 “정답에 준 확률”에 를 씌운 벌점이라, 정답을 확신하면 작고 틀리면 폭발한다.
본문 어디서 쓰나
- 3장 (소프트맥스) — 신경망의 출력을
exp로 양수로 만들고 합으로 나눠 확률처럼 만든다. 여기서 이 부록의 “지수·exp·확률”이 전부 쓰인다. 음수를 양수로 바꾸고(성질 1), 큰 차이를 벌리고(성질 2), 합이 1이 되게(확률 규칙 2) 하는 그 과정이다. - 4장 (교차 엔트로피 오차) — 손실을 로 잰다. 로그의 “0에 가까우면 큰 음수” 성질이 “틀릴수록 큰 벌점”으로 이어진다.
이걸로 네 개의 수학 부록을 모두 뗐다. 이제 무서운 기호는 없다. exp는 곱하기, log는 그 반대, 확률은 0과 1 사이의 비율일 뿐이다.
이제 본문으로 — 1장부터 시작하자.