늦깎이 공대생의 인공지능 연구실

[해석할 수 있는 기계학습(5-7)] 지역 대체모델(LIME) 본문

해석할 수 있는 기계학습/5. 모델 불특정성 방법

[해석할 수 있는 기계학습(5-7)] 지역 대체모델(LIME)

Justin T. 2020. 7. 11. 12:47

 

 지역 대체모델은 블랙박스 기계 학습 모델의 개별 예측을 설명하는 데 사용되는 해석할 수 있는 모델입니다. 지역적 해석 가능한 모델 불특정성 설명(Local interpretable model-agnostic explanations, LIME)은 저자들이 지역 대체모델의 구체적 구현을 제안하는 논문입니다. 대체모델은 기본 블랙박스 모델의 예측에 근사하게 학습됩니다. LIME은 전역 대체모델을 양성하는 대신 지역 대체모델을 학습시켜 개별 예측을 설명하는 데 주력합니다.

 

 이 아이디어는 상당히 직관적입니다. 먼저, 학습 데이터는 잊고 데이터 포인트를 입력하여 모델의 예측을 얻을 수 있는 블랙박스 모델만 있다고 상상해 봅시다. 여러분은 자신이 원하는 만큼 이 블랙박스를 자주 탐색할 수 있습니다. 여러분의 목표는 기계학습 모델이 왜 특정한 예측을 하게 되었는지 이해하는 것입다. LIME은 여러분들의 데이터의 변화를 기계학습 모델에 줄 때 예측값에 어떤 일이 일어나는지 테스트합니다. LIME은 순열 샘플과 블랙박스 모델의 해당 예측으로 구성된 새로운 데이터 집합을 생성합니다. 이 새 데이터 집합에서 LIME은 해석할 수 있는 모델을 학습하고, 이 모델은 샘플링된 인스턴스(instance)와 관심 있는 인스턴스(instance)의 근접성에 의해 가중치가 정해집니다. 해석할 수 있는 모델은 해석 가능한 모델(예를들어 Lasso 또는 의사결정 트리)의 어떤 것이든 될 수 있습니다. 학습된 모델은 기계 학습 모델 예측의 좋은 근사값여야 하지만, 좋은 전역 근사값이 될 필요는 없습니다. 이런 종류의 정확성을 지역 충실도(Local Fidelity)라고도 합니다.

 

 수학적으로 해석력 제약이 있는 지역 대체모델은 다음과 같이 표현할 수 있습니다.

$$\text{explanation}(x)=\arg\min_{g\in{}G}L(f,g,\pi_x)+\Omega(g)$$

 예를 들어, 인스턴스 x에 대한 설명 모델은 손실 L을 최소화하는 모델 g(예: 평균 제곱 오차)로, 원본 모델 f(예: xgboost 모델)의 예측과 설명이 얼마나 가까운지를 측정하는 반면, 모델 복잡성\(\Omega(g)\)은 낮게 유지(더 적은 특성들을 선호)됩니다. G는 가능한 설명의 집합체인데, 예를 들어 모든 가능한 선형 회귀 모델과 같은 것입니다. 근접도 측정치 \(\pi_x\)는 인스턴스 x의 주변이 얼마나 큰지를 설명을 고려하기 위해 정의합니다. 실제로 LIME은 손실 부분만 최적화합니다. 사용자는 예를 들어 선형 회귀 모델이 사용할 수 있는 최대 특성 수를 선택하여 복잡도를 결정해야 합니다.

 

 지역 대체모델을 학습시키는 다음과 같은 방법이 있습니다.

  • 블랙박스 예측값에 대한 설명을 확인하고자 하는 관심 인스턴스를 선택한다.
  • 데이터셋에 작은 변화를 준 다음 새로운 데이터 포인트에 대한 블랙박스 예측값은 얻는다.
  • 관심 인스턴스에 대한 근접도에 따라 새로운 가중치를 측정한다.
  • 변동 사항이 있는 데이터셋에 가중치가 적용된 해석할 수 있는 모델을 학습시킨다.
  • 지역 모델을 해석하여 예측에 대해 설명한다.

 예를 들어, R과 Python의 현재 구현에서는 선형 회귀 분석을 해석할 수 있는 대체모델로 선택할 수 있습니다. 미리 해석할 수 있는 모델에서 가질 특성 갯수인 K를 선택해야 합니다. K가 낮을수록 모델을 쉽게 해석할 수 있습니다. 높은 K는 잠재적으로 더 높은 충실도의 모델을 생산합니다. 정확히 K개의 특성을 가진 모델을 학습시키는 방법에는 여러 가지가 있습니다. 좋은 선택중 하나는 Lasso입니다. 정규화 매개변수 \(\lambda\)가 높은 Lasso 모델은 특성 없이 모델을 산출합니다. 천천히 감소하는 \(\lambda\)로 Lasso 모델을 차례로 다시 학습시킴으로써 특성은 0과 다른 가중 추정치를 얻습니다. 모델에 K개의 특성이 있으면 원하는 특성의 수에 도달하게 된 것입니다. 다른 전략은 특성의 전진 또는 후진 선택이다. 즉, 전체 모델(= 모든 특성이 포함된 모델) 또는 절편만 있는 모델로 시작한 다음 K개의 특성이 있는 모델에 도달할 때까지 추가 또는 제거 시 어떤 형상이 가장 큰 개선을 가져올지 테스트하십시오.

 

데이터의 변동사항은 어떻게 얻을 수 있을까요? 이는 텍스트, 이미지 또는 표 형식의 데이터일 수 있는 데이터 유형에 따라 달라집니다. 텍스트와 영상의 경우 단어나 슈퍼픽셀을 켜거나 끄는 것이 해답입니다. 표 형식의 데이터의 경우, LIME은 각 특성을 개별적으로 조금씩 바꾸어 특성에서 가져온 평균 및 표준 편차를 갖는 정규 분포로부터 도출하여 새로운 표본을 만듭니다.

 

표 데이터에 대한 LIME

 표 데이터(Tabular data)는 표에 있는 데이터로, 각 행은 하나의 인스턴스를 나타내고 각 열은 하나의 특성을 나타냅니다. LIME 샘플은 관심있는 인스턴스 주변에서 찾는 것이 아니라 학습 데이터의 중심에서 찾는 것으로 이는 문제가 있습니다. 그러나 이는 일부 샘플 포인트 예측에 대한 결과가 관심 데이터 포인트와 다를 확률을 증가시키고, LIME은 최소한 일부 설명을 학습할 수 있습니다.

 

샘플링 및 지역 모델 학습이 어떻게 동작하는지 시각적으로 설명하는 것이 가장 직관적일 것입니다.

표 데이터에 대한 LIME 알고리즘. A) 특성값 x1과 x2가 주어졌을 때의 랜덤 포레스트 예측을 나타고 있으며 어두운 부분은 1, 밝은 부분은 0을 나타냄. B) 관심있는 인스턴스(큰 점)과 정규 분포(작은 점)에서 추출된 데이터. C) 관심있는 인스턴스 인근의 점에 더 큰 가중치를 부여함 D) 가중치가 부여된 샘플로부터 지역적으로 학습된 모델의 분류를 격자 형식의 부호를 통해 나타냄. 흰색 선은 의사결정 경계(P(class=1) = 0.5)를 나타낸다.

 언제나 그렇듯이 악마는 디테일에 있다는 말이 있습니다. 어떤 지점을 중심으로 의미 있는 이웃을 정의하는 것은 다소 어렵습니다. LIME은 현재 지수 평활(exponential smoothing) 커널을 사용하여 주변을 정의하고 있습니다. 평활 커널은 두 개의 데이터 인스턴스를 취하여 근접 측정값을 반환하는 함수입니다. 커널 너비는 이웃의 크기를 결정합니다. 커널 너비가 작다는 것은 인스턴스가 지역 모델에 영향을 미치려면 매우 가까워야 한다는 것을 의미하며 커널 너비가 크다는 것은 멀리 떨어져 있는 인스턴스도 모델에 영향을 미친다는 것을 의미합니다. LIME의 Python 구현(line/lime_tabular.py) 지수 평활 커널(정상화된 데이터에 대해)을 사용하며 커널 너비는 학습 데이터의 열 수의 제곱근의 0.75배임을 알 수 있습니다. 단순한 한 줄의 코드처럼 보이지만, 마치 조상으로부터 받은 좋은 도자기 옆에 거실에 앉아 있는 코끼리와도 같습니다. 가장 큰 문제는 우리가 가장 좋은 커널이나 너비를 찾을 수 있는 좋은 방법이 없다는 것입니다. 0.75는 어디서 오는 걸까요? 특정 시나리오에서는 다음 그림과 같이 커널 너비를 변경하여 설명을 쉽게 되돌릴 수 있습니다.

 

인스턴스 x = 1.6의 예측에 대한 설명. 단일 특성에 따른 블랙박스 모델의 예측은 굵은 선으로 표시되며 데이터의 분포는 바코드 모양처럼 표시된다. 커널 너비가 다른 3개의 지역 대체모델에 의해 계산된다. 결과값인 선형 회귀 모델은 커널 너비에 따라 달라진다: 특성이 x = 1.6에 대해 음, 양 혹은 그 어떤 것도 아닌 무관계일까?

 위 그림은 오직 하나의 특성만을 나타냅니다. 고차원 특성공간에서는 더욱 심해집니다. 간격 측정이 모든 특성을 동등하게 취급해야 하는지도 매우 불분명합니다. 특성값 x1의 거리 단위가 특성값 x2의 한 단위와 동일할까요? 거리 측정은 상당히 임의적이며 다른 치수(일명 특성)의 거리는 전혀 비교가 되지 않을 수 있)의 거리는 전혀 비교가 되지 않을 수 있습니다.

 

예제

 구체적인 예를 들어봅시다. 여러분은 자전거 대여 데이터에서 예측 문제를 분류해봅니다. 시간이 지나면서 자전거 대여가 더 인기를 끌게 된 추세를 고려한 후, 대여되는 자전거의 수가 추세선을 상회할지, 하회할지를 특정한 날에 대해 알고자합니다. 또한 상회할 경우에는 평균 자전거 수보다 높지만 추세에 맞게 조정된 것으로 해석할 수 있습니다.

 

 먼저 분류 작업에서 100가지의 트리가 있는 랜덤 포레스트를 학습시킵니다. 날씨와 캘린더 정보를 기준으로 대여 자전거의 수가 추세 없는 평균을 상회하는 날은 언제일까요?

 

 설명은 두 가지 특성으로 만들어집니다. 서로 다른 예측 클래스를 가진 두 인스턴스에 대해 학습된 희박한 지역 선형 모델(sparse local linear models)의 결과는 다음과 같습니다.

자전거 대여 데이터셋의 두 가지 인스턴스에 대한 LIME 설명. 따뜻한 기온과 좋은 날씨 상황은 예측에 긍정적인 영향을 미친다. 가중치와 실제 특성값에 곱한 값인 x축은 특성 효과를 나타낸다.

 위 그래프에서 수치 특성값보다 카테고리 특성값을 해석하는 것이 더 쉽다는 것이 명확해진다. 한 가지 해결책은 수치 특성값을 이진값으로 분류하는 것이다.

텍스트에 대한 LIME

 텍스트에 대한 LIME은 표 데이터에 대한 LIME과 다릅니다. 데이터의 변동은 다르게 생성됩니다. 원본 텍스트에서 시작하여, 새로 생성된 텍스트는 원본 텍스트에서 임의로 단어를 삭제하여 생성됩니다. 데이터셋은 각 단어에 대한 이진 특성으로 표현됩다. 특성은 해당 단어가 포함된 경우 1이고 없는 경우 0이 됩니다.

예제

이 예제에서는 YouTube 댓글을 스팸인지 아닌지로 분류합니다.

 

 블랙박스 모델은 표로 구성된 텍스테에 대해 학습된 심층 의사결정 트리입니다. 각 댓글은 하나의 문서(= 하나의 행)이며 각 열은 주어진 단어의 발생 수입니다. 짧은 의사결정 트리는 이해하기 쉽지만, 이 경우 트리는 매우 깊습니다. 또한 이 트리 대신 반복되는 신경망이나 단어 임베딩(추상 벡터)에 대해 학습된 SVM된 SVM이 있을 수 있습니다. 이 데이터셋의 두 가지 댓글과 해당 클래스(스팸의 경우 1, 아닐 경우 0)를 살펴보기로 합시다.

  CONTENT CLASS
267 PSY is a good guy 0
173 For Christmas Song visit my channel! ;) 1

 다음 단계는 로컬 모델에 사용되는 데이터셋의 변형을 만들어냅니다. 예를 들어, 코멘트 중 일부의 변형은 다음과 같습니다.

  For Christmas Song visit my channel! ;) prob weight
2 1 0 1 1 0 0 1 0.17 0.57
3 0 1 1 1 1 0 1 0.17 0.71
4 1 0 0 1 1 1 1 0.99 0.71
5 1 0 1 1 1 1 1 0.99 0.86
6 0 1 1 1 0 0 1 0.17 0.57

 각 열은 문장의 한 단어에 해당합니다. 각 행은 변형이며, 1은 단어가 이 변형의 일부임을 의미하며, 0은 단어가 제거되었음을 의미합다. 변형 중 하나에 해당하는 문장은 "Christmas Song visit my ;)"입니다. "prob" 열은 각 문장 변형에 대한 스팸의 예측 확률을 나타냅니다. "weight" 열은 원래 문장에 대한 변동의 근접성을 1에서 제거된 단어의 비율을 뺀 값으로 계산하며, 예를 들어 7개 단어 중 1개를 제거했을 경우 그 근접성은 1 - 1/7 = 0.86이 됩니다.

 

 다음은 두 문장(스팸, 스팸 없음)이며, LIME 알고리즘에 의해 확인된 추정 지역 가중치는 다음과 같습니다.

case label_prob feature feature_weight
1 0.1701170 good 0.000000
1 0.1701170 a 0.000000
1 0.1701170 is 0.000000
2 0.9939024 channel! 6.180747
2 0.9939024 For 0.000000
2 0.9939024 ;) 0.000000

 "channel"이라는 단어는 스팸 발생 가능성이 높다는 것을 나타냅니다. 스팸이 아닌 댓글의 경우 어떤 단어가 제거되더라도 예측 클래스는 동일하게 유지되기 때문에 0이 아닌 가중치를 추정하지 않았음을 알 수 있습니다.

 

이미지에 대한 LIME

 이미지의 LIME은 표 데이터와 텍스트의 LIME과 다르게 동작합니다. 직관적으로, 한 개 이상의 픽셀이 한 클래스에 기여하기 때문에 개별 픽셀을 조금씩 바꾸는 것은 그다지 타당하지 않을 것입니다. 개별 픽셀을 임의로 변경한다고 해서 예측이 크게 달라지지는 않을 것이기 때문입니다. 따라서 이미지를 "슈퍼픽셀"로 분할하고 슈퍼픽셀을 끄거나 켜서 이미지의 변형이 만들어집니다. 슈퍼픽셀은 비슷한 색상으로 서로 연결된 픽셀이며 각 픽셀을 회색과 같이 사용자 정의 색상으로 교체하면 끌 수 있습니다. 사용자는 또한 각 순열에서 슈퍼픽셀을 끌 확률을 지정할 수 있습니다.

예제

 이 예제에서는 Inception V3 neural network에 의해 만들어진 분류를 살펴보고자 합니다. 사용된 이미지는 구운 빵 몇 개를 나타내고 있는데, 그릇 안에 있습니다. 이미지당 여러 개의 예측 Label을 가질 수 있기 때문에(확률에 따라 정렬됨) 상단 Label을 설명할 수 있습니다. 최상위 예측은 확률 77%인 '베이글'이, 확률 4%인 '딸기'가 예측되었습니다. 아래 이미지는 "베이글"과 "딸기"에 대한 LIME의 설명을 나타냅니다. 설명은 이미지 샘플에 직접 표시할 수 있습니다. 녹색은 이미지의 이 부분이 Label의 확률을 증가시키고 빨간색은 감소를 의미합니다.

왼쪽: 빵 한 그릇의 이미지. 가운데·오른쪽: 구글 Inception V3 neural network에서 만든 이미지 분류에 대한 상위 2개 클래스(베이글, 딸기)에 대한 LIME 설명.

 "베이글"에 대한 예측과 설명은 매우 타당합니다. 비록 예측이 틀렸다 하더라도, 이들은 분명히 가운데 구멍이 없기 때문에 사실 베이글은 아니지요.

장점

 기초적인 기계 학습 모델을 교체하더라도, 설명에는 여전히 동일한 지역 해석할 수 있는 모델을 사용할 수 있습니다. 설명을 보는 사람들이 의사결정 트리를 가장 잘 이해한다고 가정해봅니다. 지역 대체모델을 사용하기 때문에, 실제로 예측을 위해 의사결정 트리를 사용할 필요 없이 의사결정 트리를 설명으로 사용합니다. 예를 들어 SVM을 사용할 수 있습니다. xgboost 모델이 더 잘 작동하는 것으로 판명되면 SVM을 교체하고 여전히 예측을 설명하는 의사결정 트리로 사용할 수 있습니다.

 

 지역 대체모델은 해석할 수 있는 모델을 훈련시키고 해석할 수 있는 문맥과 경험으로부터 이익을 얻습니다.

 

 Lasso나 짧은 트리를 사용할 때, 결과적인 설명은 짧고(=선택적) 대조가 될 수 있습니다. 그래서 인간 친화적 설명을 합니다. 그래서 설명을 받는 사람이 비전문가거나 시간이 거의 없는 사람일 때 LIME이 더 많이 보이는 것이다. 그것은 완전한 귀속에는 충분하지 않기 때문에, 여러분이 예측을 완전히 설명해야 할 수 있는 적합성 시나리오에서는 LIME이 보이지 않습니다. 또한 기계 학습 모델을 디버깅하는 경우에도 몇 가지 이유 대신에 모든 이유를 갖는 것이 유용합니다.

 

 LIME은 표 데이터, 텍스트 및 영상에 사용되는 몇 안 되는 방법 중 하나입니다.

 

 충실도(fidelity) 측정(해석할 수 있는 모델이 블랙박스 예측에 얼마나 근접한지)을 통해 데이터 인스턴스의 인접 지역에서 블랙박스 예측을 설명하는 데 있어 해석할 수 있는 모델이 얼마나 신뢰할 수 있는지 알 수 있다.

 

 라임은 Python(LIME 라이브러리)과 R(LIME 패키지iml 패키지)에서 구현되어 사용이 매우 용이합니다.

 

 지역 대체모델로 작성된 설명은 원래 모델이 학습한 것이 아닌 다른 (해석할 수 있는) 특징을 사용할 수 있습니다. 물론 이러한 해석할 수 있는 특성은 데이터 인스턴스에서 파생되어야 합니다. 텍스트 분류기는 특성으로 추상적인 단어 임베딩에 의존할 수 있지만, 설명은 문장의 단어의 유무에 근거할 수 있습니다. 회귀 모델은 일부 속성의 해석 불가능한 변환에 의존할 수 있지만, 설명은 원래 속성으로 만들 수 있습니다. 예를 들어, 회귀 모델은 설문조사에 대한 답변의 주요 구성요소 분석(PCA) 구성요소에 대해 학습할 수 있지만, LIME은 원래 조사 질문에 대해 학습할 수 있습니다. 해석할 수 있는 특성을 LIME에 사용하는 것은 다른 방법보다 큰 장점이 될 수 있으며, 특히 모델을 해석 불가능한 특성으로 학습할 때 더욱 그러합니다.

단점

 표 데이터와 함께 LIME을 사용할 때 이웃의 정확한 정의는 매우 크고 해결되지 못한 문제입니다. 이는 왠지 LIME이 가장 큰 문제고 이는 LIME만을 매우 주의해서 사용하도록 추천해드리는 이유입니다. 각 응용 프로그램에 대해 다른 커널 설정을 시도하고 설명이 적절한지 직접 확인하셔야 합니다. 안타깝지만, 이는 좋은 커널 폭을 찾기 위해 드릴 수 있는 최선의 조언입니다.

 샘플링은 현재 LIME 구현에서 개선될 수 있습니다. 데이터 포인트는 특성 간의 상관관계를 무시한 채 가우스 분포로부터 샘플링됩니다. 이는 지역 설명 모델을 학습하는 데 사용될 수 있는 예상하지 못한 데이터 포인트로 이어질 수 있습니다.

 설명 모델의 복잡성은 미리 정의해야 합니다. 이는 단지 작은 불만일 뿐인데, 결국 사용자는 항상 충실도와 희박성 사이의 절충점을 정의해야 하기 때문입니다.

 또 다른 정말 큰 문제는 설명의 불안정성 때문입니다. 이 논문에서 저자들은 매우 가까운 두 가지 점에 대한 설명이 시뮬레이션 환경에서 크게 다르다는 것을 보여주었습니다. 또, 경험상, 표본 추출 과정을 반복한다면, 나오는 탐색은 달라질 수 있습니다. 불안정하다는 것은 설명을 신뢰하기 어렵다는 뜻이며, 매우 비판적이어야 합니다.

결론: 라임(LIME)을 구체적으로 구현한 지역 대체모델은 전망이 매우 밝습니다. 그러나 그 방법은 아직 개발 단계에 있고 안전하게 적용되기 위해서는 많은 문제들이 해결되어야만 합니다.

 

참고자료: https://christophm.github.io/interpretable-ml-book/lime.html

 

5.7 Local Surrogate (LIME) | Interpretable Machine Learning

Machine learning algorithms usually operate as black boxes and it is unclear how they derived a certain decision. This book is a guide for practitioners to make machine learning decisions interpretable.

christophm.github.io

 

반응형