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

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

선형변환 (Linear Transformation)

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

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

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

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

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

넓이가 행렬식인 이유는 변형된 평행사변형 공간의 넓이, 다시 말해 두 기저벡터 u, v가 이루는 평행사변형의 넓이가 곧 행렬식([u v]의 외적 크기)이기 때문이다.
또한, 이것이 역행렬 계산 시 1/det(A)가 등장하는 이유이다.

더 깊은 이야기는 주제에서 벗어나기 때문에 참고자료로 갈음한다.

아핀변환 (Affine Transformation)

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

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

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

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이 아니다.

하지만 아핀변환이 비선형변환이라 하더라도 우리가 원하는 정도의 비선형성을 가지진 못한다.
아핀변환에서의 비선형성은 그래봐야 공간의 원점을 시프팅하는 정도에 불과하며 기저가 이루는 평행사변형의 격자 구조는 여전히 모든 영역에서 동일하게 유지되기 때문이다.
이에 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가 영벡터)라는 것을 알 수 있다.
다시 말해 선형변환은 아핀변환에 포함된다.
그리고 이에 대한 대우 또한 참이므로 비아핀변환은 비선형변환에 포함된다.

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

  1. Affine Transformation에 대해 정리한 글 중 제일 잘 읽히네요! 충분한 설명 없이 용어와 수식들이 나열되있어 수학적 베이스가 부족한채로 이해하기 어렵거나, 단순 정의만으로는 꼬리에 꼬리를 무는 의문이 해결이 되지 않았는데.. 속이 다 시원하네요. 좋은 글 감사합니다.

  2. 바이어스가 더해지는것 (translation)은 선형 변환인것 같습니다. machine learning 에서 비선형 변환인 이유는 nonlinear activation function 인 ReLu 나 Tanh등을 쓰기 때문인 것으로 이해하고 있습니다. Affine 변환에서는 activation function 이 없으므로, 두 벡터 사이의 관계는 Linear transformation으로 모두 표현할 수 있기 때문에 선형변환으로 봐야한다고 생각합니다.

    1. 두 벡터간 선형변환에 바이어스가 더해지는 것은 선형변환의 정의에 맞지 않습니다.
      이 때문에 모든 선형변환은 아핀변환이지만 모든 아핀변환이 선형변환이진 않습니다.
      항등함수를 활성화함수로 사용하는 간단한 신경망 모델을 생각해보시면 바이어스에 의해 선형성이 깨진다는 걸 확인하실 수 있습니다.
      다만 원점을 원점 밖으로 매핑하는 아핀변환을 비선형변환이라고 일컫는 것이 어떤 유용한 실익을 가져다주는지는 저 또한도 다소 회의적입니다.

  3. mlp의 히든 레이어들의 weight와 bias가 데이터 공간을 아핀변환 시키고 비선형 함수들이 공간의 일그러짐을 만드는 과정을 정말 알기쉽게 설명해주셔서 감사합니다. 덕분에 딥러닝을 공부하는 중 큰 직관을 얻고 갑니다. 그런데 히든 레이어의 노드가 인풋 레이어의 노드보다 많으면 인풋 데이터보다 높은 차원의 공간으로 맵핑? 시키는 듯한 변환을 거치던데 이것 또한 아핀변환의 일종으로 볼 수 있을까요?

    1. 말씀하신 그 자체가 아핀변환입니다. 행렬곱이 가지는 선형대수학적 의미를 이해하신다면 좀 더 명쾌하게 와닿으실 것 같습니다. 아핀변환보다 가중치 행렬 자체에 초점을 맞추어보시면 해당 행렬의 행공간과 열공간 사이에서 주어진 데이터가 고차원으로 매핑된다는 것을 이해하실 수 있으실 겁니다.

  4. 아핀 변환과 선형 변환에 대해서 읽어본, 직관적으로 이해 가능하게 설명한 글 중 최고인것 같습니다.
    감사합니다 🙂

댓글 남기기