AI 수학 로드맵 노트 6 — 행렬곱, 신경망 한 층의 정체

표 3 · 도식 1작성 Rhymbro

제1원리 질문. 행렬곱은 왜 칸끼리 곱하지 않고 ‘행 × 열’이라는 이상한 규칙을 쓰는가. 데이터 여러 건과 가중치 여러 세트의 내적을 한 번에 모두 계산하려면, 데이터의 행과 가중치의 열을 짝지어 내적하는 규칙이 가장 자연스럽기 때문이다.

입력 X(2×3)와 가중치 W(3×2)를 곱해 출력(2×2)이 되는 행렬 모양 흐름도
개념도 — 행렬곱의 모양 규칙. 본문 내용을 바탕으로 자체 제작

핵심 — 모양 규칙부터

로드맵 22주차는 “엑셀 표가 곧 행렬, 데이터 100건 = 행렬 하나”로 행렬을 정의하고, 24주차에 곱셈 원리, 25주차에 “신경망 한 층 = 행렬곱 한 번”을 둔다. 행렬곱에서 가장 먼저 확인할 것은 모양(shape)이다.

행렬 모양 의미
X (입력) 2 × 3 데이터 2건, 특성 3개
W (가중치) 3 × 2 특성 3개 → 뉴런 2개
X @ W 2 × 2 데이터 2건 × 뉴런 2개의 출력
규칙 (m × n)(n × k) = (m × k) 안쪽 n이 같아야 곱할 수 있음

신경망 한 층의 계산 흐름입력 행렬이 가중치를 지나 출력이 된다X2 × 3 입력@ W3 × 2 가중치+ b뉴런별 편향Z2 × 2 출력

1편의 y = wx + b가 입력 여러 개, 출력 여러 개로 확장된 모양이다. 활성화 함수는 로드맵 후반에 다루므로 여기서는 생략했다.

코드로 번역하기

파이썬에서 행렬곱 연산자는 @다. 마지막 줄은 결과의 첫 칸(3.2)이 ‘X의 1행과 W의 1열의 내적 + 편향’과 같은지 손계산으로 확인한다.

import numpy as np

# 입력 X: 데이터 2건 x 특성 3개  (2 x 3)
X = np.array([[1.0, 2.0, 3.0],
              [4.0, 5.0, 6.0]])
# 가중치 W: 특성 3개 -> 뉴런 2개  (3 x 2)
W = np.array([[0.1, 0.2],
              [0.3, 0.4],
              [0.5, 0.6]])
b = np.array([1.0, -1.0])         # 뉴런별 편향

Z = X @ W + b                     # 신경망 한 층 = 행렬곱 한 번 + 편향
print(Z.shape)                    # (2, 2)
print(Z)

# 첫 데이터, 첫 뉴런 값을 손으로 확인: 행 x 열의 내적
print(1*0.1 + 2*0.3 + 3*0.5 + 1.0)   # 3.2

실행 결과

(2, 2)
[[3.2 1.8]
 [5.9 5.4]]
3.2

사례 적용 — 결과 한 칸 = 내적 하나

결과 Z의 (1행, 2열) 값 1.8도 같은 방식으로 확인된다. X의 1행 (1, 2, 3)과 W의 2열 (0.2, 0.4, 0.6)의 내적은 0.2 + 0.8 + 1.8 = 2.8이고, 편향 −1을 더하면 1.8이다. 즉 2 × 2 결과의 네 칸은 내적 네 번이다. 데이터가 100건이면 X가 100 × 3이 될 뿐 코드는 바뀌지 않는다.

이것이 ‘신경망 한 층 = 행렬곱 한 번’의 의미다. 뉴런 하나는 입력과 자기 가중치의 내적에 편향을 더한 값이고, 한 층의 뉴런들을 옆으로 나란히 세운 것이 W의 열들이다. 층을 여러 개 쌓으면 행렬곱을 여러 번 반복하는 구조가 된다.

1분 개념 체크

로드맵 교재 템플릿의 ‘1분 개념 체크’ 형식을 빌려 스스로 확인할 문제 두 개를 만들었다.

질문 답 근거
(4 × 3) 행렬과 (3 × 5) 행렬을 곱한 결과의 모양은? 4 × 5 안쪽 3이 같고 바깥 4와 5가 남음
(2 × 3) @ (2 × 3)은 계산되는가? 안 됨 앞의 열 3과 뒤의 행 2가 다름

내 해석 — Rhymbro가 읽은 것

모양 규칙 (m × n)(n × k)는 기계 요소의 결합 조건과 같다고 느꼈다. 축 지름과 베어링 내경이 맞아야 조립되듯, 앞 행렬의 열 수와 뒤 행렬의 행 수가 맞아야 곱해진다. 코드 오류 중 상당수가 이 ‘치수 불일치’에서 나온다는 점도 설계 검토와 비슷했다.

그래서 행렬 코드를 짤 때는 계산 전에 각 배열의 .shape를 먼저 출력해 보는 습관을 들이기로 했다. 도면 검토에서 조립 치수부터 확인하는 순서와 같다.

한계로, 실제 신경망은 행렬곱 뒤에 비선형 활성화 함수를 거쳐야 층을 쌓는 의미가 생기므로, 행렬곱만으로 신경망 전체를 설명할 수는 없다.

요약

항목 정리
모양 규칙 (m × n)(n × k) = (m × k)
결과 한 칸 행 × 열의 내적
신경망 한 층 Z = X @ W + b
확인 습관 계산 전 .shape 출력

그래서 나는 무엇을 하기로 했나

이번 주는 입력 3개 → 뉴런 4개 → 뉴런 2개로 이어지는 두 층을 NumPy로 만들고, 각 단계의 shape를 표로 적어 모양 규칙을 손으로 먼저 예측해 보기로 했다.

주제와 순서는 개인 학습용으로 정리한 104주 AI 수학 로드맵 목차를 따랐고, 설명과 예제는 그 목차를 바탕으로 내 언어로 다시 썼다. 코드는 Python 3 + NumPy 2.x에서 실행해 출력을 확인했으며, 예시 수치는 설명용 가정 값이다.

함께 읽기: AI 수학, 네 기둥만 먼저 세운다 — 내가 잡은 로드맵

같은 카테고리에서 함께 읽기

강의자료 121편

댓글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다