Post

[이산수학] 행렬

📌 들어가며

이번 글에서는 행렬(Matrix)을 정리한다. 인공지능의 연산이 대부분 행렬 연산으로 이루어지므로 매우 중요하다.

행렬: 사각 괄호로 둘러싸인 숫자들의 배열.

Desktop View


1. 행렬의 곱셈

덧셈은 요소끼리 더하면 되지만, 곱셈은 규칙이 다르다. 행과 열의 인덱스를 각각 곱해 더한 값이 결과의 한 원소가 된다.

Desktop View

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import numpy as np

# 덧셈: 요소끼리
A = np.matrix([[1,2],[3,4]])
B = np.matrix([[10,20],[30,40]])
A + B

# 곱셈: np.dot 또는 @
A = np.array([[1,2,3], [4,5,6]])
B = np.array([[2,1], [1,2], [1,1]])
print(np.dot(A, B))   # 행렬곱
print(A @ B)          # @ (행렬곱 연산자)
# A * B 는 에러 (요소곱 시도)

# matrix 타입이면 * 로도 행렬곱
A_ = np.matrix(A); B_ = np.matrix(B)
A_ * B_
연산방법
덧셈A + B (요소끼리)
행렬곱np.dot(A,B) 또는 A @ B

⚠️ np.array에서 A * B요소곱(또는 에러)이다. 행렬곱은 @np.dot을 써야 한다.


2. 여러 가지 행렬

종류정의
전치(transpose)행과 열을 뒤바꾼 행렬
단위 행렬대각 성분이 모두 1인 정사각 행렬
대각 행렬대각 성분만 0이 아닌 정사각 행렬

Desktop View Desktop View Desktop View


3. 데이터 테이블로서의 행렬

Desktop View

💡 행렬은 데이터 테이블을 표현할 때도 쓰인다. 한 개체(샘플)를 으로, 그 개체의 특징(feature)들을 로 표현한다. 머신러닝의 데이터셋이 바로 이 형태다.

1
2
3
        특징1  특징2  특징3
개체1 [  ...    ...   ...  ]
개체2 [  ...    ...   ...  ]

📝 정리

1
2
3
4
5
6
행렬
├─ 곱셈    행×열 인덱스 곱의 합 (@, np.dot)
├─ 전치    행↔열 교환
├─ 단위행렬  대각 1 (정사각)
├─ 대각행렬  대각만 값
└─ 데이터  행=개체, 열=특징 (ML 데이터셋)
개념한 줄 정의
행렬곱행×열 곱의 합 (@)
전치행과 열을 바꿈
단위/대각 행렬대각 1 / 대각만 값

행렬은 인공지능 연산의 언어다. 특히 행렬곱(@)데이터를 행(개체)·열(특징)로 표현하는 관점은, 머신러닝의 모든 계산이 결국 행렬 연산이라는 사실로 이어진다.

This post is licensed under CC BY 4.0 by the author.

Comments powered by Disqus.