1. 전체 개요 (Introduction)
- 선형대수학이란?
- 선형성(linearity) + 대수학(algebra)의 결합
- 선형성을 만족하는 기호 시스템을 다루는 학문
- 선형성의 두 조건
- 가법성(Additivity)
- f(x+y)=f(x)+f(y)f(x+y) = f(x) + f(y)
- 동차성(Homogeneity)
- f(kx)=kf(x)f(kx) = kf(x)
- 가법성(Additivity)
- 주요 도구
- 벡터: 정보를 표현
- 행렬: 벡터를 변환하는 연산자
- 강점
- 복잡한 문제를 단순한 선형 구조로 표현
- 고차원(수십~수천 차원) 문제를 수치적으로 처리 가능
- 주요 응용 분야
- 인공지능: 대부분의 계산이 행렬 연산
- 컴퓨터 그래픽스: 이동, 회전, 확대/축소 변환
2. 벡터 (Vector)
2.1 벡터의 개념
- 정의: 크기와 방향을 동시에 가지는 값
- 두 가지 관점
- 기하학적 관점: 공간상의 화살표 (직관적, 3차원까지)
- 대수적 관점: 수치 배열 (고차원 표현 가능)
- 데이터 관점
- 하나의 점 = 하나의 벡터 = 하나의 데이터
2.2 벡터 연산
- 덧셈
- 대수적: 성분끼리 더함
- 기하학적: 평행사변형의 대각선
- 연산 순서 무관
- 뺄셈
- 연산 순서에 따라 방향이 달라짐 (중요 포인트)
- 스칼라 곱
- 모든 성분에 상수 곱
- 방향 유지, 크기 변화 (부호에 따라 방향 반전 가능)
2.3 벡터 공간과 핵심 개념
- 벡터 공간
- 덧셈과 스칼라 곱이 정의되고 닫혀 있는 벡터 집합
- 선형 결합
- 스칼라 곱 + 벡터 덧셈
- 새로운 벡터를 만드는 기본 도구
- 생성 공간(Span)
- 선형 결합으로 만들 수 있는 모든 벡터의 집합
- 딥러닝 등에서 중요한 개념
- 선형 독립 / 종속
- 독립: 서로를 표현할 수 없음
- 종속: 한 벡터가 다른 벡터들의 조합으로 표현 가능
- 기저(Basis)
- 공간을 설명하는 최소한의 선형 독립 벡터 집합
- “공간을 보는 눈”에 해당
- 차원(Dimension)
- 기저 벡터의 개수
- 공간의 크기·복잡도 지표
- 예시
- 3개의 선형 독립 벡터 → 3차원 공간
- 3개 중 하나가 나머지의 조합 → 2차원 평면
- 선형 독립 판별 방법
- 행렬식 (정사각행렬 조건)
- 가우스 소거법
- 랭크(rank) 확인 (알고리즘에서 가장 활용)
3. 행렬 (Matrix)
3.1 행렬의 정의
- 숫자의 직사각형 배열 (m × n)
- 벡터의 집합
- 열벡터들의 모음 또는 행벡터들의 모음
3.2 주요 행렬의 종류와 의미
- 단위 행렬
- 주대각선이 1
- 곱셈 항등원 역할
- 대각 행렬
- 주대각선 외 원소가 0
- 각 축 방향의 스케일 조절
- 계산·메모리 효율 우수
- 전치 행렬
- 행과 열을 바꾼 행렬
- 내적, 공분산 행렬 계산에 사용
- 역행렬
- 특정 정사각행렬에서만 존재
- 선형 연립방정식 해결의 핵심 도구
- 대칭 행렬
- 전치해도 자기 자신
- 고유값이 실수, 직교 고유벡터
- PCA(주성분 분석) 등에서 활용
- 직교 행렬
- 전치 행렬 = 역행렬
- 길이는 유지, 회전·반사 변환
- 컴퓨터 그래픽스 핵심
- 삼각 행렬
- 주대각선 기준 위 또는 아래가 0
- 선형 연립방정식을 빠르게 푸는 데 사용
3.3. 행렬곱
행렬 곱의 정의
- 결과 행렬의 한 원소는
→ 첫 번째 행렬의 행과 두 번째 행렬의 열의 내적 - 곱셈 가능 조건:
- 앞 행렬의 열 개수 = 뒤 행렬의 행 개수

중요한 관점
- 행렬은 단순한 숫자 배열이 아니라
공간을 변형시키는 함수 - 따라서 행렬 곱 = 선형 변환의 합성
- 는
→ 먼저 B로 변환한 뒤 A로 다시 변환
- 는
4. 선형 변환
행렬 곱을 선형 변환으로 이해하기
- 입력 벡터 → 행렬 → 출력 벡터
- 행렬이 선형성을 만족하므로:
- 입력 공간 → 출력 공간으로의 선형 변환
- 선형 변환의 의미:
- 벡터 하나만 변하는 게 아니라
- 공간 전체가 함께 변형됨
공간 변형의 시각적 해석
- 모든 벡터를 격자(grid)로 생각
- 선형 변환을 적용하면:
- 격자가 늘어나거나, 찌그러지거나, 기울어짐
- 하지만 다음 성질은 유지됨:
- 원점은 항상 고정
- 평행한 선들은 변환 후에도 평행
- 만약:
- 원점이 이동하거나
- 평행 관계가 깨진다면
→ 선형 변환이 아님
선형 변환 = 관점(기저)의 변화

- 기존에는:
- (1,0), (0,1)을 기준으로 공간을 봄
- 선형 변환 후에는:
- 새로운 기저 벡터를 기준으로 공간을 해석
즉,
- 선형 변환은
- 데이터를 바꾸는 것이 아니라
- 공간을 바라보는 눈(기저)을 바꾸는 것
정보 왜곡과 재배치 효과
- 특정 방향으로:
- 데이터가 압축되거나
- 퍼지거나
- 원점 쪽으로 모일 수 있음
- 이 과정에서:
- 데이터의 상대적 위치가 재정립됨
- 새로운 구조와 패턴이 드러남
선형 변환의 수학적 의미 (AX 관점)
- A:
- 입력 데이터 를
- 행렬 의 기저(관점)로 해석한 결과
- 딥러닝에서:
- WX+b
- 입력 데이터를 가중치의 눈으로 다시 바라보는 과정
선형 변환의 장점과 한계
장점
- 회전, 스케일링, 압축 등 기하학적 변형을
→ 수치 계산으로 표현 가능 - 차원 변환 가능
- 고차원 → 저차원 (투영)
- 저차원 → 고차원 (확장)
한계
- 직선은 항상 직선으로만 변환
- 여러 선형 변환을 쌓아도:
- 결국 하나의 선형 변환과 동일
- 평행 관계 유지 → XOR 문제 해결 불가
비선형성의 필요성
- 선형 변환만으로는 표현력에 한계
- 활성화 함수가 비선형성을 도입
- 유니버설 근사 정리:
- 비선형 활성화 함수가 있으면
- 모든 연속 함수를 근사 가능
벡터
연산: 내적과 거리
내적
- 결과: 스칼라
- 의미:
- 기하학적으로는 투영
- 코사인 유사도로 해석 가능
- 활용:
- 추천 시스템
- 어텐션 메커니즘
- 고차원 데이터에서 방향 유사도 측정
Norm과 거리

- Norm: 벡터 하나의 크기
- L1(맨해튼): 이상치에 비교적 강함
- L2(유클리드): 스케일에 민감
- L∞: 최대 성분 기준
- 거리: 벡터 간 차이
- 유클리드, 맨해튼, 코사인 거리 사용
고유값·고유벡터와 분해
고유값·고유벡터
- 선형 변환 후에도 방향이 변하지 않는 벡터
- 고유값:
- 해당 방향으로 얼마나 늘어나거나 줄어드는지
→ 시스템의 본질적인 축
고유값 분해
- 행렬을:
- 고유벡터 × 고유값 × 고유벡터⁻¹ 형태로 분해
- 장점:
- 계산 단순화
- 미분방정식 분리 가능
- 한계:
- 정사각 행렬만 가능
특이값 분해(SVD)
- 모든 행렬에 적용 가능
- 입력 공간 → 크기 조정 → 출력 공간
- 입력/출력 공간의 눈(기저)을 명확히 분리
PCA와 데이터 압축
- 공분산 행렬은 대칭 행렬
- 고유벡터가 서로 직교 → 해석 용이
- 작은 고유값 방향 제거 → 데이터 압축
딥러닝에서의 종합 정리
간단한 NN 구조와 선형대수 개념 연결

입력 데이터 = 벡터
- 하나의 데이터 샘플이 특성 3개를 가진다면x=[x1,x2,x3]T\mathbf{x} = [x_1, x_2, x_3]^T
- 딥러닝에서 모든 데이터는 벡터로 표현됨
→ 선형대수의 출발점
가중치 = 행렬
- 각 층 사이의 연결 가중치들은 행렬로 저장됨
- 예를 들어:
- 입력층(3차원) → 은닉층(노드 4개)
- 가중치 행렬 크기: (3 × 4)
→ “이 층에서 다음 층으로 정보를 어떻게 변형할지”를 정의하는 선형 변환
노드 내부 연산 = 내적
- 각 노드에서 수행되는 연산:wTx+bw^T x + b
- 의미:
- 입력 벡터와 가중치 벡터의 내적
-
- 편향(bias)
→ 하나의 노드는
“입력을 어떤 방향으로 얼마나 반영할지” 결정
비선형 함수 = 표현력 확보
- 내적 + 편향은 선형
- 활성화 함수(ReLU 등)를 통과하면서:
- 비선형성 확보
- 복잡한 패턴 학습 가능
핵심 포인트
- 실제 계산은:
- 노드 하나씩 계산 ❌
- 행렬곱으로 한 번에 계산 ⭕
→ 딥러닝 연산의 본질:
"선형 변환(행렬곱) + 비선형 함수의 반복"
수치 예제로 계산 흐름 이해하기

입력 데이터 행렬 X
- 데이터 4개
- 각 데이터는 특성 3개
- 각 행 = 하나의 데이터 벡터
가중치 행렬 W1
W1∈R3×4
- 첫 번째 은닉층 노드 4개
- 각 노드는 입력 특성 3개와 연결됨
선형 변환: 행렬곱
Z1=XW1+B
- (4×3) × (3×4) → (4×4)
- 의미:
- 데이터 4개 × 은닉층 노드 4개
- 모든 노드의 내적 계산을 한 번에 수행
→ “각 데이터가 각 노드에서 얼마나 활성화되는지”
왜 행렬곱이 중요한가?
- 만약 행렬을 쓰지 않으면:
- 데이터 × 노드 × 특성 만큼 반복 계산 필요
- 행렬곱을 쓰면:
- GPU/병렬 계산에 최적화
- 딥러닝이 대규모로 가능해짐
비선형 함수 적용
A1=ReLU(Z1)
- 음수 → 0
- 양수 → 그대로 유지
→ 은닉층 출력 완성
실습
내적과 Norm
두 벡터의 유사도를 판단하거나 길이를 구할 때 사용되는 함수입니다. 빈칸을 채워 함수를 완성해주세요.
import numpy as np
def calculate_similarity_components(v1, v2):
"""
v1, v2: numpy array (1D vectors)
반환값: 두 벡터의 내적 값, v1의 norm, v2의 norm
"""
# 1. 두 벡터의 내적(Dot Product)을 계산하세요.
dot_prod = np.dot(v1, v2)
# 2. 각 벡터의 크기(Norm, L2 Norm)를 계산하세요.
norm_v1 = np.linalg.norm(v1)
norm_v2 = np.linalg.norm(v2)
return dot_prod, norm_v1, norm_v2
선형 변환(행렬 곱)
from os import waitpid
def linear_transformation(x, W, b):
"""
x: 입력 벡터 (input features)
W: 가중치 행렬 (weight matrix)
b: 편향 벡터 (bias)
반환값: 선형변환 결과 z = Wx + b
"""
# 1. 행렬 곱(Matrix Multiplication) Wx를 수행하세요.
# 힌트: numpy의 행렬 곱 연산자(@) 또는 np.dot, np.matmul 사용
wx = W@x
# 2. 편향(bias)을 더하세요.
z = wx+b
return z
비선형성(ReLU)
def relu_function(z):
"""
z: 선형변환을 거친 값
반환값: 0보다 작으면 0, 0보다 크면 그대로 반환 (max(0, z))
"""
# numpy의 maximum 함수 등을 사용하여 ReLU를 구현하세요.
a = np.maximum(0, z)
return a
응용: 간단한 유사도 기반 분류기 구현
입력 데이터 x가 주어졌을 때, 1차적으로 선형 변환과 비선형 변환을 거쳐 특징(feature)을 추출하고, 이 추출된 특징이 기준 벡터(reference vector)와 얼마나 유사한지 코사인 유사도(Cosine Similarity)로 판단합니다.
def forward_and_evaluate(x, W, b, ref_vector):
# 1. 선형 변환
wx = W@x
z = wx+b
# 2. 비선형 활성화(ReLU)
a = np.maximum(0, z)
# 3. 코사인 유사도 계산
dot_prod = np.dot(a, ref_vector)
norm_a = np.linalg.norm(a)
norm_ref = np.linalg.norm(ref_vector)
cos_sim = dot_prod / (norm_a * norm_ref)
# 코사인 유사도 공식 적용 (분모가 0이 아님을 가정)
return cos_sim'인공지능 > 딥러닝' 카테고리의 다른 글
| LORA: LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS (0) | 2026.05.15 |
|---|---|
| [강화학습] 벨만 방정식 (0) | 2026.02.18 |
| [투빅스] 기초통계 (0) | 2026.02.10 |
| [강화학습] 마르코프 결정 과정 (0) | 2026.02.08 |