본 게시글은 학부 강의 'AI 데이터 표현과 모델링'을 기반으로 이해하고 학습한 내용을 정리하였습니다.

Data to Numbers
데이터를 숫자로
Representation Recap
Representatiaon은 현실 세계의 표현이었습니다.
우리는 현실 세계(the Real World)에 있는 데이터를 뜯어내서 기호화(Symbolization)하는 작업을 해왔습니다. 그런데 기호화만으로는 AI를 만들 수 없습니다. 기호화의 최종 소비자가 사람(Human)이라면 기호나 그림으로 충분하지만, AI가 최종 소비자라면 컴퓨터가 이해할 수 있는 형태, 즉 벡터(Vector) = 숫자(Numbers)로 변환해야 합니다.
어떤 형태로든 세상의 정보가 심볼화를 거치든, 혹은 Real World 데이터가 바로 처리되는, 최종 목표는 벡터(숫자)로 변환되는 겁니다.
Representation Format Recap
| 구분 | One-Hot Representation | Distributed Represenation |
| 형태 | [0, 0, 1, 0, ...] | [34.2, 93.2, 45.3, ...] |
| 특성 | 기호와 1대1 대응, Discrete | Dense(꽉 찬) 표현, 학습된 Neural Network를 통해 Encoding |
| 차원 | 사전 크기만큼 커짐(e.g. 10만 개) | 상대적으로 작은 차원 |
| 성능 | 간단하지만 제한적 | 압도적으로 좋음 |
| 복잡도 | 파이썬 코드 + CPU만으로 가능 | 훈련된 Neural Network + 인프라 필요 |
성능 면에서는 오른쪽(Distributed Representation)이 다시 돌아올 수 있는 강을 건넌 것처럼 무조건 좋습니다!
다만 왼쪽 방식은 굉장히 간단하다는 장점이 있죠.
실제 서비스 개발 사례를 볼까요.
음식 칼로리 계산하는 AI가 있습니다.
Calrie Mama라는 앱이 한 때 유행했었던 적이 있었어요. 식사 사진을 찍으면 음식의 칼로리를 알려주는 서비스입니다.
유사한 아이디어로 예측, 의료AI(의사가 부족한 지역에서 카메라로 환자를 촬영해 의료 조언을 제공) 등이 있습니다.
End-to-End 서비스 개발 파이프라인
서비스 개발은 크게 4단계로 나눌 수 있습니다.
Data Collection → Representation → Problem Solving → Application
Data Collection
시스템의 입력($X$)과 출력($Y$) 쌍 데이터를 어마어마하게 많이 모아야 합니다. 칼로리 앱의 경우, $X$는 음식 이미지, $Y$는 해당 칼로리 숫자입니다.
데이터 수집 시 다양한 조도(밝은 곳, 어두운 곳), 환경에 맞게 충분히 모아야 합니다. 타겟 고객(e.g. 20대 여성)에 맞게 데이터를 편향시켜 모으는 것도 전략이라 볼 수 있죠.
Representation
이미지를 숫자화하는 과정. 이 부분이 Representation Learning
Problem Solving
벡터로부터 적절한 칼로리 값을 계산하는 Neural Network
Application
사용자가 쓰기 좋게 포장한 앱. e.g. 디자인, 사용성, 계정 관리, DB 관리 etc.
현재 시대의 개발 환경 변화
예전(~10년 전)에는 AI 기획자, AI 전문가, 프론트엔드 / 백엔드 개발자가 각각 필요했습니다. 100만큼의 노력이 들었어요.
지금은 Agentic AI, AI 기반 코드 도구(Claude Code etc.)가 Representation부터 Application까지 대부분 해줍니다. 10 정도의 노력으로 가능합니다. 학부 1-2학년 학생도 4학년 수준의 서비스를 만들 수 있는 환경이 되었어요.
비용은 Claude Max 기준 월 약 25만 원, 전체 개발비 100만 원 미만으로 End-to-End 서비스 개발이 가능합니다.
핵심 역량이 변화한거죠. 기술보다 기획력이 더 중요해졌습니다.
Data to Number Methods
전체 분류
데이터를 숫자로 바꾸는 테크닉은 크게 두 가지로 나눌 수 있습니다.
Non-learning based Method
Ordinal Encoding, One-Hot Encoding, Binary Encoding, Label Encoding, Frequency Encoding, Hash Encoding, Binary Representatio, Bag of Words, TF-IDF, Dimension Reduction(e.g. PCA)
Learning based Method
Supevised Representation Learning, Unsupervised Representation Learning, Self-supervised Representation Learning, Pretrained Encoder
이 갈래, 계열을 아는게 중요해요. 개별 테크닉의 세부 사항은 나중에 찾아보면 되지만, 이것은 어떤 계열이고, 이건 어떤 때에 쓸 수 있다는 분류 체계를 파악하는 것이 목표입니다.
Non-learning Based Methods
One-Hot Encoding
다루고 있는 Symbol들에 일종의 ID를 부여하는 겁니다. 알파벳 순서든 뭐든 상관없이 일관성만 있으면 돼요.
예를 들면 Red, Green, Blue 같은 색상은 서로 우열 관계가 없으므로 One-Hot Encoding이 적합합니다.
| Red | [1, 0, 0] |
| Green | [0, 1, 0] |
| Blue | [0, 0, 1] |
차원의 저주(Curse of Dimensionality)
One-Hot Encoding은 다루는 Symbol 수 만큼 차원이 커질 수 밖에 없습니다. 이때 차원의 저주가 발생하게 됩니다.
10개의 데이터 포인트가 있다고 가정해볼께요.
1차원(1D)의 경우 직선 위에 10개의 점을 찍으면, 점과 점 사이의 거리(Distance)가 유의미한 정보가 됩니다. 상대방이 나랑 가까운 친구인지, 먼 친구인지 라는 관계성 정보를 활용해 분류하죠.
2차원(2D)에서는 큐브 안에 10개의 점을 찍으면, 점과 점 사이의 거리가 더욱 멀어집니다.
3차원(3D)는 큐브 안에 10개의 점을 찍으면, 점과 점 사이의 거리가 더욱 멀어져요.
고차원으로 갈수록 원래 나와 가까웠던 데이터 포인트들이 위치할 수 있는 공간이 넓어져 버리기 때문에 모든 데이터가 일관되게 멀어집니다. 결과적으로 비교할 수 있는 정보량, 서로 간의 거리 차이가 사라지는 거죠.
고차원이 항상 좋은 것은 아닙니다. 고차원에서 오히려 본질적인 정보는 유지한 채 불필요한 정보를 제거하고, 저차원으로 떨어뜨려야 한다는 이슈가 생겨요. 이것이 Dimension Reduction의 Motivation입니다.
Ordinal Encoding
순서가 있는 데이터에 대해 순서에 대응하여 숫자를 부여하는 방식입니다. Ordinal은 Order(순서)에서 나온 말이죠.
학점 A > B > C를 숫자로 매핑 시 이 순서가 반영되어야겠죠.
군대 계급의 경우 이병, 일병, 상병, 병장... 숫잗르 사이의 부등호에 의미가 있어야 합니다.
One-hot Encoding과의 차이가 뭘까요?
One-Hot에서는 사과와 배, 사과와 사자 사이에 우열 관계가 없어요. Ordinal Encoding에서는 숫자들 사이의 부등호가 의미를 가져야 합니다.
Label Encoding
카테고리 정보에 숫자를 부여하는 방식입니다. One-Hot Encoding과 비슷하죠.
| Cat | 1 또는 [1, 0, 0] |
| Dog | 2 또는 [0, 1, 0] |
| Fish | 3 또는 [0, 0, 1] |
Frequency Encoding
데이터의 빈도수를 기준으로 숫자를 부여합니다.
예를 들어 구매 물품 같은 것을 처리할 때 사용하지만, 변할 수 있는 정보가 너무 많기 때문에 잘 안 쓰는 테크닉이에요.
Hash Encoding
Hash Function은 컴퓨터 공학에서 무조건 써야 하는 핵심 테크닉 중 하나에요. 자료구조 시간에도 배우죠.
원리는 이렇습니다.
세상에 무한에 가까운 데이터가 있을 때, 아주 간단한 수학적 점수(fucntion $f$)를 잘 디자인하면 굉장히 작은 공간으로 매핑이 가능합니다. 고속의 function으로 모든 데이터가 몇 가지 숫자로 표현됩니다.
e.g.
통신 보안 - 송신자 정보를 짧지만 거의 유니크하게 만드는 것
정보 검색기 - 문서 하나를 작은 숫자 몇 가지로 표현
이렇게 활용될 수 있어요.
100개를 10개로 줄이면 Collision(충돌)이 발생할 수 있는 이슈가 있어요. 1대1 매핑이 되면 복잡도가 그대로 유지되어 의미가 없으므로, 줄이되 Collision을 최소화하는 fucntion들이 수학적으로 이미 정의되어 있습니다.
Binary Representation & Feature Engineering
자연어 처리에서 예전에 많이 쓰였던 방식입니다. 인간의 직관을 넣어줄 수 있는 표현 방식으로 Feature Engineering이라 부릅니다.
어떤 대상(e.g. 사과)에 대해, 단순히 무게, 색깔 같은 개별 속성이 아니라, 복합적인 특징(Feature)을 정의합니다.
이 문장에는 명사가 있고, 그 명사는 시옷으로 시작합니다. 이러한 도메인 정보가 하나의 Feature
Feature 1번이 True면 1, False면 0으로 인코딩하여 Feature 벡터를 만듭니다.
e.g. [1, 0, 0, 1, ...] 10개 Feature면 10차원 벡터가 됩니다.
현재는 거의 안 씁니다. Representation 자체를 기계가 자동으로 Learning해버리기 때문이에요.
Bag of Words(BoW)
이름 그대로 "단어의 가방" 입니다. 하나의 문서를 벡터로 만드는 기법이에요.
절차는 이렇습니다.
- 문서를 띄어쓰기 기준으로 단어 단위로 모두 쪼갠다.
- 잘라낸 단어 종이 조각들을 가방에 다 넣는다.
- 하나씩 꺼내면서 각 단어가 몇 개씩 나오는지 센다(Counting).
- 전체 어휘(Vocabulary) 차원 수만큼의 벡터를 만들고, 각 위치에 해당 단어의 빈도수(frequency)를 넣는다.
e.g.
| "Hello world" | [1, 1, 0] | Vocab: {Hello, world, there} |
| "Hello there" | [1, 0, 1] |
이 문서에 나타나지 않는 단어들은 모두 0으로 표현됩니다.
BoW의 문제점이 있습니다.
순서 정보가 소실
가위로 잘라 가방에 넣는 순간 원래의 단어 순서가 사라집니다. I am a boy라는 문장에서 am 다음에 a 그 다음에 boy라는 순서가 사라지는 거죠. 언어 처리에서 단어들 사이의 관계(순서)가 중요한데, 이 정보가 완전히 삭제되는 겁니다.
Frequency의 불안정성
손흥민에 대한 문서에서, 기자에 따라 손흥민을 5번 언급한 기사도 있고 1번만 언급한 기사도 있습니다. 둘 다 손흥민 기사인데 벡터 공간상에서 같은 곳에 매핑되지 않습니다.
고빈도 단어의 지배
가장 많이 등장하는 단어는 it, I, the, a 같은 기능어(Function words)입니다. 이런 단어들은 모든 문서에 공통적으로 많이 나타나는 단어이므로, 핵심 키워드가 아님에도 높은 빈도를 차지합니다. 손흥민이 중요한 정보인데 the가 더 중요해지는 문제가 발생합니다.
TF-IDF
Term Frequency - Inverse Document Frequency
핵심 아이디어는 이렇습니다.
BoW의 문제점을 해결하기 위한 테크닉이라는 거에요. 이 테크닉을 만든 사람이 이름을 너무 잘지은 것 같습니다. 일므만 들어도 무엇인지 알 수 있죠.
Term Frequency(TF): 특정 문서 안에서 단어의 출현 횟수를 세겠다.
Inverse Document Frequency(IDF): 여러 문서에 걸쳐 공통적으로 나타나는 빈도에 역수(inverse)를 적용하겠다.
원칙이 있습니다.
이 문서에 나타난 핵심 키워드에 가중치(weight) 부여
다른 문서에도 많이 나타나는 단어는 패널티(penalty) 부여
BoW와의 차이
BoW는 하나의 문서만 들여다봅니다.
TF-IDF는 여러 문서를 다 보겠다는 겁니다. it이 Document 1에만 있는 게 아니고, 2, 3 등 모든 문서에 공통적으로 나타나면 penalty를, 어떤 단어가 이 문서에만 있으면 가중치를 부여합니다.
어떻게 계산하는지 예를 들어볼게요
Document 2 기준, 특정 keyword의 count = 4, Total words = 100일 때
$$TF-IDF = (4/100) * log(3/2)$$
여기서 3/2는 전체 문서 수(3개) 대비 해당 keyword가 나타난 문서 수(2개)의 비율입니다.
공식 자체는 몰라도 됩니다. 이런 아이디어가 있다는 것만 이해하면 돼요. 자연 로그를 쓸 때도 있고 밑이 바뀌는 경우도 있습니다. 하지만 기본적으로 자연 로그를 씁니다.
TF-IDF의 특징과 중요성
- 결과 형태는 BoW와 같다: 어휘 개수만큼의 차원의 벡터가 나온다. 다만 각 element의 값이 유의미한 값으로 채워진다.
- 지금 우리가 쓰는 모든 정보 검색기(구글 등)의 가장 밑에 깔려있는 기본 테크닉이다.
- 어디에도 머신러닝이 없다. 단순 카운팅이므로 프로그래밍을 짜면 금방 구현할 수 있다.
- 금방 구현 가능 → 어떤 도메인이든 적용 가능 → 어떤 장비도 없이 가능.
- 99점이 필요한 게 아니고 70~80점이면 충분한 초기 검증(PoC)에 매우 적합하다. 바이오든 마케팅이든 어떤 분야든 TF-IDF로 접목해볼 수 있다.
정보 검색의 역사와 패러다임 변화
Content-based 방식
초기 시대, 1990년 대 WWW(World Wide Web) 초창기, 수많은 HTML 문서가 만들어지기 시작했습니다. 예전에 도서관의 사서(Librarian)가 했던 역할 ㅡ 연구자가 필요한 문헌을 요청하면 분류 체계와 전문성을 활용해 적절한 책을 안내하는 것 ㅡ 을 디지털 환경에서 재현할 필요가 있었습니다.
Content-based 방식은 문서의 내용(콘텐츠)을 직접 들여다보고, 사용자의 쿼리와 콘텐츠 사이의 거리(Distance)와 유사도(Similarity)를 계산하여 가장 가까운 문서를 찾아주는 방식이었습니다.
BoW, TF-IDF 등이 여기에 활용되었어요.

이 방식의 초고봉에 있던 회사가 YaHoo 이고, 한국에서는 네이버였습니다.
Network-based 방식: Google & PageRank
스탠포드 박사 과정 학생이었던 구글의 창업자들은 다르게 생각했어요.

앞으로 HTML과 WWW가 세상을 지배할 것이다. 데이터가 너무 많아질 텐데, 그 수많은 데이터의 콘텐츠를 일일이 관리하는 것은 불가능하다. 꼭 콘텐츠를 들여다 봐야 하나?
이들의 핵심 통찰은 맛집을 비유로 들어 설명해볼 수 있을 것 같아요.
맛집에 갈 때 직접 먹어보고 판단하는게 아니라 주변에서 그 집 맛있다 라는 추천이나 리뷰를 보고 가죠.
HTML 문서의 특징은 Hyperlink가 있다는 겁니다. 한 문서가 다른 문서를 링크(reference/recommend)하는 구조가 문서 규약에 내장되어 있습니다. 모든 문서의 링크 관계를 실로 연결한 후 아무 문서나 잡고 들어올리면, 제일 위에 대롱대롱 매달리는 문서가 1등이 되는거죠.
역사적 사실이 몇 개 있습니다.
- PageRank 특허는 학생 신분으로 출원했기 때문에 소유주가 스탠포드 대학이었다.
- 구글이 성장한 후 이 특허를 스탠포드로부터 약 1조 원에 매입했다.
- 이 아이디어로 구글은 1990년대 후반부터 약 30년간 IT 업계를 지배했다.
구글의 수익모델
모든 돈은 사람의 체류 시간으로부터 옵니다.
구글은 개인 사용자에게 돈을 받지 않습니다. 사용자가 검색 결과를 스크롤하며 10초 이상 체류하는 동안 광고에 노출됩니다.
100명, 200명이 누적되면 반드시 광고를 클릭하는 사람이 생기고, 그 클릭으로부터 업체에게 프로모션 기회를 판매합니다. 사용자가 원하는 정보를 찾을 때까지 클릭을 반복하며 하루 20-30분을 투자하는데, 그 사이에 돈을 벌겠다는 구조에요.
다시 Content-based로의 회귀
ChatGPT와 LLM 시대
30년간 작동했던 구글의 모델이 흔들리기 시작했어요. 그 이유가 있습니다.
검색의 본질은 궁금한 것을 해소하는 겁니다. 구글은 해소는 시켜주지만, 사용자가 발품을 팔아야 합니다.
왜 이걸 다 사람이 해야 해? 기계가 세상의 웹페이지를 다 읽어놓고, 이해해 놓은 상태에서, 질문이 들어오면 답변을 생성해주면 안 되나? 웹페이지로 가라고 강요하지 말고, 내용을 이해해서 요약해주면 되는 거 아닌가?
이것이 바로 ChatGPT 입니다. Foundation Model(LLM)이 사람 수준으로 콘텐츠를 이해할 수 있는 능력을 갖추면서, 다시 Content-based 방식으로 돌아올 수 있게 되었습니다.
구글이 ChatGPT 출시 후 아뿔싸! 하면서 부랴부랴 창업자들을 복귀시키고 내놓은 것이 Google AI Overviews(AI 브리핑)입니다. 검색 쿼리에 대해 0. 몇 초 만에 생성형 답변을 보여주는 것은 소프트웨어부터 하드웨어 인프라까지 포함해 구글만 할 수 있는 일이라는 평가입니다.
Content based → Network-based(Google PageRank) → 다시 Content-based LLM/ChatGPT
Dimension Reduction
차원 축소
기본 개념
현실 세계의 데이터를 센싱(Sensing)하면
[compoenent A, compoenent B, compoenent C, ... , compoenent Z]
형태의 벡터로 표현됩니다. 여기서 각 component는 엑셀의 column(열)에 해당합니다.
이 모든 component가 다 의미가 있는가?
보통은 Large Dimension인데, 핵심 정보만 추려놓으면 그 자체가 본질적인 데이터가 아닌가?
수학적 정의로보면
$R^K (K차원 실수 벡터)를 R^M(M차원, M < K)으로 줄이는 과정입니다.
두 가지의 Dimension Reduction 방식이 있습니다.
Feature Selection
특징 선별
원래의 컬럼(A ~ Z) 중에서 핵심적인 몇 개(e.g. A, H, M)을 골라내는 방식입니다. 정보 자체는 그대로 유지되고, 중요한 것만 선별합니다.
e.g.
환자 정보가 성별, 나이 등 수십 가지가 있을 때, 코로나 감염 여부를 판단하려면 체온, 백신 접종 여부 등 핵심 몇 가지만 있으면 됩니다. 전문가가 추려주거나 알고리즘으로 선별합니다.
Feature Projection
특징 투영
고차원 정보를 저차원으로 투영(Projection)하는 방식입니다. Projection은 프로젝터가 빛을 쏘듯이, 한 차원의 정보를 다른 차원으로 비추어 옮기는 것입니다.
차원은 줄어들지만 정보 내용 자체가 변형(transformation)된다는 점에서 Feature Selection과 다릅니다.
PCA(Principal Component Analysis)
PCA는 앞으로도 계속 쓰이고 졸업 후에도 쓰이는 무조건 알아야 하는 테크닉이에요. 이름은 핵심(Principal) 성분(Component)이 뭔지를 분석(Analysis)해주겠다는 뜻이죠. 업계에서는 고유명사처럼 PCA로 줄여 부릅니다.
PCA를 직관적으로 이해해보죠.
분별력을 통계적으로 정의해볼께요.
분산(Variance)
A, B, C 데이터 사이의 분산이 가장 크도록 하는 각도(축)을 자동으로 찾아주는 것이 PCA입니다.
PCA의 또 다른 관점이 있습니다.
선형 회귀와 연결을 지어볼께요.
수많은 점들이 2차원(X, Y)에 있을 때, 이를 관통하는 틀네드 선 $y = ax + b$를 찾는 것은 2차원 정보를 $X$ 하나의 정보로 표현하는 겁니다. 이것이 곧 차원 축소에요.
고차원 정보 없이 하나의 선(수식)만으로 본질을 파악하는 것이 모델링이며, 모델링은 기본적으로 Dimension Reduction을 가정할 수 밖에 없습니다.
Learning Based Methods
학습 기반 방법
세 가지 Representation Learning 방식
| 방식 | 데이터 | 설명 |
| Supervised Learning | $X + Y$(라벨 데이터) 필요 | $X$와 $Y$의 관계를 통해 중간 표현을 학습 |
| Unsupervised Learning | $X$ 라벨 없음 | 라벨 없이 데이터 자체의 구조에서 표현을 학습 |
| Self-supervised Learning | $X$만 ($Y$를 $X$에서 자동 생성) | X 데이터 내부를 구조적으로 분해하여 자동으로 라벨 생성 후 학습 |
세 가지 모두 최종적으로 숫자(Numbers)를 만들어냅니다.
Supervised Representation Learning
입력 $X$(e.g. 이미지)와 출력 $Y$(e.g. Apple)를 짝지어 놓은 Labeled Data가 있어야 합니다.
e.g.
언어: "대한, 민국" → "만세"
과일 분류기를 상상해보면, 과일 이미지(픽셀 덩어리)를 과일 ID(1, 2, 3, 4)로 매핑하는 과정에서 과일 자체를 표현할 수밖에 없게 되고, 그 중간 부산물(by-product)로 생성되는 벡터가 바로 Representation입니다.
양질의 라벨링 데이터가 대단히 많으면 가장 안정적인 성능을 확보할 수 있습니다. 장점이죠.
단, 라벨 데이터($Y$)가 굉장히 비쌉니다.
Unsupervised Representation Learning
라벨($Y$) 없이 데이터 자체의 구조만으로 유용한 표현을 학습합니다.
AutoEncoder
AutoEncoder는 후속 세대에 계속 영향을 미치는 매우 중욯나 테크닉입니다.
구조를 살펴보죠.
- 원본 이미지(28*28 = 784차원)를 Encoder로 강제 압축: 784 → 500 → 300 → 2차원(Latent)
- 2차원에서 Decoder로 다시 확장: 2 → 300 → 500 → 784차원
- 복원된 이미지가 원본과 같도록 학습
핵심은
이 과정 어디에서도 $Y$라는 라벨을 주지 않습니다. $X$가 다시 $X$로 복원되는 것을 학습하는 것입니다. 제대로 복원될 때까지 세상의 모든 이미지에 대해 주구장창 훈련시킵니다.
어느 순간 학습이 완료되면, 2차원의 Latent 정보에 원본 이미지를 생성하기에 충분한 정보가 담기게 됩니다.
Dimension Reduction + 표현 학습
을 자동으로 달성하게 되는거죠.
Denoising AutoEncoder(DAE)
AutoEncoder의 다음 세대 아이디어입니다.
기존 AutoEncoder는
White Noise 추가 방법: 매 픽셀마다 주사위를 던져서 노이즈 정도를 결정하고 뿌려준다.
이는 놀라운 결과를 보여줍니다.
DAE의 성능이 일반 AutoEncoder보다 압도적으로 좋습니다. 오히려 왜곡된 데이터를 넣어줬을 때 본질적인 데이터를 더 잘 구합니다.
왜 더 잘되는걸까요?
- 도서관보다 카페에서 공부할 때 더 집중이 잘되는 경우가 있죠. 카페에는 음악 소리, 옆 사람의 대화 등 잡음이 많지만, 그 잡음을 안들으려고 노력하면서 오히려 본질에 더 집중하게 됩니다.
- 본질 학습 관점에서 기존 AutoEncoder는 이미지를 외우는 것(memorization)에 특화되지만, DAE는 매번 노이즈가 끼어 들어오므로 노이즈를 제거하는 것을 배움으로써 숫자 4의 본질은 무엇인가? 라는 본질에 가까운 것을 더 빨리 학습합니다.
파운데이션 모델(ChatGPT etc.)도 이런 식의 테크닉을 사용합니다.
예를 들어 "대한민국 만세"에서 "민국"을 지우고(노이즈를 끼우고) 맞추게 시키면 언어를 배우게 됩니다.
GAN(Generative Adversarial Network)
2014년 Ian Goodfellow가 제안한 테크닉으로, GAN이 가진 특별한 우아함이 있어요.
두 참여자가 있는 기본 설정입니다.
Generator(위조지폐범): 가짜 돈을 만드는 역할
Discriminator(경찰관): 진짜/가짜를 분별하는 역할
문제 상황을 부여합니다.
위조 지폐가 잘 만들어졌는지 아닌지를 평가해주는 데이터($Y$)가 없어요.
- Generator가 위조 지폐를 만듭니다.
- 실제 데이터(진짜 돈)와 랜덤하게 섞습니다.
- 섞인 데이터를 Discriminator에게 보냅니다.
- Discriminator가 얼마나 속았는지 확인한다. e.g. 10번 중 몇 번 속았는지
- 속인 / 못 속인 결과(에러 정도)를 Generator에게 피드백으로 돌려준다.
- Generator와 Discriminator가 서로 이 게임 환경에서 싸우면서 진화한다.
Adversial 적대적. 적대적인 네트워크 두 개가 상호 친화적으로 서로 싸운다.
Nash Equilibrium(내쉬 균형)
둘 다 초보에서 시작하여 피드백을 주고받다 보면 둘 다 초고수로 성장합니다. 둘 다 초고수가 되었을 때 승률은 5대5가 되겠죠. 이 평형 상태를 게임 이론의 Nash Equilibrium이라 합니다.
5대5라는 것은 위조 지폐가 구분이 안 되는 수준이라는 뜻입니다. Fake money의 퀄리티가 Real Money에 가까워진 겁니다.
이 전 과정 어디에서도 Supervised Information(라벨 데이터)이 없기 때문에 Unsupervised Learning입니다.
Diffusion 확산 모델
GAN 이후에 나온 테크닉으로, Noise 관점에서 접근합니다.
Diffusion의 유래를 보면 저한테는 꽤나 친근하죠.
물리학, 화학, 생물학을 보면 확산이라는 개념은 늘 자주 접하는 컨셉이었습니다.
물에 빨간 잉크를 한 방울 떨어뜨리면, 시간이 지날수록 잉크가 퍼져서(확산) 결국 물 전체가 빨갛게 됩니다. 이 과정이 Diffusion(확산)이죠. 잉크를 어디에 넣었든 상관없이 마지막에는 똑같은 평형 상태가 됩니다.
수학적으로도 표현할 수 있어요.
$$ X_0 깨끗한 이미지$$
$$ X_1 = X_0 + Noise 1초 뒤, 약간의 노이즈$$
$$ X_2 = X_1 + Noise 2초 뒤$$
$$...$$
$$ X_T 완벽한 White Noise 상태$$
완벽한 Whtie Noise 상태라는 건 TV 방송이 안나올 때의 그 지직거리는 화면과 같다고 보면 됩니다.
노이즈를 더하는 과정은 모든 픽셀에 pixel-wise하게 노이즈 벡터를 더하는 겁니다.
그래서 이제 역방향 추론을 해보면 $X_0 = X_ 1 - Noise$ 이므로 현재 이미지에서 노이즈가 무엇인지만 예측할 수 있다면 깨끗한 이미지를 복원할 수 있습니다.
여기서 Neural Network의 역할은 뭘까요?
- 앞서 얘기한 Universal Approximation에서 인간이 생각할 수 있는 모든 함수는 Neural Network로 근사화 가능합니다.
- 이 이미지를 보고 Noise 값을 예측하는 함수를 Neural Network로 학습할 수 있습니다.
- Diffusion 과정에서 각 단계의 노이즈를 자동으로 만들어냈으므로, 이것이 학습 데이터가 됩니다.
이것이 Midjourney 같은 이미지 생성 프로그램에서 처음에 흐릿하게 나오다가 점점 깨끗해지며 최종 이미지가 나오는 원리입니다. 초창기 Gemini도 같은 방식이었어요.
핵심은 이 과정 어디에서도 사람의 라벨링이 들어가지 않으므로 Unsupervised Learning이라는 겁니다.
Siamese Network
같은 CNN 모델 두 개가 서로 다른 이미지(같은 종류의 동물인지 아닌지)를 받아 Embedding을 만들고, Contrastive Loss을 통해 같은 종류는 가까이, 다른 종류는 멀리 위치하도록 학습합니다.
Spatial Relation
공간 관계 학습
하나의 이미지 $X$에서 $input(x) output(y)$를 자동 생성하는 방식입니다.
핵심은
Self-supervised learning에서는 시스템에 $X$만 주어집니다. $Y$ 대신 입력의 한 부분으로부터 다른 부분을 예측하도록 학습합니다.
e.g.
8방향 위치 예측
- 이미지를 랜덤하게 잘라서 두 조각을 만든다.
- 두 조각 사이의 상대적 위치 관계(8방향 중 하나)를 맞추는 문제로 변환한다.
- 고양이 얼굴 파트와 고양이 귀를 주었을 때, "귀는 얼굴 위쪽 왼쪽에 있어야 한다"를 학습한다.
- 수억 장의 이미지를 이렇게 학습하면, "고양이 귀는 고양이 위쪽에 있구나", "구름은 산 위에 있는 거야", "바퀴는 도로 바로 위에 있고 자동차 밑에 있는 거야"를 배우게 된다.
다른 Pretext Task
- Predict Relative Position: 두 패치 간의 상대 위치 예측
- Rotation: 이미지를 회전시키고 몇 도 회전했는지 예측
- Jigsaw Puzzle: 이미지를 조각내어 섞은 후 원래 순서 맞추기 (코끼리를 이해하지 못하면 퍼즐을 풀 수 없다)
Application
다양한 도메인에서의 Data to Numbers
이미 잘 만들어진 벡터가 많이 존재합니다. 여기서 포인트는 그것을 만드는 것보다 이러한 벡터가 있을 때 어떻게 활용할 것인가를 고민하는 겁니다.
Text to Number
텍스트<"오늘 날씨가 좋습니다.">를 숫자 벡터로 변환하는 도구들
- Text Embedding Neural Networks
- GPT-3 Text Embedding(OpenAI의 Embedding API: 문장 하나당 약 $0.03으로 벡터를 받을 수 있습니다.)
- Sentence BERT: 로컬 컴퓨터에서도 돌릴 수 있는 수준
Image To Number
이미지를 숫자 벡터로 변환하는 도구들
- ResNet
- ViT(Vision Transformer)
- CLIP: 이미지와 텍스트의 멀티모달 정보도 잡아낼 수 있는 Embedding. 문장을 넣으면 가장 가까운 이미지를 골라주고, 이미지를 넣으면 가장 가까운 텍스트를 골라준다.
Chemical Compound to Number
화학물질(화학 구조식)을 숫자 벡터로 변환하는 도구
ChemBERTa
약물이 몸에 들어왔을 때 독성이 있는지를 판단하는것. 약물은 화학물질이고, 화학물질은 $H_2O$ 같은 Sequence of character이므로, 이를 벡터로 만드는 테크닉만 있다면 텍스트와 동일한 방식으로 처리 가능합니다.
생명공학 분야로의 확장
DNA
AGCT의 Sequence of character. 매우 길지만, 캐릭터 단위로 임베딩하여 이 사람은 어떤 사람인가를 수학적 공간에 매핑할 수 있습니다.
Protein(단백질)
Amino Acid Sequence도 벡터로 만들 수 있습니다. 단백질의 성격, 단백질 간 관계 등을 수학적으로 분석 가능하다.
최근 생명공학 분야에서는 사람의 직관이나 Symbol 기반이 아니라, 수십 년간 축적된 생물학적 정보를 모두 벡터로 변환하여 그 위에서 분석하는 방향으로 가고 있습니다.
우리가 이제부터 접하는 거의 모든 데이터는 숫자화(벡터화)시킬 수 있습니다. 그것을 시키는 테크닉으로 여기서 알아본 것들을 가져다 쓰면 됩니다.

시험 대비 핵심 키워드
- 차원의 저주(Curse of Dimensionality): 고차원일수록 데이터 간 거리 차이가 사라져 정보량이 감소하는 현상
- Bag of Words의 3가지 문제점: 순서 소실, Frequency 불안정, 고빈도 일반 단어 지배
- TF-IDF의 원리: Term Frequency × Inverse Document Frequency
- PCA의 기준: 분산(Variance)이 최대가 되는 방향으로 투영
- AutoEncoder vs Denoising AutoEncoder: DAE가 더 좋은 이유 (본질 학습)
- GAN의 구조: Generator + Discriminator, Nash Equilibrium
- Diffusion의 원리: 노이즈 추가 과정의 역방향, Universal Approximation 활용
- Self-supervised Learning: 데이터 자체에서 라벨 자동 생성 (= Self-data Supervised Learning)
- PageRank: 네트워크 기반 검색, 링크 관계망에서 가장 많이 참조되는 문서를 상위로
- 검색 패러다임 변화: Content-based → Network-based → Content-based (LLM)
- 모델링 = Dimension Reduction: 모델링은 기본적으로 차원 축소를 가정
'CS & AI > Welcome to AI' 카테고리의 다른 글
| BERT와 GPT (0) | 2026.04.26 |
|---|---|
| 아 그 변신 로봇? / Transformer (0) | 2026.04.25 |
| 우리도 딥러닝 만들 수 있어요 (0) | 2026.04.25 |
| 이제는 컴퓨터도 하는 자기주도학습 (0) | 2026.04.25 |
| 이제는 '대' 지피티 세상 (0) | 2026.04.18 |
나의 성장 드라마
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!