뉴런 - 3. 뉴런을 해석하는 뉴런

딥러닝 모델의 뉴런을 해석하는 방식은 여러가지가 있지만, Probing은 뉴런의 아웃풋을 기반으로 특징을 추론할 수 있다면 특징을 가지는 뉴런으로 인식하는 방법이다.

소개

딥러닝 모델의 내부에는 수많은 뉴런들이 존재하며, 특정한 패턴에 의해서 뉴런은 강하게 활성화 된다. 특징에 대해서 강하게 반응하는 뉴런의 존재성은 우리가 쉽게 추측할 수 있다. 그러나, 수많은 뉴런 중에서 어떤 뉴런이 내가 생각하는 패턴에 반응하는지 찾는 것은 쉽지 않은 일이다. 쉽지않은 이유는 뉴런의 활성화 정도를 기반으로 특징을 가지고 있다고 판단학는 것은 휴리스틱하다. 바꿔말하면, 우리는 특정 패턴에 대해서 뉴런이 얼마나 활성화되어야 해당 패턴을 지니고 있는 뉴런이라고 확정할 수 있는지 알 수 없다. 다음과 같은 약점을 생각해보자.

딥러닝의 뉴런이 특징을 가지고 있는지 확인하기 위해서는 휴리스틱하게 찾기보다 입력 패턴과 뉴런의 출력에 대한 상관관계가 학습가능한지 여부로 생각할 수 있다. 여기서 생각하는 가정은 다음과 같다.

뉴런의 활성화 정도로 패턴의 유무를 추정할 수 있는가?

뉴런의 활성화 정도로 특징의 유무를 찾기 위해서는 두 종류의 뉴런이 필요하다.
바로 입력에 반응하는 뉴런($x \mapsto h $)과 뉴런의 반응을 해석하는 뉴런($h \mapsto c $)이다.

입력에 반응하는 뉴런

입력에 반응하는 뉴런은 입력 $x$ 에 대해서 주어진 특징이 존재하는 경우 반응하는 뉴런이다. 주어진 특징의 정도가 강하다면 뉴런은 강하게 반응하고, 특징이 존재하지 않는다면 반응하지 말아야 한다. 연산적으로 입력에 반응하는 뉴런은 활성화값 $h$를 내보내며 입력 정보는 컨셉을 지니고 있을수도, 없을수도 있다.

수식: 입력에 반응하는 뉴런

  • $f_{n}$ : 딥러닝 모델 $f$ 에 존재하는 $n$ 번째 뉴런.
  • $x$ : 컨셉을 가지거나, 가지지 못한 입력
  • $c(x)$ : $x$ 가 가지고 있는 컨셉의 유무나 수치적 정도, 혹은 컨셉에 대한 레이블
  • $h = f_{n}(x)$ : 입력 $x$ 로부터 $f_{n}$ 이 내보내는 활성화 정도

뉴런을 해석하는 뉴런

뉴런의 활성화에 반응하는 뉴런은 $h$을 입력으로 받아서 컨셉 $c$의 존재 여부를 예측한다. 만일 $h$를 입력으로 특징 $c$ 를 높은 확률로 예측할 수 있다면 그리고 뉴런이 활성화될 때 입력에 컨셉이 존재했다면, 해당 뉴런은 해당 컨셉을 지니고 있다고 판단할 수 있다 입력이 활성화되지 않았을 경우에, 역으로 주어진 특징이 존재했을 가능성도 있을지는 의문이다.. 따라서 뉴런에 반응하는 뉴런을 만들기 위해서는 학습이 필연적이며, 학습데이터와 테스트데이터를 구분해서 일반화가 되는지 확인해야 한다.

선형적으로 해석하는 뉴런

뉴런을 해석하는 뉴런의 가장 간단한 형태는 선형모델로 다음과 같이 적을 수 있다.

\[f_n = \sigma(wh) , ~~~~ \text{ where } {w},{h} \in \mathbb{R}\]

이 경우 단 하나의 weight $w$ 가 뉴런이며, 입력값으로 h를 받는다. $sigma$는 Sigmoid 함수로 0과 1사이의 값으로 맵핑함으로써, 0.5를 기준으로 존재의 유무를 파악할 수 있다.

선형적으로 많은 뉴런을 동시에 해석하는 뉴런

위에서 가정한 것은 하나의 뉴런에 대해서 값의 여부를 파악하는 것이었다. 그러나 우리는 굳이 한 뉴런에 대해서만 값을 해석할 필요는 없다. 다양한 뉴런들을 동시에 연결하여 해석이 가능한지 학습하는 것이다. 이 경우 해석하는 뉴런은 여러 개의 뉴런들로부터 값을 종합하여 해석을 내리게 되며, 많일 양의 상관관계가 존재하는 뉴런이 있다면 해당 뉴런과의 연결(시냅스)는 강한 양수로 학습될 것이다.

\[f_n = \sigma( \mathbf{w} \cdot \mathbf{h}), ~~~~ \text{ where } \mathbf{w},\mathbf{h} \in \mathbb{R}^d\]

한가지 재밌는 사실은 해당 뉴런은 하나의 특징에 대한 레이블을 학습하도록 반응하는 것이다. 그러나 뉴런들은 동일한 층에서 서로 독립적으로 정보처리를 하므로, 다음과 같은 형태로 $N$ 개의 특징의 유무를 동시에 학습할 수 있다.

\[f_{1,\cdots, N} = \sigma( W \cdot \mathbf{h}), ~~~~ \text{ where } \mathbf{w} \in \mathbb{R}^{N\times d} ,\mathbf{h} \in \mathbb{R}^d\]

비선형적인 해석

위에서 여러 개의 뉴런들의 정보를 종합하여 주어진 특징을 가지 뉴런을 선형적으로 찾을 수 있다고 하였다. 그러나 개별 뉴런의 해석으로는 값이 없지만, 만일 뉴런들의 아웃풋들간의 관계로 인해서 특징을 발견할 수도 있다. 이 경우 일반화된 함수 $g$ 로부터 특징을 구분하도록 학습하면 된다.

\[f_n = g(\mathbf{h}), ~~~~ \text{ where } \mathbf{w},\mathbf{h} \in \mathbb{R}^d, f_n : \mathbb{R}^d \rightarrow \mathbb{R}\]

위에서 선형적으로 해석하는 뉴런들을 동시에 학습할 수 있다고 하였는데, 비선형에서는 뉴런의 정보처리가 서로 독립적이지 않게 학습되므로 개별적으로 학습해야 한다.