티스토리 뷰

3. 퍼셉트론의 해석

퍼셉트론은 입력되는 d차원의 샘플벡터를 c차원의 부류 중 하나로 분류하는 분류기의 역할

퍼셉트론의 입력 및 출력 방식은 다음과 같다.

$$output = \tau(w \bullet  x) \ ,where\ \   \tau(a) =\begin{cases}1 & a  \geq  T\\-1 & a < T\end{cases} $$

W와 x를 곱하여 더한 값을 a라고 할때, a를 활성값(activation value)라고 한다.

 

선형대수는 퍼셉트론의 연산 형태를 간결하게 나타내는데 매우 효과적, 따라서 기계학습과 선형대수학은 뗄레야 뗄 수 없는 사이인 것이다.

 

벡터의 내적을 유사도로 간주할 수 있다는 내용을 배웠었다. 

여러개의 output class를 가지는 퍼셉트론이 있을때, x에 더 가까운 부류의 output node의 activation value가 더 크다.

$$o_1, o_2, o_c$$중 가장 input vector x와 성질이 비슷한 output class의 activation value가 가장 높게 나온다.

 

4. 선형결합과 벡터 공간

벡터는 공간상의 한 점으로 나타낼 수 있다. 벡터를 나타내는 화살표의 끝 점이 벡터의 좌표를 나타낸다. 따라서 앞으로 강의에서 벡터와 점은 같은 의미로 사용한다.

 

선형 결합(linear combination)이 만드는 벡터 공간(vector space)

(a) 벡터의 스칼라배, (b) 벡터의 덧셈

 

벡터공간(vector space)

각각의 벡터에 스칼라배를 한뒤 결과를 모두 더하는 연산을 벡터의 선형결합(linear combination)이라고 한다.

$$c =  \alpha _1 \vec{a}+ \alpha _2 \vec{b}$$

 

존재하는 벡터들의 선형결합을 통해 나타낼 수 있는(만들어지는) 공간을 벡터공간(vector space)이라고 하고, 이 공간을 만드는데 필요한 최소한의 벡터의 집합의 모임을 기저벡터(basis)라고 한다.

특히, 기저벡터가 서로 수직이면서 벡터의 길이가 1일때, 이 기저벡터들을 표준기저벡터(standard basis vectors)라고 한다.

기저벡터가 되기 위해서 각각의 기저벡터들은 나머지 다른 기저벡터들의 선형결합으로 나타낼 수 없어야한다.

이것을 서로 선형독립(linearly independent)이라고 한다.

 

n차원 벡터 공간은 n개의 기저벡터를 가진다. 그리고 이때 벡터공간의 계수를 rank = n이라고 한다.

 

벡터들의 모음을 행렬(matrix)로 나타낼 수 있다고 하였다.

행렬의 계수(Rank)가 행렬을 구성하는 각 벡터들의 차원(dimension)과 같으면 이 행렬은 최대계수(full rank)를 가진다.

 

기계학습에서 행렬의 의미는 특징벡터의 공간상의 변환이다.

분류에 더 유리한 다른 벡터공간으로 변환하여 더 좋은 성능의 분류를 할 수 있도록 만드는 것이다.

 

5. 역행렬과 행렬식

역행렬은 정사각행렬에 대해서만 정의되는데 어떤 정사각행렬 A에 그 행렬의 역행렬 A-1  을 곱하면 단위행렬 I가 나온다. 또한 다음식을 만족한다.

$$AA^{-1} = A^{-1}A = I$$

 

모든 정사각 행렬이 역행렬을 가지지는 않는다. 이렇게 역행렬이 없는 정사각행렬을 '특이행렬(singular matrix)'이라고 한다. 

 

다음 성질들은 모두 서로 필요충분조건이다.

[정리2-1]

1. A가 역행렬을 가진다, 즉 A는 가역 행렬 (invertible matrix) 또는 정칙 행렬 (regular matrix) 또는 비특이 행렬(non-singular matrix)이다.
2. 행렬 A는 최대계수(full rank)를 갖는다
3. A의 모든 행은 선형독립(linearly independent)이다.
4. A의 모든 열은 선형독립(linearly independent)이다.
5. A의 행렬식(determinant)은 0이 아니다.
6. ATA는 양의 정부호 대칭행렬이다. (정부호 대칭행렬은 포스팅 아래 정부호행렬에 설명되어있다.)
7. A의 고윳값은 모두 0이 아니다.

 

행렬식

어떤 정사각 행렬 A 의 행렬식(determinant)는 det(A)로 표기한다. 행렬에서의 행렬식을 구하는 일반화된 공식이 따로 존재하지만, 보통 정형화되어 계산해주는 툴이 많이 있으므로 굳이 공식까지 알아야 할 필요는 없어보인다.

행렬식의 기하학적인 의미정도는 알아두면 좋다.

 

행렬식을 이용하면 역행렬을 구할 수 있다.

$$A^{-1} =  \begin{bmatrix}a & b \\c & d \end{bmatrix} ^{-1} = \frac{1}{det(A)} \begin{bmatrix}b & -d \\-c & a \end{bmatrix} $$

행렬식 det(A)를 구하는 공식은 여기서는 따로 작성하지 않는다. (너무 복잡하다.)

 

정부호 행렬

위에서 어떤 정사각행렬 A가 역행렬을 가지는 필요충분조건들에 대해 나열하였다.

정부호 행렬이라는 단어가 등장하는데 정부호 행렬이 무엇인가?

+3은 양수이고 -7은 음수이다, 스칼라에는 크기 값에 부호가 부여되어 있다. 그러면 행렬에도 부호를 부여할 수 있을까? 정사각 행렬 A가 다음의 식을 만족하면 행렬 A는 정부호행렬(positive definite matrix)라고 한다.

$$positive \ definite\  matrix (A)= x^TAx>0\ , \ where \  \forall x\ except \ for \  x=\vec{0} $$

직접 임의의 간단한 2x2 matrix A와 2차원의 벡터를 넣어 계산해보면 쉽게 이해할 수 있을 것이다. 이 때 사용되는 벡터들은 영벡터가 아니어야한다.

추가로 존재하는 부호개념은 다음과 같다.

$$positive \ semi-definite\  matrix (A)= x^TAx \geq 0\ , \ for \  \forall x\ except \ for \  x=\vec{0}  $$

$$negative\ definite\  matrix (A)= x^TAx<0\ , \ for \  \forall x\ except \ for \  x=\vec{0}$$

$$negative\ semi-definite\  matrix (A)= x^TAx \leq 0\ , \ for \  \forall x\ except \ for \  x=\vec{0}$$

$$indefinite\  matrix (A)= x^TAx > 0 \ or\ x^TAx<0, \ for \  \forall x\ except \ for \  x=\vec{0}$$

* 추가내용 : positive definite matrix는 위 조건 뿐 아니라 아래 4가지 조건을 이용해서 나타낼 수 있다.

https://m.blog.naver.com/kaoara/221905928263

 

6. 행렬의 분해 (중요 개념)

정수 3717이라는 값을 보자, 어떤 특성을 파악할 수 있는가? 아마도 직관적인 파악이 어려울것이다. 그러나 3717은 소인수 분해를 통해 3*3*7*59라는 값으로 나타낼 수 있다. 3717이라는 값이 가지는 특성을 분해하여 파악했다.

식 15x3+16x2-x-2을 보면 특성이 보이지 않지만 마찬가지로 분해하면 (3x-1)(5x+2)(x+1)로 분해할 수 있다.

그렇다면 행렬도 이렇게 작은 특성을 가지는 단위들로 분해할 수 있는가? 할 수 있다. 이렇게 행렬을 작은 단위로 쪼개는 것을 분해(decomposition)또는 인수 분해(factorization)이라 부른다. 특히 여기서는 고윳값 분해라는 개념에 대해 공부할 것인데 먼저 고윳값과 고유벡터가 무엇인지부터 알아두자. 장담컨대 고윳값과 고유벡터, 고윳값 분해라는 개념을 확실하게 알고 기억하고 있으면 기계학습을 공부하는데 있어서 큰 도움이 되므로 확실하게 공부하자, 필자도 해당 개념에 대해서는 조금 더 자세하게 포스팅할 예정

다음 식을 만족하는 0이 아닌 벡터 v를 행렬 A의 고유벡터(eigen vector), λ를 행렬 A의 고윳값(eigen value)라고 한다.

$$A \vec{v} = \lambda \vec{v} $$

예를 들어보면 아래와 같은 식이 존재할 수 있다.

$$if \ A =  \begin{bmatrix}2 & 1 \\1 & 2 \end{bmatrix}\  then,\ A \begin{bmatrix}1 \\1  \end{bmatrix}  = 3\begin{bmatrix}1 \\1  \end{bmatrix} \ and \ A \begin{bmatrix}1 \\-1  \end{bmatrix}  = 1\begin{bmatrix}1 \\-1  \end{bmatrix}$$

m*m 행렬은 최대 m개의 고윳값과 고유벡터를 가질 수 있다.

고윳값과 고유벡터가 구해졌다면, 보통 이를 나타내기 위해 크기순으로 첨자를 부여하며 다음처럼 나타낼 수 있다.

$$\begin{cases}\lambda_1=3\\\lambda_2=1 \ \end{cases}eigen\  values,\ \  \begin{cases} \vec{v}_1 \\\vec{v}_2  \end{cases} , eigen \ vectors$$

 

위에서 보였던 [정리 2-1]로부터, 현재 행렬 A의 고윳값이 모두 0이 아니므로 행렬 A는 역행렬이 존재한다.

 

고유값과 고유벡터의 기하학적 의미를 살펴보자.

 

1. 모든 고유 벡터들은 서로 직교(orthogonal)한다.
2. 각각의 고유벡터에 몇배의 스칼라곱을 하여도 항상 고유 벡터다. 그러나 '고유'하다는 수식어를 붙이기 위해 주로 처음 구해진 고유 벡터를 단위벡터로 변환하여 크기(길이)가 1인 벡터로 만들어준다. 
3. 고유 벡터에 어떠한 스칼라곱을 하여 변환하더라도 그 고유 벡터의 고윳값은 변하지 않는다. 

 

고윳값 분해(eigen value decomposition)

고윳값 분해는 행렬 A를 다음과 같이 분해한다.

$$A = Q \Lambda Q^-1$$

Q는 행렬 A의 고유 벡터를 열에 배치한 행렬이고 Λ는 각각의 고윳값을 대각선에 배치한 대각행렬이다. 보통 고윳값의 크기순으로 배치한다. Q는 행 벡터나 열 벡터가 서로 직교인 직교행렬이다.

고윳값 분해 역시 기계적으로 분해 가능하므로 계산하는 방식까지는 설명하지 않는다.

https://matrixcalc.org/ko/vectors.html

 

고유 값과 고유 벡터

행렬 A: 구하기 더 자세한 내용: 대각선 행렬 조던 분해 행렬 지수 특이 해 분리

matrixcalc.org

직접 해보고싶으면 위와 같은 사이트를 참고하여볼 것

 

특이값 분해(singular matrix decomposition, SVD)

고윳값 분해는 행렬 A가 정사각 행렬이 아니면 적용할 수 없다. 그러나 기계학습에서 행렬A는 정사각 행렬이 아닌 경우가 더 많기 때문에 이럴땐 고윳값 분해가 아니라 특이값 분해(singular matrix decomposition)를 적용해야한다.

특이값 분해식은 다음과 같다.

$$A = U \Sigma V^T$$

U를 왼쪽 특이 행렬이라고 부르며 AAT 의 고유 벡터를 열에 배치한 n*n행렬이다. V를 오른쪽 특이행렬이라 부르며 ATA의 고유 벡터를 열에 배치한 m*m 행렬이다. Σ는 AAT의 고윳값의 제곱근을 대각선에 배치한 대각행렬로써 n*m 행렬이다.

특이값 분해는 실수가 아닌 복소수로 이루어진 행렬이나 n*m으로 정사각이 아닌 어떤 형태로 이루어진 행렬이든 모든 행렬에 적용 할 수 있다. 

댓글