Knowledge
딥러닝이란 무엇인가
딥러닝은 여러 층으로 이루어진 인공 신경망으로 데이터의 표현 자체를 학습하는 머신러닝의 한 방법이다. 기존 머신러닝과 갈라지는 지점이 어디인지, '깊다'는 말이 실제로 무엇을 가리키는지, 그리고 이 방식이 무엇을 대가로 치르는지를 설명한다.
딥러닝이란 무엇인가
딥러닝은 여러 개의 층으로 이루어진 인공 신경망을 사용해, 데이터를 어떤 형태로 바라볼지까지 기계가 직접 학습하게 하는 머신러닝의 한 방법이다.
이 정의에서 중요한 것은 뒷부분이다. 딥러닝을 "층이 많은 신경망"이라고만 설명하면 구조는 맞지만 요점이 빠진다. 층을 여러 개 쌓는 이유는 층 자체가 목적이어서가 아니라, 낮은 층이 만든 단순한 표현을 재료로 삼아 다음 층이 더 추상적인 표현을 만들어내게 하기 위해서다. 이 과정을 표현 학습(representation learning)이라 부른다.
이 분야를 이끈 세 연구자가 2015년 『Nature』에 쓴 리뷰의 정의도 같은 자리를 짚는다. 여러 처리 층으로 구성된 계산 모델이 여러 수준의 추상화로 데이터의 표현을 학습하게 하는 것이 딥러닝이라는 것이다.

기존 머신러닝과 어디서 갈라지는가
머신러닝이란 무엇인가에서 다룬 대로, 머신러닝은 사람이 규칙을 적어넣는 대신 데이터로부터 규칙을 만들어내는 방식이다. 그런데 여기에는 사람이 여전히 크게 개입하는 지점이 하나 남아 있었다. 특징(feature) 이다.
모델은 사진을 보지 않는다. 숫자를 본다. 그래서 원본 데이터를 모델이 다룰 수 있는 숫자의 묶음으로 바꾸는 단계가 반드시 필요하고, 그 숫자들이 특징이다. 그리고 고전적인 머신러닝에서는 어떤 특징을 뽑을지를 사람이 설계했다.
집값 예측이라면 면적, 방 개수, 지하철역까지의 거리 같은 것을 사람이 골라 넣는다. 이건 그럭저럭 할 만하다. 문제는 사진이나 소리처럼 사람이 무엇을 봐야 할지 말로 설명하지 못하는 데이터다.
고양이 사진을 판별하려면 어떤 특징을 뽑아야 하나. 귀의 뾰족한 정도? 털의 질감? 수염의 개수? 오랫동안 컴퓨터 비전 연구의 상당 부분이 이 질문에 매달렸다. 사람이 직접 설계한 특징 추출기가 여러 세대 나왔고, 그것을 잘 만드는 것이 곧 연구 역량이었다. 이 작업을 특징 공학(feature engineering) 이라 부른다.
딥러닝이 바꾼 것이 이 지점이다.
특징을 사람이 설계하는 대신, 특징을 뽑는 방법 자체를 데이터로부터 학습한다.
원본 픽셀을 그대로 넣으면 첫 층이 픽셀로부터 무언가를 만들고, 다음 층이 그것으로부터 또 무언가를 만든다. 최종 목표(고양이인가 아닌가)를 잘 맞히도록 이 전 과정이 함께 조정된다. 사람은 무엇을 봐야 하는지 말해주지 않았는데, 무엇을 봐야 하는지가 학습 결과로 나온다.
이건 나중에 붙인 해석이 아니다. 역전파를 신경망 학습에 적용해 널리 알린 1986년 논문이 이미 이 점을 자기 성과의 핵심으로 내세웠다. 그 논문은 가중치를 조정한 결과로 입력도 출력도 아닌 내부의 은닉 유닛들이 문제 영역의 중요한 특징을 표현하게 된다고 썼고, 쓸모 있는 새로운 특징을 만들어내는 능력이야말로 이 방법을 퍼셉트론 수렴 절차 같은 앞선 단순한 방법들과 구별짓는 점이라고 밝혔다.
그래서 딥러닝은 머신러닝의 하위 집합이면서 동시에 머신러닝 안에서 역할 분담을 다시 그은 방법이다. 인공지능 ⊃ 머신러닝 ⊃ 딥러닝이라는 포함 관계는 인공지능이란 무엇인가
에서 다룬 그대로지만, 딥러닝이 왜 따로 이름을 얻었는지는 이 자동화 때문이다.
인공 신경망의 구조
딥러닝의 계산 구조를 인공 신경망(artificial neural network)이라 부른다. 부품은 생각보다 적다.
노드와 가중치
가장 작은 단위는 노드(node) 또는 인공 뉴런(artificial neuron) 이다. 하나의 노드가 하는 일은 단순하다.
앞 층의 여러 값을 입력으로 받는다.
각 입력에 가중치(weight) 를 곱해서 전부 더한다.
거기에 편향(bias) 이라는 값을 하나 더한다.
그 결과를 활성화 함수(activation function) 에 통과시켜 밖으로 내보낸다.
가중치는 "이 입력을 얼마나 중요하게 볼 것인가"에 해당하는 숫자다. 편향은 "아무 입력이 없어도 이 노드가 기본적으로 얼마나 반응하는가"를 조절하는 숫자다. 이 가중치와 편향을 통틀어 파라미터(parameter) 라 부르고, 학습이란 결국 이 숫자들을 조정하는 일이다.
용어 주의 — 여기서 말하는 편향(bias)은 노드에 더해지는 상수항이고, AI 윤리에서 말하는 편향(bias, 데이터나 모델에 들어 있는 부당한 치우침)과는 완전히 다른 개념이다. 영어로도 한국어로도 같은 단어를 쓰기 때문에 흔히 섞인다. 문맥이 계산식이면 상수항, 문맥이 공정성이면 치우침이다.
층
노드를 나란히 여러 개 놓은 것이 층(layer) 이다. 층은 세 종류로 나뉜다.
입력층(input layer) — 데이터가 처음 들어오는 곳. 이미지라면 픽셀 값, 문장이라면 숫자로 바꾼 토큰이 여기로 들어온다.
은닉층(hidden layer) — 입력과 출력 사이의 층. 표현이 단계적으로 만들어지는 곳이다. 사람이 직접 값을 지정하지도, 읽지도 않아서 '은닉'이다.
출력층(output layer) — 최종 결과가 나오는 곳. 분류라면 각 후보의 확률, 회귀라면 하나의 숫자가 나온다.
데이터가 입력층에서 출력층 방향으로 흘러가며 계산되는 것을 순전파(forward propagation) 라 한다.

활성화 함수가 왜 필요한가
가중치를 곱해서 더하는 연산은 선형(linear) 이다. 선형 연산을 아무리 여러 번 겹쳐도 결과는 여전히 하나의 선형 연산으로 정리된다. 즉 활성화 함수가 없으면 층을 백 개 쌓아도 한 층짜리 모델과 표현력이 같다.
활성화 함수는 각 노드의 출력에 비선형성(non-linearity) 을 집어넣는 장치다. 비선형성이란 입력을 두 배로 키워도 출력이 두 배가 되지 않는 성질, 즉 직선 관계로 정리되지 않는 성질이다. 이게 있어야 층을 쌓는 것이 의미를 갖는다. 현재 가장 널리 쓰이는 것은 음수를 0으로 만들고 양수는 그대로 통과시키는 ReLU(Rectified Linear Unit) 계열이다. 시그모이드(sigmoid)나 tanh 같은 초기 함수들도 여전히 특정 위치에서 쓰인다.
정리하면 이렇다. 층을 깊게 쌓는 것이 의미가 있는 이유는 활성화 함수 때문이다.
'깊다'는 것은 무엇을 뜻하는가
은닉층이 여러 개라는 뜻이다. 은닉층이 하나뿐이거나 없는 신경망은 얕은(shallow) 신경망이라 부른다.
그런데 "몇 층부터 깊은 것인가"에 대한 엄밀한 기준선은 없다. "은닉층 2개 이상"이나 "3개 이상"이라는 숫자가 자료마다 돌아다니는데, 이건 정의가 아니라 관례다. 딥러닝의 전환점으로 꼽히는 2012년의 이미지 분류 모델만 해도 학습되는 층이 여덟 개였고, 이후 모델들은 그보다 훨씬 깊어졌다. 경계선을 몇으로 잡느냐가 실무적으로 의미가 없어진 지 오래다.
기준선을 외우는 것보다 이렇게 보는 편이 정확하다.
깊이는 층의 개수가 아니라, 표현이 몇 단계에 걸쳐 조합되는가를 가리킨다.
층 하나로 충분하다는 정리가 있는데 왜 깊게 쌓는가
수학적으로 보편 근사 정리(universal approximation theorem) 라는 결과가 있다. 1989년에 발표된 정리는, 짓눌림 함수(squashing function) — 시그모이드처럼 값을 일정 범위 안으로 눌러 담는 함수 — 를 활성화 함수로 쓰는 표준적인 순방향 신경망이라면, 은닉층이 단 하나뿐이라도 은닉 유닛이 충분히 많이 주어진다면 임의의 보렐 가측 함수를 원하는 정확도로 근사할 수 있음을 보였다.
그런데 현실의 모델은 전부 깊다. 정리와 모순되는 것처럼 보이지만 그렇지 않다. 단서가 정리 안에 이미 들어 있기 때문이다. "충분히 많이 주어진다면" 이 조건이 현실적으로 감당 가능한 개수라는 보장은 어디에도 없다. 그리고 이 정리는 그런 신경망이 존재한다고 말할 뿐, 경사하강법으로 그것을 찾아낼 수 있다고는 말하지 않는다.
즉 표현할 수 있다는 것과 학습해낼 수 있다는 것은 다른 문제다. 실용적 근거는 더 단순하다. 깊은 쪽이 실제로 더 잘 작동했다.
이 대목은 딥러닝 전반의 성격을 보여준다. 이론이 먼저 나오고 구현이 따라간 분야가 아니라, 되는 것을 먼저 찾고 왜 되는지를 나중에 설명해온 분야다. 지금도 설명이 따라잡지 못한 부분이 남아 있다.
어떻게 학습하는가
학습의 목표는 하나다. 출력이 정답에 가까워지도록 파라미터를 조정하는 것.
손실 함수
먼저 "얼마나 틀렸는가"를 하나의 숫자로 잴 수 있어야 한다. 그 숫자를 계산하는 규칙이 손실 함수(loss function) 다. 손실이 크면 많이 틀린 것이고, 0에 가까우면 잘 맞힌 것이다. 학습은 이 손실을 줄여가는 과정으로 정의된다.
어떤 손실 함수를 쓸지는 사람이 정한다. 이 선택이 곧 "무엇을 잘하는 것으로 칠 것인가"를 정하는 일이라, 딥러닝에서 사람의 판단이 가장 크게 개입하는 지점 중 하나다.
경사하강법
손실을 줄이려면 각 파라미터를 어느 방향으로 얼마나 움직여야 하는지 알아야 한다. 이때 쓰는 것이 기울기(gradient) 다. 기울기는 "이 파라미터를 조금 키우면 손실이 얼마나 늘거나 주는가"를 나타내는 값이다.
기울기의 반대 방향으로 파라미터를 조금씩 옮기면 손실이 줄어든다. 이 방법이 경사하강법(gradient descent) 이다. 한 번에 얼마나 옮길지를 정하는 값이 학습률(learning rate) 이고, 경사하강법을 개량한 실제 갱신 규칙들을 옵티마이저(optimizer) 라 부른다.
역전파
문제는 계산량이다. 2012년의 그 이미지 분류 모델만 해도 파라미터가 6천만 개였고, 이후 모델들은 그보다 훨씬 커졌다. 이 각각에 대해 기울기를 따로 구하면 학습이 불가능하다.
역전파(backpropagation) 는 이 기울기를 효율적으로 구하는 방법이다. 출력층에서 계산한 오차를 미분의 연쇄법칙(chain rule)을 이용해 입력층 쪽으로 거꾸로 전파시키면서, 각 층의 기울기를 한 번의 통과로 전부 얻는다. 딥러닝이 현실적으로 가능해진 핵심 기술이다.
말의 범위가 시대에 따라 달라진 용어다. 1986년 논문은 역전파를 "새로운 학습 절차"로 소개했고, 가중치를 반복적으로 조정하는 과정까지 포함해서 설명했다. 반면 오늘날 실무에서는 대체로 기울기를 계산하는 단계를 가리키고, 파라미터를 실제로 갱신하는 일은 옵티마이저의 몫으로 따로 부른다. 딥러닝 프레임워크들이 이 둘을 별개의 명령으로 분리해 놓았기 때문이다. 자료마다 범위가 달라 보이는 것은 이 때문이다.

반복
전체 학습 데이터를 한 바퀴 도는 것을 에포크(epoch) 라 하고, 한 번에 처리하는 데이터 묶음을 배치(batch) 라 한다. 순전파 → 손실 계산 → 역전파 → 파라미터 갱신을 수없이 반복한다.
파라미터와 하이퍼파라미터는 다르다
여기서 반드시 갈라야 하는 쌍이 있다.
파라미터 — 가중치와 편향. 학습으로 정해진다. 사람이 값을 지정하지 않는다.
하이퍼파라미터(hyperparameter) — 학습률, 층의 개수, 각 층의 노드 수, 배치 크기, 에포크 수 등. 학습 전에 사람이 정한다. 학습으로 정해지지 않는다.
같은 데이터와 같은 구조라도 하이퍼파라미터를 어떻게 잡느냐에 따라 결과가 크게 달라진다. 그래서 좋은 조합을 찾는 작업이 딥러닝 실무의 큰 부분을 차지한다.
학습이 잘 됐다는 판단 기준
학습 데이터에서 손실이 줄었다고 학습이 잘 된 것은 아니다. 모델이 데이터의 일반적인 패턴이 아니라 학습 데이터에만 있는 세부까지 외워버리면, 학습 데이터에서는 성적이 좋지만 처음 보는 데이터에서는 무너진다. 이 현상을 과적합(overfitting) 이라 한다.
그래서 학습에 쓰지 않은 데이터를 따로 떼어두고 그쪽 성능으로 판단한다. 판단 기준은 언제나 본 적 없는 데이터에서의 성능이다.
학습이 끝난 뒤에는 무슨 일이 일어나는가
여기가 자주 통째로 빠지는 부분이다.
학습이 끝나면 파라미터는 고정된다. 그 뒤 실제로 사용할 때는 순전파만 돈다. 입력이 들어오면 정해진 가중치로 계산해서 출력을 내놓을 뿐, 손실을 계산하지도 기울기를 구하지도 파라미터를 바꾸지도 않는다. 이 사용 단계를 추론(inference) 이라 한다.
학습 | 추론 | |
|---|---|---|
파라미터 | 계속 바뀐다 | 고정 |
계산 | 순전파 + 역전파 + 갱신 | 순전파만 |
필요한 것 | 정답이 붙은 데이터 | 입력만 |
한 번당 비용 | 크다 | 작다 |
비용 항목에는 단서가 필요하다. 한 번의 추론은 학습보다 훨씬 싸지만, 추론은 서비스가 살아 있는 내내 수없이 반복된다. 그래서 누적으로 보면 추론에 들어가는 총비용이 학습 비용을 넘어서는 경우가 흔하다.
그리고 배포된 모델은 쓴다고 좋아지지 않는다. 개선하려면 새 데이터로 다시 학습시켜 새 버전으로 교체해야 한다. 사용 기록이 다음 학습의 재료가 되는 경우는 있지만, 그건 사람이 별도의 학습 과정을 돌린 것이지 모델이 사용 중에 배운 것이 아니다.
층이 쌓이면 무엇이 생기는가
이미지를 다루는 신경망을 학습시킨 뒤 각 층이 무엇에 반응하는지 들여다보면, 대체로 다음과 같은 경향이 관찰된다.
낮은 층 — 밝기의 경계, 특정 방향의 선, 색의 변화 같은 아주 국소적인 패턴
중간 층 — 모서리, 곡선, 반복 무늬처럼 낮은 층 패턴이 조합된 형태
높은 층 — 눈, 바퀴, 얼굴처럼 의미를 붙일 수 있는 부분이나 물체 전체
낮은 것이 조합돼 높은 것이 되는 구조여서 계층적 표현(hierarchical representation) 이라 부른다. 딥러닝이 왜 잘 작동하는지에 대한 가장 널리 받아들여지는 설명이다.
다만 한 가지 단서가 필요하다. 이 깔끔한 계단식 그림은 정리된 설명이지, 모든 모델에서 그대로 관찰되는 사실은 아니다. 실제 신경망의 내부 표현은 훨씬 엉켜 있고, 하나의 노드가 여러 개념에 동시에 반응하거나 하나의 개념이 여러 노드에 흩어져 있는 경우가 흔하다. 위 설명은 경향을 보여주는 모델이지 내부의 사진이 아니다. 내부를 실제로 읽어내려는 시도는 그 자체로 별도의 연구 분야이며, 해석 가능성(interpretability) 이라 부른다.
주요 구조들
신경망을 어떻게 연결하느냐에 따라 잘 푸는 문제가 달라진다. 여기서는 이름과 역할만 밝힌다.
완전연결 신경망(fully connected neural network) — 한 층의 모든 노드가 다음 층의 모든 노드와 연결된 가장 기본적인 형태. 다층 퍼셉트론(MLP)이라고도 한다.
합성곱 신경망(CNN, Convolutional Neural Network) — 작은 필터를 이미지 전체에 훑어가며 국소적 패턴을 찾는 구조. 같은 필터를 위치를 옮겨가며 재사용하기 때문에, 고양이가 사진 어디에 있든 찾아낼 수 있다. 이미지 처리에서 오랫동안 기본 구조였고 지금도 널리 쓰이지만, 최근에는 트랜스포머 계열 구조가 이 영역에서도 많이 쓰인다.
순환 신경망(RNN, Recurrent Neural Network) — 앞서 처리한 내용을 기억으로 넘기며 순서가 있는 데이터를 다루는 구조. 긴 문장에서 앞의 내용을 잊어버리는 문제가 있었고, 이를 완화한 LSTM 같은 변형이 나왔다.
트랜스포머(Transformer) — 순서대로 훑는 대신 어텐션(attention) 이라는 방식으로 입력의 모든 부분이 서로를 직접 참조하게 하는 구조. 병렬 처리가 가능해 훨씬 큰 규모로 학습할 수 있게 됐고, 오늘날 대규모 언어 모델의 기반이 됐다. 언어에서 출발했지만 이미지와 음성으로도 넓게 퍼졌다.
생성 모델 계열 — 판별이 아니라 새로운 데이터를 만들어내는 쪽. 두 신경망을 경쟁시키는 GAN, 잡음을 조금씩 걷어내며 이미지를 만드는 확산 모델(diffusion model) 등이 있다. 판별과 생성이 어떻게 갈리는지는 판별형 AI와 생성형 AI는 무엇이 다른가에서 따로 다룬다.
이 구조들은 서로 배타적이지 않다. 실제 시스템은 여러 구조를 결합해 쓰는 경우가 많다.
왜 하필 지금이었는가
신경망의 기본 아이디어는 새롭지 않다. 역전파를 신경망 학습에 적용해 널리 알린 논문은 1986년에 나왔다. 그런데 딥러닝이 실제로 세상을 바꾸기 시작한 것은 그로부터 수십 년 뒤다. 사이의 기간 동안 이 분야는 여러 차례 기대와 침체를 오갔다.
바뀐 것은 아이디어가 아니라 조건 세 가지다.
데이터. 깊은 신경망은 파라미터가 많아서 그만큼 많은 예시를 필요로 한다. 인터넷과 디지털 기기의 보급으로 대규모 데이터셋이 만들어지기 전까지는 학습시킬 재료 자체가 없었다.
연산. 신경망 학습은 거대한 행렬 곱셈의 반복이다. 그래픽 처리를 위해 만들어진 GPU가 이 계산에 매우 적합하다는 것이 밝혀지면서, 감당할 수 없던 규모의 학습이 가능해졌다.
알고리즘. 층을 깊게 쌓을 때 생기는 고유한 문제들을 완화하는 기법이 축적됐다. 대표적인 것이 기울기 소실(vanishing gradient) 이다. 역전파는 기울기를 뒤로 전달하면서 곱셈을 반복하는데, 작은 값이 계속 곱해지면 앞쪽 층에 도달할 무렵 기울기가 거의 0이 되어 그 층들이 학습되지 않는다. 반대로 큰 값이 곱해져 기울기가 발산하는 경우를 기울기 폭발(exploding gradient)이라 한다. ReLU 활성화 함수, 잔차 연결, 각종 정규화 기법과 드롭아웃이 이런 문제들에 대한 대응으로 나왔다.
용어 주의 — 딥러닝의 '정규화'로 번역되는 말에는 두 가지가 있다. 값의 범위를 고르게 맞추는 normalization(배치 정규화 등)과, 과적합을 막기 위해 모델에 제약을 거는 regularization이다.
머신러닝이란 무엇인가에서 다룬 것과 같은 함정이다.
세 조건이 맞물린 것을 보여준 사례가 2012년에 발표된 합성곱 신경망 논문이다. 이 모델은 2010년 이미지 인식 대회용으로 공개된 데이터 — 백이십만 장의 고해상도 이미지를 천 개의 범주로 나누는 과제 — 에서 top-1 오차율 37.5%, top-5 오차율 17.0%를 기록해 기존 최고 성능을 크게 앞섰다. 파라미터는 6천만 개, 뉴런은 65만 개였고, 다섯 개의 합성곱 층과 세 개의 완전연결 층으로 이루어졌다. 논문은 학습 속도를 높이기 위해 합성곱 연산의 GPU 구현을 사용했다고 명시했다.
여기서 짚어둘 것이 있다. 6천만 개는 당시 기준으로 큰 모델이었지만, 오늘날의 대형 모델은 그보다 비교가 안 될 만큼 크다. 규모의 기준선 자체가 계속 움직이고 있다.
무엇을 대가로 치르는가
딥러닝의 장점과 단점은 같은 뿌리에서 나온다. 특징 설계를 사람에게서 넘겨받은 대신, 그 값을 치른다.
데이터가 많이 필요하다. 사람이 설계한 특징에는 사람의 사전 지식이 들어 있다. 그 지식을 안 넣기로 했으니 데이터로 채워야 한다. 그래서 딥러닝은 대체로 고전적 방법보다 훨씬 많은 데이터를 요구한다. (사전학습된 모델을 가져다 미세조정하는 전이학습은 이 부담을 크게 줄여준다.)
연산과 비용이 크다. 대형 모델의 학습에는 상당한 규모의 전용 하드웨어와 시간, 전력이 들어간다. 이는 비용 문제이자 환경 문제이며, 누가 이 기술을 만들 수 있는가라는 접근성 문제이기도 하다.
근거를 따라가기 어렵다. 수많은 파라미터에 판단 근거가 분산돼 있어, 왜 그런 결과가 나왔는지 사람이 읽어내기 어렵다. 종종 '블랙박스'라 불린다. 다만 이 표현은 과장되기 쉽다. 원리적으로 알 수 없는 것이 아니라, 사람이 읽기 어려운 형태로 들어 있는 것이다.
정형 데이터에서는 오히려 밀린다. 이건 딥러닝을 처음 배우는 사람이 가장 많이 놓치는 부분이다. 표 형태의 데이터(엑셀 시트처럼 행과 열로 된 데이터)에서는, 45개 데이터셋을 놓고 딥러닝 기법과 트리 기반 모델을 폭넓게 비교한 2022년 벤치마크 연구가 중간 규모 데이터(약 1만 건)에서 트리 기반 모델이 여전히 최고 수준이라고 보고했다. 속도 이점을 빼고 정확도만 따져도 그렇다는 것이다. 이미지·음성·텍스트처럼 사람이 특징을 설계하기 어려운 데이터에서 딥러닝이 압도적인 것이지, 모든 데이터에서 그런 것이 아니다.
머신러닝의 문제들을 그대로 물려받는다. 데이터의 치우침을 학습한다는 점, 상관관계를 배우지 인과관계를 배우지 않는다는 점, 세상이 변하면 낡는다는 점은 딥러닝에서도 똑같이 성립한다. 오히려 규모가 커진 만큼 영향도 커진다.
언제 쓰고, 언제 쓰지 않는가
쓰지 않는 편이 나은 경우
규칙이 이미 명확한 일. 규칙으로 적을 수 있으면 규칙으로 적는 게 정확하고 싸고 설명 가능하다.
표 형태의 정형 데이터. 트리 기반 모델을 먼저 시도한다.
데이터가 적은 문제. 굳이 쓴다면 처음부터 학습시키지 말고 사전학습된 모델을 가져다 쓴다.
판단 근거를 반드시 설명해야 하는 영역. 설명 가능성이 요구 조건이라면 구조 선택 단계에서부터 그것을 고려해야 한다.
딥러닝의 영역
사람이 무엇을 봐야 할지 설명하지 못하는 데이터 — 이미지, 소리, 자연어
예시는 많이 모을 수 있지만 규칙으로는 적을 수 없는 문제
가끔 틀려도 감당할 수 있는 문제
흔한 오해
"딥러닝은 사람의 뇌를 모방한 것이다." 인공 뉴런은 생물학적 뉴런에서 영감을 받은 것이지 그것을 모형화한 것이 아니다. 실제 뉴런의 동작은 훨씬 복잡하고, 뇌가 역전파와 같은 방식으로 학습한다는 근거도 없다. 1986년 논문조차 자기 대상을 뉴런이 아니라 "뉴런 비슷한 유닛(neurone-like units)의 네트워크"라고 불렀다. '신경망'은 역사적 이름이지 설명이 아니다.
"층이 깊을수록 성능이 좋다." 일정 지점을 넘으면 학습이 불안정해지고 과적합 위험이 커진다. 깊이가 성능으로 이어지려면 그것을 감당할 데이터·기법·연산이 함께 있어야 한다. 깊이는 조절해야 하는 하이퍼파라미터이지 늘리면 되는 손잡이가 아니다.
"딥러닝이 곧 머신러닝이다." 딥러닝은 머신러닝의 한 방법이다. 결정 트리, 랜덤 포레스트, 그래디언트 부스팅, 회귀, SVM 같은 방법들이 현장에서 널리 쓰이고 있고, 특히 정형 데이터에서는 여전히 더 나은 선택인 경우가 많다.
"딥러닝이 곧 생성형 AI다." 생성형 AI는 대부분 딥러닝으로 만들어지지만, 딥러닝의 훨씬 큰 부분은 판별·예측·인식에 쓰인다. 불량품 검출, 의료 영상 판독, 음성 인식은 전부 딥러닝이고 아무것도 생성하지 않는다.
"역전파로 학습한다." 틀린 말은 아니지만 범위가 자료마다 다르다. 원 논문은 가중치 조정까지 포함한 학습 절차 전체를 그렇게 불렀고, 오늘날 실무에서는 대체로 기울기 계산 단계만 가리킨다. 두 용법이 섞여 돌아다닌다는 것을 알고 읽어야 한다.
"모델이 스스로 특징을 찾으니 사람이 할 일이 줄었다." 자동화된 것은 특징 설계 하나다. 무엇을 풀 문제로 삼을지, 어떤 데이터를 모을지, 무엇을 정답으로 표시할지, 손실 함수를 어떻게 정할지, 구조와 하이퍼파라미터를 어떻게 잡을지, 결과를 무엇으로 평가할지는 전부 사람의 결정으로 남아 있다. 사람의 일은 줄어든 게 아니라 옮겨갔다.
"쓸수록 똑똑해진다." 배포된 모델은 파라미터가 고정된 상태로 추론만 한다. 사용한다고 학습되지 않는다. 개선하려면 새 데이터로 다시 학습시켜 교체해야 한다.
"학습 데이터에서 성능이 좋으면 좋은 모델이다." 학습에 쓴 데이터에서의 성적은 암기 정도에 가깝다. 판단 기준은 본 적 없는 데이터에서의 성능이다.
"신경망 내부는 알 수 없다." 읽기 어려운 것과 알 수 없는 것은 다르다. 같은 파라미터에 같은 입력을 넣으면 신경망의 계산 결과는 언제나 같고, 모든 중간 값을 들여다볼 수 있다. (챗봇의 답이 매번 달라지는 것은 신경망이 내놓은 확률에서 하나를 골라내는 단계가 바깥에 하나 더 있기 때문이지, 신경망의 계산이 매번 달라져서가 아니다.) 어려운 것은 그 수많은 숫자를 사람이 이해할 수 있는 개념으로 옮기는 일이며, 이를 위한 연구 분야가 별도로 존재한다.
확인한 자료
LeCun, Y., Bengio, Y. & Hinton, G., Deep learning, Nature 521(7553), 436–444, 2015 — 딥러닝을 "여러 처리 층으로 구성된 계산 모델이 여러 수준의 추상화로 데이터의 표현을 학습하게 하는 것"으로 정의하는 대목. 이 글의 정의 문장의 근거.
Rumelhart, D. E., Hinton, G. E. & Williams, R. J., Learning representations by back-propagating errors, Nature 323(6088), 533–536, 1986 — 역전파를 학습 절차로 소개하고, 은닉 유닛이 문제 영역의 중요한 특징을 표현하게 된다는 점 및 새로운 특징을 만들어내는 능력이 이 방법의 차별점이라는 서술. '뉴런 비슷한 유닛'이라는 표현도 여기서 확인.
Hornik, K., Stinchcombe, M. & White, H., Multilayer feedforward networks are universal approximators, Neural Networks 2(5), 359–366, 1989 — 짓눌림 함수를 쓰는 순방향 신경망은 은닉층이 하나뿐이라도 은닉 유닛이 충분히 많으면 임의의 보렐 가측 함수를 원하는 정확도로 근사할 수 있다는 정리.
Krizhevsky, A., Sutskever, I. & Hinton, G. E., ImageNet Classification with Deep Convolutional Neural Networks, NeurIPS 25, 2012 — 2010년 대회 데이터 기준 백이십만 장·천 개 범주, top-1 37.5% / top-5 17.0%, 파라미터 6천만 개, 뉴런 65만 개, 합성곱 층 5개와 완전연결 층 3개, GPU 구현. 본문의 모든 수치의 출처.
Grinsztajn, L., Oyallon, E. & Varoquaux, G., Why do tree-based models still outperform deep learning on typical tabular data?, NeurIPS Datasets and Benchmarks, 2022 — 45개 정형 데이터셋 벤치마크에서 중간 규모(약 1만 건) 데이터의 경우 트리 기반 모델이 여전히 최고 수준이라는 결과.