728x90
반응형
SMALL

1. 밀집 행렬(Dense Matrix)이란?

'사과'라는 단어를 표현하기 위해 [0, 0, 0, 1, 0, 0, ... 0]처럼 수만 개의 0과 단 한 개의 1로 이루어진 길고 텅 빈 배열을 만들었다. 이것이 바로 희소 행렬(Sparse Matrix)이다.

반면, 밀집 행렬 (Dense Matrix)은 0 이 거의 없고 대부분이 의미 있는 실수(예: 0.24, -1.5, 0.8 등)로 꽉꽉 채워져 있는 형태이다. 예를 들어 '사과'를 [0.2, -0.5, 0.9, 1.2]처럼 짧지만 숫자가 꽉 찬 배열로 표현하는 것이다. 

 

아주 쉬운 비유로 이해하기

  • 희소 행렬 (원-핫 인코딩): 10,000칸짜리 거대한 책장에 책을 딱 1권만 꽂아두고 나머지 9,999칸은 텅텅 비워두는 방식이다. 공간 낭비가 엄청 심하다.
  • 밀집 행렬 (워드 임베딩): 딱 100칸짜리 작은 책장을 준비한 뒤, 빈틈없이 책 100권을 꽉꽉 채워 넣는 방식이다. 공간을 아주 알뜰하게 사용한다. 

2. 왜 밀집 행렬을 사용할까요 ? (핵심 장점)

최신 자연어 처리 (NLP)에서 밀집 행렬을 사용하는 이유는 단순히 '공간을 아까기 위해서'만은 아니다. 더 놀라운 마법 같은 기능이 숨어 있다. 

① 단어의 '의미'와 '관계'를 담을 수 있다.

희소 행렬에서는 '강아지'와 '고양이' 가 전혀 관계없는 남남이었다. 하지만 밀집 행렬(Word2Vec, GloVe 등)로 단어를 학습시키면, 비슷한 의미를 가진 단어들은 비슷한 숫자 패턴을 가지게 된다. 즉, AI가 "아, 강아지와 고양이는 둘 다 애완동물이니까 숫자가 비슷하네!"라고 스스로 의미를 이해하게 되는 것이다. 

② 메모리 낭비를 획기적으로 줄여준다.

사전에 등록된 단어가 10만 개라면, 희소 행렬은 단어 하나를 표현할 때마다 10만 개의 숫자가 필요하다. 하지만 밀집 행렬은 사용자가 차원(크기)을 마음대로 정할 수 있다. 보통 128, 256, 512 차원 정도로 압축해서 사용하므로 컴퓨터의 메모리를 엄청나게 절약할 수 있다. 

 

3. 밀집 행렬의 단점은 없을까?

물론 완벽한 기술은 없습니다. 밀집 행렬에도 몇 가지 아쉬운 점이 있다. 

  • 설명 가능성(Interpretability)이 떨어진다: 희소 행렬에서는 "3번째 자리가 1이니까 이건 '사과'야!"라고 사람이 직관적으로 알 수 있다. 하지만 밀집 행렬의 숫자들(예: 0.24, -0.8...)은 컴퓨터가 학습한 결과물일 뿐, 사람이 그 숫자 하나하나가 정확히 어떤 의미인지 해석하기는 매우 어렵다. (이를 '블랙박스' 현상이라고도 부른다.)
  • 초기 학습 비용이 크다: 단어들을 빽빽한 숫자로 압축하고 의미를 부여하려면, 인공지능 모델(신경망)을 통해 방대한 양의 텍스트를 미리 학습시켜야 하므로 연산 시간이 오래 걸린다.
728x90

4. 한눈에 보는 비교: 희소 행렬 vs 밀집 행렬

 

구분 희소 행렬 (Sparse Matrix) 밀집 행렬 (Dense Matrix)
데이터 상태 대부분이 0으로 비어 있음 대부분이 0이 아닌 실수로 채워짐
크기(차원) 단어 집합의 크기만큼 무한히 커짐 (수만~수십만) 사용자가 정한 고정된 크기 (보통 128~1024)
의미 파악 단어 간의 유사도나 의미를 알 수 없음 단어 간의 유사도와 문맥적 의미를 잘 담아냄
대표적인 예 원-핫 인코딩 (One-hot Encoding) Word2Vec, GloVe, FastText
사람의 해석 직관적이고 이해하기 쉬움 숫자의 의미를 사람이 직접 해석하기 어려움
반응형

마무리

정리하자면, 밀집 행렬(Dense Matrix)은 방대한 언어 데이터를 작고 꽉 찬 숫자 배열로 압축하여, 컴퓨터가 단어의 진짜 '의미'를 이해하고 메모리도 아낄 수 있게 해주는 핵심 기술다.

우리가 매일 놀라워하며 사용하는 챗GPT나 번역기 같은 AI 서비스들은 모두 이 밀집 행렬(밀집 벡터)을 기반으로 단어를 이해하고 문장을 만들어내고 있다. 

 

 

 

제미나이, 챗지피티 등을 이용 하여 작성

728x90
반응형

+ Recent posts