Computer/Machine Learning

아이디어: partially connected neural network

Novelism 2022. 10. 23. 12:40

며칠 전 갑자기 다른 사람과 대화하다가 최근 많이 사용되는 네트워크 이외에 다른 새로운것이 더 나올 수 있을까 라는 주제가 떠올랐습니다. 그래서 그 다음날 좀 생각하다가 다음 같은 아이디어가 떠올랐습니다. 
partially connected neural network (PCNN) 에 대한 새로운 가능성 입니다. 

 

배경설명: 

artificial neural network 에서 많이 사용되는 네트워크 구조는 

fully connected neural network (FCNN)

recurrent neural network (RNN; LSTM, GRU 등)

convolutional neural network (CNN; 1D, 2D, 3D CNN 등)

graph convolutional neural network (GCN, MPNN 등 )

attention based neural network (transformer, bert 등)

 이 있습니다. 

이들은 데이터의 구조와 밀접한 관련이 있습니다. 

 

RNN 계열은 시계열 데이터나 문장 같은 1차원 데이터에서 많이 사용되고,

CNN은 1차원 (시계열, 문장 등), 2차원 (이미지), 3차원 (3D 구조체) 에서 많이 활용됩니다.

CNN은 이미지 등에서 이웃한 픽셀  사이의 연관성이 높다는 것에서 착안합니다. 

FCNN을 사용하는 대신, PCNN을 사용합니다. 필터와 유사한 형태로,weight parameter들을 공유합니다. 

이미지 픽셀에서 예를 들면, 

초반 레이어들은 3*3 같은 작은 픽셀들로 물체들 사이의 경계를 식별하는 기능을 하고

후반 레이어로 갈수록 필터들은 사람 얼굴에서 눈, 코 입, 귀 등의 부분을 식별하는 기능을 합니다. 

 이런 객체들은 이미지의 어느 부분에서든 나타날 수 있기에, 전체 이미지의 어느 부분에든 동일한 필터를 적용하여도 별 문제가 없습니다. 그러기에 weight parameter 를 공유할 수 있습니다. 

CNN을 사용하면 FCNN에 비해서 weight parameter의 수를 획기적으로 줄일 수 있습니다.

 다만, local filter이기에 long-range interaction 같은 것을 잘 다루지는 못합니다.

이부분은 attention 과 결합하면 향상될 수 있습니다. 

GCN도 CNN과 유사한데, 다만 1,2,3차원 같은 연속된 데이터가 아니라, graph 형태에 대한 데이터입니다.

 neural network 구조를 graph network 의 구조와 일치하게 만듭니다.

즉, 각 node feature에 대해서 edge 로 연결된 데이터들 사이에서만 neural network 의 연결을 하고, 그 외는 연결하지 않습니다. 여기서도 CNN과 동일하게 weight parameter가 공유됩니다. 

 

 이런 모델이 잘 작동하는 이유로 추론해볼 수 있는점은

 weight parameter 사이의 강도가 데이터의 상관관계와 연관이 있다는 것입니다. 

 각 데이터들 사이의 연관성이 높은 것들은 weight를 주고, 그렇지 않은 곳에선 weight를 제외하면, 

weight 파라미터를 효율적으로 줄일 수 있습니다.

 

 여기서 몇가지 가설을 더 제기할 수 있습니다. 아마도 FCNN을 학습시켜도, 실제 weight 파라미터들은 CNN과 유사한 형태로..

 즉, 입력 데이터에서 서로 근처 픽셀에서 온 데이터들 사이의 weight들은 높은 값을 가지지만, 그렇지 않은 곳은 상대적으로 낮은 값을 가질 것이라는 것이 있습니다. 

만약 그렇다면, 애초에 FCNN을 사용하지 않고, PCNN을 사용하되, 데이터 사이의 상관성이 높은 것들끼리 연결하고, 나머지는 제거하는 네트워크를 만들면 이것이 동작할 수도 있다는 것입니다.

 

 사실 아이디어는 CNN, GCN과 동일합니다. 다만 이런 방법들은 데이터의 구조가  1D, 2D, 3D 등으로 공간적인 의미를 가질 때나, 그래프형태일 때는 사용할 수 있지만, 이러한 구조가 아닌 데이터에 대해선 활용하지 못합니다. 

 그런데 제가 생각한 아이디어에선 굳이 저런 형태의 데이터가 아닐지라도, 입력 채널별 데이터의 연관성을 파악하고, 그것을 이용해서 네트워크 구조를 만들 수 있습니다.

 

 아무튼... 이 컨셉이 타당할지 궁금해서 MNIST로 테스트를 했습니다. 

 일단 MNIST의 이미지를 1차원으로 쭉 폈습니다. 차원은 28*28 입니다.

그리고 모든 샘플에서 0값만을 주는 채널들은 삭제했습니다. 그러면 차원이 조금 줄어들어서 대충 700정도가 됩니다. 

 

첫번째 그림은, 각 채널별로 입력값의 상관관계를(피어슨 상관계수) 그린 것입니다. 두번째 그림은 MNIST를 FCNN으로 학습시키고, 그중 첫번째 layer에 대한 weight paramer 들에 대해서 채널별 상관관계를 그린 것입니다.그리고 세번째 그림은 앞의 둘을 곱한 것입니다.

입력값에서나, weight parameter에서나 상하좌우 이웃, 2번째 이웃 픽셀에 해당되는 데이터 사이의 상관성이 높습니다.

 3번째 그림에서 이부분이 극명하게 나타납니다. convolutaion filter에서도 실제로 값을 가지는 영역들은 저 영역들만입니다. (물론 weight parameter의 공유 여부는 좀 차이가 있지만...) 

실제 weight parameter들의 상관성이, 데이터의 상관성과 관련이 높습니다. 

(대각 성분의 근처만을 보면, FCNN에서도 CNN과 유사한 형태로 데이터가 학습되는 것이 최적이라는 것이라 해석할 수 있습니다. )

 그러면 처음부터 다른 연결들은 다 끊어버리고, 데이터 사이의 상관성이 높은 연결만을 허용하도록 네트워크 구조를 만들면 학습 파라미터를 줄이면서도 동등한 성능을 낼 수 있을 가능성이 있습니다. 

 

뭐 어떻게 연구할지는 거의 다 생각하긴 했는데, 시간과 인력이 좀 부족하네요.