선형변환과 아핀변환에 대한 고찰 (Linear & Affine Transformation)

아핀변환을 정리하는 차원에서 글을 써본다.

선형변환 (Linear Transformation)

고등학교에서부터 배우는 내용이다.
선형변환은 스칼라 a와 벡터 u, v에 대해 두 벡터 공간(V, W) 사이에서 다음 조건을 만족하는 변환 f:V->W을 의미한다.

f(au+v) = af(u)+f(v)

이 조건은 f(0) = 0를 내포한다.

이 때, 선형변환은 다음과 같이 열벡터 uv로 표현될 수 있다. (작성 편의를 위해 2차원에서 기술한다)

여기서 열벡터 u, v는 변환된 선형공간의 새 기저(basis)이며
이에 따라 선형변환은 1×1 정사각공간(기존의 단위벡터 기저)을 넓이가 행렬식(ad-bc)인 uxv 평행사변형 공간으로 변환한다.
(이것이 역행렬 계산 시 1/det(A)가 등장하는 이유이다)

아핀변환 (Affine Transformation)

아핀변환은 두 아핀공간(Affine space) V, W 간 공선점(Collinear point)을 유지하는 동형사상(Isomorphism)으로 정의된다.
(이 글에서의 아핀변환은 자기동형사상(Automorphism)으로 정의되는 아핀변환이 아니라, 두 아핀공간 상에서 정의되는 아핀사상(Affine Mapping)을 의미한다.)

여기서 동형사상은 전단사(Bijective)인 선형사상(일대일대응 함수라 생각하면 된다)을 말하며, 아핀공간은 원점이 존재하지 않는 벡터공간으로 이해하면 된다.

어렵게 들리지만, 식으로 보았을 때는 단순하다.
주어진 입력벡터 X와 출력벡터 Y에 대하여 아핀변환 f:V->W는 다음과 같이 나타내어진다.

Y=f(X)=WX+b

식에서 보이듯 아핀변환은 선형변환을 한 후 시프팅(Translation)한 것이다.
이처럼 아핀변환은 Translation term이 있기때문에 기본적으로 비선형(non-linear)변환이다.

아핀변환은 다양한 머신러닝 기법들에서 사용된다.
예를 들어, 신경망에서 다음 노드의 input을 계산하는 연산이 다음과 같이 표현되는데

o=h(Wx+b)

활성화함수(activation function) h 안에 들어가는 term이 입력값 x에 대한 아핀변환으로 볼 수 있다.
이를 통해 활성화함수를 항등행렬(Identity matrix)을 사용한다고 하더라도 순전파(feed-forward)행위 자체는 비선형 연산이 된다는 것을 알 수 있다.

한편, 연산 가속화를 위해 아핀변환을 동차좌표(homogeneous coordinate)로 나타내어 WX 형태의 dot product로도 나타낼 수 있다.
이 경우 아핀변환을 선형변환으로 볼 수 있다고 주장하는 사람들도 있으나, 개인적인 생각으로는 주어진 입력값 x에 대해 분명하게 bias b가 존재하므로 이는 엄밀하게 말하면 아핀변환이며 비선형변환이다.

물론 선형회귀에서는 식 Y=WX+b에서 bias term b가 포함됨에도 불구하고 선형회귀라고 부른다.
하지만 이 term은 주어진 독립변수 X로 종속변수 Y를 설명할 수 없을 때 그 오차(error)를 나타내기 위한 term이기 때문에 선형식 자체에 포함되는 term이 아니다.
*여기에 약간의 용어혼동이 있을 수 있다. 통계학에서의 bias는 bias-variance tradeoff에서 말하는 bias지만, 머신러닝에서의 bias는 weight and bias에서 말하는 bias이다.

하지만 아핀변환이 비선형변환이라 하더라도 우리가 원하는 정도의 비선형성을 가지진 못한다.
아핀변환은 그래봐야 공간의 원점을 시프팅하는 정도의 변환이며 기저가 이루는 평행사변형의 격자 구조는 모든 영역에서 동일하게 유지되기 때문이다.
이에 sigmoid, arctan나 ReLU같은 일반적으로 쓰이는 비선형함수를 활성화함수로 사용하여 더 강한 비선형성을 가지도록 해야 한다.

이에 대해서는 이 블로그에서 좋은 시각화 자료를 안내한다.
(필자가 ML 분야에서 가장 좋아하는 시각화 자료이다)

graphic from blog article “Neural Networks, Manifolds, and Topology” [Link]

위의 그래픽은 공간을 선형변환하고 translating한 뒤 활성화함수를 적용하는 모습이다.
앞서 말한 것 처럼 공간이 평행사변형형태로 변환되고 시프팅될 때까지는 평행사변형 격자(공선성, Colinearity)가 유지되는 것을 알 수 있다.
이제 아래의 그래픽을 통해 실제 두 클래스가 아핀변환과 활성화함수를 통해 어떻게 선형분리될 수 있는지를 확인해보자.

graphic from blog article “Neural Networks, Manifolds, and Topology” [Link]

위의 그래픽은 복수의 레이어를 통해 아핀변환과 활성화함수를 반복하여 적용한 결과를 나타낸다.
그래픽에서 공간이 스트레칭되고 스케일링되는 것은 아핀변환에 의한 것이며, 공간을 찌그러트리는 것은 활성화함수에 의한 것이다.
만약 순전파시 아핀변환대신 선형변환을 사용한다면 어떻게될까? (다시 말해 bias term이 없다면 어떻게될까?)
변환 과정에서 translation에 대응하는 변환을 해주기 위해 더 많고 복잡한 선형변환과 활성화함수의 개입이 필요하게 될 것이다.
이를 해결하기 위해 bias라는 새로운 자유도를 넣어줄 수 있다.
그리고 이로서 모델의 설명력이 배가된다.

선형변환과 아핀변환

그렇다면 선형변환과 아핀변환의 관계는 어떻게 될까?
위의 글을 잘 이해했다면 결국 선형변환은 아핀변환의 특수한 형태(bias가 영벡터)라는 것을 알 수 있다.
다시 말해 선형변환은 아핀변환에 포함된다.
그리고 이에 대한 대우 또한 참이므로 비아핀변환은 비선형변환에 포함되지 않는다.

댓글 남기기