[46일차]머신러닝에 필요한 선형대수 1

김준석·2024년 1월 29일

머신러닝에 필요한 선형대수 1

기본 개념과 용어 정리

선형대수란?

  • 수 들이 모여있는 개념과 관련된 식을 연구하는 수학의 한 분야

    • 수가 모여있다는 것은 벡터 혹은 행렬이라고 함
  • 수를 다루는 많은 학문(데이터, 공학, 과학적 분석 등)에서 수의 연산을 빠르고 효과적으로 하기 위해 사용하는 도구!

  • 수의 집합을 기하학적인 형상으로 적용하여 표현

    • 시각적이고 직관적으로 수의 값을 이해할 수 있다.
    • 기하학적으로 의미를 갖는 다양한 변환을 수학적으로 정의할 수 있음
  • 컴퓨터 그래픽스, 엔지니어링, 물리학, 컴퓨터 과학, 머신러닝 등 다양한 분야에서 응융

  • 특히 머신러닝에서는 데이터를 표현하고 변환하는데 필수적인 도구로 사용.

수의 집합 : 스칼라, 벡터, 행렬, 텐서

  • 숫자는 특정한 방향으로 줄을 서듯이 모일 수 있다.
    • 방향을 보통 차원이라고 부르며,
      숫자들이 얼마나 모이는지에 따라 크기가 정해짐

수의 집합 단어 정리

  • 스칼라 : 다른 숫자와 함께하지 않고 홀로 존재하는 수
  • 벡터 : 한쪽 방향(차원)으로만 숫자가 모인 형태 →1차원
  • 행렬 : 두 방향으로 숫자가 줄을 선 형태 → 2차원
  • 텐서 : 벡터와 행렬을 일반화한 개념
    • 0차원 텐서를 스칼라
    • 1차원 텐서를 벡터
    • 2차원 텐서를 행렬
    • 3차원 이상의 수 집합을 나타내는 용어로 사용한다.

데이터를 벡터와 행렬로

데이터를 벡터와 행렬로 변경해보자.

  • 한 친구 A의 정보가 다음과 같음
    • 출석 번호 : 3 / 혈액형 : O / MBTI : ENTP / 키 : 163 / 중간고사 평균 : 92 / 기말고사 평균 : 96
  • 이 친구의 정보는 아래와 같이 벡터로 나타낼 수 있음
    • 숫자와 글자를 모두 받는다고 가정
    • [3, O, ENTP, 163, 92, 96]
    • 총 6의 크기를 갖는 vector로 변환 가능
  • 여기서 이 친구 학급에 있는 모든 친구들의 정보를 다 이렇게 변환하면 메트릭이됨.
    • [ [3, O, ENTP, 163, 92, 96],
      [4, A, INTP, 168, 89, 88],

      [10, B, ESTJ, 155, 88, 82],
      [11, AB, ENFP, 170, 90, 91]]

이처럼 데이터를 벡터 혹은 행렬의 형태로 변환 가능하다.

데이터를 다룰때 더욱 효율적으로 진행할 수 있다.


행렬 연산과 성질

행렬의 덧셈과 뻴셈

  • 메트릭도 수의 집합이므로 연산이 가능하다.

  • 행렬의 덧셈과 뻴셈은 같은 크기의 행렬끼리만 가능

    • 각 행렬의 같은 자리에 있는 원소끼리의 덧셈과 뻴셈
    • 이렇게 같은 자리에 있는 원소끼리의 연산을 element-wise operation이라고 함

행렬의 곱셈

행렬의 곱셈은 일반적인 수의 곱과는 다르다.

  • 행렬의 곱은 각 위치의 값을 곱하고 다 더한값을 의미한다.
  • 결국 결과는 하나의 스칼라가 나옴.
    • a = 1 2 3 / b = 4 5 6
      a ⋅ b = 1 ⋅ 4 + 2 ⋅ 5 + 3 ⋅ 6 = 32
  • Element-wise 연산이 아니므로 행렬의 크기가 달라도 연산이 가능
  • 대신, 앞선 행렬의 열과 뒷 행렬의 행의 크기가 같아야 함

우리가 아는 곱셈

같은 크기의 행렬에서 각 요소 별로 곱하기하는 연산이 존재하기는 한다.

이를 Element-wise multiplication 라고함.

각 자리에 있는걸 곱해서 행렬로 사용

전치 행렬

하나의 행렬이 주어질 때, 행과 열을 바꾼 행렬을 전치 행렬이라고 함

예를 들어
A행렬의 크기 : m x n 일 때, 전치 한다면?
n x m이 된다.
이때 전치된 행렬을 At라고 표기.

대각선 원소는 위의 예시처럼 전치 과정에서 그대로 유지된다.

역행렬

특정 행렬 A에 어떤 행렬 B를 곱해보니 결과가 항등 행렬(I)이라면? A*B=I
여기서 B를 A의 역행렬 이라고 한다.

  • 항등행렬이란 대각선의 값은 1을 가지고 나머지는 모두 0을 갖는 행렬

모든 행렬이 역행렬을 갖는 것은 아니다.


고유벡터와 고유값⭐

선형 변환

특정 벡터에 특정 행렬을 곱하게 되었을 때 방향이 바뀐다면
이를 선형 변환이라고 한다.

  • 어떤 벡터(v)가 있다고 해보자.
    이 벡터는 벡터 크기 만큼의 차원 공간에 존재할 것이다.

여기에 특정 행렬(A)를 곱해서 새로운 벡터(v’)를 만들었다고 가정해보자.

그럼 v와 v’는 A행렬에 의해 방향 또는 크기가 바뀔 수 있다.

예를 들어
v=[1 1], A= [0 -1 이라면 Av = [-1 =v’
1 0] 1]

결론적으로

  • 특정 벡터에 어떠한 행렬을 곱하면 벡터의 방향 혹은 크기가 변경된다.
  • 이렇듯 벡터의 방향과 크기의 변경을 선형 변환이라고 한다.

고유벡터와 고유값

앞서서는 벡터(v)를 기준으로 살펴봤는데, 이번에는 행렬(A)의 입장에서 보자.

  • 행렬 A에는 다양한 벡터를 곱할 수 있다.
    그러다 보면 아래와 같은 특징을 갖는 벡터가 존재할 수 있다.
    - 방향이 바뀔 수도 있고
    크기만 바뀔 수도 있다.
    - 아래 사진은 벡터에 행렬을 곱했을 때 크기만 바뀐 그래프의 예시이다.
    이때 크기가 바뀐 그래프를 [λv, 람다v] 라고 부른다.

여기서 λ는 임의의 상수를 말한다.

이를 해석하자면

  • A행렬에 임의의 벡터v 를 곱하니
    벡터 v의 크기를 상수 λ배 한 벡터와 같다! 라고 할 수 있다.
  • 그런 벡터 v를 고유벡터 라고한다.
  • 그런 상수 λ를 고유값 이라고 한다.

고유벡터와 고유값의 사용처!

위에서 배운 것들을 머신러닝에서 어떻게 사용할 수 있을까?

  • 행렬 A의 고유벡터(v)는 행렬 A의 값이 가장 많이 분산되는 방향을 나타낸다.
    • 분산이 많이 된다는 것은 많은 정보력을 갖고 있다고 볼 수 있음.

      일반적으로 데이터를 불러오면 행렬의 형태를 가지게 된다.
      아래 그래프에서는 제일 많이 벌어진 A의 분산이 고유벡터로 볼 수 있다.

  • 해당 방향으로 얼만큼 분산이 이루어졌는지,
    또 분산의 크기를 나타내는 정도가 고유값 λ (람다) 이다.

    λ가 작으면 분산의 크기도 작아지고,
    λ가 크면 분산의 크기고 커진다.

  • 이러한 고유벡터와 고유값λ은 여러개가 가능하며,
    고유값을 기준으로 나열된 고유벡터는 해석력이 큰 방향의 순서를 의미한다.

  • 이 둘은 데이터를 이해하고 계산하는 과정에서 사용된다.

    • 의미를 유지한 상태로 데이터를 전처리 하거나,
      행렬 계산을 간소화 하는 과정에서 사용됨.

즉, 고유벡터와 고유값은 어느정도의 데이터가 어느 방향으로 있는지를 수치화 할 수 있기 때문에 아주 중요하다.

위 그래프를 다시 한번 보자면

분산 A가 5의 크기,
분산 B가 1.5의 크기라고 했을

방향(고유벡터) : 5

크기(고유값) : A

이런식으로 볼 수 있다.

이후 분산B는 A이후에 채택할 수 있을지 한번 더 확인하는 식으로 진행.

0개의 댓글