이 부록은 마지막 수학 준비물이다. 본문 3장에서 신경망 출력을 확률처럼 만드는 소프트맥스, 4장에서 학습이 얼마나 틀렸는지를 재는 교차 엔트로피가 나오는데, 둘 다 explog라는 낯선 기호를 쓴다. 이름만 무섭지 사실은 “곱하기”와 “그 반대”일 뿐이다. 여기서 딱 필요한 만큼만, 숫자로 하나씩 떼어 보자. 겁먹지 않아도 된다.

지수 — 같은 수를 여러 번 곱하기

지수는 어려운 말 같지만 그냥 같은 수를 여러 번 곱한 것이다. 곱셈을 짧게 쓰는 약속이다.

은 “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장부터 시작하자.