데이터는 처음부터 의미를 말하지 않는다
컴퓨터에게 사진 한 장을 보여 준다고 해 봅시다. 우리는 즉시 말할 수 있습니다. 고양이다. 컵이다. 손글씨 숫자 8이다. 하지만 컴퓨터가 처음 만나는 사진은 그런 의미가 아닙니다. 사진은 그저 숫자의 격자입니다. 각 픽셀이 얼마나 밝은지, 빨간색·초록색·파란색 값이 얼마인지가 길게 늘어선 숫자 묶음일 뿐입니다.
텍스트도 마찬가지입니다. 우리는 문장을 읽으면 분위기, 의도, 주제, 감정을 느낍니다. 하지만 컴퓨터가 처음 만나는 문장은 문자나 토큰의 나열입니다. 사랑이라는 단어가 따뜻한 말인지, 은행이라는 단어가 돈을 맡기는 곳인지 강가의 둑인지, 처음부터 알고 있지 않습니다.
딥러닝의 중요한 능력은 바로 여기에서 시작됩니다. 원래 데이터가 가진 숫자 배열을 문제 해결에 더 유용한 형태로 바꾸는 것. 이것을 표현 학습이라고 부릅니다.
표현이라는 말이 조금 추상적으로 들릴 수 있습니다. 쉽게 말하면 모델 내부에서 데이터를 다시 설명하는 방식입니다. 입력 사진이 처음에는 픽셀 숫자였다면, 신경망의 안쪽에서는 점점 모서리, 질감, 부분 형태, 전체 모양을 담은 숫자 묶음으로 바뀝니다. 입력 문장이 처음에는 토큰 번호였다면, 안쪽에서는 단어의 의미, 주변 문맥, 문장 속 역할을 담은 벡터로 바뀝니다.
즉 표현 학습은 데이터를 외우는 일이 아닙니다. 데이터를 더 잘 이해할 수 있는 내부 언어로 번역하는 일에 가깝습니다.

사람이 특징을 만들던 시대
딥러닝이 널리 쓰이기 전에도 컴퓨터는 이미 분류와 예측을 했습니다. 다만 그때는 사람이 먼저 중요한 특징을 정리해 주는 경우가 많았습니다.
예를 들어 이메일이 스팸인지 아닌지 판단하는 모델을 만든다고 해 봅시다. 사람은 이런 규칙을 떠올릴 수 있습니다. 제목에 무료라는 단어가 들어가는가. 느낌표가 지나치게 많은가. 특정 광고 문구가 반복되는가. 발신자 주소가 이상한가. 이런 정보를 숫자로 바꾼 뒤 모델에 넣습니다.
이미지 분류도 비슷했습니다. 고양이와 강아지를 구분하려면 사람이 색상 분포, 윤곽선, 귀의 모양, 털의 질감 같은 특징을 설계하려고 했습니다. 손글씨 숫자를 분류하려면 닫힌 고리가 있는지, 위아래로 긴지, 선이 어느 방향으로 휘는지 같은 특징을 만들었습니다.
이런 방식을 특징 공학이라고 합니다. 영어로는 feature engineering이라고 부릅니다. 특징 공학은 여전히 중요합니다. 문제를 이해한 사람이 데이터를 잘 정리하면 모델이 훨씬 쉽게 배울 수 있기 때문입니다.
하지만 한계도 분명합니다. 세상은 너무 다양합니다. 고양이는 정면을 볼 수도 있고, 옆을 볼 수도 있고, 어두운 방에 있을 수도 있고, 이불 속에 반쯤 숨어 있을 수도 있습니다. 사람이 모든 경우에 통하는 특징을 미리 적어 주기는 어렵습니다. 언어는 더 복잡합니다. 같은 단어가 문맥에 따라 완전히 다른 뜻을 가질 수 있고, 같은 뜻도 수십 가지 표현으로 말할 수 있습니다.
딥러닝은 이 부담을 일부 모델에게 넘깁니다. 사람이 모든 특징을 직접 만들지 않고, 모델이 데이터와 정답을 보면서 유용한 특징을 스스로 찾아가게 합니다. 바로 이것이 표현 학습의 핵심입니다.
모델이 특징을 배운다는 말의 진짜 의미
모델이 특징을 배운다고 하면 마치 신경망 안에 작은 사람이 들어 있어 사진을 바라보며 생각하는 것처럼 느껴질 수 있습니다. 하지만 실제로 일어나는 일은 더 단순하고 더 흥미롭습니다.
신경망의 각 층은 입력 숫자들을 가중치와 편향으로 계산하고, 활성화 함수를 거쳐 다음 층으로 넘깁니다. 이전 장에서 본 것처럼 층을 지나면서 데이터는 계속 다른 숫자 묶음으로 변합니다. 이 숫자 묶음이 바로 그 시점의 표현입니다.
처음 입력은 원본 데이터에 가깝습니다. 이미지라면 픽셀값이고, 텍스트라면 토큰 번호에서 출발한 값입니다. 그런데 첫 번째 층, 두 번째 층, 세 번째 층을 지날수록 이 숫자들은 단순한 원본 값이 아니라 문제 해결에 필요한 힌트를 담게 됩니다.
여기서 중요한 점은 모델이 처음부터 모서리, 질감, 의미 같은 이름표를 알고 시작하지 않는다는 것입니다. 모델은 그저 예측하고, 틀린 정도를 계산하고, 어느 가중치를 어떻게 바꿔야 손실이 줄어드는지에 따라 조금씩 수정됩니다. 그런데 이 과정을 많이 반복하면, 중간층의 숫자들이 점점 쓸모 있는 패턴을 담게 됩니다.
비유하자면 손실 함수는 모델에게 보내는 짧은 평가입니다. 이 예측은 많이 틀렸다. 이 예측은 조금 나아졌다. 이 방향은 좋다. 저 방향은 나쁘다. 모델은 이 평가를 바탕으로 내부 계산 방식을 바꿉니다. 그러다 보면 어떤 뉴런은 특정 선의 방향에 민감해지고, 어떤 뉴런은 둥근 형태에 민감해지고, 어떤 뉴런은 단어 사이의 관계에 민감해질 수 있습니다.
표현 학습은 바로 이런 과정입니다. 정답을 더 잘 맞히기 위해 내부 숫자들이 점점 의미 있는 구조를 갖게 되는 과정입니다.
좋은 표현은 문제를 쉽게 만든다
좋은 표현이란 무엇일까요? 한마디로 말하면 뒤쪽 층이 판단하기 쉬운 표현입니다.
손글씨 숫자 3과 8을 구분한다고 생각해 봅시다. 원본 픽셀만 놓고 보면 매우 복잡합니다. 사람마다 글씨체가 다르고, 굵기도 다르고, 기울기도 다릅니다. 어떤 8은 위아래 고리가 또렷하지만, 어떤 8은 거의 3처럼 보입니다. 픽셀 하나하나를 직접 비교해서는 안정적으로 구분하기 어렵습니다.
하지만 중간층이 이미 이런 정보를 정리해 주었다면 어떨까요? 위쪽에 닫힌 고리가 있는가. 아래쪽에도 닫힌 고리가 있는가. 오른쪽이 열려 있는가. 선이 가운데에서 이어지는가. 이런 정보를 담은 표현으로 바뀌면 마지막 층은 훨씬 쉽게 판단할 수 있습니다.
좋은 표현은 보통 세 가지 성질을 가집니다.
같은 종류의 데이터는 내부 공간에서 가깝게 모입니다.
다른 종류의 데이터는 내부 공간에서 멀어집니다.
불필요한 차이는 줄이고 중요한 차이는 크게 드러냅니다.
여기서 내부 공간이라는 말은 어렵게 들릴 수 있지만, 단순히 숫자 벡터들이 놓이는 가상의 좌표 공간이라고 생각하면 됩니다. 예를 들어 어떤 이미지는 신경망 안에서 128개의 숫자로 표현될 수 있습니다. 그러면 그 이미지는 128차원 공간의 한 점처럼 볼 수 있습니다. 사람 눈에는 보이지 않지만, 모델에게는 그 점들의 위치 관계가 중요합니다.
좋은 표현을 배운 모델에서는 고양이 사진들이 서로 비슷한 위치에 모이고, 자동차 사진들은 다른 위치에 모입니다. 밝은 고양이와 어두운 고양이는 픽셀 수준에서는 크게 다를 수 있지만, 표현 수준에서는 가깝게 놓일 수 있습니다. 이것이 표현 학습의 힘입니다. 겉모습의 흔들림을 넘어 문제에 중요한 본질을 잡아내려는 것입니다.
이미지에서 표현은 어떻게 깊어지는가
이미지 모델을 떠올려 봅시다. 입력은 픽셀입니다. 픽셀 하나는 아주 작은 정보만 갖고 있습니다. 이 점이 밝은지 어두운지, 빨간색에 가까운지 파란색에 가까운지 정도입니다. 픽셀 하나만 보고 고양이인지 자동차인지 알 수는 없습니다.
하지만 픽셀들이 모이면 선이 됩니다. 선들이 모이면 모서리가 되고, 모서리들이 모이면 간단한 형태가 됩니다. 둥근 곡선, 뾰족한 귀, 반복되는 털의 질감, 바퀴처럼 보이는 원형 구조가 나타납니다. 더 깊은 층에서는 이런 부분들이 조합되어 얼굴, 다리, 창문, 바퀴, 몸통 같은 더 큰 단위로 표현될 수 있습니다.
물론 실제 신경망 내부가 사람이 붙인 이름 그대로 움직인다고 단정할 수는 없습니다. 어떤 뉴런이 정말로 귀만 본다거나, 어떤 층이 반드시 바퀴만 담당한다고 말하면 지나친 단순화가 됩니다. 신경망 내부의 표현은 사람이 이해하기 어려운 방식으로 분산되어 저장되는 경우가 많습니다. 하나의 특징이 여러 뉴런에 흩어져 있고, 하나의 뉴런도 여러 패턴에 반응할 수 있습니다.
그럼에도 큰 흐름은 이해할 수 있습니다. 얕은 층은 비교적 단순한 패턴에 민감하고, 깊은 층은 더 복합적인 패턴을 다루는 경향이 있습니다. 그래서 층을 쌓는다는 것은 단지 계산을 많이 한다는 뜻이 아닙니다. 원본 데이터를 더 추상적인 표현으로 조금씩 바꾸는 통로를 만든다는 뜻입니다.
사진 속 고양이를 알아보는 일은 결국 픽셀을 고양이라는 단어로 바로 바꾸는 마술이 아닙니다. 픽셀에서 시작해 선과 질감, 부분과 형태를 거치며 점점 판단하기 쉬운 표현으로 압축하고 재구성하는 과정입니다.
텍스트도 숫자 표현으로 바뀐다
이제 텍스트를 보겠습니다. 문장은 이미지와 달라 보이지만, 신경망 입장에서는 역시 숫자로 바꿔야 다룰 수 있습니다. 단어든 글자든 토큰이든, 모델 안으로 들어가려면 먼저 숫자 형태가 되어야 합니다.
가장 단순한 방식은 단어마다 번호를 붙이는 것입니다. 사과는 17번, 학교는 42번, 달리다는 103번처럼 말입니다. 하지만 번호만으로는 의미를 담기 어렵습니다. 사과가 17번이고 학교가 42번이라고 해서 두 단어의 관계가 생기지는 않습니다. 번호는 그저 이름표일 뿐입니다.
그래서 딥러닝에서는 단어를 벡터로 표현합니다. 벡터는 여러 개의 숫자를 한 줄로 묶은 것입니다. 예를 들어 사과라는 단어가 0.12, -0.83, 1.44 같은 숫자 수십 개 또는 수백 개로 표현될 수 있습니다. 이 숫자들은 사람이 직접 정해 주는 것이 아니라 학습 과정에서 조정됩니다.
처음에는 이 벡터가 별 의미 없는 값일 수 있습니다. 하지만 많은 문장을 보며 학습하면 비슷한 문맥에 등장하는 단어들이 비슷한 벡터를 갖게 됩니다. 고양이와 강아지는 둘 다 동물과 관련된 문맥에 자주 등장하므로 가까운 표현을 가질 수 있습니다. 먹다와 마시다는 행동을 나타내는 문맥에서 비슷한 역할을 하므로 어떤 방향에서는 닮을 수 있습니다.
더 재미있는 문제는 문맥입니다. 한국어 단어 배를 생각해 봅시다. 배는 과일일 수도 있고, 물 위를 다니는 탈것일 수도 있고, 사람의 몸 한가운데를 가리킬 수도 있습니다. 단어 하나만 보면 어느 뜻인지 알 수 없습니다. 하지만 문장을 보면 달라집니다. 배를 깎아 먹었다면 과일이고, 배가 항구에 들어왔다면 선박입니다.
딥러닝 언어 모델은 이런 문맥 정보를 내부 표현에 담으려고 합니다. 같은 토큰이라도 주변 단어에 따라 다른 느낌의 표현으로 바뀔 수 있습니다. 이 생각이 나중에 Transformer와 LLM을 이해할 때 매우 중요해집니다. LLM은 단어를 고정된 사전 뜻으로만 다루지 않습니다. 문장 속 위치와 주변 단어와의 관계를 바탕으로 계속 표현을 갱신합니다.
임베딩은 표현 학습의 입구다
LLM을 이야기할 때 자주 등장하는 단어가 임베딩입니다. 임베딩은 어떤 대상을 벡터 공간 속의 점으로 바꾸는 방법입니다. 단어, 문장, 이미지, 사용자, 상품도 임베딩으로 표현할 수 있습니다.
처음 딥러닝을 공부할 때 임베딩은 별도의 기술처럼 보일 수 있습니다. 하지만 사실 임베딩은 표현 학습의 한 형태입니다. 모델이 다루기 어려운 대상을 다루기 쉬운 숫자 벡터로 바꾸고, 그 벡터 안에 의미와 관계를 담으려 하기 때문입니다.
예를 들어 추천 시스템에서 영화들을 임베딩한다고 해 봅시다. 액션 영화를 좋아하는 사람, 잔잔한 드라마를 좋아하는 사람, 특정 감독의 작품을 좋아하는 사람의 선택 패턴을 학습하면 영화 벡터들 사이에도 관계가 생깁니다. 비슷한 취향의 사람들이 함께 본 영화들은 가까워지고, 전혀 다른 취향에서 소비되는 영화들은 멀어질 수 있습니다.
언어 모델에서도 비슷한 일이 일어납니다. 토큰은 임베딩 벡터로 바뀌고, 그 벡터는 여러 층을 지나며 계속 변합니다. 초기 임베딩이 단어의 기본적인 의미를 담는 출발점이라면, 깊은 층의 표현은 문맥 속 역할과 관계를 더 많이 반영합니다.
여기서 중요한 연결고리가 생깁니다. LLM의 화려한 문장 생성 능력은 갑자기 등장한 것이 아닙니다. 그 바닥에는 신경망이 입력을 벡터 표현으로 바꾸고, 여러 층을 거치며 표현을 갱신하고, 손실을 줄이도록 가중치를 조정하는 딥러닝의 기본 원리가 있습니다. Transformer는 이 표현을 특히 강력하게 다루는 구조입니다.
표현은 압축이면서 재구성이다
표현 학습을 이해할 때 압축이라는 이미지는 도움이 됩니다. 모델은 원본 데이터의 모든 세부 사항을 그대로 들고 가려 하지 않습니다. 문제를 푸는 데 중요한 정보를 남기고, 덜 중요한 흔들림은 줄이려 합니다.
고양이 분류 모델에게 배경의 벽지가 무슨 색인지는 대체로 중요하지 않습니다. 조명이 조금 어둡거나, 고양이가 왼쪽에 있거나 오른쪽에 있는 것도 본질은 아닐 수 있습니다. 중요한 것은 고양이를 고양이답게 만드는 패턴입니다. 귀, 눈, 수염, 얼굴 형태, 몸의 윤곽, 털의 질감 같은 정보가 더 중요할 수 있습니다.
텍스트 감정 분류 모델도 마찬가지입니다. 이 영화 진짜 미쳤다라는 문장은 상황에 따라 긍정일 수도 있고 부정일 수도 있습니다. 모델은 단어 하나만 볼 것이 아니라 전체 문맥과 표현 방식을 봐야 합니다. 최고다, 다시 보고 싶다, 돈이 아깝지 않다 같은 표현과 함께 있다면 긍정에 가까울 것입니다. 시간 낭비다, 최악이다 같은 표현과 함께 있다면 부정에 가까울 것입니다.
좋은 표현은 원본을 단순히 줄이는 것이 아닙니다. 중요한 관계가 더 잘 보이도록 다시 배열하는 것입니다. 마치 복잡한 지도를 지하철 노선도로 바꾸는 일과 비슷합니다. 실제 도시의 모든 골목과 건물 모양을 담지는 않지만, 역과 노선의 연결 관계는 훨씬 선명하게 보여 줍니다. 목적이 길 찾기라면 지하철 노선도가 더 좋은 표현일 수 있습니다.
딥러닝의 내부 표현도 그렇습니다. 원본 세계의 모든 정보를 담는 것이 목표가 아닙니다. 지금 풀어야 할 문제에 맞게, 예측에 필요한 정보를 더 잘 드러내는 형태로 바꾸는 것이 목표입니다.
표현은 손실 함수가 빚어낸다
그렇다면 모델은 어떤 표현이 좋은지 어떻게 알까요? 여기서 다음 부의 주인공인 손실 함수가 등장합니다.
모델은 스스로 이런 결심을 하지 않습니다. 이제부터 고양이의 귀를 찾아야지. 이제부터 긍정적인 단어를 모아야지. 실제 학습은 훨씬 기계적입니다. 모델이 예측합니다. 정답과 비교해 틀린 정도를 손실로 계산합니다. 손실을 줄이는 방향으로 가중치를 조금 수정합니다. 이 과정을 반복합니다.
그런데 이 반복이 쌓이면 내부 표현이 달라집니다. 정답을 맞히는 데 도움이 되는 패턴은 더 잘 살아남고, 도움이 되지 않는 패턴은 덜 중요해집니다. 처음에는 어수선하던 내부 숫자들이 점점 문제에 맞는 구조를 갖게 됩니다.
이 점이 딥러닝을 흥미롭게 만듭니다. 우리는 모델에게 모서리 탐지기를 직접 만들어 주지 않아도 됩니다. 모든 단어의 의미 관계를 하나하나 표로 정리해 주지 않아도 됩니다. 충분한 데이터, 적절한 구조, 손실 함수, 최적화 과정이 만나면 모델은 필요한 표현을 어느 정도 스스로 만들어 갑니다.
물론 이것이 항상 완벽하다는 뜻은 아닙니다. 데이터가 편향되어 있으면 표현도 편향될 수 있습니다. 학습 목표가 잘못되어 있으면 모델은 엉뚱한 단서를 중요하게 여길 수 있습니다. 예를 들어 모든 늑대 사진에 눈 덮인 배경이 있고 모든 개 사진에 실내 배경이 있다면, 모델은 늑대의 생김새보다 눈 배경을 더 강한 단서로 배울 수도 있습니다.
그래서 표현 학습은 강력하지만, 무조건 믿어도 되는 마법은 아닙니다. 모델이 무엇을 보고 배웠는지, 어떤 데이터에서 학습했는지, 어떤 손실을 줄이도록 훈련되었는지를 함께 생각해야 합니다.
LLM은 거대한 표현 학습 기계다
이 책의 마지막 목적지는 Transformer와 LLM입니다. 지금 배우는 표현 학습은 그곳으로 가는 중요한 다리입니다.
LLM은 문장을 입력받아 다음 토큰을 예측하거나, 주어진 문맥에 맞는 응답을 생성합니다. 겉으로 보면 글을 쓰는 모델입니다. 하지만 안쪽에서 일어나는 일은 표현의 연속적인 변환입니다. 토큰이 임베딩 벡터가 되고, 그 벡터들이 여러 Transformer 블록을 지나며 서로의 관계를 반영한 표현으로 바뀝니다. 마지막에는 그 표현을 바탕으로 다음에 올 가능성이 높은 토큰을 계산합니다.
여기서 Attention은 중요한 역할을 합니다. Attention은 문장 안의 여러 토큰이 서로를 얼마나 참고해야 하는지 계산하는 방법입니다. 예를 들어 철수가 영희에게 책을 빌려주었다. 그녀는 고맙다고 말했다라는 문장에서 그녀가 누구를 가리키는지 이해하려면 앞의 단어들과 관계를 살펴야 합니다. Attention은 이런 관계를 표현 안에 반영하는 장치라고 볼 수 있습니다.
하지만 Attention도 허공에 떠 있는 개념이 아닙니다. 토큰은 먼저 벡터로 표현되어야 하고, 그 벡터는 층을 거치며 바뀌어야 하며, 전체 모델은 손실을 줄이는 방향으로 학습되어야 합니다. 다시 말해 LLM의 핵심 구조는 신경망의 표현 학습 위에 놓여 있습니다.
그래서 표현 학습을 이해하면 LLM이 조금 덜 신비롭게 보입니다. 모델이 문장의 의미를 완전히 인간처럼 이해한다고 단정할 필요는 없습니다. 대신 이렇게 볼 수 있습니다. LLM은 방대한 텍스트를 통해 토큰과 문맥의 관계를 벡터 표현에 담도록 학습한 거대한 신경망이다. 그 표현이 충분히 풍부해지면 번역, 요약, 질의응답, 코딩 같은 다양한 작업을 수행할 수 있다.
딥러닝을 보는 눈이 바뀌는 순간
처음 신경망을 배우면 계산식이 먼저 보입니다. 입력에 가중치를 곱하고, 편향을 더하고, 활성화 함수를 통과시키고, 다음 층으로 넘깁니다. 이 설명은 맞지만, 그것만으로는 딥러닝이 왜 강력한지 잘 느껴지지 않습니다.
표현 학습을 이해하면 관점이 바뀝니다. 신경망은 단순히 숫자를 계산하는 기계가 아니라, 데이터를 문제 해결에 알맞은 내부 표현으로 바꾸는 기계입니다. 픽셀을 형태의 단서로 바꾸고, 단어를 문맥 속 의미로 바꾸고, 복잡한 입력을 판단하기 쉬운 공간으로 옮기는 기계입니다.
앞으로 우리는 학습의 원리를 더 깊이 살펴볼 것입니다. 모델은 어떻게 틀린 정도를 계산할까요? 손실 함수는 무엇을 측정할까요? 경사하강법은 가중치를 어떤 방향으로 움직일까요? 역전파는 어느 가중치가 오차에 얼마나 영향을 주었는지 어떻게 알아낼까요?
이 질문들은 모두 표현 학습과 연결됩니다. 좋은 표현은 저절로 생기지 않습니다. 모델이 예측하고, 틀리고, 손실을 계산하고, 가중치를 수정하는 반복 속에서 만들어집니다. 이제 우리는 그 반복의 첫 번째 열쇠인 손실 함수로 들어갈 차례입니다.
이 노트는 보도·비평·교육·연구 목적으로 작성되었습니다. 저작권 문의가 있으시면 에서 알려주세요.