Naver Boostcamp

[AI Math] 벡터

HaneeOh 2023. 3. 9. 09:03

목차

    파이썬 다음으로는 임성빈 교수님의 AI Math 강의가 있었다.

    이미 알고 있던 수학적 개념도 새로운 방식으로 설명해주셔서,

    참신하기도 하고 어렵게 느껴지기도 하는 그런 시간이었다. ㅎㅎ

     

     

     

     

    벡터

    벡터는 숫자를 원소로 가지는 리스트 또는 배열이다. 파이썬에서는 numpy 라이브러리를 통해 나타낸다.

    벡터는 크기와 방향을 가지는 양을 일컬으며, 원점으로부터 상대적 위치를 표현한다.

    그러므로 크기와 방향이 같다면 평행이동하더라도 벡터는 모두 같은 값이다.

     

    스칼라곱

     

    벡터에 숫자(스칼라)를 곱해주면 벡터의 길이만 변하게 된다.

    이때 스칼라값이 1보다 크면 벡터의 길이가 늘어나고, 0보다 크면서 1보다 작으면 벡터의 길이가 줄어든다.

    만약 스칼라값이 0보다 작다면 벡터는 반대 방향이 된다.

     

    벡터의 연산

    벡터끼리 같은 모양을 가지면 덧셈, 뺄셈, 성분곱(Hadamard product)를 계산할 수 있다.

    두 벡터의 덧셈은 다른 벡터로부터 상대적 위치이동을 표현한다.

    이 부분의 설명이 굉장히 참신하게 다가왔는데, 그 동안 벡터의 덧셈을 설명할 때 배웠던 평행사변형법과는 다른 새로운 관점이었기 때문이다.

    그동안 배웠던 벡터의 덧셈에 대한 설명

    그런데 더 고민해본 결과 임성빈 교수님은 다른 벡터로부터 상대적 위치이동이라는 점에 방점을 두고 있다는 걸 알았다.

    결론적으로 위 그림에서도 a 벡터를 b벡터의 끝점으로 옮기면 임성빈 교수님의 설명과 동일한 결론이 나온다.

     

    벡터 간의 뺄셈도 다른 벡터로부터 상대적 위치이동을 표현한다.

    덧셈과 뺄셈이 모두 상대적 위치이동이라는 설명을 보면 이해가 가지 않을 수도 있겠지만,

    결국 뺄셈도 덧셈의 영역에 포함된다는 점을 생각하면 납득이 가는 설명이다.

    하지만 뺄셈은 음수를 곱한 벡터를 더하는 꼴이 되므로 (alpha < 0인 벡터가 더해진다고 생각하면 쉽다.)

    벡터의 방향이 정반대가 되어 더해진다.

     

    벡터의 노름(Norm)

    영어로 norm을 봐오면서도 노름으로 읽을 줄은 상상도 못했는데, 그래서 그런지 볼 때마다 표기법이 낯설게 느껴진다.

    벡터의 노름은 원점에서부터의 거리 혹은 벡터의 크기를 말한다.

    노름의 종류는 두 가지가 있는데, 노름의 종류에 따라 기하학적 성질이 달라진다. 기계학습의 종류에 따라 필요한 노름을 맞춰서 사용한다.

     

    L1-Norm: 각 성분의 변화량의 절대값을 모두 더한다.

    L2-Norm: 피타고라스 정리를 이용해 유클리드 거리를 계산한다.

    쉽게 말하면 L2 norm은 피타고라스 정리에서 직각삼각형의 빗변의 크기이자 다른 두 변의 합의 루트값이다.

     

    두 벡터 간의 연산

    두 벡터 사이의 거리는 norm을 이용해서 구할 수 있다.

    다음 그림처럼 두 벡터 x와 y 사이의 벡터 y-x는 벡터의 뺄셈을 통해 나타낼 수 있다.

    y-x는 앞서 설명했지만 좌측 그림처럼 벡터 y로부터 벡터 -x의 상대적 위치 이동으로 볼 수 있다.

    0을 끝점으로 갖는 벡터 y-x와 x를 끝점으로 갖는 벡터 y-x는 어차피 같은 벡터이기 때문이다.

     

    혹은 우측 그림처럼 평행사변형 안에서 벡터 y와 벡터 -x의 합이라고 봐도 된다.

    아마도 대부분 우측 그림의 설명이 익숙할 것이다.

     

    그리고 y-x의 크기(norm)를 구해주면 두 벡터 사이의 거리를 구할 수 있다.

     

    두 벡터 사이의 각도는 위에서 구한 두 벡터 사이의 거리를 통해서 구할 수 있다.

    제2 코사인 법칙에 의해 다음과 같은 분수식을 통해 두 벡터 사이의 각도를 구할 수 있다.

    분자식은 x 벡터의 norm과 y 벡터의 norm의 합에서 xy 사이의 벡터의 norm을 빼준 형태다. 이때 L2-norm만 가능하다.

    이러한 복잡한 분자식은 여러 계산과정을 거쳐서 x벡터와 y벡터의 내적으로 요약된다.

     

    내적은 x 벡터 정사영의 길이를 벡터 y의 길이 ||y||만큼 조정한 값이다.

     

    흔히 내적을 표현할 때 ||x||||y||cosΘ로 표현하는 것을 봤을 것이다.

    단순히 x벡터를 y벡터에 정사영한 Proj(x)는 코사인법칙에 의해 ||x||cosΘ가 된다.

    이때 내적은 Proj(x)의 길이를 y벡터 ||y||만큼 조정한 값이 되어 ||x||||y||cosΘ가 된다.

     

    한번도 내적값이 x벡터와 y벡터의 norm으로 표현되는 이유에 대해서는 생각해보지 않았는데(그저 내적값은 스칼라값이라 연관이 있을 것이라고만 생각했다), 새로운 관점이라 신기하게 다가왔다.

    내적은 두 벡터의 유사도를 측정하는데 사용가능하다.