1day_1paper
1day_1paper copied to clipboard
[71] SVCCA: Singular Vector Canonical Correlation Analysis for Deep Learning Dynamics and Interpretability
layer 별 유사도를 측정하자! 이를 통해 네트워크가 overparameterize 된 것은 아닌지, 학습은 어떻게 진행되는지 등을 볼 수 있다. SV 는 Singular Vector decomposition 을 해서 붙었다. 살펴보자.
Contributions
- layer에 학습된 representation 의 차원과 뉴런 수는 동일한가? ==> 아니다.
- trained net 에서 fraction 만 SVCCA로 잘 선택해서 돌려봐도 잘 돌아간다.
- 학습은 어떻게 진행될까? ==> bottom up 방식으로 진행되더라
- SVCCA 를 conv 에서 고속으로 쓸 수 있는 방법 제안 (with discrete fourier transform)
- architecture 는 언제 class 별 구분을 하기 시작할까? SVCCA 로 class 별 semantic 정보들을 뽑아서 이를 탐구해 본다.
SVCCA
-
Input: SVCCA 는 2개의 neuron set 들을 input으로 받는다. (typically layers of a network)
-
Step1: subspace에 대해 SVD 를 수행하고 subsubspace 들을 얻는다.
- original subspace l1, l2 의 가장 중요한 direction 을 뽑아낸 느낌
- original subspace l1, l2 의 가장 중요한 direction 을 뽑아낸 느낌
-
Step2: subsubspace l`1, l`2 에 대해 Canonical Correlation similarity 를 계산한다.
-
Output: 이를 통해 direction pairs, correlation 값을 계산해 낼 수 있다.
SVCCA 테스트를 위해 4layer dense model 로 시작한다.
(a) 학습 대상 네트워크는 2개 (다른 initialize), 회색 칠한 layer 대상으로 (b), (c), (d) 뽑음
(b) 데이터셋 별 activation 시각화
(c) Top SVD direction
(d) Top SVCCA direction
재밌게도 SVCCA 값은 상당히 비슷하다.
세부적인 내용은 생략.
그래서 어떻게 쓰냐?
layer 별 output 비교에 특화되었다고 보면 된다.
trained model 과 training 중인 모델의 layer 를 갖고 SVCCA 를 통해 similarity 를 뽑아낸 그림이다.
네트워크는 bottom up 방식으로 초기 layer 들이 먼저 학습되고 나서 뒷 레이어들이 학습되더라.