완전연결층(선형층, 밀집층)
정의
$L: \mathbb{R}^{n} \to \mathbb{R}^{m}$을 레이어라고 하자. $\mathbf{W}$를 $L$의 행렬표현이라 하자. $\mathbf{W}$가 $0$이 아닌 성분만을 가지고 있을 때, $L$을 완전연결층fully connected layer이라고 한다.
설명
완전연결층은 인공 신경망에서 가장 기본적인 레이어이다. 딥러닝에서 대부분의 레이어는 선형이지만, 간단히 선형층이라고 하면 완전연결층을 의미하는 경우가 많다. 밀집층dense layer이라는 말도 많이 쓰인다.
함숫값의 각 성분이 모든 변수에 의존하므로 완전 연결이라 부르며 흔히 다음과 같은 그림으로 표현된다.
구체적으로, 완전연결층은 다음과 같은 함수이다.
$$ \begin{align*} L : \mathbb{R}^{n} &\to \mathbb{R}^{m} \\ \mathbf{x} &\mapsto \mathbf{W}\mathbf{x}\\ \begin{bmatrix} x_{1} \\ x_{2} \\ \vdots \\ x_{n} \end{bmatrix} &\mapsto \begin{bmatrix} w_{11} & w_{12} & \cdots & w_{1n} \\ w_{21} & w_{22} & \cdots & w_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ w_{m1} & w_{m2} & \cdots & w_{mn} \end{bmatrix} \begin{bmatrix} x_{1} \\ x_{2} \\ \vdots \\ x_{n} \end{bmatrix} \end{align*} $$
실제로 신경망을 구성할 때는 바이어스bias $\mathbf{b} \in \mathbb{R}^{m}$를 추가하여 다음과 같이 아핀 변환이 되도록 한다.
$$ L : \mathbf{x} \mapsto \mathbf{W}\mathbf{x} + \mathbf{b} $$
물론 이 경우에도 $\overline{\mathbf{x}} = \begin{bmatrix}\mathbf{x} \\ 1 \end{bmatrix}$, $\overline{\mathbf{W}} = \left[ \begin{array}{c|c}\mathbf{W} & \mathbf{b} \end{array} \right]$라 두면 여전히 다음과 같은 선형 변환인 것을 알 수 있다.
$$ \overline{\mathbf{x}} \mapsto \overline{\mathbf{W}}\overline{\mathbf{x}} = \begin{bmatrix} \mathbf{W}\mathbf{x} + \mathbf{b} \end{bmatrix} $$
머신러닝/딥러닝의 본질은 우리가 원하는 함수를 인공 신경망 이라는 구조로 잘 근사approximate하는 것이다. 완전연결결층과 활성화함수를 여러번(=깊게=deep) 합성한 함수를 approximator로 사용한 것이 초기의 딥러닝이다. 이를 (다층) 퍼셉트론이라고 한다. 현재는 이미지와 관련한 문제에서는 합성곱층을 주로 사용하지만, 분류 작업을 위해서는 여전히 마지막 층에서 선형층을 사용한다.