늦깎이 공대생의 인공지능 연구실
[해석할 수 있는 기계학습(7-3)] 개념 탐지(Detecting Concepts) 본문
지금까지 특성 속성을 통해 블랙박스 모델을 설명하기 위해 많은 방법들을 다루어 보았습니다. 그러나 몇가지 방법의 경우 특성 기반 접근으로 인한 한계를 가지고 있습니다. 첫째, 특성은 해석력의 관점에서 반드시 사용자 친화적이지만은 않습니다. 예를 들어, 이미지 안의 단일 픽섹의 중요도는 보통 의미 있는 해석을 전달하지 않습니다. 둘째, 특성 기반 설명에 대한 표현은 특성의 갯수에 제약을 받습니다.
개념 기반의 접근은 방금 언급하였던 두 가지 한계에 대해 설명합니다. 개념은 색, 객체나 심지어 어떤 아이디어 같은 어떠한 추상이 될 수 있습니다. 비록 신경망이 명시적으로 주어진 개념을 가지고 학습을 하지 않을 수 있는 사용자 정의 개념을 감안하였을 때, 개념 기반 접근법은 신경망에 의해 학습된 잠재 공간 안에 포함된 개념을 감지합니다. 즉, 이 개념기반의 접근 방식은 신경망의 특성 공간에 의해 제한을 받지 않는 설명을 생산할 수 있습니다.
이 포스팅에서는 Kim et al.의 TCAV(Testing with Concept Activation Vectors) 논문을 중점적으로 다루겠습니다.
TCAV: 개념 활성화 벡터 테스트
TCAV는 신경망에 대한 전역적인 설명을 생성하기 위해 제안되고 있지만 이론적으로는 편미분을 취할 수 있는 모든 모델에 대해서도 동작해야 합니다. 주어진 개념에 대해 TCAV는 특정 클래스에 대한 모델의 예측에 미치는 개념의 영향 범위를 측정합니다. 예를 들어 TCAV는 "줄무늬" 개념이 이미지를 "얼룩말"로 분류하는 모델에 어떤 영향을 미치는지와 같은 질문에 대답할 수 있습니다. TCAV는 개념과 클래스 간의 관계를 설명하므로, 하나의 예측치를 설명하는 대신 모델의 전반적인 행동에 대한 유용한 전역적인 해석을 제공합니다.
개념 활성화 벡터(CAV)
CAV는 단순히 신경망 계층의 활성화 공간에서 개념을 일반화하는 수치 표현입니다. \(v_l^C\)로 나타내는는 CAV는 개념 \(C\)와 신경망 계층 \(l\)에 따라 달라지며, 여기서 \(l\)은 모델의 병목 현상(Bottleneck)이라고도 합니다. 개념 \(C\)의 CAV를 계산하기 위해서는 먼저 \(C\)를 나타내는 개념 데이터셋과 임의 데이터로 구성된 랜덤 데이터셋의 두 가지 데이터셋을 준비해야 합니다. 예를 들어, "줄무늬" 개념을 정의하기 위해 줄무늬가 그려진 개체의 이미지를 개념 데이터 집합으로 수집할 수 있으며, 임의 데이터 집합은 줄무늬가 없는 임의의 이미지 그룹입니다. 다음으로, 숨겨진 레이어 \(l\)을 대상으로 개념 집합에서 생성된 활성화와 랜덤 집합에서 생성된 활성화를 구분하는 이진 분류기를 학습합니다. 이 학습된 이진 분류기의 계수 벡터는 CAV \(v_l^C\)입니다. 실제로 SVM 또는 로지스틱 회귀 모형을 이진 분류자로 사용할 수 있습니다. 마지막으로, 이미지 입력 \(x\)가 주어졌을 때 단위 CAV 방향으로 예측의 편미분을 계산하여 "개념 민감도(Conceptual Sensibility)"를 측정할 수 있습니다.
$$S_{C,k,l}(x)=\nabla h_{l,k}(f_l(x))\cdot v_l^C$$
여기서 \(f_l\)은 입력 \(x\)를 계층 \(l\)의 활성화 벡터를 사상하고 \(h_{l,k}\)는 활성화 벡터를 클래스 \(k\)의 로짓 출력에 매핑합니다.
수학적으로, \(S_{C,k,l}(x)\)의 부호는 \(h_{l,k}(f_l(x))\)및 \(v_l^C\)사이의 각도에 따라서만 달라집니다. 각도가 90도보다 크면 \(S_{C,k,l}(x)\)가 양수이고 각도가 90도보다 작으면 \(S_{C,k,l}(x)\)가 음수입니다. 기울기 \(\nabla h_{l,k}\)는 출력을 가장 빠르게 최대화하는 방향을 가리키기 때문에 개념 민감도 \(S_{C,k,l}\)은 \(v_l^C\)가 \(h_{l,k}\)를 최대화하는 유사한 방향을 가리키는지 여부를 직관적으로 나타냅니다. 따라서 \(S_{C,k,l}(x)>0\)은 모델 \(C\)가 \(x\)를 클래스 \(k\)로 분류하도록 권장하는 개념으로 해석할 수 있습니다.
CAV를 사용한 테스트(TCAV)
방금전에 우리는 단일 데이터 포인트의 개념 민감도를 계산하는 방법을 배웠습니다. 하지만 우리의 목표는 전체 클래스의 전체적인 개념 민감도를 나타내는 전역적인 설명을 만드는 것입니다. TCAV가 수행하는 매우 간단한 접근법은 양의 개념 민감도 입력량과 클래스의 입력 수의 비율을 계산하는 것입니다.
$$TCAV_{Q_{C,k,l}}=\frac{|{x\in X_k:S_{C,k,l}(x)>0}|}{|X_k|}$$
예를 들어, 우리는 이미지를 "얼룩말"로 분류하면서 "줄무늬"라는 개념이 모델에 어떤 영향을 미치는지 관심이 있습니다. 우리는 "얼룩말"로 레이블이 붙은 데이터를 수집하고 각 입력 이미지에 대한 개념 민감도를 계산합니다. 그런 다음 클래스가 "얼룩말"인 "줄무니" 개념의 TCAV 점수는 양의 개념 민감도를 가진 "얼룩말" 이미지의 수를 "얼룩말" 이미지의 총 수로 나눈 값입니다. 즉, $$TCAV_{Q_{"줄무늬","얼룩말",l}}$$이 0.8인 경우 "줄무늬" 클래스에 대한 예측의 80%가 "얼룩말" 개념에 의해 양의값의 영향을 받는다는 것을 나타냅니다.
TCAV의 원리는 좋아 보이는데, 과연 TCAV 점수가 의미 있는지 어떻게 알 수 있을까요? 결국 CAV는 사용자가 선택한 개념과 랜덤 데이터셋에 의해 학습됩니다. CAV를 학습하는 데 사용되는 데이터셋이 잘못된 경우, 설명은 오해를 불러일으키고 무용지물이 될 수 있습니다. 따라서 TCAV의 신뢰성을 높이기 위해 간단한 통계적 유의성 테스트를 수행합니다. 즉, 하나의 CAV만 학습하는 대신 개념 데이터셋을 동일하게 유지하면서 서로 다른 랜덤 데이터셋을 사용하여 여러 CAV를 학습합니다. 의미 있는 개념은 일관된 TCAV 점수로 CAV를 생성해야 합니다. 자세한 테스트 절차는 다음과 같습니다.
- \(N\)개의 랜덤 데이터셋을 모읍니다. 이때 \(N\)는 최소 10개를 권장합니다.
- 개념 데이터셋을 고정한 다음 각 \(N\)개의 랜덤 데이터셋을 사용하여 TCAV를 계산합니다.
- 랜덤 CAV에 의해 생성된 다른 \(N\) TCAV 점수에 대해 \(N\) TCAV 점수에 양면 t-test를 적용합니다. 랜덤 CAV는 랜덤 데이터셋을 개념 데이터셋으로 선택하여 얻을 수 있습니다.
여러 가설이 있는 경우 여기에 다중 검정 보정법(Multiple Testing Corection)을 적용하는 것이 좋습니다. 원본 논문에서는 본페로니 교정(Bonferroni Correction)을 사용하며, 여기서 가설의 수는 테스트중인 개념의 수와 같습니다.
예제
TCAV GitHub에서 사용할 수 있는 예를 살펴보겠습니다. 이전에 사용했던 "얼룩말" 클래스 예제를 계속 진행하면서, 이 예제는 "줄무늬", "지그재그" 및 "점" 개념의 TCAV 점수 결과를 보여줍니다. 우리가 사용하고 있는 이미지 분류기는 ImageNet 데이터를 사용하여 학습된 합성곱 신경망인 Inception V3입니다. 각 개념 또는 랜덤 데이터셋에는 50개의 이미지가 포함되어 있으며 유의 수준(Significance Level)이 0.05인 통계적 유의성 테스트에 10개의 랜덤 데이터셋을 사용하고 있습니다. 랜덤 데이터셋이 몇 개 없기 때문에 본페로니 교정은 사용하지 않지만 잘못된 검색을 방지하기 위해 실제로 수정 내용을 추가하는 것이 좋습니다.
실제로는 각 데이터셋에 50개 이상의 이미지를 사용하여 더 나은 CAV를 학습하는 것이 좋습니다. 또한 통계적 유의성 테스트를 더 잘 수행하기 위해 10개 이상의 랜덤 데이터셋을 사용할 수도 있습니다. 또한 TCAV를 여러 병목 현상에 적용하여 보다 철저하게 관찰할 수 있습니다.
장점
사용자는 관심 있는 개념을 학습하기 위한 데이터만 수집하면 되기 때문에 TCAV는 사용자가 기계 학습 전문 지식을 갖추지 않아도 됩니다. 따라서 TCAV는 도메인 전문가가 복잡한 신경망 모델을 평가하는 데 매우 유용합니다.
TCAV의 또 다른 특징은 특성 속성을 넘어 TCAV의 설명으로 사용자의 직접 개조(Customizability)가 가능하다는 점입니다. 사용자는 개념 데이터셋으로 개념을 정의할 수 있는 한 모든 개념을 조사할 수 있습니다. 즉, 사용자는 자신의 필요에 따라 설명의 복잡성과 해석력 사이의 균형을 제어할 수 있습니다. 도메인 전문가가 문제와 개념을 잘 이해한다면, 보다 복잡한 데이터를 사용하여 개념 데이터셋을 구체화하여 보다 세밀한 설명을 만들 수 있습니다.
마지막으로 TCAV는 개념을 모든 클래스와 연관짓는 전역 설명(Global Explanations)을 생성합니다. 전역 설명은 일반적으로 지역 설명(Local Explanations)으로는 수행할 수 없는 전체 모델이 제대로 동작하는지 여부를 알려줍니다. 따라서 TCAV를 사용하여 모델 학습 중에 발생할 수 있는 잠재적인 "결함" 또는 "사각지대"를 식별할 수 있습니다. 이러한 "결함" 또는 "사각지대"가 발생하는 것은 아마도 여러분의 모델이 개념의 가중치를 부적절하게 설정하였기 때문일겁니다. 사용자가 학습되지 않은 개념을 식별할 수 있는 경우 해당 지식을 사용하여 모델을 개선할 수 있습니다. "얼룩말"을 높은 정확도로 예측하는 분류기가 있다고 가정해 보겠습니다. 그러나 TCAV는 분류기가 "줄무늬" 대신 "점"이라는 개념에 더 민감하다는 것을 보여줍니다. 이는 분류기가 불균형 데이터셋에 의해 우연히 학습되었다는 것을 나타낼 수 있으며, 이를 통해 "줄무늬 얼룩말" 이미지를 더 추가하거나 "점무늬 얼룩말" 이미지를 학습 데이터셋에 덜 추가하여 모델을 개선할 수 있습니다.
단점
TCAV는 얕은 신경망에서 성능이 나쁠 수 있습니다. 많은 논문들이 제안했듯이, 더 깊은 계층의 개념들은 더 분리하기 쉽습니다. 신경망이 너무 얕으면, 신경망 계층은 TCAV가 적용되지 않도록 개념을 명확하게 구분하지 못할 수 있습니다.
TCAV에는 개념 데이터셋에 대한 추가 주석이 필요하므로 레이블이 지정된 데이터가 준비되지 않은 작업에는 매우 많은 비용이 소요될 수 있습니다. 주석 작성 비용이 많이 들 때 TCAV에 대한 가능한 대안은 ACE를 사용하는 것입니다.
TCAV는 커스터마이징이 가능하기 때문에 환영을 받지만, 너무 추상적이거나 일반적인 개념에는 적용하기 어렵습니다. 이는 주로 TCAV가 해당 개념 데이터셋으로 개념을 설명하기 때문입니다. "행복"과 같이 더 추상적이거나 일반적인 개념일수록, 해당 개념에 대한 CAV를 교육하기 위해 더 많은 데이터가 필요합니다.
TCAV는 이미지 데이터에 적용하는 데 인기가 있지만, 텍스트 데이터와 표 형식의 데이터에는 상대적으로 응용이 제한적입니다.
추가: 다른 개념 기반 접근법
최근 개념 기반 접근법이 인기를 끌고 있으며, 개념의 활용에 영감을 받은 새로운 방법들이 많이 있습니다. 여기서는 이러한 방법에 대해 간략히 언급하고자 하며, 관심이 있으시다면 해당 논문을 읽어보시기 바랍니다.
ACE(Automated Concept-based Description)은 TCAV의 자동화된 버전으로 볼 수 있습니다. ACE는 클래스의 이미지셋을 통과하고 이미지 세그먼트의 클러스터링을 기반으로 자동으로 개념을 생성합니다.
개념 병목 현상 모델(Concept Bottleneck Models, CBM)은 본질적으로 해석할 수 있는 신경망입니다. CBM은 인코더-디코더 모델과 유사하며, CBM의 전반부는 입력을 개념에 매핑하고 후반부는 매핑된 개념을 사용하여 모델 출력을 예측합니다. 병목 지점 층의 각 뉴런 활성화는 개념의 중요도를 나타냅니다. 또한 사용자는 병목 지점의 뉴런 활성화에 개입하여 모델에 대한 반사실적 설명을 생성할 수 있습니다.
개념 화이트닝(Concept Whitening, CW)은 본질적으로 해석할 수 있는 이미지 분류기를 생성하기 위한 또 다른 접근 방식입니다. CW를 사용하려면 배치 정규화 계층과 같은 정규화 계층을 CW 계층으로 대체하기만 하면 됩니다. 따라서 CW는 사용자가 모델 성능을 유지하면서 미리 훈련된 이미지 분류기를 본질적으로 해석할 수 있도록 변환하고자 할 때 매우 유용합니다. CW는 화이트닝 변환에서 영감을 많이 받은 방법이며, CW에 대해 더 알고 싶다면 화이트닝 변환의 이면에 있는 수학에 대해 공부하기를 강력히 추천합니다.
소프트웨어
TCAV의 공식 파이썬 라이브러리는 텐서플로우를 요구합니다만, 온라인에서 다른 버전들이 구현되어 있습니다. 사용하기 쉽게 Jupyter notebook으로 구현된 자료는 tensorflow/tcav에서 구해보실 수 있습니다.
참고자료: https://christophm.github.io/interpretable-ml-book/detecting-concepts.html
'해석할 수 있는 기계학습 > 7. 신경망 해석' 카테고리의 다른 글
[해석할 수 있는 기계학습(7-2)]픽셀 속성 - Pixel Attribution(중요영역 지도 - Saliency Maps) (0) | 2021.07.12 |
---|---|
[해석할 수 있는 기계학습(7-1)]학습된 특성(Learned Features) (0) | 2021.06.21 |
[해석할 수 있는 기계학습(7-0)]신경망 해석(Neural Network Interpretation) (0) | 2021.05.17 |