← 갤러리
신경망과 기계 학습

배우는 기계

손으로 쓴 숫자 3을 알아보는 규칙을 적어 보라고 하면 누구든 금방 막힙니다. 그래서 규칙 대신 예를 보여 주고, 기계가 틀릴 때마다 스스로 고치게 했습니다. 1943년 시카고의 논리 뉴런에서 오늘의 심층 신경망⁠(neural network)⁠까지, 그 밑바닥에는 미분⁠(differentiation)⁠과 연쇄법칙⁠(chain rule)⁠이 있습니다.

이 글의 처럼 점선이 그어진 숫자는 좌우로 끌 수 있고(키보드 ←/→도 됩니다), 색이 칠해진 같은 말은 눌러서 바꿀 수 있습니다. 밑줄 친 말에 마우스를 올리면 그림에서 그 부분이 빛납니다. 그림 속의 점은 대부분 끌어서 옮길 수 있습니다. 휴대폰에서는 마우스를 올리는 대신 누르면 됩니다.

우체국에 봉투가 하루에 수백만 통 들어온다고 합시다. 봉투마다 손으로 쓴 우편번호가 있고, 기계가 그것을 읽어 봉투를 알맞은 칸으로 보내야 합니다. 숫자 3을 알아보는 규칙을 적어 봅시다. "위아래로 둥근 곡선이 둘 있고, 왼쪽이 열려 있다." 그런데 위쪽 곡선이 평평하게 꺾인 3도 있고, 두 곡선이 붙지 않은 3도 있고, 기울어져서 거의 누운 3도 있습니다. 규칙에 예외를 붙이고, 그 예외에 또 예외를 붙이다 보면 끝이 나지 않습니다. 우리는 3을 쉽게 알아보지만, 어떻게 알아보는지는 말로 옮기지 못합니다.

다른 길이 있습니다. 규칙을 적는 대신 답이 붙은 예를 수천 개 보여 주고, 기계가 스스로 규칙을 찾게 하는 것입니다. 기계는 처음에 아무렇게나 답하다가, 틀릴 때마다 속의 숫자 몇 개를 조금씩 고칩니다. 1959년 IBM의 컴퓨터 과학자 아서 새뮤얼은 스스로 대국하며 실력이 느는 체커 프로그램을 다룬 논문에서 이런 일을 '기계 학습⁠(machine learning)⁠'이라고 불렀습니다. 이 말은 흔히 그에게서 비롯되었다고 봅니다.

이 글의 질문은 이것입니다. 예를 보여 주기⁠(period)⁠만 하면 규칙이 나온다는 것은 무슨 뜻이고, 어떻게 가능한가? 답을 따라가다 보면 뜻밖에도 익숙한 수학을 만납니다. 직선의 방정식, 최소제곱⁠(least squares)⁠, 미분, 그리고 연쇄법칙입니다. 이름만 기억나거나 처음 듣는 것이 있어도 괜찮습니다. 모두 쓰는 자리에서 작은 예와 함께 다시 설명합니다. 그 사이사이에 신경생리학자와 심리학자, 해군과 신문, 영국 의회의 연구비, 그리고 게임용 그래픽 칩이 끼어듭니다.

1 · 1943년 시카고문턱⁠(threshold)⁠을 넘는 뉴런

배우는 기계를 만들려면 먼저 '규칙을 담는 그릇'이 있어야 합니다. 이 절의 물음은 이것입니다. 신경세포를 흉내 낸 가장 단순한 계산 단위는 무엇을 할 수 있고, 무엇을 할 수 없을까요? 답은 그림 하나로 요약됩니다. 평면에 직선 하나를 긋는 것입니다.

이야기는 신경세포에서 시작합니다. 뇌의 신경세포는 나뭇가지처럼 뻗은 가지 돌기로 다른 세포들의 신호를 받아들이고, 받은 자극이 어느 문턱을 넘으면 축삭이라는 긴 줄기를 따라 전기 신호를 한 번 쏩니다. 이것을 '발화한다'고 합니다. 쏘거나, 쏘지 않거나. 이 '전부 아니면 전무'의 성질이 1940년대 초 시카고의 두 사람에게는 0과 1로 보였습니다.

한 사람은 일리노이 대학 의과대학의 신경생리학자 워런 맥컬러였고, 다른 한 사람은 열여덟 살의 월터 피츠였습니다. 디트로이트의 가난한 집에서 자란 피츠는 정규 교육을 거의 받지 못한 채 시카고 대학 근처를 떠돌며 수학과 논리학을 혼자 공부하던 청년이었습니다. 어린 나이에 러셀과 앨프리드 노스 화이트헤드가 쓴 논리학의 대작 『수학 원리』를 읽고 잘못을 찾아 러셀에게 편지를 보냈다는 이야기가 전하지만, 자세한 사정은 회고로만 남아 있습니다. 의대생 제롬 레트빈의 소개로 두 사람이 만났고, 맥컬러는 머물 곳이 없던 피츠를 한동안 자기 집에 들였습니다.

1943년 두 사람은 「신경 활동에 내재한 생각들의 논리 계산」이라는 논문을 냈습니다. 신경세포를 입력 몇 개를 받아 0 또는 1을 내는 단위로 단순화하고, 그런 단위를 이으면 불 대수⁠(Boolean algebra)⁠의 어떤 논리식이든 계산할 수 있음을 보였습니다. 불 대수는 참과 거짓을 1과 0으로 놓고 AND('그리고'), OR('또는'), NOT('아니다')으로 계산하는 대수입니다. 뇌가 계산하는 기계일 수 있다는, 당시로서는 대담한 주장이었습니다. 불의 논리가 전기 회로가 된 이야기는 「기계가 풀 수 없는 문제」 1절에 있습니다. 이번에는 같은 논리가 신경세포의 모습을 입습니다.

오늘날의 말로 적으면 이렇습니다. 입력 x1,x2x_1, x_2는 0이나 1이고, 각 입력에는 가중치⁠(weight)⁠ w1,w2w_1, w_2가 붙습니다. 가중치는 그 입력을 얼마나 중요하게 칠지를 정하는 수입니다. 뉴런은 가중치를 곱한 합 w1x1+w2x2w_1 x_1 + w_2 x_2가 문턱 θ\theta('세타') 이상이면 1을, 아니면 0을 냅니다.

예를 들어 w1=w2=1w_1 = w_2 = 1, θ=1.5\theta = 1.5라고 합시다. 입력이 (1, 1)이면 합은 1 + 1 = 2로 1.5 이상이니 1을 냅니다. (1, 0)이나 (0, 1)이면 합이 1, (0, 0)이면 0으로 둘 다 1.5보다 작으니 0을 냅니다. 두 입력이 모두 1일 때만 1을 내니, 이 뉴런은 논리의 AND('그리고')입니다. 아래 식과 그림의 처음 설정이 이것입니다.

가중치(, )와 문턱()을 바꾸어, 이 뉴런이 게이트가 되게 해 보세요. 입력 두 개의 조합은 네 가지뿐이니 정사각형의 네 꼭짓점⁠(vertex)⁠으로 그릴 수 있습니다. 뉴런이 1을 내는 곳은 파랗게, 0을 내는 곳은 분홍으로 칠해집니다.

가운데 정사각형의 꼭짓점이 입력 (x₁, x₂)의 네 조합입니다. 채운 점은 뉴런이 1을, 속이 빈 점은 0을 내는 입력이고, 빨간 테두리는 목표와 다른 칸입니다. 오른쪽은 입력 네 조합마다 출력을 적은 표(진리표⁠, truth table⁠)입니다.

두 영역의 경계는 w1x1+w2x2=θw_1 x_1 + w_2 x_2 = \theta, 곧 직선입니다. 처음 설정이라면 x1+x2=1.5x_1 + x_2 = 1.5이고, 이 식을 만족하는 점 (1.5, 0), (0, 1.5), (0.75, 0.75)는 모두 한 직선 위에 있습니다. 직선의 한쪽에서는 합이 1.5보다 크고 다른 쪽에서는 작습니다. 문턱 뉴런 하나가 하는 일은 평면에 직선 하나를 긋고 한쪽을 1, 다른 쪽을 0이라고 부르는 것입니다. 두 가중치의 비가 직선의 기울기⁠(slope)⁠를 정하고, 문턱은 가중치와 함께 직선이 어디를 지나는지를 정합니다. 이 그림을 기억해 두세요. 이 글의 절반은 이 직선 이야기입니다.

맥컬러와 피츠의 논문은 신경과학보다 컴퓨터 쪽에서 더 멀리 퍼졌습니다. 1945년 폰 노이만은 「EDVAC 보고서 초안」에서 컴퓨터의 논리 소자를 설명하며 이들의 뉴런 표기를 빌려 썼습니다. 1951년 무렵 랜드 연구소의 논리학자 스티븐 클리니는 이런 뉴런의 그물이 알아볼 수 있는 입력 패턴이 정확히 어떤 것인지 물었고, 그 답으로 오늘날 정규 표현식⁠(regular expression)⁠이라 부르는 표기, 곧 글자열의 무늬를 'a를 0번 이상 되풀이한 뒤 b' 같은 식으로 적는 방법을 만들었습니다. 뉴런의 그물은 정해진 몇 개의 상태 사이를 옮겨 다니며 입력을 읽는 가장 단순한 기계, 유한 오토마톤⁠(finite automaton)⁠의 조상이기도 한 셈입니다.

그러나 맥컬러–피츠 뉴런에는 배우는 능력이 없었습니다. 가중치와 문턱은 설계자가 정해 주어야 했습니다. 배움의 첫 단서는 몬트리올의 맥길 대학에서 나왔습니다. 심리학자 도널드 헤브는 1949년 『행동의 조직』에서, 학습이란 세포 사이의 연결이 강해지는 일이라고 제안했습니다.

세포 A의 축삭이 세포 B를 흥분시킬 만큼 가까이 있고, 되풀이하여 또는 꾸준히 B를 발화시키는 데 참여하면, 한쪽 또는 두 세포 모두에서 어떤 성장 과정이나 대사 변화가 일어나, B를 발화시키는 세포의 하나로서 A의 효율이 높아진다.— 도널드 헤브, 『행동의 조직』(1949)

흔히 "함께 발화하는 세포는 함께 연결된다"로 줄여 말하는데, 이 짧은 표어는 헤브가 아니라 뒷날의 신경과학자들이 만든 것입니다. 가중치가 경험에 따라 변한다는 생각이 여기서 나왔고, 남은 문제는 어떻게 변해야 하는가였습니다.

정리하면, 문턱 뉴런은 입력에 가중치를 곱해 더한 값을 문턱과 비교하는 계산 단위이고, 입력 평면에 직선 하나를 그어 한쪽을 1, 다른 쪽을 0이라 부릅니다. 가중치와 문턱을 고르는 것은 직선을 고르는 것과 같고, 배운다는 것은 그 수들을 경험으로 고쳐 가는 일입니다.

맥컬러와 피츠의 뒷이야기는 노버트 위너와 얽혀 있습니다. 피츠는 1943년 레트빈의 소개로 MIT의 위너를 찾아가 그 밑에서 공부하게 되었고, 맥컬러는 1946년부터 기계와 동물의 제어와 통신을 함께 논하는 메이시 회의의 의장을 맡았습니다. 위너가 이 흐름에 이른 길은 전쟁을 거쳤습니다. 2차 세계대전 중 그는 미국 국방 연구 위원회의 의뢰로, 날아가는 폭격기가 몇 초 뒤 어디에 있을지 내다보고 대공포를 겨누는 문제를 연구했습니다. 이 일을 계기로 1943년 생리학자 아르투로 로젠블루에스, 공학자 줄리언 비글로와 함께 철학 학술지 『과학철학』에 「행동, 목적, 목적론」을 냈습니다. 목표를 향한 행동을 되먹임⁠(feedback)⁠, 곧 목표와의 어긋남을 다시 입력으로 돌려 행동을 고치는 고리로 설명할 수 있다는 주장이었습니다. 철학자들이 오래 다투어 온 '목적'이라는 말을 기계의 언어로 옮기려 한 시도였습니다. 위너가 1948년 『사이버네틱스⁠(cybernetics)⁠』로 이름 붙인 흐름의 한가운데에 논리 뉴런이 있었던 것입니다. 1952년 맥컬러가 MIT로 옮겨 레트빈, 피츠와 연구실을 꾸리자 그 흐름은 한곳에 모이는 듯했습니다. 그런데 같은 해 위너는 맥컬러 쪽 사람들과 갑자기 관계를 끊었고, 피츠에게는 끝내 이유를 말하지 않았습니다. 전기 작가들은 위너의 아내가 지어낸 소문을 그 까닭으로 꼽습니다. 피츠는 깊이 흔들렸고, 친구들의 회고에 따르면 모두가 기다리던 박사 논문 원고와 노트를 불태웠습니다. 1959년 레트빈, 마투라나, 맥컬러, 피츠가 함께 낸 「개구리의 눈이 개구리의 뇌에게 말하는 것」은 개구리의 망막이 빛의 분포를 그대로 옮기지 않고, 움직이는 작은 검은 물체 같은 무늬를 이미 골라 뇌로 보낸다는 것을 보였습니다. 뇌를 순수한 논리 회로로 보던 피츠에게 이 결과는 실망스러웠다고 레트빈은 전합니다. 눈이 무늬를 골라 본다는 생각은 6절의 허블과 비셀로 이어집니다. 피츠는 1969년 5월, 맥컬러는 넉 달 뒤인 9월에 세상을 떠났습니다.

2 · 1958년 버펄로틀리면 고친다: 퍼셉트론⁠(perceptron)⁠

1절의 뉴런은 사람이 가중치를 정해 주었습니다. 이 절의 물음은 이것입니다. 답이 붙은 예를 하나씩 보여 주기만 해서, 기계가 알맞은 직선을 스스로 찾게 할 수 있을까? 그리고 그 과정은 반드시 끝날까?

가중치를 어떻게 고칠지, 그 답을 처음 기계로 만든 사람은 뉴욕주 버펄로의 코넬 항공 연구소에서 일하던 심리학자 프랭크 로젠블랫이었습니다. 1957–58년 그는 해군 연구청의 지원을 받아 퍼셉트론이라는 학습 기계를 발표했습니다. 구조는 1절의 문턱 뉴런과 같습니다. 다른 점은 가중치를 사람이 정하지 않고, 예를 하나씩 보면서 기계가 스스로 고친다는 것입니다. 1958년 『심리학 리뷰』에 실린 논문 「퍼셉트론: 뇌에서 정보를 저장하고 조직하는 확률⁠(probability)⁠ 모형」에서 로젠블랫은 이 차이를 분명히 했습니다. 맥컬러–피츠의 그물은 논리식에 맞추어 한 줄 한 줄 설계한 회로였지만, 실제 뇌의 배선은 그렇게 정밀하게 정해져 있을 리 없다고 그는 보았습니다. 그래서 감각 세포와 가운데 세포 사이를 무작위로 잇고, 쓸모 있는 연결만 경험으로 강해지게 하는 모형을 내세웠습니다. 설계 대신 학습이라는 방향 전환이었습니다.

규칙은 단순합니다. 먼저 적는 법을 정합시다. 입력 (x1,x2)(x_1, x_2)처럼 수 몇 개를 한 묶음으로 적은 것을 벡터⁠(vector)⁠라 하고 굵은 글자 x\mathbf x로 씁니다. 가중치도 벡터 w=(w1,w2)\mathbf w = (w_1, w_2)로 적습니다. 두 벡터의 같은 자리끼리 곱해 더한 값 w⋅x=w1x1+w2x2\mathbf w \cdot \mathbf x = w_1 x_1 + w_2 x_2를 내적⁠(dot product)⁠이라 하고, 'w 내적 x'라고 읽습니다. 1절의 가중합이 바로 이 내적입니다.

이제 퍼셉트론이 답하는 방식입니다. 기계는 점수 w⋅x+b\mathbf w \cdot \mathbf x + b가 양수이면 파랑, 음수이면 분홍이라고 답합니다. 여기서 bb는 1절의 문턱 θ에 음의 부호를 붙인 값(b=−θb = -\theta)이고, 편향이라고 부릅니다. 그러면 점수는 '가중합 − 문턱'이 됩니다. 1절에서는 가중합을 문턱과 비교했지만, 여기서는 점수가 양수인지 음수인지만 보면 됩니다. 정답 yy는 +1(파랑) 또는 −1(분홍)로 적습니다. 예를 하나 보고,

화살표 ←는 '왼쪽 것을 오른쪽 값으로 바꾼다'는 뜻입니다. 숫자로 한 번 해 봅시다. 지금 w=(1,−1)\mathbf w = (1, -1), b=0b = 0이고, 파란 점(y=+1y = +1) x=(1,2)\mathbf x = (1, 2)를 보았다고 합시다. 점수는 1×1+(−1)×2+0=−11 \times 1 + (-1) \times 2 + 0 = -1로 음수이니 분홍이라고 답했고, 틀렸습니다. 그래서 w←(1+1,  −1+2)=(2,1)\mathbf w \leftarrow (1 + 1,\; -1 + 2) = (2, 1), b←0+1=1b \leftarrow 0 + 1 = 1로 고칩니다. 고친 뒤 같은 점의 점수는 2×1+1×2+1=52 \times 1 + 1 \times 2 + 1 = 5로 양수가 되어, 이번에는 맞힙니다.

왜 이것이 도움이 될까요? 점수는 −1에서 5로 6만큼 올랐습니다. 이 6은 12+22+11^2 + 2^2 + 1입니다. 일반적으로 고친 뒤에 같은 점의 점수는 y(∥x∥2+1)y(\lVert \mathbf x \rVert^2 + 1)만큼 달라집니다. 새 점수 (w+yx)⋅x+(b+y)(\mathbf w + y\mathbf x)\cdot \mathbf x + (b + y)를 풀면 옛 점수에 y x⋅x+yy\,\mathbf x \cdot \mathbf x + y가 더해진 것이기 때문입니다. 여기서 ∥x∥\lVert \mathbf x \rVert는 벡터 x\mathbf x의 길이이고 x⋅x=∥x∥2\mathbf x \cdot \mathbf x = \lVert \mathbf x \rVert^2이니, 괄호 안은 늘 양수입니다. 파란 점이면 점수가 오르고 분홍 점이면 내려가니, 어느 쪽이든 정답 쪽으로 움직입니다. 한 번에 다 고쳐지지 않을 수도 있고, 다른 점을 망칠 수도 있습니다. 그래도 되풀이하면 어떻게 될까요?

파랑과 분홍 점이 답을 아는 예이고, 배경은 지금의 퍼셉트론이 평면의 각 점에 줄 답입니다. 노란 화살표 w는 직선에 수직이고 파랑 쪽을 가리킵니다. 링은 방금 본 예입니다(초록은 맞힘, 빨강은 틀려서 고침). 점을 끌어 옮길 수 있습니다.

점 되돌리기 지금 번째 예까지 보았습니다.

처음 직선은 아무렇게나 그은 것이라 거의 모든 점⁠(almost everywhere)⁠을 틀립니다. 한 단계씩 눌러 보면, 방금 본 점이 틀렸을 때마다(그때 링이 빨갛게 바뀝니다) 가중치 벡터가 그 점 쪽으로 (분홍이면 반대쪽으로) 조금 돌아가고, 직선이 따라 돕니다. 이제 점들을 끌어서 파랑과 분홍이 서로 가까워지게 옮긴 뒤 다시 돌려 보세요. 두 무리 사이의 틈이 좁을수록 고치는 횟수가 늘어납니다. 파란 점 하나를 분홍 무리 한가운데로 끌어다 놓으면 어떻게 될까요?

1962년 무렵 수학자 헨리 블록, 앨버트 노비코프 등은 이 과정이 반드시 끝난다는 것을 증명했습니다. 두 무리를 가르는 직선이 하나라도 있다고 합시다. 그 직선과 가장 가까운 점 사이의 틈(거리)을 γ\gamma('감마'), 원점에서 가장 먼 점까지의 거리를 RR이라 하면, 가중치 0에서 출발한 퍼셉트론이 고치는 횟수는 많아야

(Rγ)2\left(\frac{R}{\gamma}\right)^{2}

번입니다(편향 bb는 모든 점에 늘 1인 좌표를 하나 덧붙여 가중치의 하나로 세고, RR과 γ\gamma도 그렇게 늘린 점들로 잽니다). 예를 들어 R이 틈 γ의 10배이면 고치는 횟수는 100번을 넘지 않습니다. 예가 몇 개이든, 어떤 순서로 보여 주든 상관없습니다. 다만 멈춘 곳의 직선은 가르는 직선 가운데 하나일 뿐, 두 무리 한가운데를 지나는 가장 좋은 직선이라는 보장은 없습니다.

증명의 생각은 이렇습니다. 틀려서 고칠 때마다 w\mathbf w는 '정답 직선에 수직인 방향'으로 일정량 이상 자랍니다. 그런데 w\mathbf w의 전체 길이는 그보다 훨씬 느리게 자랍니다. 한 방향으로의 길이가 전체 길이보다 클 수는 없으니, 고치기를 무한히 되풀이할 수는 없습니다.

증명의 계산 보기

고칠 때마다 w\mathbf w의 성분 가운데 정답 직선에 수직인 방향의 성분은 적어도 γ\gamma씩 자랍니다. 더하는 y xy\,\mathbf x는 점을 정답 쪽으로 본 좌표이고, 모든 점은 정답 직선에서 적어도 γ만큼 떨어져 정답 쪽에 있기 때문입니다. 한편 w\mathbf w의 길이의 제곱은 한 번에 많아야 R2R^2씩밖에 자라지 못합니다. ∥w+yx∥2=∥w∥2+2y w⋅x+∥x∥2\lVert \mathbf w + y\mathbf x \rVert^2 = \lVert \mathbf w \rVert^2 + 2y\,\mathbf w \cdot \mathbf x + \lVert \mathbf x \rVert^2에서, 틀렸다는 것은 가운데 항 2y w⋅x2y\,\mathbf w \cdot \mathbf x가 0 이하라는 뜻이고, 마지막 항은 R2R^2 이하이기 때문입니다.

그래서 kk번 고친 뒤 앞의 성분은 적어도 kγk\gamma이고, 길이의 제곱은 많아야 kR2kR^2이니 길이는 많아야 k R\sqrt{k}\,R입니다. 한 방향의 성분이 벡터의 길이보다 클 수는 없으니 kγ≤k Rk\gamma \le \sqrt{k}\,R이고, 양변을 k γ\sqrt{k}\,\gamma로 나누어 제곱하면 k≤(R/γ)2k \le (R/\gamma)^2입니다. 앞의 것은 k에 비례해, 뒤의 것은 √k에 비례해 자라니 k가 크면 부등식이 깨질 수밖에 없다는 것이 핵심입니다.

틈이 넓으면 금방 끝나고, 틈이 좁으면 오래 걸립니다. 반대로 가르는 직선이 없으면 고치기는 끝나지 않습니다. 그림에서 파란 점을 분홍 무리 속에 넣었을 때 본 것이 그것입니다.

정리하면, 퍼셉트론은 틀린 점을 만날 때마다 그 점의 좌표를 가중치에 더하거나 빼서 직선을 그 점 쪽으로 돌립니다. 가르는 직선이 있으면 이 고치기는 유한한 횟수 안에 반드시 끝나고, 없으면 끝나지 않습니다.

로젠블랫은 이 기계를 실제로 만들었습니다. 1958년 7월 워싱턴의 기상청에 있던 IBM 704 컴퓨터로 한 시연에서, 퍼셉트론은 카드의 왼쪽과 오른쪽에 찍힌 표시를 구별하는 법을 수십 번의 시도 만에 배웠다고 전합니다. 이어 코넬 항공 연구소는 전용 기계 '마크 I 퍼셉트론'을 지었습니다. 20×20칸으로 늘어선 광전지 400개가 눈이었고, 가중치는 전기 모터가 돌리는 가변 저항기에 담겼습니다. 기계가 틀리면 모터가 윙 소리를 내며 저항기를 돌렸습니다. 이 기계는 지금 워싱턴의 스미스소니언 미국사 박물관에 있습니다.

해군은 오늘, 걷고 말하고 보고 쓰고 스스로를 복제하며 자신의 존재를 의식할 수 있으리라 기대하는 전자 계산기의 배아를 공개했다.— 『뉴욕 타임스』의 시연 보도(1958년 7월 8일)

신문의 기대는 기계가 할 수 있는 일을 한참 앞질렀습니다. 로젠블랫 자신도 퍼셉트론의 앞날을 크게 말하곤 했지만, 기계가 실제로 배운 것은 단순한 모양을 가르는 일이었습니다. 이렇게 부풀었다가 꺼지는 기대는 이 분야에서 되풀이됩니다.

로젠블랫은 설계 대신 학습을 고른 자신의 선택이 철학의 오랜 갈림길 위에 있다는 것도 알고 있었습니다. 그는 1958년 논문 첫머리에서 두 입장을 나란히 놓았습니다. 하나는 기억이 부호로 적힌 기록처럼 뇌 어딘가에 저장된다는 입장이고, 다른 하나는 자극의 상은 따로 기록되지 않고 세포 사이의 새 연결로만 남는다는 입장입니다. 그는 뒤의 입장이 '영국 경험론의 전통'에서 나왔다고 적고 그 편에 섰습니다. 마음은 처음에 빈 종이와 같고 앎은 경험이 그 위에 쓴다는 로크와 흄의 경험론이, 연결의 세기를 경험으로 고쳐 가는 기계의 모습으로 돌아온 셈입니다. 그렇다고 경험만으로 충분하다는 결론이 난 것은 아닙니다. 앎의 틀 일부는 경험보다 먼저 있어야 한다는 반대쪽 생각도 이 글에서 다시 만납니다. 7절의 귀납 편향⁠(inductive bias)⁠, 다시 말해 학습 기계가 자료를 보기 전에 품고 오는 가정이 그것입니다.

3 · 직선 하나의 한계XOR과 인공지능⁠(artificial intelligence)⁠의 겨울

퍼셉트론이 배울 수 있는 것은 직선 하나로 가를 수 있는 것뿐입니다. 이 절의 물음은 이 한계가 얼마나 심각한지, 그리고 그것을 넘으려면 무엇이 필요한지입니다.

1절의 XOR이 그 한계를 가장 작게 보여 줍니다. XOR은 두 입력 가운데 정확히 하나만 1일 때 1을 내는 연산입니다. 파란 점 (1, 0), (0, 1)과 분홍 점 (0, 0), (1, 1)을 가르는 직선이 없다는 것은 그림으로도 짐작되지만, 부등식 네 개로 확실히 확인할 수 있습니다. 뉴런이 XOR을 계산한다면

0<θ,w1≥θ,w2≥θ,w1+w2<θ0 \lt \theta, \qquad w_1 \ge \theta, \qquad w_2 \ge \theta, \qquad w_1 + w_2 \lt \theta

가 모두 성립해야 합니다. 차례로 (0, 0), (1, 0), (0, 1), (1, 1)의 조건입니다. 예를 들어 (1, 0)을 넣으면 가중합은 w1×1+w2×0=w1w_1 \times 1 + w_2 \times 0 = w_1이고, 여기서 1을 내야 하니 w1w_1이 문턱 이상이어야 합니다. 그런데 가운데 둘을 더하면 w1+w2≥2θw_1 + w_2 \ge 2\theta이고, 첫째 조건에서 θ\theta가 양수이므로 2θ>θ2\theta \gt \theta입니다. 그러면 w1+w2>θw_1 + w_2 \gt \theta가 되어 넷째 조건과 부딪힙니다. 1절의 그림에서 XOR을 골랐을 때 3칸이 최선이었던 까닭입니다.

1969년 MIT의 인공지능 연구자 마빈 민스키와 수학자 시모어 패퍼트는 책 『퍼셉트론』에서 이 한계를 수학적으로 파고들었습니다. 두 사람의 관심은 XOR 하나보다 훨씬 넓었습니다. 그림의 작은 조각들만 보고 판단하는 퍼셉트론이 그림 전체에 걸친 성질을 알아보려면 부품이 아주 많이 필요하다는 것을 증명했습니다. 켜진 점의 개수가 짝수인지 홀수인지(XOR은 그 가장 작은 경우입니다), 그림이 한 덩어리로 이어져 있는지 같은 성질입니다.

해법 자체는 알려져 있었습니다. XOR은 "OR이면서 NAND"입니다. 네 입력으로 확인해 봅시다. (0, 0)에서는 OR이 0이니 결과는 0, (1, 1)에서는 NAND(AND의 반대)가 0이니 결과는 0, (1, 0)과 (0, 1)에서는 OR도 NAND도 1이니 결과는 1입니다. 그러니 1절에서 만든 OR 뉴런과 NAND 뉴런의 출력을 AND 뉴런에 넣으면 됩니다. 층을 둘로 쌓으면 되는 것입니다. 첫 층의 두 뉴런이 직선 두 개를 긋고, 둘째 층이 '두 직선 사이의 띠 안'을 골라냅니다.

문제는 그런 여러 층의 그물을 배우게 하는 방법이 없다는 것이었습니다. 퍼셉트론 규칙은 출력 뉴런이 틀렸을 때 그 가중치를 고칠 뿐, 가운데에 숨은 뉴런(입력도 출력도 아닌 가운데 층의 뉴런)이 무엇을 잘못했는지는 알려 주지 않습니다. 민스키와 패퍼트는 여러 층으로 넓혀도 사정이 크게 나아지지 않으리라고 비관적으로 내다보았습니다.

정리하면, 뉴런 하나로는 XOR조차 할 수 없고, 층을 쌓으면 할 수 있지만 쌓은 그물을 배우게 하는 방법이 아직 없었습니다. 이 빈칸을 채우는 것이 4절과 5절입니다.

이 책이 신경망 연구를 '죽였다'는 이야기가 흔히 전하지만, 역사가들의 평가는 좀 더 복잡합니다. 연구비와 관심은 이미 기호와 규칙으로 지능을 만들려는 쪽으로 옮겨 가고 있었습니다. 1956년 여름 다트머스 대학의 워크숍에서 컴퓨터 과학자 존 매카시, 민스키, 섀넌 등이 '인공지능'이라는 이름을 걸고 모인 이래, 주류는 논리 추론과 탐색 프로그램이었습니다. 한편 민스키 자신은 1951년 대학원생 시절 동료와 함께 진공관으로 학습하는 작은 신경망 기계를 만든 적이 있습니다. 1971년 로젠블랫은 마흔세 번째 생일에 체서피크만에서 보트 사고로 세상을 떠났고, 퍼셉트론 연구는 가장 열성적인 옹호자를 잃었습니다.

1970년대에는 인공지능 전체가 기대에 못 미쳤습니다. 1973년 영국 과학 연구 위원회의 의뢰로 케임브리지의 응용수학자 제임스 라이트힐이 쓴 보고서는, 이 분야 어디에서도 약속된 만큼의 성과가 나지 않았고 문제가 조금만 커져도 경우의 수⁠(number of cases)⁠가 폭발한다고 평가했습니다. 뉴턴이 앉았던 루커스 석좌 교수 자리의 주인이 내린 평가였습니다. 그해 5월 런던 왕립 연구소에서 라이트힐과 에든버러의 인공지능 연구자 도널드 미치, 스탠퍼드의 매카시 등이 벌인 토론은 BBC로 방송되었습니다. 보고서가 나온 뒤 영국 대학의 인공지능 연구비는 크게 줄었고, 비슷한 무렵 미국에서도 국방 연구비가 당장 쓸모가 보이는 연구로 옮겨 갔습니다. 연구가 얼어붙은 이 시기는 1980년대에 '인공지능의 겨울'이라는 이름을 얻었습니다. 얼마나 깊은 겨울이었는지는 나라와 분야마다 달랐습니다.

1940년대부터 역전파⁠(backpropagation)⁠가 알려진 1980년대까지. 시카고의 논리 뉴런이 MIT로, 버펄로의 퍼셉트론이 워싱턴의 시연장으로 옮겨 가는 것을 지도에서 보세요. 연표의 역사 줄(분홍)에는 신문 보도와 라이트힐 보고서가, 수학 줄(파랑)에는 조용히 이어진 미분의 역사가 있습니다.

4 · 내리막을 따라최소제곱에서 경사 하강법⁠(gradient descent)⁠으로

'맞았다, 틀렸다'만 보는 퍼셉트론 규칙은 숨은 뉴런⁠(hidden unit)⁠을 고치지 못했습니다. 이 절의 물음은 이것입니다. '얼마나 틀렸는가'를 수 하나로 재고, 모든 가중치를 그 수가 줄어드는 쪽으로 조금씩 움직이는 방법이 있을까? 있다면 한 걸음은 얼마나 크게 내디뎌야 할까?

여러 층의 그물을 배우게 하는 길은 퍼셉트론이 아니라 훨씬 오래된 곳에서 왔습니다. 천문학자들의 계산입니다. 1805년 파리의 르장드르는 관측값들을 가장 잘 지나는 직선을 오차의 제곱 합이 가장 작은 직선으로 정했습니다. 브라운슈바이크의 가우스는 그보다 앞서부터 이 방법을 써 왔다고 뒤에 밝혔습니다. 그 이야기는 「잃어버린 소행성」에 있습니다. 기계 학습의 말로 옮기면, 최소제곱은 가장 단순한 학습입니다. 예 (xi,yi)(x_i, y_i)를 보고 규칙 y=ax+by = ax + b의 두 수 a,ba, b를 정하는데, 얼마나 틀렸는지를 이렇게 잽니다.

L(a,b)=1n∑i=1n(axi+b−yi)2L(a, b) = \frac{1}{n} \sum_{i=1}^{n} \bigl(a x_i + b - y_i\bigr)^{2}

식을 말로 읽으면 이렇습니다. 예마다 직선이 내놓는 값 axi+ba x_i + b에서 실제 값 yiy_i를 뺀 오차를 제곱하고, 그것을 i=1i = 1부터 nn까지 모두 더해(Σ는 '모두 더한다'는 기호로, '시그마'라고 읽습니다) 예의 개수 n으로 나눕니다. 그러니 L은 오차 제곱의 평균입니다. 제곱을 하는 까닭은 위로 틀린 것과 아래로 틀린 것이 서로 지워지지 않게 하고, 크게 틀린 것을 더 무겁게 치기 위해서입니다. 예 두 개 (1, 2)와 (2, 3)으로 해 봅시다. 직선 y=xy = x(a = 1, b = 0)는 두 점에서 모두 1만큼 낮으니 L=(12+12)/2=1L = (1^2 + 1^2)/2 = 1이고, 직선 y=x+1y = x + 1(a = 1, b = 1)은 두 점을 정확히 지나니 L=0L = 0입니다.

이 LL을 손실 함수라고 부릅니다. 학습이란 손실을 가장 작게 만드는 a,ba, b를 찾는 최적화⁠(optimization)⁠입니다. 직선이라면 최소제곱 회귀⁠(least-squares regression)⁠의 공식으로 답을 곧장 구할 수 있습니다. 하지만 신경망처럼 복잡한 함수⁠(function)⁠에서는 그런 공식이 없습니다. 그럴 때 쓰는 방법이 있습니다.

안개 낀 산에서 골짜기로 내려가야 한다고 해 봅시다. 멀리는 보이지 않지만 발밑의 경사는 느낄 수 있습니다. 가장 가파르게 내려가는 쪽으로 한 걸음 옮기고, 다시 발밑을 살피고, 또 한 걸음.

변수가 하나일 때부터 봅시다. 손실이 L(w)=w2L(w) = w^2이고 지금 w=3w = 3에 있다고 합시다. 이 점에서의 미분계수⁠(derivative)⁠, 곧 w를 아주 조금 움직일 때 L이 변하는 비율은 2w=62w = 6입니다(미분의 뜻은 「순간의 속도」에 있습니다). 양수이니 w를 늘리면 L이 커지고, 줄이면 작아집니다. 그래서 w를 미분계수의 반대쪽으로 조금, 예를 들어 미분계수의 0.1배만큼 옮깁니다. w←3−0.1×6=2.4w \leftarrow 3 - 0.1 \times 6 = 2.4입니다. L은 9에서 5.76으로 줄었습니다. 같은 일을 되풀이하면 w는 1.92, 1.536, …으로 최솟값의 자리 0에 다가갑니다.

변수가 a와 b 둘이면 '발밑 경사'도 두 개입니다. 앞의 두 점 (1, 2), (2, 3)과 직선 y=xy = x(a = 1, b = 0)로 해 봅시다. 이때 손실은 1이었습니다. b는 0에 그대로 두고 a만 1에서 1.01로 0.01만큼 늘리면, 직선이 내놓는 값은 1.01과 2.02가 되어 오차는 −0.99와 −0.98이고, 손실은 (0.992+0.982)/2≈0.970(0.99^2 + 0.98^2)/2 \approx 0.970으로 약 0.03 줄어듭니다. 손실의 변화 −0.03을 a의 변화 0.01로 나누면 약 −3입니다. 이번에는 a를 1에 두고 b만 0에서 0.01로 늘리면, 오차는 둘 다 −0.99이고 손실은 0.992=0.98010.99^2 = 0.9801로 약 0.02 줄어듭니다. 변화율은 약 −2입니다. 움직이는 양을 0.01보다 더 작게 하면 이 두 비율은 정확히 −3과 −2에 다가갑니다. 둘 다 음수이니, a와 b를 모두 늘려야 손실이 줄어듭니다.

이처럼 다른 변수는 그대로 두고 변수 하나만 조금 움직였을 때 손실이 변하는 비율을 그 변수에 대한 편미분⁠(partial derivative)⁠이라 합니다. L의 a에 대한 편미분은 ∂L/∂a\partial L/\partial a로 적습니다. ∂는 '편미분'을 뜻하는 기호로, '라운드'라고도 읽습니다. 위의 예에서는 ∂L/∂a=−3\partial L/\partial a = -3, ∂L/∂b=−2\partial L/\partial b = -2입니다.

두 편미분을 한 묶음으로 적은 벡터를 그래디언트⁠(gradient)⁠라 하고 ∇L=(∂L/∂a, ∂L/∂b)\nabla L = (\partial L/\partial a,\ \partial L/\partial b)로 적습니다. ∇는 '나블라'라고 읽습니다. 위의 예에서는 ∇L=(−3,−2)\nabla L = (-3, -2)입니다. 그래디언트는 손실이 가장 가파르게 커지는 방향을 가리키므로, 그 반대로 걸으면 손실이 줄어듭니다. 경사 하강법의 '경사'가 바로 이 그래디언트입니다.

(a,b)  ←  (a,b)−η ∇L(a,b)(a, b) \;\leftarrow\; (a, b) - \eta\, \nabla L(a, b)

η\eta(에타)는 걸음의 크기로, 학습률⁠(learning rate)⁠이라고 부릅니다. 위의 한 변수 예에서는 0.1이었습니다. 이것이 경사 하강법입니다. 두 점의 예에 η = 0.1을 쓰면, 0.1×(−3,−2)=(−0.3,−0.2)0.1 \times (-3, -2) = (-0.3, -0.2)를 빼므로 (a,b)←(1+0.3, 0+0.2)=(1.3,0.2)(a, b) \leftarrow (1 + 0.3,\ 0 + 0.2) = (1.3, 0.2)입니다. 새 직선이 내놓는 값은 1.5와 2.8, 오차는 −0.5와 −0.2이니 손실은 (0.25+0.04)/2=0.145(0.25 + 0.04)/2 = 0.145로 1에서 크게 줄었습니다.

아래 그림에서 단계 버튼을 눌러 한 걸음씩 내려가 보세요. 왼쪽에서는 직선이 점들에 맞춰 가고, 오른쪽에서는 (a, b)가 손실의 지형을 따라 내려갑니다. 눈여겨볼 것은 발자국이 곧장 가운데로 가지 않는다는 점입니다.

자료와 지금의 직선
손실의 지형 (a, b)
왼쪽: 파란 점 8개가 자료, 초록 직선이 지금의 규칙, 분홍 선분이 각 점의 오차입니다. 오른쪽: 보라 곡선은 손실이 같은 곳을 이은 등고선이고, 가운데 보라 점이 최솟값입니다. 분홍 출발점을 끌어 옮길 수 있습니다.

학습률은 η=\eta = 이고, 지금까지 걸음 내려왔습니다. 학습률 바로 고르기: 0.02 0.1 0.114

지금 직선은 a=a = , b=b = 이고 손실은 입니다(최솟값은 , a≈a \approx , b≈b \approx ).

등고선이 길쭉한 타원⁠(ellipse)⁠이라는 데 주목하세요. 직선의 기울기 aa를 바꾸는 방향으로는 골짜기가 가파르고, aa가 늘면 bb가 줄어드는 쪽으로 비스듬히 뻗은 골짜기 바닥은 완만합니다. 직선의 기울기 a를 조금만 바꿔도 멀리 있는 점들의 오차가 크게 변하기 때문입니다. 학습률이 작으면 발자국이 먼저 골짜기 바닥으로 뚝 떨어진 뒤 바닥을 따라 느릿느릿 기어갑니다. 0.1로 올리면 가파른 방향으로 골짜기를 넘나들며 지그재그로 가지만 오히려 빨리 도착합니다. 0.114로 올리면 발자국이 골짜기 밖으로 튕겨 나가 버립니다.

경계가 어디인지는 한 변수로 따져 보면 보입니다. 손실이 L(w)=λ2w2L(w) = \tfrac{\lambda}{2} w^2처럼 생긴 1차원 골짜기라고 합시다. λ('람다')는 골짜기가 얼마나 좁고 가파른지를 정하는 양수입니다. 이 손실의 미분계수는 λw\lambda w이고, 한 걸음은 w←w−ηλw=(1−ηλ) ww \leftarrow w - \eta\lambda w = (1 - \eta\lambda)\,w입니다. 한 걸음마다 w에 같은 수 1−ηλ1 - \eta\lambda가 곱해지는 것입니다. kk걸음 뒤에는 (1−ηλ)kw(1-\eta\lambda)^k w입니다. 공비(매번 곱해지는 비율)가 1−ηλ1 - \eta\lambda인 등비수열⁠(geometric progression)⁠이니(등비급수⁠(geometric series)⁠), 공비⁠(common ratio)⁠의 크기가 1보다 작을 때만 0으로 줄어듭니다. 식으로는 ∣1−ηλ∣<1|1 - \eta\lambda| \lt 1입니다(세로 막대 |…|는 부호를 뗀 크기인 절댓값입니다). 이것은 −1<1−ηλ<1-1 \lt 1 - \eta\lambda \lt 1, 다시 말해 0<ηλ<20 \lt \eta\lambda \lt 2이고, η와 λ가 양수이니 η<2/λ\eta \lt 2/\lambda와 같습니다. 학습률이 1/λ1/\lambda보다 크면 공비가 음수가 되어 부호가 번갈아 바뀌는데, 이것이 지그재그입니다.

λ = 10으로 확인해 봅시다. η = 0.05이면 공비는 0.5로, w가 걸음마다 절반이 되며 한쪽에서 곧게 다가갑니다. η = 0.1이면 공비가 0이라 한 걸음에 바닥에 닿습니다. η = 0.15이면 공비가 −0.5로, 바닥을 넘나들며(지그재그) 줄어듭니다. η = 0.25이면 공비가 −1.5로, 넘나들 때마다 1.5배씩 커져 튕겨 나갑니다. 경계 2/λ2/\lambda는 0.2입니다.

2차원 골짜기도 같은 방법으로 따질 수 있습니다. 가장 낮은 점(보라 점)을 지나게 여러 방향으로 골짜기를 잘라 보면, 자른 단면은 모두 λ2w2\tfrac{\lambda}{2} w^2 모양의 1차원 골짜기입니다. 다만 방향마다 λ가 다릅니다. 그 가운데 가장 가파르게 휘는 방향(등고선 타원의 짧은 축)과 가장 완만하게 휘는 방향(긴 축)이 있고, 둘은 서로 수직입니다. 지금 위치를 이 두 방향의 성분으로 나누어 적으면, 경사 하강법의 한 걸음은 각 성분에 따로 1−ηλ1 - \eta\lambda를 곱합니다. 2차원 골짜기는 1차원 골짜기 두 개를 겹쳐 놓은 것과 같습니다. 가파른 방향의 λ를 λmax⁡\lambda_{\max}('람다 맥스'), 완만한 방향의 λ를 λmin⁡\lambda_{\min}('람다 민')이라고 부릅시다.

더 알고 싶다면: 헤세 행렬⁠(Hessian matrix)⁠과 고유벡터⁠(eigenvector)⁠

손실을 a로 두 번 미분한 값, b로 두 번 미분한 값, a와 b로 한 번씩 미분한 값을 2×2 표로 모은 것을 헤세 행렬이라고 합니다. 행렬⁠(matrix)⁠은 수를 가로세로로 늘어놓은 표입니다(8절). 앞의 두 점 (1, 2), (2, 3)이라면 이 표는 첫 줄이 (5, 3), 둘째 줄이 (3, 2)입니다. 이 표에 벡터 (u, v)를 곱한다는 것은 첫 줄로 5u + 3v를, 둘째 줄로 3u + 2v를 만들어 새 벡터를 얻는 일입니다. 대부분의 벡터는 이렇게 하면 방향이 바뀝니다. 그런데 (1, 0.618) 쪽 방향은 (5 + 1.854, 3 + 1.236) = (6.854, 4.236)이 되어, 방향은 그대로이고 길이만 약 6.854배가 됩니다. 이처럼 행렬을 곱해도 방향이 바뀌지 않는 벡터를 고유벡터, 그때 길이가 늘어나는 배율을 고유값⁠(eigenvalue)⁠이라고 합니다. 2×2 행렬에는 이런 방향이 둘 있고, 이 예에서 다른 하나의 배율은 약 0.146입니다. 위에서 말한 가장 가파른 방향과 가장 완만한 방향이 바로 헤세 행렬의 두 고유벡터 방향이고, λmax⁡\lambda_{\max}와 λmin⁡\lambda_{\min}은 두 고유값입니다.

그림의 자료 8개에서는 가파른 방향의 λmax⁡≈\lambda_{\max} \approx , 완만한 방향의 λmin⁡≈\lambda_{\min} \approx 이므로, 학습률은 2/λmax⁡≈2/\lambda_{\max} \approx 보다 클 수 없습니다. 그런데 완만한 방향은 한 걸음에 ηλmin⁡\eta\lambda_{\min}의 비율만큼만 줄어드니 몇백 걸음이 필요합니다. 한 학습률로 두 방향을 모두 만족시켜야 하는데, 가파른 방향 때문에 걸음을 키울 수 없고, 그 작은 걸음으로는 완만한 방향이 한없이 느립니다. 두 고유값의 비가 클수록 경사 하강법은 느려집니다.

퍼셉트론이 나오고 두 해 뒤인 1960년, 스탠퍼드의 버나드 위드로와 대학원생 테드 호프는 ADALINE이라는 학습 소자를 발표했습니다. 규칙은 퍼셉트론과 비슷하지만 '맞았다, 틀렸다' 대신 틀린 정도의 제곱을 줄이도록 가중치를 고쳤습니다. 예를 하나 볼 때마다 그 예 하나의 제곱 오차를 줄이는 쪽으로 경사 하강법을 한 걸음 내딛는 셈입니다.

w  ←  w+η (y−w⋅x) x\mathbf w \;\leftarrow\; \mathbf w + \eta\,\bigl(y - \mathbf w \cdot \mathbf x\bigr)\,\mathbf x

퍼셉트론의 규칙과 모양이 거의 같습니다. 퍼셉트론은 틀렸을 때만 x\mathbf x를 더하고, 이 규칙은 틀린 만큼(y−w⋅xy - \mathbf w \cdot \mathbf x) 비례해 더합니다. 조금 틀렸으면 조금, 많이 틀렸으면 많이 고치는 것입니다.

예를 하나씩 보고 고치는 것이 왜 전체 손실을 줄이는 일과 같을까요? 예를 무작위로 하나 골라 그 예 하나의 손실로 구한 그래디언트는 예마다 달라 흔들리지만, 그 기댓값(여러 번 뽑았을 때의 평균⁠(mean)⁠)은 전체 손실의 그래디언트와 정확히 같습니다. 전체 손실이 예마다의 손실의 평균이기 때문입니다. 여러 예의 그래디언트를 평균하면 큰 수의 법칙⁠(law of large numbers)⁠에 따라 흔들림이 줄어듭니다. 무작위로 고른 예 몇 개로 한 걸음씩 가는 이 방법을 확률적 경사 하강법⁠(stochastic gradient descent)⁠이라고 부르고, 오늘날의 거의 모든 신경망이 이 방법이나 그 변형으로 학습합니다. 예가 수백만 개일 때 한 걸음마다 전부를 보지 않아도 되니 훨씬 빠릅니다.

흔들리는 그래디언트로도 답에 닿을 수 있다는 보장은 그보다 먼저 통계학⁠(statistics)⁠에서 나왔습니다. 1951년 노스캐롤라이나 대학의 통계학자 허버트 로빈스와 대학원생 서턴 먼로는 「확률적 근사⁠(stochastic approximation)⁠ 방법」에서, 함숫값을 잡음 섞인 관측으로만 알 수 있을 때 그 함수가 0이 되는 곳을 찾는 방법을 다루었습니다. 걸음의 크기 ηk\eta_k(k번째 걸음의 크기)를 걸음마다 줄이되, 그 합은 한없이 커지게(∑kηk=∞\sum_k \eta_k = \infty) 하고 제곱의 합은 유한하게(∑kηk2<∞\sum_k \eta_k^2 \lt \infty) 둡니다. 앞의 조건은 어디까지든 갈 수 있게 하고, 뒤의 조건은 잡음이 쌓여 흩어지지 않게 합니다. ηk=1/k\eta_k = 1/k가 그런 예입니다. 1 + 1/2 + 1/3 + …은 한없이 커지지만, 제곱의 합 1 + 1/4 + 1/9 + …은 약 1.645를 넘지 않습니다. 그러면 일정한 조건 아래 추정값이 참값으로 수렴⁠(convergence)⁠한다는 것이 두 사람의 결론입니다.

정리하면, 학습은 손실 함수⁠(loss function)⁠를 가장 작게 만드는 최적화이고, 경사 하강법은 그래디언트의 반대쪽으로 학습률만큼씩 걸어 그 일을 합니다. 학습률은 가장 가파른 방향이 허락하는 것보다 클 수 없고, 예를 조금씩 뽑아 흔들리는 그래디언트로 걸어도 평균적으로는 같은 길을 갑니다.

경사 하강법은 1847년 10월 파리 과학 아카데미의 회보에 코시가 연립방정식을 푸는 일반적인 방법으로 발표했습니다. 천체의 궤도⁠(orbit)⁠처럼 미지수가 많은 천문 계산을 염두에 둔 것으로 알려져 있습니다. 천문학자의 계산이 한 세기 뒤 학습하는 기계의 엔진이 된 것입니다. ADALINE을 만든 호프는 뒤에 인텔로 옮겨 최초의 상용 마이크로프로세서, 곧 컴퓨터의 계산 장치를 칩 하나에 담은 부품의 개발에 참여했습니다.

5 · 연쇄법칙을 거꾸로역전파

이제 3절에서 막혔던 문제로 돌아갑니다. 숨은 층⁠(hidden layer)⁠이 있는 그물에서 가운데 뉴런의 가중치를 어떻게 고칠까요? 경사 하강법으로 보면 답은 분명합니다. 손실을 그 가중치로 미분하면 됩니다. 다만 두 가지를 바꿔야 합니다.

첫째, 문턱 함수는 계단 모양이라 미분이 거의 모든 곳에서 0입니다. 가중치를 조금 바꿔도 출력이 변하지 않으니 경사가 방향을 알려 주지 못합니다. 그래서 계단을 부드러운 S자 곡선으로 바꿉니다. 흔히 쓰던 것이 시그모이드 함수⁠(sigmoid function)⁠입니다.

σ(z)=11+e−z,σ′(z)=σ(z)(1−σ(z))\sigma(z) = \frac{1}{1 + e^{-z}}, \qquad \sigma'(z) = \sigma(z)\bigl(1 - \sigma(z)\bigr)

σ는 '시그마'라고 읽고, e는 약 2.718인 수입니다. 지수함수⁠(exponential function)⁠로 만든 이 곡선은 zz가 크면 1, 작으면 0에 가깝고 그 사이를 매끄럽게 잇습니다. 예를 들어 σ(0) = 1/(1 + 1) = 0.5, σ(2) ≈ 0.88, σ(−2) ≈ 0.12입니다. 둘째 식 σ′(z)('시그마 프라임')는 σ의 도함수⁠(derivative function)⁠, 다시 말해 곡선의 각 점에서 그은 접선⁠(tangent line)⁠의 기울기입니다. z = 0에서 0.5 × 0.5 = 0.25로 가장 크고, z가 0에서 멀어질수록 0에 가까워집니다. 미분이 자기 자신으로 적힌다는 것도 편리합니다. 이런 뉴런을 층층이 쌓고 층 사이마다 이런 비선형 함수(그래프가 직선이 아닌 함수)를 끼운 것이 신경망입니다.

둘째, 미분을 효율적으로 해야 합니다. 신경망은 함수의 합성입니다. 입력 xx가 숨은 층을 거쳐 h=σ(ax+b)h = \sigma(ax + b)가 되고, 출력 층을 거쳐 y^=σ(ch+d)\hat y = \sigma(ch + d)가 되고, 손실 L=(y^−y)2L = (\hat y - y)^2가 됩니다. 합성함수⁠(composite function)⁠의 미분은 연쇄법칙으로 합니다. 작은 예로 먼저 봅시다. u=3x+1u = 3x + 1이고 y=u2y = u^2이라 합시다. x가 조금 변하면 u는 그 3배만큼 변하고, u가 조금 변하면 y는 그 2u배만큼 변합니다. 그러니 x가 조금 변할 때 y는 2u×32u \times 3배만큼 변합니다. x = 1이면 u = 4이니 24배입니다. 이렇게 단계마다의 변화율을 곱하는 것이 연쇄법칙입니다.

신경망에서도 똑같습니다. 첫 층의 가중치 aa에 대한 손실의 편미분은 각 단계의 미분을 곱한 것입니다.

∂L∂a=2(y^−y)⏟∂L/∂y^⋅y^(1−y^) c⏟∂y^/∂h⋅h(1−h) x⏟∂h/∂a\frac{\partial L}{\partial a} = \underbrace{2(\hat y - y)}_{\partial L/\partial \hat y} \cdot \underbrace{\hat y(1 - \hat y)\, c}_{\partial \hat y/\partial h} \cdot \underbrace{h(1 - h)\, x}_{\partial h/\partial a}

세 인수를 차례로 읽으면 이렇습니다. 첫째는 출력 y^\hat y('와이 햇', 그물의 예측)가 조금 변할 때 손실이 변하는 비율로, (y^−y)2(\hat y - y)^2을 미분한 것입니다. 둘째는 숨은 값 h가 조금 변할 때 출력이 변하는 비율로, 시그모이드⁠(sigmoid)⁠의 미분 y^(1−y^)\hat y(1 - \hat y)에 h에 곱해진 가중치 c를 곱한 것입니다. 셋째는 a가 조금 변할 때 h가 변하는 비율로, 시그모이드의 미분 h(1−h)h(1 - h)에 a에 곱해진 입력 x를 곱한 것입니다.

곱의 앞부분 ∂L/∂y^⋅∂y^/∂h\partial L/\partial \hat y \cdot \partial \hat y/\partial h는 "숨은 뉴런 hh가 조금 변하면 손실이 얼마나 변하는가", 곧 숨은 뉴런이 받을 책임의 크기입니다. 출력 층의 가중치 cc에 대한 편미분을 구할 때 이미 그 앞부분을 계산했으니, 그것을 버리지 않고 한 층 뒤로 넘기면 됩니다. 출력에서 시작해 입력 쪽으로 한 층씩 거슬러 가며 책임을 나누어 주는 것입니다. 이것이 역전파입니다.

왜 거꾸로 가야 할까요? 가중치가 NN개인 그물에서 가중치를 하나씩 조금 흔들어 보며 손실의 변화를 재면, 가중치마다 그물 전체를 한 번씩 계산해야 하니 비용이 NN번의 계산입니다. 그물을 한 번 계산하는 데도 가중치 수만큼의 곱셈이 드니, 모두 합하면 N × N입니다. 연쇄법칙을 입력에서 출력 방향으로 적용해도 사정은 비슷합니다. 앞으로 한 번 지나갈 때 '가중치 하나가 변하면 모든 것이 어떻게 변하는가'를 따라가니, 한 번에 가중치 하나에 대한 편미분만 얻습니다. 거꾸로 가면 출력의 손실 하나에서 출발해 한 번 지나가는 동안 NN개의 편미분을 모두 얻고, 비용은 앞으로 한 번 계산하는 것의 몇 배에 그칩니다. 가중치가 10억 개라면 10억 번과 몇 번의 차이입니다(점근 표기법⁠(asymptotic notation)⁠으로는 O(N2)O(N^2)와 O(N)O(N)의 차이이고, 이런 셈법은 「줄 세우기의 한계」에 있습니다).

아래 그림은 가장 작은 예입니다. 입력 2개, 숨은 뉴런 2개, 출력 1개, 가중치 9개짜리 그물이 역전파와 경사 하강법으로 XOR을 배웁니다(숨은 뉴런마다 입력 가중치 2개와 편향 1개, 출력 뉴런에 가중치 2개와 편향 1개로 3 + 3 + 3 = 9개). 손실은 네 점의 오차 제곱의 평균입니다. '돌리기'를 누르고, 오른쪽 손실 곡선과 왼쪽의 두 점선이 어떻게 움직이는지 함께 보세요.

입력 평면과 그물의 답
손실 곡선
왼쪽: 네 점은 XOR의 입력이고, 점 옆의 수는 목표와 지금의 출력입니다. 배경은 그물의 출력으로, 파랑일수록 1, 분홍일수록 0에 가깝습니다. 두 점선은 숨은 뉴런 두 개가 각각 긋는 직선입니다. 오른쪽: 걸음마다의 손실.

+1 걸음 +100 걸음 ▶ 돌리기 ❚❚ 멈추기 처음으로 지금 걸음째이고 손실은 입니다. 학습률은 , 처음 가중치는 입니다. 다른 초기값 뽑기

네 입력에 대한 출력은 입니다.

돌려 보면 손실 곡선이 한동안 평평하다가 어느 순간 뚝 떨어집니다. 그동안 보라 점선과 초록 점선이 자리를 찾아 움직입니다. 숨은 뉴런 각각은 여전히 1절의 뉴런처럼 직선 하나를 긋습니다. 끝에 가면 한 직선은 (0, 0)을, 다른 직선은 (1, 1)을 떼어 내고, 출력 뉴런은 "두 직선 사이의 띠 안에 있다"는 것을 알아봅니다. 3절에서 손으로 만든 "OR이면서 NAND"를 그물이 스스로 찾은 것입니다. 그런데 초기값을 '다'로 바꾸면 손실이 어느 높이에서 멈추고 더 내려가지 않습니다. 경사 하강법은 발밑만 보므로, 가장 낮은 골짜기가 아닌 움푹한 곳, 곧 둘레보다는 낮지만 전체에서 가장 낮지는 않은 곳(국소 최솟값⁠, local minimum⁠)이나 경사가 거의 없는 평평한 곳에 갇힐 수 있습니다. 4절의 직선 맞추기는 골짜기가 하나뿐인 그릇 모양이라 이런 일이 없었지만, 층을 쌓은 그물의 손실 지형은 울퉁불퉁합니다. 학습률을 30쯤으로 크게 올리면 '가'는 몇십 걸음 만에 끝나지만 '나'는 갇혀 버립니다. 학습에는 운과 설정이 끼어듭니다.

숨은 뉴런이 많으면 그물은 얼마나 많은 것을 배울 수 있을까요? 1989년 수학자 조지 시벤코 등은 '보편 근사 정리⁠(universal approximation theorem)⁠'를 증명했습니다. 경계를 포함한 유한한 범위(예를 들어 테두리까지 포함한 정사각형) 안에서라면, 숨은 층 하나에 뉴런을 충분히 많이 둔 그물로 어떤 연속함수든 그 범위 전체에서 한꺼번에 원하는 만큼 가깝게 흉내 낼 수 있다는 정리입니다. 범위 바깥에 대해서는 아무것도 말하지 않습니다. 신경망은 S자 곡선들을 더해 함수를 흉내 냅니다. 다항식⁠(polynomial)⁠을 더해 함수를 흉내 내는 테일러 급수(「한 점에서 전부를」)와 닮았지만, 테일러 급수⁠(Taylor series)⁠는 한 점의 미분값에서 출발해 그 둘레에서만 맞을 수 있는 반면 이 정리는 범위 전체를 한꺼번에 다룹니다. 그리고 이 정리는 그런 가중치가 있다고 말할 뿐, 경사 하강법이 그것을 찾는다고도, 필요한 뉴런이 몇 개라고도 말하지 않습니다.

정리하면, 역전파는 연쇄법칙으로 모든 가중치에 대한 손실의 편미분을 구하되, 출력 쪽에서 계산한 '책임'을 버리지 않고 입력 쪽으로 넘겨 가며 한 번에 구하는 방법입니다. 그 편미분들로 경사 하강법을 돌리면 숨은 층이 있는 그물도 배울 수 있습니다.

이 방법은 여러 사람이 여러 곳에서 따로 찾아냈습니다. 첫 갈래는 로켓이었습니다. 우주 경쟁이 한창이던 1960년대 초, 미국의 제어 공학자들은 로켓의 최적 궤도를 계산하며 비슷한 계산을 했습니다. 로켓이 실을 수 있는 연료와 무게는 늘 빠듯했습니다. 1960년 그러먼 항공사의 헨리 켈리와 이듬해 하버드의 아서 브라이슨은, 비행 경로를 조금 바꿨을 때 마지막 목표가 얼마나 달라지는지를 경로의 끝에서부터 거꾸로 구해 궤도를 고쳐 나갔습니다. 출력에서 입력 쪽으로 거슬러 가는 역전파와 같은 방향의 계산입니다.

다른 갈래는 소련과 일본에서, 여러 층의 그물을 실제로 학습시키려는 연구에서 나왔습니다. 1965년 키이우의 알렉세이 이바크넨코와 라파는 여러 층의 그물을 한 층씩 회귀 분석으로 맞추어 쌓는 방법을 내놓았고, 1971년에는 이 방법으로 학습시킨 여덟 층짜리 그물이 보고되었습니다. 깊은 그물을 실제로 학습시킨 첫 방법으로 꼽히지만, 편미분을 거꾸로 전하는 역전파는 아니었습니다. 1967년 일본의 아마리 슌이치는 여러 층의 분류기를 확률적 경사 하강법으로 한꺼번에 학습시키는 이론을 발표했고, 제자 사이토는 학습하는 층이 둘인 그물로 직선으로 가를 수 없는 자료를 가르는 실험을 했습니다. 다만 편미분을 거꾸로 전하는 오늘날의 계산법을 일반적인 형태로 적지는 않았습니다.

계산법 자체를 일반적인 형태로 처음 적은 사람은 신경망과 상관없는 문제를 풀고 있었습니다. 1970년 헬싱키 대학의 세포 린나인마는 석사 논문에서 컴퓨터 프로그램이 쌓는 반올림 오차⁠(round-off error)⁠를 분석하다가, 어떤 계산 과정이든 연쇄법칙을 거꾸로 적용해 모든 편미분을 한꺼번에 구하는 방법을 내놓았습니다. 오늘날 '역방향 자동 미분⁠(reverse-mode automatic differentiation)⁠'이라 부르는 방법입니다. 1974년 하버드의 폴 워보스는 박사 논문에서 이것을 신경망 학습에 쓸 수 있다고 제안했지만 널리 알려지지 않았습니다. 이 갈래들은 오랫동안 서로 이어지지 않았습니다. 제어 공학, 그림이나 신호를 종류별로 나누는 패턴 인식, 수치 계산처럼 서로 다른 분야에서 나온 데다 언어와 냉전의 벽도 있어서, 같은 계산이 거듭 새로 발견되었습니다. 1980년대 신경망 연구자들도 먼저 나온 작업을 대부분 자신들이 다시 찾아낸 뒤에야 알게 되었습니다.

전환점은 1986년 10월에 왔습니다. 인지 과학자 데이비드 러멜하트, 컴퓨터 과학자 제프리 힌턴과 로널드 윌리엄스가 『네이처』에 짧은 논문 「오차를 역전파하여 표현을 학습하기」를 실은 것입니다. 이 논문의 힘은 방법 자체보다 결과에 있었습니다. 역전파로 학습한 숨은 뉴런들이 아무도 가르쳐 주지 않은 쓸모 있는 특징, 이를테면 가계도 속 사람들의 세대나 가문 같은 것을 스스로 표현하게 되었다는 것입니다. 같은 해 러멜하트와 심리학자 제임스 매클렐런드는 캘리포니아 대학 샌디에이고의 연구 모임에서 나온 『병렬 분산⁠(variance)⁠ 처리』 두 권을 엮어 냈고, 이 책은 신경망 연구에 다시 불을 붙였습니다.

6 · 눈을 닮은 그물합성곱 신경망⁠(convolutional neural network)⁠과 우편번호

그림은 칸(화소)이 수백, 수천 개입니다. 칸마다 가중치를 따로 두는 그물은 배울 것이 너무 많고, 숫자가 한 칸만 옆으로 옮겨 가도 처음부터 다시 배워야 합니다. 이 절의 물음은 그림을 알아보는 그물이 어떤 구조여야 하느냐입니다. 답은 눈에서 왔습니다. 작은 창 하나로 그림 전체를 훑는 것입니다.

그림을 알아보는 그물에는 또 하나의 착상이 필요했습니다. 이번에는 생리학에서 왔습니다. 1959년 볼티모어의 존스 홉킨스 대학에서 신경생리학자 데이비드 허블과 토르스텐 비셀은 마취한 고양이의 시각 피질에 전극을 꽂고 화면에 여러 무늬를 비추었습니다. 어떤 신경세포는 시야의 좁은 한 곳에 특정한 각도로 기운 막대가 나타날 때만 반응했습니다. 처음부터 막대를 찾은 것은 아닙니다. 두 사람이 일하던 스티븐 커플러의 연구실은 1953년에 망막의 세포가 둥근 점 모양의 빛에 반응한다는 것을 밝힌 곳이었습니다. 그래서 두 사람도 점을 비추었지만, 피질의 세포는 좀처럼 반응하지 않았습니다. 허블의 회고에 따르면, 어느 날 점을 그린 유리 슬라이드를 영사기에 밀어 넣는 순간 세포가 기관총처럼 발화했습니다. 세포를 움직인 것은 점이 아니라 슬라이드의 가장자리가 화면에 드리운 가느다란 그림자, 곧 특정한 각도로 기운 선이었습니다. 시각 피질은 작은 영역마다 모서리와 방향을 찾는 세포들로 시작해, 층을 올라갈수록 더 넓고 복잡한 모양에 반응합니다. 두 사람은 이 연구로 1981년 노벨 생리의학상을 받았습니다.

1980년 도쿄 NHK 방송 과학 기술 연구소의 후쿠시마 구니히코는 이 구조를 본뜬 그물 '네오코그니트론'을 발표했습니다. 작은 창으로 그림의 한 부분만 보는 뉴런들이 같은 모양 찾기를 그림 전체에서 되풀이하고, 그 결과를 다음 층이 모아 봅니다. 다만 그 학습 방식은 역전파가 아니었습니다.

둘을 합친 사람이 파리에서 공부하고 토론토의 힌턴 밑에서 박사후 연구원을 지낸 얀 르쿤이었습니다. 1988년 뉴저지주 홈델의 AT&T 벨 연구소로 옮긴 그는 이듬해 동료들과 함께 결과를 발표했습니다. 미국의 우편물에 손으로 쓴 우편번호에서 숫자 약 9,300개를 오려 내어 역전파 그물을 훈련한 것입니다. 논문에 따르면 그 숫자들은 공교롭게도 버펄로 우체국을 지나간 우편물에서 모은 것이었습니다. 30년 전 로젠블랫이 퍼셉트론을 만든 그 도시입니다.

이 그물의 핵심 부품이 합성곱⁠(convolution)⁠입니다. 합성곱은 3×3처럼 작은 수표(필터⁠, filter⁠)를 그림 위로 한 칸씩 미끄러뜨리며, 자리마다 창 안의 밝기 아홉 개와 필터의 수 아홉 개를 짝지어 곱해 더하는 계산입니다. 자리마다 수 하나가 나오니, 결과도 그림 모양의 수 배열(특징 지도⁠, feature map⁠)이 됩니다.

숫자로 한 번 해 봅시다. 아래 그림의 '세로 경계' 필터는 세 줄이 모두 (−1, 0, 1)입니다. 왼쪽 열에 −1, 가운데 열에 0, 오른쪽 열에 1이 있는 것입니다. 창의 왼쪽 열이 비어 있고(밝기 0) 오른쪽 열이 획으로 채워져 있다면(밝기 1) 곱의 합은 3×(−1×0)+3×(0×가운데)+3×(1×1)=33 \times (-1 \times 0) + 3 \times (0 \times \text{가운데}) + 3 \times (1 \times 1) = 3입니다. 반대로 왼쪽만 채워져 있으면 −3, 창 전체가 고르게 채워져 있거나 비어 있으면 왼쪽과 오른쪽이 지워져 0입니다. 그래서 이 필터는 '왼쪽에서 오른쪽으로 밝아지는 세로 경계'에서만 크게 반응합니다.

왼쪽 12×12칸 그림 위에서 노란 창(3×3)을 끌어 옮기세요. 창 안의 칸들과 가운데 필터의 값을 칸끼리 곱해 더한 것이 오른쪽 특징 지도의 한 칸이 됩니다. 청록은 양수, 분홍은 음수입니다. 왼쪽 그림의 칸을 눌러 칠하거나 지울 수 있습니다.

필터는 , 그림은 숫자 입니다. 그림 지우기

노란 창이 어디에 있든 같은 필터 아홉 수를 씁니다. 세로 경계 필터는 창의 왼쪽 열이 비어 있고 오른쪽 열에 획이 지나가는 곳에서 큰 양수를, 그 반대에서 큰 음수를 냅니다. 그래서 특징 지도에는 숫자의 세로 획 양쪽 가장자리가 청록과 분홍의 줄로 떠오릅니다. 빗금 필터로 바꾸면 7의 비스듬한 획이 도드라집니다. 지금 가장 강한 반응은 입니다. 허블과 비셀의 방향 선택 세포가 하던 일이 바로 이것입니다.

합성곱 신경망은 이런 필터를 여러 개 두고, 그 결과 위에 다시 필터를 얹기를 되풀이합니다. 중요한 것은 필터의 값을 사람이 정하지 않는다는 점입니다. 필터의 아홉 수도 가중치이니 역전파로 배웁니다. 그리고 같은 필터를 그림의 모든 곳에서 함께 쓰므로, 그림 전체를 한꺼번에 보는 뉴런보다 배울 가중치가 훨씬 적습니다. 이 그림의 12×12칸 그림 전체를 보는 뉴런 하나에는 가중치가 144개 필요하지만, 필터 하나는 9개면 됩니다. "숫자는 조금 옮겨 써도 같은 숫자다"라는 앎을 그물의 구조에 새겨 넣은 셈입니다. 소리와 영상의 압축에 쓰는 이산 코사인 변환(「짧게 보내기」)도 그림을 작은 조각으로 나누어 정해진 무늬들(촘촘함이 서로 다른 물결 무늬들)의 합으로 적습니다. 합성곱 신경망은 그 무늬를 자료에서 배운다는 점이 다릅니다.

정리하면, 합성곱은 작은 필터 하나를 그림 전체에 미끄러뜨리며 같은 무늬를 찾는 계산이고, 합성곱 신경망은 그런 필터를 층층이 쌓아 그 값까지 역전파로 배웁니다. '어디에 있든 같은 모양은 같은 모양'이라는 앎이 구조에 들어 있어서 적은 가중치로 그림을 배웁니다.

이 그물은 실험실 밖에서 일했습니다. 1990년대에 벨 연구소의 기술을 바탕으로 한 수표 읽기 시스템이 은행에 들어가, 1990년대 말에는 미국에서 처리되는 수표의 10%가 넘는 양을 읽었다고 전합니다. 1998년 르쿤과 동료들이 정리한 손글씨 숫자 7만 개의 자료 모음 MNIST는 이후 20년 가까이 새로운 학습 방법을 시험하는 표준이 되었습니다.

7 · 외운 것과 배운 것과적합⁠(overfitting)⁠과 귀납의 문제

학습의 목표는 보여 준 예를 맞히는 것이 아닙니다. 보지 못한 예를 맞히는 것입니다. 이 절의 물음은 이 둘이 언제 어긋나는지, 그리고 본 적 없는 것을 맞힐 수 있다는 믿음이 어디서 오는지입니다.

두 목표가 다를 수 있다는 것을 다항식으로 확인해 봅시다. 다항식은 c0+c1x+c2x2+⋯c_0 + c_1 x + c_2 x^2 + \cdots처럼 x의 거듭제곱에 계수를 곱해 더한 식이고, 가장 높은 거듭제곱이 차수입니다. 1차 다항식은 직선, 2차는 포물선⁠(parabola)⁠이며, 차수가 높을수록 더 여러 번 굽이칠 수 있습니다. 파란 점 10개는 어떤 매끄러운 곡선(회색 점선)에 잡음이 섞인 관측값이고, 분홍 점 40개는 같은 곡선에서 새로 뽑은 관측값입니다. 학습에는 파란 점만 씁니다. 오른쪽 그림은 차수마다 두 가지 오차(4절의 오차 제곱의 평균)를 보여 주는데, 세로축이 로그 눈금, 곧 한 칸 올라갈 때마다 10배가 되는 눈금이라 아주 작은 오차와 아주 큰 오차를 한 그림에 담습니다. 파란 점에 차수가 인 다항식을 최소제곱으로 맞춥니다. 1차 3차 9차 새 표본

파란 점에 맞춘 다항식
차수에 따른 오차 (세로축은 로그 눈금)
왼쪽: 노란 곡선이 파란 점 10개로 학습한 다항식, 분홍 점은 학습에 쓰지 않은 새 자료, 회색 점선은 자료를 만든 실제 곡선입니다. 오른쪽: 차수마다 학습 자료의 평균 제곱 오차(파랑)와 새 자료의 평균 제곱 오차(분홍).

지금 계수는 개이고, 학습 오차는 , 새 자료의 오차는 입니다. 이 표본⁠(sample)⁠에서 새 자료의 오차가 가장 작은 차수는 입니다.

1차는 곡선의 굽이를 따라가지 못합니다. 학습 오차도 새 자료의 오차도 큽니다. 차수를 올리면 둘 다 줄다가, 어느 지점부터 학습 오차는 계속 줄어드는데 새 자료의 오차는 거꾸로 커집니다. 9차에서는 계수가 10개, 점도 10개이므로 다항식이 파란 점을 하나도 빠짐없이 지나갑니다. 점 두 개를 지나는 직선(계수 2개)이 하나로 정해지고, 점 세 개를 지나는 포물선(계수 3개)이 하나로 정해지듯, x 좌표가 서로 다른 점 10개를 지나는 9차 이하 다항식은 정확히 하나 있기 때문입니다. 그 다항식을 찾는 일은 '이 점을 지나라'는 식 10개를 모르는 수(계수) 10개에 대해 한꺼번에 푸는 일, 다시 말해 연립일차방정식⁠(system of linear equations)⁠을 푸는 일입니다. 모르는 수를 하나씩 지워 가는 가우스 소거법⁠(Gaussian elimination)⁠으로 풀 수 있습니다. 학습 오차는 0입니다.

그 대신 점과 점 사이에서 곡선이 크게 출렁이고, 새 자료의 오차는 오히려 커집니다. 잡음까지 규칙으로 외워 버린 것입니다. 이것이 과적합입니다.

매개변수⁠(parameter)⁠가 네 개면 코끼리를 맞출 수 있고, 다섯 개면 코끼리가 코를 흔들게 할 수 있다.— 존 폰 노이만의 말로 엔리코 페르미가 전한 것, 프리먼 다이슨의 회고(『네이처』, 2004)

1953년 무렵 젊은 물리학자 다이슨이 시카고의 페르미를 찾아가 자기 팀의 계산이 실험과 잘 맞는다고 보였을 때, 페르미는 매개변수를 몇 개나 썼느냐고 묻고 이 말로 답했다고 합니다. 모형 안에서 자유롭게 고를 수 있는 수, 곧 매개변수(여기서는 다항식의 계수)가 많으면 무엇이든 맞출 수 있고, 무엇이든 맞출 수 있는 이론은 아무것도 말하지 않는다는 뜻입니다.

그래서 기계 학습에서는 자료의 일부를 떼어 두고 학습에 쓰지 않습니다. 떼어 둔 자료의 오차가 늘기 시작하면 멈추고, 차수 같은 설정도 그 오차로 고릅니다(교차 검증⁠, cross-validation⁠). 위 그림의 분홍 점이 바로 이렇게 떼어 둔 자료의 역할을 합니다. 오른쪽 그림에서 분홍 곡선이 가장 낮은 차수를 고르면 됩니다.

또 하나의 방법은 계수가 커지는 것에 벌점을 주는 것입니다. 이것을 정규화(regularization, 규제라고도 합니다)라고 부릅니다. 손실에 λ∑jcj2\lambda \sum_j c_j^2, 곧 계수들(상수항 c₀은 빼고)을 제곱해 모두 더한 것에 λ를 곱한 값을 더합니다. 이 λ는 4절의 골짜기의 λ와는 상관없는 수입니다. 같은 글자를 관례대로 다시 쓸 뿐입니다. 곡선이 크게 출렁이려면 계수가 커야 하니, 크게 출렁여야만 맞출 수 있는 점은 차라리 조금 틀리게 됩니다. 벌점의 세기 λ\lambda는 지금 입니다. 로그 눈금으로 입니다. 로그 눈금으로 k라는 것은 λ = 10k라는 뜻이어서, 한 칸 올릴 때마다 벌점이 10배가 됩니다. 9차에서 이 값을 −2쯤으로 올려 보세요. 학습 오차는 조금 늘지만 곡선이 차분⁠(finite difference)⁠해지고 새 자료의 오차가 크게 줄어듭니다.

그런데 요즘의 심층 신경망은 이 그림과 어긋나 보입니다. 가중치가 학습 자료의 개수보다 훨씬 많아 자료를 통째로 외울 수 있는데도, 새 자료를 곧잘 맞힙니다. 2019년 무렵 컴퓨터 과학자 미하일 벨킨 등은 매개변수를 더 늘리면 새 자료의 오차가 한 번 치솟았다가 다시 내려가는 '이중 하강⁠(double descent)⁠'을 보고했습니다. 경사 하강법이 여러 답 가운데 유난히 매끄러운 답을 고르는 경향이 있기 때문이라는 설명이 있지만, 왜 이렇게 잘 되는지는 2020년대 기준으로 아직 완전히 풀리지 않은 문제입니다. 흔히 '매개변수가 많으면 반드시 과적합한다'고 생각하지만, 그것은 다항식 같은 경우의 경험칙이지 정리가 아닙니다.

과적합은 철학의 오래된 문제의 한 얼굴입니다. 1748년 에든버러 출신의 철학자 데이비드 흄은 『인간 지성에 관한 탐구』에서, 해가 내일도 뜬다는 믿음은 지금까지 늘 그랬다는 경험에서 나올 뿐이며, 미래가 과거를 닮는다는 것 자체는 논리로도 경험으로도 증명할 수 없다고 썼습니다. 경험으로 증명하려면 이미 "미래는 과거를 닮는다"를 가정해야 하니 순환이 됩니다. 흄은 우리가 그렇게 믿는 까닭이 이성이 아니라 습관이라고 보았습니다. 1912년 러셀은 『철학의 문제들』에서 이것을 닭에 비유했습니다. 날마다 모이를 주던 사람이 어느 날 닭의 목을 비튼다는 것입니다. 닭의 귀납은 그날까지 완벽했습니다.

이름이 비슷한 수학적 귀납법⁠(mathematical induction)⁠은 이 문제를 겪지 않습니다. 수학적 귀납법은 "1에서 참이다"와 "n에서 참이면 n + 1에서도 참이다"를 둘 다 증명한 뒤, 그 둘을 근거로 모든 자연수⁠(natural number)⁠에서 참이라고 결론짓는 방법입니다. 1에서 2로, 2에서 3으로 증명된 다리를 건너가는 것이니, 관찰에서 짐작하는 귀납이 아니라 논리로 끌어내는 연역입니다. 기계 학습의 귀납은 흄의 귀납입니다. 파란 점 10개만으로는 1차, 3차, 9차 가운데 무엇이 옳은지 결정할 수 없습니다. 모두 파란 점에서는 그럴듯하고, 차이는 보지 못한 곳에서만 드러납니다. 그래서 모든 학습 기계는 자료 바깥의 가정을 품고 있습니다. 퍼셉트론은 "경계는 직선이다"를, 합성곱 신경망은 "모양은 위치를 옮겨도 같다"를, 정규화는 "단순한 설명이 낫다"를 가정합니다. 이런 가정을 귀납 편향이라고 부릅니다.

14세기 오컴의 윌리엄의 이름을 딴 '오컴의 면도날⁠(Occam's razor)⁠'도 그런 가정의 하나입니다. 이 면도날을 비트로 재어, 정규화의 벌점이 '모형을 적는 데 드는 길이'와 같다는 것을 보이는 이야기는 「압축하는 것이 이해하는 것이다」 5–6절에 있습니다. 베이즈 정리⁠(Bayes' theorem)⁠의 사전확률⁠(prior probability)⁠, 곧 자료를 보기 전에 가설마다 매겨 두는 확률은 이 가정을 확률로 적는 방법입니다. 1990년대 물리학자이자 컴퓨터 과학자 데이비드 월퍼트 등이 증명한 '공짜 점심은 없다' 정리는, 가능한 모든 문제를 똑같이 중요하게 치고 학습 자료 밖에서의 성적을 평균 내면 어떤 학습 방법도 다른 방법보다 낫지 않다고 말합니다. 좋은 학습 기계란 우리 세계의 문제에 맞는 가정을 품은 기계입니다.

정리하면, 학습 오차를 줄이는 것만으로는 새 자료를 맞힌다는 보장이 없고, 규칙을 고르는 폭이 자료에 비해 넓으면 잡음까지 외웁니다. 떼어 둔 자료로 확인하고 벌점으로 단순함을 강제하는 것이 실용적인 처방이고, 그 밑에는 증명할 수 없는 가정, 곧 귀납 편향이 늘 깔려 있습니다.

'보지 못한 예를 얼마나 맞힐 것인가'에 처음으로 수학적인 답을 준 곳은 냉전기의 모스크바였습니다. 1960년대 말 소련 과학 아카데미 제어 과학 연구소의 블라디미르 바프니크와 알렉세이 체르보넨키스는, 학습 기계가 고를 수 있는 규칙들의 모임이 얼마나 풍부한지를 수 하나로 쟀습니다. 점을 몇 개까지 놓으면 그 점들을 어떻게 두 색으로 칠하든 모임 안의 규칙 하나로 맞힐 수 있는가, 그 최대 개수입니다. 평면의 직선이라면 3입니다. 한 직선 위에 있지 않은 점 셋은 어떻게 칠해도 직선으로 가를 수 있지만, 점 넷은 어떻게 놓아도 직선으로 가를 수 없는 칠하기가 있습니다. 네 점이 볼록한 사각형을 이루면 XOR처럼 마주 보는 꼭짓점끼리 같은 색으로 칠하고, 한 점이 나머지 셋이 이루는 삼각형 안에 있으면 그 점만 다른 색으로 칠하면 됩니다. 셋 이상이 한 직선 위에 있으면 그 사이에 낀 점만 다른 색으로 칠합니다. 두 사람은 1968년과 1971년 논문에서, 이 수가 유한하면 예가 많아질수록 모임 안의 모든 규칙에 대해 학습 오차와 새 자료의 오차가 높은 확률로 한꺼번에 가까워진다는 것을 증명했습니다. 오늘날 VC 차원⁠(VC dimension)⁠이라 부르는 이 수 덕분에 과적합을 '자료에 비해 규칙의 모임이 너무 풍부한 것'으로 정확히 말할 수 있게 되었습니다. 소련이 무너질 무렵 바프니크는 미국으로 건너갔고, 벨 연구소에서 이 이론을 바탕으로 서포트 벡터 머신⁠(support vector machine)⁠을 만들었습니다(8절).

8 · 규모의 시대그래픽 칩, 이미지넷, 그리고 검은 상자

1980년대 말에 필요한 수학은 거의 다 갖추어졌습니다. 그런데 신경망이 사진과 말을 실제로 다루게 된 것은 2010년대입니다. 이 절의 물음은 그 사이에 무엇이 바뀌었는가, 그리고 커진 기계가 어떤 새 문제를 불렀는가입니다.

1990년대와 2000년대 초에 신경망은 다시 조용해졌습니다. 자료가 적고 컴퓨터가 느려서 층을 깊이 쌓으면 학습이 잘 되지 않았습니다. 그사이 수학적으로 깔끔한 다른 방법들이 더 좋은 성적을 냈는데, 7절의 바프니크가 1990년대에 코리나 코르테스 등과 함께 다듬은 서포트 벡터 머신, 곧 두 무리 사이의 틈이 가장 넓어지는 경계를 찾는 방법이 그런 예입니다.

인공지능 전체에도 두 번째 겨울이 있었습니다. 1980년대에는 전문가의 규칙을 적어 넣은 '전문가 시스템⁠(expert system)⁠'이 기업에 팔려 나갔지만, 규칙을 적고 고치는 비용이 커지면서 기대가 꺼졌습니다. 1987년 무렵에는 '리스프 기계'의 시장도 값싼 범용 워크스테이션에 밀려 무너졌습니다. 매카시가 만든 언어 리스프를 빠르게 돌리려고 따로 설계한 컴퓨터입니다.

그 사이에도 힌턴, 르쿤, 몬트리올의 요슈아 벤지오 같은 몇몇 연구자가 캐나다 고등연구원의 지원 등을 받으며 연구를 이어 갔습니다. 신경망 연구의 한 중심이 캐나다에 자리 잡은 데에는 정치도 끼어 있습니다. 힌턴은 1987년 피츠버그의 카네기 멜런 대학을 떠나 토론토로 옮겼는데, 레이건 정부 시절의 미국 정치에 대한 실망과 인공지능 연구가 군의 연구비에 기대는 데 대한 반대가 그 까닭의 하나였다고 합니다. 그해 그는 캐나다 고등연구원의 연구원이 되었습니다. 2006년 힌턴과 사이먼 오신데로, 테이위화는 층을 하나씩 먼저 학습시켜 쌓은 뒤 그물 전체를 역전파로 다듬는 방법을 내놓아, 그때까지 잘 훈련되지 않던 깊은 그물도 훈련할 수 있음을 보였습니다. 층을 깊이 쌓은 신경망을 뜻하는 '딥러닝⁠(deep learning)⁠'이라는 말이 널리 퍼진 것이 이 무렵부터입니다.

변화는 뜻밖의 두 곳에서 왔습니다. 하나는 게임이었습니다. 3차원 게임의 화면을 그리려면 수백만 개의 점에 같은 계산을 동시에 해야 하고, 그래서 그래픽 칩은 단순한 계산 수천 개를 나란히 처리하도록 발전했습니다. 신경망의 계산도 대부분 커다란 행렬(수를 가로세로로 늘어놓은 표)의 곱이고, 행렬의 곱⁠(matrix multiplication)⁠은 같은 곱셈과 덧셈의 반복입니다(행렬의 곱). 한 층의 뉴런 수천 개가 저마다 입력에 가중치를 곱해 더하는 일을 한꺼번에 적은 것이 행렬의 곱이기 때문입니다. 2007년 그래픽 칩 회사 엔비디아가 그래픽 칩을 일반 계산에 쓰는 도구를 내놓자, 연구자들은 게임용 칩으로 신경망을 수십 배 빨리 훈련하기 시작했습니다.

다른 하나는 자료였습니다. 2007년 프린스턴 대학의 컴퓨터 과학자 페이페이 리는 세상의 사물을 사진으로 모두 모으겠다는 계획을 세웠습니다. 인터넷에서 모은 사진에 이름표를 붙이는 일은 아마존의 원격 노동 시장 '메커니컬 터크'를 통해 전 세계 수많은 사람에게 조금씩 나누어 맡겼습니다. 2009년 발표된 이미지넷은 뒤에 1,400만 장이 넘는 사진으로 자랐고, 2010년부터 사진 120만 장을 1,000가지 범주⁠(category)⁠로 나누는 경연이 열렸습니다.

2012년 그 경연에서 토론토 대학의 대학원생 알렉스 크리젭스키와 일리야 수츠케버, 그리고 힌턴이 만든 합성곱 신경망 '알렉스넷'이 우승했습니다. 기계가 가장 그럴듯하다고 내놓은 후보 다섯 개 안에 정답이 없는 비율이 15.3%로, 2위의 26.2%를 크게 앞질렀습니다. 가중치 6,000만 개짜리 그물을 게임용 그래픽 카드 두 장으로 엿새쯤 훈련한 결과였습니다. 구조는 르쿤의 그물과 크게 다르지 않았습니다. 달라진 것은 자료의 양과 계산의 속도⁠(velocity)⁠였습니다. 이 해를 기점으로 딥러닝이 음성 인식, 번역, 사진 분류를 차례로 휩쓸었습니다.

2016년 3월 서울의 한 호텔에서 구글 딥마인드의 바둑 프로그램 알파고가 이세돌 9단을 4대 1로 이겼습니다. 알파고는 판의 모양을 보는 신경망과 수를 내다보는 탐색을 합쳤고, 사람의 기보(대국의 수순을 적은 기록)로 배운 뒤 스스로 둔 대국으로 더 배웠습니다. 이긴 대국으로 이어진 수를 더 자주 두도록 고쳐 가는 이런 학습을 강화 학습⁠(reinforcement learning)⁠이라고 합니다. 경우의 수가 너무 많아 기계가 넘보기 어렵다던 바둑이었기에, 이 대국은 한국 사회에 큰 충격을 주었습니다. 알파고가 신경망으로 어림한 것은 1912년 체르멜로가 '서로 최선을 다할 때 이 국면의 결과는 이미 정해져 있다'고 증명한 바로 그 값입니다. 그 이야기와 서로 겨루며 배우는 신경망(생성적 적대 신경망⁠, generative adversarial network⁠)은 「이기는 쪽이 존재한다」 1절과 9절에 있습니다. 말을 다루는 신경망이 어떻게 커져 오늘의 큰 언어 모델⁠(language model)⁠이 되었는지는 「말을 세는 기계」 8절에, 그 모델이 무엇을 계산하고 어떻게 학습하는지는 「다음 단어를 맞히는 기계」에 있습니다. 낱말을 벡터로 바꾸는 단어 임베딩⁠(word embedding)⁠과 그 벡터의 편견은 「까마귀와 택시」 8절에 있습니다.

2018년의 튜링상⁠(Turing Award)⁠은 벤지오, 힌턴, 르쿤에게 돌아갔습니다. 2024년 노벨 물리학상은 존 홉필드와 힌턴에게 주어졌습니다. 홉필드는 1982년 칼텍에서 물리학의 에너지 개념으로 기억하는 신경망을 만든 사람입니다. 로젠블랫의 모터 달린 기계가 신문에 실린 지 60여 년 만이었습니다.

퍼셉트론에서 오늘까지. 무대가 버펄로와 MIT에서 샌디에이고, 홈델, 토론토, 그리고 서울과 스톡홀름으로 옮겨 가는 것을 보세요. 과학 줄(청록)에 고양이의 시각 피질, 네오코그니트론, 알렉스넷이 이어집니다.

규모는 새로운 문제를 불렀습니다. 첫째는 설명입니다. 퍼셉트론의 가중치 두 개는 직선 하나로 읽을 수 있었지만, 가중치 수십억 개가 왜 이 사진을 고양이라고 했는지는 누구도 한 줄로 말하지 못합니다. 대출을 거절당하거나 병을 진단받은 사람이 이유를 물을 때, "가중치가 그렇게 정해졌다"는 답이 되지 않습니다. 유럽 연합은 2024년 인공지능법을 만들어 위험이 큰 쓰임에 투명성과 사람의 감독을 요구하기 시작했습니다. 검은 상자를 열어 보려는 연구도 활발합니다. 입력의 어느 부분이 답에 가장 큰 영향을 주었는지 역전파로 거꾸로 추적하는 것이 그런 예입니다.

둘째는 공정함입니다. 기계는 보여 준 예를 닮습니다. 2018년 컴퓨터 과학자 조이 부올라음위니(MIT 미디어랩)와 팀닛 게브루는 상용 얼굴 분석 시스템들이 피부가 밝은 남성보다 피부가 어두운 여성의 성별을 훨씬 자주 틀린다는 것을 보였습니다. 학습 자료에 누가 얼마나 들어 있었는지가 그대로 성능의 차이가 된 것입니다. 어떤 특징을 가깝다고 볼지 정하는 일이 그 자체로 가치 판단이라는 이야기는 「까마귀와 택시」 7절에 있습니다. 또 기계가 찾는 것은 상관관계⁠(correlation)⁠이지 원인이 아니라는 점도 기억해야 합니다(「담배와 폐암」).

셋째는 이해입니다. 다음 낱말을 잘 맞히는 기계는 말을 이해하는 것일까요? 이 물음과 함께 튜링의 모방 게임⁠(imitation game)⁠과 철학자 존 설의 중국어 방⁠(Chinese room)⁠을 둘러싼 논쟁이 다시 살아났습니다(「기계가 풀 수 없는 문제」 8절). 2024년부터는 답하기 전에 긴 풀이를 쓰도록 강화 학습으로 가르친 추론 모델이 나왔지만, 적힌 풀이가 모델 안의 실제 계산을 보여 주는지는 아직 논쟁거리입니다. 한 가지는 분명합니다. 오늘의 거대한 신경망도 기계적인 계산을 하는 튜링 기계⁠(Turing machine)⁠의 범위를 벗어나지 않으며, 그 학습은 결국 이 글에서 본 두 가지, 경사를 따라 내려가는 걸음과 연쇄법칙을 거꾸로 돌리는 계산으로 이루어집니다.

9 · 이어지는 길학습이 닿는 곳

배우는 기계는 수학의 여러 갈래가 만나는 곳입니다.

요약. 신경망의 한 뉴런은 가중치를 곱해 더하고 비선형 함수를 씌우는 함수이고, 문턱 뉴런 하나는 직선 하나로 평면을 가릅니다. 퍼셉트론 규칙은 직선으로 가를 수 있는 자료에서 반드시 끝나지만 XOR 같은 문제는 풀지 못합니다. 층을 쌓은 그물은 손실 함수를 경사 하강법으로 줄여 배우고, 그 그래디언트는 연쇄법칙을 출력에서 입력 쪽으로 거꾸로 적용하는 역전파로 한 번에 구합니다.

w  ←  w−η ∇L(w),∂L∂w=∂L∂y^ ∂y^∂h ∂h∂w\mathbf w \;\leftarrow\; \mathbf w - \eta\, \nabla L(\mathbf w), \qquad \frac{\partial L}{\partial w} = \frac{\partial L}{\partial \hat y}\,\frac{\partial \hat y}{\partial h}\,\frac{\partial h}{\partial w}

학습의 목표는 본 예가 아니라 보지 못한 예를 맞히는 것이고, 그 사이의 틈을 메우는 것은 기계에 미리 담긴 가정, 곧 귀납 편향입니다. 흄이 말했듯 그 가정은 증명되지 않습니다. 그저 우리 세계에서 잘 들어맞을 뿐입니다.