
AI의 근간을 이루는 수학적 개념들을 쉽게 설명합니다. 사원수, 스칼라, 벡터와 같은 기본적인 수학 개념부터 시작하여, 이들이 기계 학습에서 어떻게 활용되는지를 보여줍니다. 특히, 퍼셉트론의 작동 원리를 벡터의 관점에서 설명하고, XOR 문제와 다층 퍼셉트론의 한계를 통해 인공지능 발전의 역사를 알 수 있어서 재밌었고 수학 증명이 많이 나와 힘들었네요...
결국 왜 다시 2장의 제목에 [여기에선 모두가 숫자에 불과하다] 일까요? 를 생각해 봤을 때
벡터든, 이미지든, 단어든, 개념이든… 모두 숫자로 표현할 수 있다. 그리고 그 숫자들을 연산해서 '의미 있는 판단'을 내릴 수 있다.또 벡터를 화살표로 그려서 기하학적으로 해석할 수도 있지만 실제 컴퓨터는 그냥 [4, 3], [2, 6] 같은 "숫자 덩어리"로만 처리한다 했었잖아용.
퍼셉트론을 모방하는 컴퓨터 프로그램을 작성하기 위해 필요한 일은 차트와 그래프를 그리는 것이 아니라, 수를 조작하는 것이다
복잡해 보이는 AI 알고리즘들이 결국은 숫자들의 연산 이라는 걸 말하고 싶었던 것 같습니다.
입력 데이터 × 가중치 = 출력의 반복 즉, "배열을 다루는 문제"로 귀결되는 거죠
인간에게는 추상적이고 복잡해 보이는 것들이 기계에게는 그저 "숫자에 불과하다"는 관점을 다시금 깨닫는 것 같습니다.
이 장의 시작은 사원수를 소개하면서 시작 돼요.
사원수는 네 개의 항으로 이루어진 수학적 대상으로, 매우 기묘하고 특수한 성질을 가졌다.
사원수를 다루는 대수학을 만들기 위해서 또 다른 수학 개념을 발전시켰는데 이게 기계 학습의 핵심이 되었다.
복소수(complex number)를 확장한 개념으로, 4개의 실수로 이루어진 수예요. 쉽게 말해 사원수는 실수, 복소수를 확장한 4차원 수 체계라는거죠.
사원수(Quaternions)의 곱셈 규칙을 설명하는 핵심 공식

𝑞 = 𝑎 + 𝑏𝑖 + 𝑐𝑗 + 𝑑𝑘 는 하나의 사원수를 표현한 수식입니다.
이 사원수는 4개의 실수 값 a,b,c,d와 3개의 허수 단위 i,j,k로 구성되고
이 사원수들끼리 곱할 때의 규칙이 바로 ij=k,ijk=−1 같은 규칙들입니다
| 구성 요소 | 의미 |
|---|---|
| 실수, 스칼라 값 | |
| 각 축에 대한 방향 성분 (벡터 느낌) | |
| 각기 다른 방향의 허수 단위 | |
| 전체 | 하나의 사원수 (4차원 벡터라고 봐도 됨) |
✨ 그럼 왜 하필 2장의 첫 시작이 사원수일까요?
사원수(Quaternion)는 처음 보면 복잡하고 생소해요 (i, j, k라니 뭐지?)
수학자조차 처음엔 받아들이기 어려웠던 개념이에요.
하지만 결국에는 단순히 4개의 숫자로 이루어진 벡터 같은 것이에요.
즉, 인간에겐 어렵고 신기한 것처럼 보이는 수학 개념도, 기계는 그걸 단순한 "숫자 배열"로 받아들이고 다룰 수 있다는 걸 상징적으로 보여주는 도구가 바로 사원수예요.
결국 이장에서 말하고자 하는 바는 "벡터든, 이미지든, 단어든, 개념이든… 모두 숫자로 표현할 수 있다. 그리고 그 숫자들을 연산해서 '의미 있는 판단'을 내릴 수 있다." 라 생각했어요 전!

✅ 상황 요약
사람이 동쪽으로 4km, 북쪽으로 3km를 이동했습니다.
x축 방향(동쪽) 이동: 4km
y축 방향(북쪽) 이동: 3km
그렇다면 이 사람의 총 이동 방향을 하나의 화살표(벡터)로 표현하면,
출발점 (0,0)에서 도착점 (4,3)까지 그은 화살표가 되는 거죠
✅ 벡터의 크기란?
벡터의 크기(길이)는 출발점과 도착점 사이의 직선 거리를 의미합니다.
즉, 다음과 같은 직각삼각형을 생각할 수 있어요:

즉, 벡터의 크기는 벡터와 x축 y축 위의 성분들이 이루는 직각삼각형의 빗변의 길이인거죠.
벡터의 중요한 성질은 벡터를 나타내는 화살표를 좌표공간에서 이동시킬 수 있으며, 화살표의 길이와 방향이 달라지지 않았으면 같은 벡터라는 것이다.
벡터는 오직 두 가지 속성만 가집니다. 크기(길이) 와 방향
즉, 벡터는 "어디에서 시작했는가"는 중요하지 않고! → 시작점(위치)은 무시하고, 그 방향과 길이만 같으면 같은 벡터입니다.
단지 위치가 달라도, 방향과 길이만 같으면 같은 벡터라는 뜻인거죠.
→ 벡터를 화살표로 그려서 해석(기하학적 해석)하지 않아도 되고,
그냥 숫자의 리스트로 생각하고 연산해도 된다는 뜻인거죠.
즉, 벡터 = 방향 + 크기 → 그림으로도 나타낼 수 있지만
실제 계산에서는 그냥 [4, 3], [2, 6] 같은 숫자 덩어리로 다뤄도 된다는 뜻!
→ 머신러닝(기계학습)에서는 벡터를 다차원 데이터 포인트처럼 다룹니다.
그림으로 벡터를 그릴 수 없을 만큼 차원이 많기 때문에,
숫자의 나열로 생각하고 수치 연산만 한다는 거죠.
수치 연산 (성분별) == 기하학적 연산 (화살표 연결)
두 결과가 같을 수 밖에 없는 이유는 벡터의 정의가 “출발점은 상관없이, 방향과 길이만 같으면 같은 벡터”이기 때문이야. 성분별 덧셈 = 벡터를 연결해서 끝점 구하는 것이기 때문에 기하학적으로나 수치적으로나 같은 결과가 나오는 거죠.
벡터 i는 x축 방향으로 1만큼 가는 단위벡터이고, j는 y축 방향으로 1만큼 가는 단위벡터입니다.
즉, i는 (1, 0), j는 (0, 1)과 같은 의미를 가지며, 방향이 정해져 있고 크기(길이)가 1인 벡터입니다.
이러한 단위벡터를 이용하면 어떤 2차원 벡터든지 표현할 수 있습니다.
예를 들어 벡터 (4, 3)은 x축 방향으로 4만큼, y축 방향으로 3만큼 이동한 것이므로 4i + 3j로 나타낼 수 있고, 벡터 (2, 6)은 2i + 6j로 표현할 수 있습니다.
이 표현은 다시 정리하여 벡터를 기하학적으로 해석하든, 단순히 숫자의 리스트로 보든 같은 의미를 가집니다.
여기서 중요한 점은, 단위벡터는 꼭 x축이나 y축처럼 직교하는 축 위에 있을 필요는 없다는 것입니다.
길이(크기)가 1이라는 조건만 만족하면, 어떤 방향에 있어도 단위벡터로 사용할 수 있습니다.
📍 이처럼 벡터의 개념과 표현 방식은, 기계학습에서 고차원 벡터를 다룰 때 핵심적인 역할을 합니다.
차원이 높아지면 우리가 직관적으로 그릴 수는 없지만, 벡터를 숫자의 나열로 보고 수학적으로 조작함으로써
복잡한 데이터도 벡터로 처리할 수 있게 됩니다.

벡터 a = (4, 0) : x축 방향으로만 4만큼 가는 벡터예요.
벡터 b = (5, 5) : x축과 y축 모두 5만큼 가는 벡터입니다. 즉, 45도 방향 대각선 벡터죠.
점곱 a · b : 두 벡터가 얼마나 같은 방향을 향하고 있는지를 수치로 나타내주는 연산입니다.
사영(projection) : 벡터 b가 벡터 a에 “드리운 그림자”처럼, a 방향으로 b가 얼마나 가고 있는가를 나타냅니다.
각도 θ는 두 벡터 사이의 각 → 여기선 45도 또는 π/4 라디안
※ 참고
∣a∣: 주로 수(스칼라) 의 절댓값에 사용
∥a∥: 주로 벡터나 행렬의 크기(노름)에 사용
하지만 벡터의 크기를 표현할 땐 두 표기 모두 많이 쓰이며, 특히 책에서는∥a∥를 더 정식/엄격한 수학적 표기로 보는 경우가 많습니다.
※ 참고 - 자주 쓰는 삼각비 값들
각도 라디안 코사인 값 0° 0 1 30° 45° 60° 90° 0
두 벡터 a,b의 점곱은 아래처럼 정의됩니다

점곱은 벡터의 크기 × 벡터의 크기 × 두 벡터 사이 각도의 코사인 값으로 계산합니다.
그렇기에 최종적으로 점곱은 20이 된다는 점! 이해 되셨죠?
그런데 cos(90°) = 0 이라는 수학적 성질 때문에 a와 b가 수직이면 → cos(90∘)=0 따라서 a⋅b=0
✔️ 즉, 아무리 벡터의 길이가 길어도, 방향이 90도로 수직이면
→ 사영도 없고, 점곱도 0입니다. + 따라서 점곱이 0이면 두 벡터는 수직입니다. 대박 재밋죠?
"단위 벡터가 x축이나 y축 위에 있지 않아도 이 기하학적 해석이 여전히 성립하는 것이다."
그래서 이 문장은 벡터의 점곱(dot product)이 방향에 상관없이 사영(그림자)의 의미를 가진다는 걸 강조하는 말이에요.
자...이제 이론을 배웠으니 이 모든 것은 기계 학습, 퍼셉트론, 심층 신경망을 이해하기 위한 장이였답니다 ㅎㅎ...
이제 퍼셉트론으로 돌아가 벡터의 관점에서 살펴봅시다.
→ 이 문제는 벡터의 점곱을 이용하여 데이터 점과 초평면의 상대적 거리를 찾는 것과 관계가 있습니다.
이 둘의 가중합(weighted sum)은 사실상 벡터의 내적(dot product)입니다
즉, 𝑤⋅𝑥 = 𝑤1𝑥1 + 𝑤2𝑥2
"입력의 가중합 더하기 편향 항 b가 0보다 크면 퍼셉트론이 1을 출력하고, 그렇지 않으면 -1을 출력하도록 하는 일반적인 퍼셉트론 방정식을 떠올려보라."
퍼셉트론은 입력값 𝑥1,𝑥2 와 가중치 𝑤1,𝑤2 를 곱해서 더한 값(=가중합)에 편향 b를 더합니다.
그 값이 0보다 크면 → 출력 1
0보다 작거나 같으면 → 출력 -1
항목 의미 편향 퍼셉트론이 데이터를 분리하는 선의 위치를 조정하는 상수 역할 원점 기준 선형 분리를 이동시켜서 유연한 분리 가능하게 함 효과 분류기의 결정 경계가 더 유연하고 정확해짐
퍼셉트론은 데이터를 나누는 '선(2차원)' 또는 '초평면(고차원)'을 찾기 위해 가중치 벡터 𝑤를 학습하는 것이다. 그리고 그 초평면은 항상 𝑤에 수직(perpendicular)이다.

퍼셉트론의 목표는 데이터를 두 그룹(예: 고양이 vs 강아지)으로 나누는 거예요.
그 나누는 기준은 하나의 직선(2차원일 때), 또는 초평면(고차원일 때)입니다.
이 기준을 결정짓는 수학적 식이 바로 𝑤⋅𝑥 + 𝑏 = 0
→ 이게 바로 초평면(hyperplane)이에요.
※ 참고 - “초평면”이란?
1차원에서 점을 나누는 건 "0"이라는 숫자
2차원에서는 "직선(line)"
3차원에서는 "평면(plane)"
4차원 이상에서는 그것을 일반적으로 "초평면(hyperplane)"이라고 부릅니다.
📍 벡터 𝑤는 초평면에 수직이다.
이게 핵심 포인트입니다!
벡터 𝑤는 어떤 역할을 하냐면, 초평면의 방향을 결정합니다.
더 정확히 말하면, 벡터 𝑤는 이 초평면에 직각(수직)입니다.
왜?
초평면의 방정식이 𝑤⋅𝑥+𝑏 = 0 이기 때문입니다.
이 식을 만족하는 모든 점들은 𝑤와 수직인 벡터들이에요.
그렇기에 학습 과정에서 𝑤를 계속 바꾸면서,데이터를 더 잘 나누는 방향을 찾습니다.
그러면 그에 따라 초평면(즉, 분류 기준선)의 방향도 바뀝니다.
→ 즉, 퍼셉트론은 벡터 𝑤를 조절하면서, 초평면의 위치와 기울기를 조정하는 거예요.
| 개념 | 의미 |
|---|---|
| 퍼셉트론 | 데이터를 나누는 "초평면"을 찾기 위해 가중치 벡터 를 학습함 |
| 가중치 벡터 | 초평면에 수직인 방향 벡터, 방향을 바꾸면 분류 기준도 달라짐 |
| 초평면 | 식 으로 표현되는, 데이터를 나누는 기준 |
| 단위 벡터 | 와 같은 방향이라면, 같은 초평면을 정의함 (방향만 중요) |
점곱 = 두 벡터가 얼마나 같은 방향을 향하는지 나타내는 수치!
퍼셉트론은 이 점곱으로 데이터를 분류합니다.

| 개념 | 의미 |
|---|---|
| 퍼셉트론의 가중합. 벡터 가 방향으로 얼마나 향하고 있는지 측정 | |
| 점곱 = 0 | 가 에 직각 → 즉 초평면 위에 있음 |
| 점곱 = 사영 길이 | 벡터 를 단위벡터 위로 투영한 길이 |
| 초평면 | , 데이터를 구분하는 경계선 |
이와 같이 개념들을 이해했다면 이제 a,b,c가 스릴러 영화 애호가로 분류된 사람을 나타내고, d가 그렇지 않은 사람을 나타낸다 해보고 이 그림을 이해해보세요.


그래서 위의 그림은 퍼셉트론이 아직 완벽한 초평면(=가중치 벡터)을 못 찾은 상태입니다.
c도 회색 영역(1로 분류)에 들어야 하기 때문이죠!
그럼 어떻게 하면 초평면을 찾을 수 있는걸까요?
퍼셉트론은 훈련 데이터를 반복하여 섭렵하고 나서 이 초평면을 찾았을 수 있다.
초기화
가중치 벡터 𝑤와 편향 𝑏를 임의로 설정 (보통 0부터 시작)
예측
입력 𝑥에 대해
여기서,
결과적으로
퍼셉트론 학습은 반복적으로 오답을 고치면서 클래스 1과 -1을 나누는 초평면을 점점 더 정교하게 학습, 선형 분리가 가능한 데이터라면 반드시 수렴(=완성된 초평면을 찾음)
📍 즉, 예측이 틀린 경우만 고친다.
고칠 때는 데이터 방향 쪽으로 𝑤를 살짝 이동시킨다.
그렇게 하다 보면 점점 더 잘 분류하는 𝑤를 찾게 된다는 것이죠!!
퍼셉트론을 모방하는 컴퓨터 프로그램을 작성하기 위해 필요한 일은 차트와 그래프를 그리는 것이 아니라, 수를 조작하는 것이다. 다행히도 우리가 지금까지 살펴본 벡터의 수 표현은 이 추상화의 위력을 똑똑히 보여준다. 우리의 2차원 예제에서 데이터 점 (x1,x2) 는 수의 배열에 불과하며 각 배열은 두 원소로 이루어졌다. 가중치 벡터는 두 수의 또다른 배열과 비슷하다. 점곱을 찾는 일은 이 배열을 다루는 문제이다 - p50
우리가 퍼셉트론을 컴퓨터로 구현한다고 할 때, 결국 해야 할 일은 숫자들을 가지고 계산하는 것이에요. 그 계산의 핵심은 입력 데이터 × 가중치 = 출력이죠.
컴퓨터는 수학적인 벡터 개념을 배열(array)로 표현해서 계산하기 때문에, 퍼셉트론을 프로그램으로 구현하려면 자연스럽게 배열을 다루는 일이 되는 거예요.
행렬: 숫자를 행(row)과 열(column)로 정리한 것.
벡터: 행렬 중에서도 행이 1개 또는 열이 1개인 특수한 경우.
퍼셉트론과의 관계: 퍼셉트론은 입력값과 가중치 벡터를 곱해서 출력값을 내는데, 이게 행렬 연산으로 표현되기 때문에 행렬 개념이 자연스럽게 등장하는 거예요.
퍼셉트론에서는 점곱 연산을 하기 위해 "입력 벡터 × 가중치 벡터" 형태로 계산하죠.
그런데 컴퓨터가 이걸 수학적으로 처리하려면,
입력 벡터는 행벡터 (1 × n) 로,
가중치 벡터는 열벡터 (n × 1) 로 있어야 곱셈이 됩니다.
→ 그래서 입력 벡터가 기본적으로 열벡터 형태일 때는, 점곱을 하려면 입력ᵗ × 가중치 식으로 전치를 해줘야 해요.
즉, 전치는 단순히 점곱 계산을 가능하게 하기 위한 준비작업이에요.
단층 퍼셉트론은 데이터를 하나의 직선(2D) 또는 초평면(고차원)으로만 나눌 수 있어요. 하지만 XOR 문제를 좌표평면에 그려보면

(0,0) → 출력 0 (동그라미)
(0,1) → 출력 1 (세모)
(1,0) → 출력 1 (세모)
(1,1) → 출력 0 (동그라미)
이 점들을 어떤 직선 하나로도 완벽하게 나눌 수 없어요! 동그라미와 세모가 대각선으로 엇갈려 있거든요.단층 퍼셉트론의 결정 경계는 w₁x₁ + w₂x₂ + b = 0 형태의 직선이에요. 하지만 XOR은 비선형 패턴이라서 곡선이나 여러 개의 직선이 필요해요.

하지만 다층 퍼셉트론으로는 해결 가능합니다. 다층 퍼셉트론은 여러 개의 직선을 조합해서 복잡한 경계를 만들 수 있어요
XOR의 경우
기존 퍼셉트론 학습 알고리즘의 한계가 있었습니다.
단층: 입력 → [퍼셉트론] → 출력
다층: 입력 → [퍼셉트론1] → [퍼셉트론2] → 출력
최종 출력이 틀렸을 때, 중간 층의 어떤 뉴런이 얼마나 책임져야 하는지 알 수 없었습니다 즉 책임 할당 문제가 생긴거죠.
단층에서는 입력→출력이 직접 연결되어 있어서 쉽게 가중치를 수정할 수 있었지만 다층에서는 중간 층의 오류를 어떻게 계산할지 방법이 없었습니다.
그리고 나중에 역전파(backpropagation) 알고리즘이 개발되면서 이 문제가 해결됐어요!
신경망으로 말할 것 같으면, 이 분야가 소생한 것은 한 물리학자가 생물학적 문제에 대해 독특한 해법을 내놓은 뒤였다. 그때가 1982년이었다. ... 윌리엄스가 역전파backpropagation라는 알고리즘에 대한 획기적 논문을 발표했다.
이 알고리즘은 미적분과 최적화 이론을 활용합니다.
이렇게 2장이 끝이 난다.