brunch

인공지능의 꽃, 행렬과 벡터

고등학교 수학교과서를 다시 펼쳐보며

by 정경문
행렬이 뭔가요?

누군가에게 행렬이 무엇이냐고 묻는다면 대부분은 이렇게 생긴 것이라고 답할 것입니다.

큰 괄호로 묶은 수들의 집합처럼 보이는 이것은 대체 무엇이며, 어디에 쓰일까요? 우리는 행렬마저도 이런 중요한 정보와 지식이 빠져있는, 그러니까 "목적"이 없는 하나의 "계산" 과목처럼 대했는지 모르겠습니다. 대학교에서는 공학계산기가 그 계산 역할을 대신했고, 간단한 파이썬 라이브러리 하나로 가능해지더니, 이제 생성형 AI에게 말로 시키면, 눈깜짝할 사이에 값이 나옵니다. 그렇기 때문에 이제는 시험문제를 풀기 위한 계산이 아닌, 행렬의 목적과 쓰임에 집중이 필요합니다.


#1. 선형대수란 무엇인가?


데이터 분석과 인공지능 개발 업무를 하면서, 고등학교 수학책을 다시 펼쳐보는 경우가 종종 있습니다. 공통수학 I의 가장 마지막 파트 IV. “행렬”이 그 중 하나인데요. 교과서는 행렬의 덧셈과 뺄셈, 곱셈, 그리고 이것들에 대한 교환/결합/분배 법칙 등 온통 계산에 초점이 맞춰져 있었습니다.


선행 AI 연구 알고리즘에 대한 이해와 응용, 한 단계 더 발전을 위해 필요한 수학 3가지는 확률과 통계, 미분과 적분, 그리고 선형 대수입니다. 오늘은 그 마지막편으로, 행렬과 벡터로 설명되는 인공지능 개발의 꽃, 선형 대수(Linear Algebra)에 대해 알아보겠습니다.


“선형 대수” 는 이름부터 남다른 포스(?)가 느껴집니다. 이름을 둘로 나눠보면 선형(linear)과 대수(algebra) 입니다. 먼저, 선형은 그마나 좀 친근하죠? 선형이란, 대표적인 선형 함수 y = ax 와 같이 직선(line)의 관계를 가지는 것을 의미합니다. 여기서 조금만 더 확장하면, 선형 함수는 수학적으로 다음의 두 성질을 가지고 있습니다.

f(x + y) = f(x) + f(y) …(1)
f(c·x) = c·f(x)...(2)


첫번째는 입력값들의 합 x+y 에 대한 함수의 결과 f(x+y)가 각 입력값에 대한 함수 결과들의 합 f(x) + f(y) 과 동일하다는 것 입니다. 둘째는 입력값에 대해 임의의 수 c를 곱했을 때 f(c·x) , 함수 결과가 원래 함수 결과 f(x)에 그 값을 곱한 것 c·f(x) 과 동일하다는 성질이 그것입니다.


조금 더 실용적으로 생각해보면, 첫번째 성질은 사진을 픽셀단위로 나누고, 각 픽셀의 밝기를 조절한 후 합치면, 사진이 전체가 밝아진 것과 같은 원리입니다. 그리고 두번째는 특정 주파수를 띄는 음성신호의 크기를 증폭시켜서, 출력신호로 만드는 작업을 예로 들 수 있습니다.


#2. 행렬의 기능


행렬은 어떤 역할을 하나?


행렬은 데이터를 표현할 수 있다.

우리가 일상에서 다루는 많은 정보는 ‘행렬’ 구조로 대신 표현할 수 있습니다. 아래 그림을 보면 이를 아주 명확하게 이해할 수 있습니다. 왼쪽에는 학생들의 과목별 성적이 담긴 표가 있습니다. 각 학생이 국어, 영어, 수학에서 받은 점수가 정리된 이 표는 행이 학생, 열이 과목으로 구성된 4×3 크기의 행렬로 표현할 수 있습니다.


그 옆에는 각 대학이 학생의 과목 점수를 얼마나 반영하는지를 보여주는 표가 있습니다. 예를 들어 서울대는 국어 점수의 30%, 영어 20%, 수학 50%를 반영하고, 부산대는 각각 40%, 30%, 30%, 인천대는 30%, 30%, 40%의 비율을 반영한다고 되어 있습니다. 이 표는 3×3 행렬로 정리할 수 있습니다. 과목별로 각 대학의 반영 비율을 수치로 나타낸 것입니다.


이제 학생들의 성적 행렬과 대학별 반영 비율 행렬을 곱하면, 각 학생이 각 대학에 지원했을 때의 총점이 계산됩니다. 예를 들어 학생1이 서울대에 지원한다고 했을 때, 그의 점수는 국어 100점 × 0.3 + 영어 90점 × 0.2 + 수학 80점 × 0.5 = 88점이 됩니다. 이런 방식으로 모든 학생과 대학에 대해 점수가 계산되며, 최종적으로 4×3 크기의 결과 행렬이 만들어집니다. 이 행렬의 각 칸은 학생과 대학 간의 조합에서 나온 최종 점수입니다.


즉, 성적 데이터와 대학의 반영 기준이라는 서로 다른 정보를 행렬로 표현하고, 이를 행렬 곱 연산을 통해 계산합니다. 실제 데이터는 수많은 행과 열을 가진 데이터를 구조화함으로써 계산을 빠르고 정확하게 수행할 수 있습니다. 이처럼 다양한 데이터는 행과 열로 구성된 수치의 집합, 즉 행렬로 구조화할 수 있으며, 행렬 연산을 통해 실질적인 판단과 의사결정에 필요한 정보를 얻을 수 있다는 것이 바로 “데이터는 행렬로 표현된다”는 말의 의미입니다.



행렬은 선형 변환 기능을 한다

앞서 설명한 이미지의 변환, 소리의 증폭처럼, 선형 함수는 축소/확대, 이동, 회전, 변환 기능을 합니다. 선형대수에서 가장 중요한 사실은 "모든 선형 함수는 행렬로 표현될 수 있다"는 점입니다. 반대로 말하면, “행렬은 선형 변환 기능을 한다”는 것입니다. 그래서 행렬은 입력을 원하는 형태로 변환하거나, 다른 데이터와의 관계를 계산할 때 쓰는 도구(Tool)입니다. 여기서 “선형”이 중요한 이유는 선형적 특성을 이용하면, 아무리 복잡한 현실 문제도 단순화해서 해결할 수 있기 때문입니다.


<중략>

보다 궁금하시다면,

아래 개발자들의 성장을 위한 베이스캠프 <프로그래머스> 공식블로그에서 무료로 만나보실 수 있습니다.

https://community.programmers.co.kr/post/12245


keyword
매거진의 이전글곰돌이 젤리로 알아보는 인공지능 수학