변환 → 공간을 변형
직선과 평형성을 그대로 유지하는 변환을 Affine 변환이라고 한다.
Affine 변환의 일반식은 `Wx + b` 이며, 이는 Linear Transformation에 Traslation 항이 추가된 형태이다.
Affine 변환의 전 - 후 과정을 시각화하면 다음과 같다.
위 그림을 보면 변환에 의해 격자 전체가 함께 이동한다는 것을 확인할 수 있다.
이처럼 변환에 의해 모든 점이 영향을 받아 이동하는 것은, 공간(Space)이 변형되는 것처럼 생각할 수 있다.
이 경우 변환의 역할이 공간을 변형시키는 것이라고 해도 무방할 것이다.
멀쩡한 공간을 굳이 변형하는 이유는 당연하게도 어떤 이득이 있기 때문이다.
실제로 변환에 의해 새롭게 얻은 공간에선, 기존에 풀지 못했던 문제를 해결할 수 있는 기회를 얻을 수도 있다.
아래 그림의 왼쪽처럼 $x$, $y$ 좌표계로 구성된 Original space가 있다고 가정해보자.
이 경우 초록점과 파란점을 구분할 수 있는 직선은 존재하지 않는다.
하지만 변환에 의해 `r, \theta`로 구성된 공간을 얻게 되면, 직선 하나만으로도 초록점과 파란점을 구분할 수 있게 된다.
물론 Affine 변환만으로 아래과 같은 변형을 얻을 순 없다.
Affine 변환 in 딥러닝 → 활성화 함수의 필요성
변환이 공간을 변형시킨다는 관점으로 딥러닝 과정을 살펴보자.
딥러닝의 각 노드(퍼셉트론)의 가중치는 `Wx + b`의 식으로 나타낼 수 있다.
이는 앞서 살펴본 Affine의 일반식과 동일한 형태이다.
노드의 가중치가 곱해져, 공간이 변형되는 과정을 나타내면 아래 그림과 같다.
참고로 시각화에 편리하도록 `W` 행렬의 크기는 2 x 2이고 bias는 0인 특수한 상황이다.
그림엔 변환 전, 후의 효과를 체감할 수 있도록 알파벳(A, B, C, D)가 그려져 있다.
변환 전엔 직선으로 구분할 수 없었던 알파벳들이, 변환 후엔 직선으로 쉽게 구분할 수 있게 된다.
이처럼 딥러닝은 노드의 가중치를 통해, 공간 내 성분들을 쉽게 분리할 수 있다.
그럼 $Wx + b$ (노드) 만으로, 공간 내 모든 것들을 구분할 수 있을까?
당연히 아닐 것이다.
노드만으로 충분치 않다는 것을 보여주기 위해서, 아래 그림을 확인해보자.
이번엔 노랑, 파랑점을 직선으로 구분하는 것이 목표다.
기존의 방법대로 노드의 가중치를 통해 공간을 변형하더라도, 노랑점과 파랑점은 구분할 수가 없다.
노드 만으론 부족한 상황이다.
하지만 `h1, h2`에서 0 보다 작은 성분들을 0으로 변환시킬 수 있다면 어떨까?
만약 이를 수행해주는 어떤 함수가 있다면, 그 함수의 도움을 받아 직선만으로도 점을 분리할 수 있게 된다.
우리가 활용한 함수는 0 보다 작은 성분들을 0으로 변경한다고 했다.
이 함수를 수식으로 표현한다면 $max(0, x)$ 일 것인데, 이는 활성화 함수 중 ReLU의 수식과 동일하다!
결국 노드의 변환 만으로 부족했던 것을, 활성화 함수가 채워주게 된다.
활성화 함수는 기존 노드에 의한 Affine 변환에 비해서, 공간을 더 복잡하게 변형한다.
그래서 회전, 이동만 시키는 변환 만으론 표현하지 못했던 복잡한 경계도 활성화 함수가 있다면 표현할 수 있다.
복잡한 경계를 표현할 수 있다면, 결국 더 많고 복잡한 문제들을 해결할 수 있게 될 것이다.
이것이 바로 딥러닝 과정에 활성화 함수가 필요한 이유이다.
활성화 함수($\tanh$)에 의한 공간 변화
활성화 함수가 공간을 복잡하게 변형한다고 했는데, 사실 ReLU 만 봐서는 크게 와닿지 않을 수 있다.
좀 더 극적으로 변화를 확인할 수 있도록, 활성화 함수가 $\tanh$ 인 경우 공간이 변하는 과정을 확인해보자.
아래 그림에선 우선 `W`에 의해 공간이 회전하고, `b`에 의해서 이동된다.
이후 공간이 급격하게 변하는 순간이 있는데, 이때가 바로 $\tanh$ 가 적용된 순간이다.
Layer의 노드 개수가 공간에 주는 영향
여기까지 `Wx + b`인 딥러닝 노드(Affine 변환)의 역할과 비선형 함수의 필요성에 대해서 알아봤다.
마지막으로 딥러닝 Layer에서 노드 개수가 공간에 주는 영향을 알아보자.
Layer의 노드 수를 늘리면 `W`를 통해 n 차원 공간으로 변형시킬 수 있다.
이 공간에서 직선으로 점들을 분리하게 되면 실제 공간에서의 결정 경계는 점점 더 복잡해지게 된다.
좀 더 극적으로 확인하기 위해서 아래 그림을 추가로 확인해보자.
그림의 왼쪽, 오른쪽은 동일한 Layer 수(Depth)를 가진 네트워크이다.
하지만 Layer별 노드 개수가 각각 4개, 2개로 달라서 공간을 변형시키는 과정이 다르다.
변환을 통해 최종적으로 왼쪽(노드 4개)의 경우 파란 곡선과 빨간 곡선을 직선으로 분리하는데 성공했지만 오른쪽(노드 2개)의 경우엔 실패했다.
이는 결국 Layer의 노드 수가 많다면, 적은 노드 수에 비해 복잡한 결정 경계를 표현할 수 있다는 것을 보여준다.
결국 딥러닝은 활성화 함수와 많은 수의 노드를 통해, 복잡한 결정 경계를 잘 표현할 수 있게 된다.
참고