본 게시글은 학부 강의 'AI 데이터 표현과 모델링'을 기반으로 이해하고 학습한 내용을 정리하였습니다.
Tensor 기초 그리고 Neural Network 패턴
Neural Network Recap
밑단이 아무리 깊어도 결국 Scalar in → Scalar out 구조.
바깥에서 보면 vector → vector처럼 보이지만, vector도 결국 scalar들의 집합일 뿐이죠.

이 수식을 행렬 형태로 일반화하면
$$y = f(Wx + b)$$
Bold, 대문자 표기는 vector / Matrcix를 의미합니다.
Bias의 진짜 의미
"선형 방식으로 세상을 모델링하는 식을 적어보세요."
$$y = ax + b$$
그렇다면 $b$는 왜 bias(편향)이라고 불릴까요?
부동산을 예로 들어보죠.
$x$를 지하철과의 거리, $y$를 부동산 값이라 해보겠습니다. 만약 $b$가 없다면 $y = ax$라는 식은 거리가 0일 때 부동산 값이 0원이 되어버립니다. 말이 안되죠.
부동산은 지하철과 무관하게 기본값이 존재해야 합니다.
입력 정보가 없는 상황에서도 이미 그 자체로 존재하는 output 값, 즉 편향되어 있는 정보가 $b$ 인거죠.
그래서 영어로 bias라고 부릅니다.
https://neverthe1ess.tistory.com/256
[Coursera] What is Neural network? / Deep Learning Specialization
단순 신경망 신경망의 가장 기본 단위는 '뉴런(Neuron)' 한 개 입니다. 아래에 집의 평수(Size)에 따른 가격을 예측하는 시나리오를 생각해 봅시다. 보통 크기가 커질 수록 가격이 오르는 직선을 그
neverthe1ess.tistory.com
Neural Network 관점에서 표현하면
밑층에서 어떤 입력값이 들어올지 몰라도 기본값은 있어야 합니다. 그 기본값이 $b$.
메모리 비용과 산업적 함의
왜 SK하이닉스 주가가 오르는가?

가중치 메모리 계산
입력 차원 $D$, 출력 차원 $H$인 한 layer의 변환 비용은 $D * H$. bias 포함 시 $D * (H + 1)$
현대 LLM의 규모
ChatGPT, LLaMA, Qwen, Claude 같은 모델들의 hidden dimension은 최소 4096부터 시작합니다.
4096 → 4096 변환 한 번에 $4096 * 4096$개의 파라미터가 필요합니다.
즉 어마어마한 메모리가 필요하죠.
새로운 아키텍쳐가 나오지 않는 한 향후 몇 년간 한국 반도체 산업의 이익은 보장된 상황입니다.
Tensor
Tensor는 수학용어

| 차원 | 이름 | 설명 |
| 0-way | Scalar | 단일 숫자값. Integer 사이를 나누어 정의된 값 |
| 1-way | Vector | Scalar들을 순서를 가지고 묶어놓은 것. (e.g. RGB) |
| 2-way | Matrix | Vector들을 순서를 가지고 묶어놓은 것(=list of list) |
| 3-way | 3-Tensor | Matrix들을 순서를 가지고 묶어놓은 것(=list of matrix) |
| N-way | N-Tensor | (N-1)-Tensor를 순서를 가지고 N개 묶어놓은 것 |
뒤로 갈수록 앞 차원을 sequential하게 묶어놓습니다.
Vector가 정의되기 위한 요건은 아래와 같아요.
- Origin Vector(0벡터)에서 시작
- Dimension 정의(e.g. RGB → 3차원)
- 크기(magnitude) 정의 → Euclidean Distance로 계산
- 더 확장하면 norm 개념으로 이어진다.
Tensor Rank(격)
- 내가 가진 tensor가 몇 차원의 격을 갖고 있느냐
- 1차원이냐 2차원이냐 3차원이냐 그것이 rank
TensorFlow이름의 유래
숫자를 정보 표현 체계로 삼았을 때, tensor가 컴퓨터 위에서 구현되어야 합니다.
tensor들이 흘러가는 구조를 소프트웨어적으로 잘 구현했기 때문에 TensorFlow라고 네이밍했어요. 초창기에 굉장히 잘 지은 직관적인 이름인거죠.
Perceptron vs Tensor
Perceptron 1개의 경우 scalar in되어 scalar out됩니다. 따라서 tensor개념이 불필요해요.
여러 개를 묶어 노드 집합으로 바라볼 때 tensor 개념이 튀어나옵니다.
PyTorch, TensorFlow 같은 툴은 tensor operation이 핵심입니다.
Matrix Multiplication
$$M_{r,c} = \sum_{k} a_{r,k} b_{k,c}$$
2번째 row * 3번째 column은 결과의 (2, 3) 원소
연산 가능한 조건은
(m×n) × (n×p)
이처럼 가운데 차원 $n$이 같아야 합니다.
직접 Neural Network 구현 시 가장 많이 하는 실수, 오류는 shape error입니다. 대부분 중간 차원이 안 맞아서 발생해요.
그래서 이 개념 중요합니다.
공과대학에서 세상을 들여다보는 도구로는 세 가지가 있습니다.
확률 및 통계, 선형대수, 미적분, 이 세 개 중 하나라도 빠지면 망해요.
고등학교 교육과정에서 이공계열의 경우 특히 수학과목이 모두 선택과목으로 바뀐 것은 좋지 못하다고 생각합니다. 이공계열의 학과를 전공하게 되면서 더더욱 이러한 방향성은 옳지 않다고 생각해요. 이과가 미적분을 모르고, 행렬을 모르면 좀 착잡하네요.
LoRA 아이디어
Matrix Decomposition
문제 상황 하나를 가정해볼께요.
4096 * 4096 짜리 weight matrix는 어마어마한 메모리가 필요하죠.
이를 더 작게 유지할 수 있는 방법은 없는걸까요?
원래의 weight matrix W (D * H)를 두 개의 작은 matrix로 decompose
$$W_{D*H} ≈ A_{D*R} * B_{R*H}$$
$A$: $D*R$, $B$: $R*H$($R$은 작은 값, e.g. $10$)
- 곱하면 $D*R /dot R*H = D * H$로 원본 차원으로 복원이 됩니다.
- 메모리 관점에서 보면 $D*R + R*H << D*H$. 아까 4096 * 4096을 대입해서 생각해보면 압도적인 차이를 볼 수 있습니다.
이 대목에서 선형대수를 배운 사람은 좀 더 와닿을 수도 있을 것 같아요.
선형 대수의 분해 테크닉인 SVD(Singular Value Decomposition)을 떠올릴 수 있습니다.
이런 기본 수식에서 LoRA 같은 실용적 테크닉이 나오는 거에요. 배운게 여기서 써먹는거죠.
이래서 공학이 좋습니다. 배움에 의미를 더해주잖아요?
Broadcasting
Broadcasting은 사실 선형대수에는 없는 개념이에요. 수학적으로는 정의되지 않습니다.
수학에서는 같은 rank끼리만 연산이 가능하죠.
vector는 vector끼리만.
scalar는 scalar끼리만.
일종의.... 생물학의 종특이성이랄까요?
그래서 원래는 matrix + scalar는 수학적으로 정의되지 않습니다.
하지만 개발자 입장에서는 편의상 $A+3$ 같은 걸 하고 싶은데 암묵적으로 이걸 수학적으로 무시하고 뒷단에서 처리해주는 것이 바로 broadcasting입니다.
한쪽의 rank를 자동으로 올려서(복사해서) shape를 맞춰줍니다.
예를 들면
[[1,2],[3,4]] + 3 → [[1,2],[3,4]] + [[3,3],[3,3]]
내부적으로 이렇게 연산이 바뀌어서 되죠.
하지만 주의해야 합니다.
이것을 알고 쓰는 것과 모르고 쓰는 건 천차만별이에요.
Broadcasting은 숫자를 마음대로 바꾸는 동작이 뒷단에서 일어납니다. 제가 의도한게 아닐 수도 있어요. Compile error로 잡히지 않고 자동으로 수행됩니다.
알고 씁시다.
Broadcasting Shape 규칙(Numpy)
| A 차원 | B 차원 | Result |
| $5 * 4$ | $1$ | $5 * 4$ |
| $5 * 4$ | $4$ | $5 * 4$ |
| $15 * 3 * 5$ | $15 * 1 * 5$ | $15 * 3 * 5$ |
| $15 * 3 * 5$ | $3 * 5$ | $15 * 3 * 5$ |
| $15 * 3 * 5$ | $3 * 1$ | $15 * 3 * 5$ |
PyTorch와 NumPy 관계
GPU Powered NumPy
NumPy는 원래 CPU only 입니다. PyTorch가 GPU까지 지원하면서 NumPy 문법을 따라갑니다.
NumPy 생태계 그대로 흡수하면서 PyTorch 생태계가 폭발적 성장을 이루었습니다.
PyTorch Matrix Multiplication 종류
torch.matmul() / @ 연산자
- 일반적인 차원의 두 tensor 간 matrix multiplication
- Broadcasting 지원
- 차원에 따라 동작이 달라진다.
- 1D * 1D: dot product(scalar)
- 2D * 2D: matrix - matrix product
- 1D * 2D: 1을 prepand 후 곱하고 제거
- 2D * 1D: matrix - vector product
@ 연산자
res1 = torch.matmul(a, b)
res2 = a @ b # 동일
명시적인 걸 좋아하는 경우 matmul이 더 나을 수도 있어요. 취향차이.
torch.bmm() (Batch Matrix Multiplication)
두 tensor 모두 batch인 경우 사용합니다.
가장 첫 번째 dimension은 무조건 batch로 강제돼요.
(b × n × m) × (b × m × p) → (b × n × p)
그리고 Broadcasting을 지원하지 않습니다. matmul과의 차이점이죠.
batch 단위로 한번에 처리하여 시간 효율적입니다.
input = torch.randn(10, 3, 4)
mat2 = torch.randn(10, 4, 5)
res = torch.bmm(input, mat2) # torch.Size([10, 3, 5])
N-dim Tensor 곱셈의 일반 규칙
- 앞에 N-dimension이 있어도 마지막 두 차원만 맞으면 자동으로 처리
- 앞의 차원들은 사실상 for loop로 처리됨
# e.g.
(a, r, d) × (d, r) → (a, r, r) # 앞 a 차원이 sequentially 처리
'CS & AI > Welcome to AI' 카테고리의 다른 글
| 두 AI가 옥상에서.avi / GAN(Generative Adversarial Network) (0) | 2026.05.11 |
|---|---|
| 변신 로봇 말고 뭐? 마블?? / ViT(Vision Transformer) (0) | 2026.05.11 |
| BERT와 GPT (0) | 2026.04.26 |
| 아 그 변신 로봇? / Transformer (0) | 2026.04.25 |
| 이제 우리는 매트릭스 세상을 만들 수 있을지도 (0) | 2026.04.25 |
나의 성장 드라마
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!