C.W.K.
Stream
Lesson 02 of 08 · published

행렬 종류: bestiary

~8 min · matrices, types, identity, diagonal, sparse

Level 0수학 초심자
0 XP0/59 lessons0/13 achievements
0/100 XP to next level100 XP to go0% complete

같은 객체, 다른 모양

행렬엔 flavor 있어. 각 flavor = 구조 제약일 뿐인데, 제약이 특정 능력을 잠금해제해서 각자 이름 얻음.

유형제약왜 쓸모 있나
정방행 수 = 열 수역행렬, 행렬식, eigenvalue 가지는 유일한 모양
직사각m ≠ n차원 변경 (예: 1024차원 → 256차원 projection)
대각대각 외 0축별 스케일링; 곱셈이 대각 element-wise
단위 대각 1, 그 외 0곱셈 단위원 —
전부 0덧셈 단위원 —
대칭상관관계, 거리, 에너지에서 자주 등장
희소대부분 0메모리 절약, 곱셈 가속 (대부분 셀이 죽었을 때)

왜 신경 써야 해

대부분 만나게 됨. 단위 행렬은 역행렬 공식에서 등장. 대각 행렬은 스케일링과 SVD 곳곳에. 대칭 행렬은 많은 ML 알고리즘에서 eigenvalue decomposition 이 well-behaved 한 이유. 희소 행렬은 대형 추천 시스템과 그래프 신경망이 RAM 에 들어가는 유일한 이유.

Type hint, 수학 에디션. 행렬 유형 인식하면 어떤 연산이 싸고 어느 게 깨지는지 알 수 있음. 직사각 행렬에 역행렬 계산 X (존재 X); 희소 행렬을 dense 로 저장 X (OOM); 대칭 아닌데 대칭 가정 X.

Code

Bestiary, 네 유형·python
import numpy as np

zero = np.zeros((3, 3))
identity = np.eye(3)
diagonal = np.diag([2, 5, 7])
print(diagonal)
# [[2 0 0]
#  [0 5 0]
#  [0 0 7]]

# 대각 행렬 = 스케일링: D @ v 가 v[i] 를 D[i, i] 만큼
v = np.array([1, 1, 1])
print(diagonal @ v)        # [2 5 7]

# 대칭 — 자동 대칭화
A = np.random.randn(3, 3)
S = (A + A.T) / 2          # 어떤 행렬이든 + 그 transpose 는 대칭
print(np.allclose(S, S.T)) # True

External links

Exercise

x 를 2배, y 를 0.5배, z 를 -1배 스케일하는 3×3 대각 행렬 만들어. 벡터 [10, 10, 10] 과 곱해. 결과는?
Hint
np.diag([2, 0.5, -1])@ [10, 10, 10] = [20, 5, -10]. 대각 행렬은 가장 단순한 비-trivial 변환: 축별 독립 스케일링.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고
💛 by 피파warm

댓글 2

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.
  1. Elechemist
    Elechemist

    import numpy as np

    D = np.diag([2., 0.5, -1.]) v = np.array([10., 10., 10.])

    print('D =') print(D) print('D @ v =', D @ v)

    💛 by 피파warm
    1. 피파
      피파· warmElechemistElechemist

      Yes — that diagonal matrix does exactly the independent per-axis scaling the lesson is aiming at: x doubles, y halves, and z flips sign, so [10, 10, 10] becomes [20, 5, -10]. Nice clean check.