티스토리 뷰
LIME (Local Interpretable Model-agnostic Explanation)
nhrmary 2018. 1. 13. 10:22ML을 실무에 적용하다 보면 만나게 되는 도전과제 중 하나는 모형이 내놓는 결과에 대한 해석이다. 아무리 예측력이 좋은 ML 모형이라고 하더라도 실제 액션을 취하려면 왜 이런 예측 과정에 대한 이해가 필수적이다. 모형의 동작 방식에 대한 이해가 가능해야 사용자 입장에서 그 결과를 “신뢰”하고 사용할 수 있다. 또한 모델에 대한 해석은 모델을 만드는 과정에서도 매우 중요한 정보이다. 모델을 만드는 분석가나 엔지니어의 입장에서도 모형이 왜 이렇게 작동하는지 이해해야 모델을 배포하기 이전에 결함을 인지하고 개선할 수 있다.
문제는 대부분의(특히 예측 성능이 좋은) ML 모형이 Black box라는 점에 있다. 지난 몇년간 다양한 분야에서 ML을 폭넓게 활용하려는 시도들과 함께 이러한 문제를 해결하기 위한 접근법이 머신러닝, 인공지능 분야에서도 많이 논의되고 있다. 관련하여 많이 언급되는 방법론인 LIME(Locally Interpretable Model-agnostic Explainations)을 제안한 논문인 “why should I trust you?” Explaining the predictions of any classifier을 읽고 내용을 정리해본다.
INTRODUCTION
논문은 모형에 대한 “신뢰”를 두가지 정의로 나누어 설명한다.
Trusting a prediction
개별 예측을 믿고 이를 바탕으로 행동을 취하는 것을 말한다.
개별 예측에 대한 신뢰는 예측값에 기반한 의사결정 문제에서 매우 중요한 요소이다. 예컨대 의료 진단을 하거나 테러범을 탐지하는 문제에서 예측 과정에 대한 이해 없이 블랙박스 자체를 그대로 받아들여 판단하는 것은 매우 위험하다. 진단을 내리는데 결정적인 역할을 한 증상이 무엇인지, 어떤 특징이 테러리스트라고 판단하는데 영향을 주었는지를 알 수있다면 사용자가 결과를 신뢰할지 신뢰하지 않을지 판단하는데 도움이 될 수 있다.
Trusting a model
모형 전반에 대한 신뢰를 말한다.
모델을 production에 배포하여 자동화하기 전에 Real-world 데이터에도 잘 작동하는지 평가하는 것은 매우 중요하다. 머신러닝 모델을 만들때 이를 위해서 일반적으로 검증 데이터셋에 대한 Accuracy Metric을 보는 접근법이 널리 사용된다. 이 방법은 유용하긴 하지만 실제 시스템에 적용하여 실데이터의 예측값을 산출했을 때 보다 정확도를 과대 측정하는 경우가 많다.
참고로 아래 항목들은 잘못된 모델 평가를 일으키는 대표적인 원인들이다.
- Data leakage : 의도하지 않은 잘못된 시그널이 훈련/검증 데이터 셋에 포함되는 경우. 예를 들어 환자의 id와 발병여부는 매우 높은 상관관계를 가지지만 의미가 없는 잘못된 데이터임. 이것이 실수로 데이터셋에 포함된다면 모델은 의미 없는 패턴을 학습하게 됨.
- Data shift : 학습 데이터 셋과 테스트 데이터셋의 특성이 다른 경우
위의 2가지 “신뢰” 문제를 해결하기 위해서 논문은 2가지 방법론을 제안한다.
LIME (locally interpretable model-agnostic explanations) : 모델의 개별 예측값을 설명하기 위한 알고리즘
복잡한 모형을 해석이 가능한 심플한 모형으로 locally approximation을 수행하여 설명을 시도한다. 이름에서 알 수 있듯 전체 모델이 아닌 개별 prediction의 근방에서만 해석을 시도한다는 점과 어떠한 모델이든 적용이 가능하다는 특징이 있다.
SP-LIME : 모델 자체의 신뢰 문제를 풀기위해 대표적인 인스턴스를 선택하는 알고리즘
모델의 신뢰 문제를 풀기 위해서 논문은 개별 Prediction에 대한 해석을 살펴보는 접근법을 취한다. 그런데, 전체 Prediction을 모두 살펴보는 것은 대규모 데이터셋에서 어려운 일이다. 따라서 중복되는 정보들을 담고있는 인스턴스들은 제외하고 중요 정보를 담고 있는 소수의 인스턴스를 추려내는 과정이 필요한데, 이를 수행하는 알고리즘이 SP-LIME이다.
LIME (Local Interpretable Model-agnostic Explainations)
LIME은 다음과 같은 특징이 있다.
locally interpretable : 모형이 자체가 어떠한 방식으로 작동하는지 이해하는 대신 해석하고자 하는 Prediction 값의 근방에서 모형이 어떻게 작동하는지 설명한다. (복잡한 non-linear 모형은 Globally 해석하는 것 자체가 불가능한 경우가 많지만, 그러한 모형도 작은 영역에서는 해석이 가능한 단순한 형태를 보일 것이라는 가정이 LIME의 핵심 전제이다.)
model-agnostic : 어떠한 모델도 설명이 가능하다. (모형에 대한 가정을 하지 않기 때문에 어떠한 모델에도 적용이 가능한 접근법이다.)
앞서 복잡한 모형을 해석이 가능한 모형으로 locally approximation을 수행하는 방식으로 작동한다고 했다.
이 locally approximation을 조금더 쉽게 말하면, Prediction 값 근방에 해당 인스턴스와 유사하지만 조금 값이 다른 새로운 샘플들을 만들어 내고 이 샘플들에 대해 모형이 내놓는 예측값이 input 값에 따라 어떻게 다른지 살펴보는 과정이라고 할 수 있다. 조금만 값이 변해도 예측값이 확 달라지는 변수가 있다면 이 변수가 예측값을 내놓는데 결정적인 역할을 한 “원인”이라고 볼 수 있다.
구체적으로 이 과정은 복잡한 모형에 만들어진 새로운 샘플들을 넣어서 예측 레이블을 만들어 내고, 이 샘플들과 예측레이블을 단순한 Interpretable model을 사용하여 학습시키는 방식으로 이루어진다. 이 피팅된 모델의 결과로 부터 prediction 근방에서 복잡한 모형이 어떻게 작동하는지 해석이 가능해진다. 예컨대 interpretable model이 만약 linear 모델이라면 모형의 coefficient를 살펴봄으로써 어떤 요소가 prediction 값에 영향을 주는지 해석할 수 있게 된다.
LIME의 General Framework를 구체적으로 정리하면 다음과 같다.
1. Interpretable Representation
사람이 이해할 수 있는 interpretable representation을 사용하여 해석을 시도한다.
실제 모델은 임베딩 벡터와 같이 사람이 이해하기 어려운 추상화된 representation을 사용하여 학습되었을 수 있다. 그러나 이는 해석이 어려울 수 있으므로 해석이 가능한 feature로 변한한 뒤(임베딩 벡터의 경우 one hot encoding된 original feature) 이를 사용하여 해석한다.
즉, 모형에 사용된 representation을 @x^d \in \mathbb{R}@라고 할때 interpretable representation은 @\{0,1\}^d@으로, 어떤 단어나 픽셀의 값이 “있다” “없다” 여부만을 representation으로 한다.
2. Fidelity-Interpretability Trade-off
풀고자 하는 문제는 interpretability와 local fidelity를 모두 확보하는 Explanation을 찾는 것이다. (여기서 local fidelity란 original model을 지역적으로 얼마나 정확하게 approximation하는지의 정도를 말함)
이 문제를 formalize하기 위해서 몇가지 term을 정의하자.
- 설명하고자 하는 모델을 @f : \mathbb{R}^d \to \mathbb{R}@라고 한다. classification 문제라면, @f(x)@는 확률이나 binary indicator가 된다.
- Explanation을 모델 @g \in G@라고 한다. 이때, G는 해석이 가능한 모델들의 Class(예를들어 Decision tree나 linear model 등)이며, g의 도메인은 @\{0,1\}^d@이다.
- Explanation의 복잡도를 @\Omega(g)@라고 한다. 복잡도를 정의하는 이유는 @g \in G@의 모든 모델이 다 해석하기 용이하지 않을 수 있기 때문이다. 따라서 이를 정량화한 모형의 복잡도를 정의하며, 이는 트리모형의 depth, linear model의 non-zero weight의 수 등이 될 수 있다.
- x의 locality를 나타내기 위한 proximity 척도를 @\Pi_x(z)@로 정의한다.
- g를 학습시키기 위한 locality-aware loss를 @\mathcal{L}(f,g,\Pi_x(z))@로 정의한다. (measure of how unfaithful @g@ is approximating @f@ in the locality defined by @\Pi_x@)
여기까지 정의가 되면 Explanation을 찾는 문제는 사람이 이해할 수 있도록 복잡도는 낮게 유지하면서 loss를 최소화하는 문제가 된다. 즉, 풀고자 하는 문제는 아래와 같이 복잡도를 벌점항으로하여 locality-aware loss를 최소화하는 모델을 찾는 문제로 형식화 된다.
@@
\xi(x) = argmin_{g \in G}\mathcal{L}(f,g,\Pi) + \Omega(g)
@@
3. Sampling for Local Exploration
LIME에서는 모형에 대한 어떠한 가정도 두지 않는다. 대신에 local approximation을 위해서 prediction 근방에서 새로운 샘플을 뽑는 접근법을 사용한다.
Local Exploration을 위한 샘플링과 이후 단계에 대한 설명은 다음과 같다.
- interpretable representation @x^{‘} \in \{0,1\}^d@의 non-zero element를 랜덤하게 뽑아서 샘플을 만든다.
- 샘플 @z^{‘}@은 interpretable representation이므로 prediction값을 구하기 위해 다시 original representation으로 변환한다.
- original representation @z \in R^d@의 예측값 @f(z)@를 구한다.
- 샘플들과 모형에서 구한 레이블을 가지고 위의 Equation을 최적화하여 Explanation을 구한다.
- (새로 만들어진 샘플과 레이블을 가지고 해석이 가능한 simple model을 피팅하는 과정이며, 이 때 샘플과 original instance의 similarity를 weight로 하여 근방에 있는 값이 더 많이 반영되도록 한다.)
기타
속도는 prediction 근방에 새롭게 뽑는 샘플 수에 의해 영향을 받는다고 한다.
해석력을 위해서 interpretable representation과 simple model G을 선택했는데, 이로 인한 본질적인 한계가 있다. 예를들어 이미지가 레트로일지 판단하는데에는 presense/absence 만을 나타내는 representation으로 해석이 불가능하다. 모델과 관련해서는 underlying 모델이 지역적으로도 심지어 highly-nonlinear라면 G의 approximation결과를 신뢰하기 어렵다.
SP-LIME (Submodular Pick for Explaining Model)
모델에 전체를 신뢰할 수 있는지 판단하기 위한 방법으로 모델의 prediction들을 하나하나 살펴보는 것이 도움이 될 수 있다. 그러나 모든 prediction을 다 살펴보는 것은 일반적인 상황에서는 불가능하다. SP-LIME은 꼭 봐야할만한 인스턴스들을 뽑아주는(Pick) 방법론이다. 한정된 Budget B(모델을 이해하기 위해 살펴볼 인스턴스의 수)하에서 중복되는 정보를 포함하는 인스턴스는 최대한 추려내고 다양한 특성을 지닌 인스턴스를 포함하도록 뽑는다. 사용자는 SP-LIME에 의해 뽑힌 서브셋의 Explanation을 보고 모델의 전반적인 작동 방식을 신뢰할 것인지 평가할 수 있게 된다.
SP-LIME의 접근법을 수식으로 설명하기 위해 몇가지 정의를 짚어본다.
- @W@ : @n\times d^{‘}@ Explanation Matrix.
- 각 인스턴스의 interpretable component의 local importance
- 예를 들어 linear model을 explanation으로 사용한 경우 @W_{ij} = \vert w_{g_{ij}}\vert@
- @I_j@ : @W@의 @j@번째 컬럼의 global importance
- 많은 인스턴스를 설명할수록 global importance가 높다고 함
- linear model의 예에서는 @I_j = \sqrt{\sum_{i=1}^{n} w_{ij}}@로 정의 가능
- coverage @c(V, W, I)@
- @W, I@가 주어졌을때 set @V@에 속한 인스턴스에 한번이라도 나타난 feature의 total importance
- @W, I@가 주어졌을때 set @V@에 속한 인스턴스에 한번이라도 나타난 feature의 total importance
여기까지 정의되면 pick problem은 정해진 budget B하에서 가장 높은 커버리지(즉, 선택된 Set이 가지는 importance의 총량)을 최대화하는 Set을 찾는 문제로 정의할 수 있다.
@@
Pick(W, I) = argmax_{V, \vert V \vert \le B} c(V, W, I)
@@
위 식을 푸는 것은 NP-hard이므로 greedy algorithm을 사용하여 푼다.
관련 자료를 찾아 보았을 때, LIME에 대한 것은 많았지만 SP-LIME은 제안한 논문 이외에 설명하는 자료를 찾기 어려웠다. 아마도 모든 prediction값에 대한 explanation을 생성 한 뒤 봐야할 인스턴스를 추려내는 과정을 거치는데, explanation 생성 과정 자체가 시간이 오래 걸리는 작업이기 때문에 실제로는 적용이 어려운 것이 아닌가 라는 생각이 든다. (추측일 뿐 이와 관련된 언급은 찾아보지 못했다.)
마치며..
이상으로 모형의 예측값을 설명하기 위한 알고리즘인 LIME과 모형의 신뢰성 문제를 해결하기 위한 알고리즘인 SP-LIME에 대해서 살펴보았다. 논문에서는 작동방식을 이해해야 내가 만든 모형의 문제를 인지하고 모형을 더 “Trustworthy”하게 만들 수 있다고 한다. 검증데이터셋의 정확도만을 최적화하며 블랙박스 모형의 결과를 그대로 받아들이는 것 보다 작동방식에 대한 이해에 인간의 직관을 더해 개선방향을 찾고 적용해나가는 것이 머신러닝을 올바르게 활용하는 방법이 아닐까 생각한다.
LIME은 이미 학습된 모델의 결과를 가지고 해석을 시도하는 사후적인 방법에 해당하는데, 이외에도 모형의 해석에 관한 다양한 접근과 연구들이 있다. 모형의 학습 단계 부터 해석을 시도하는 알고리즘들이나 딥러닝 모델과 같은 특수한 모델에 특화된 해석을 위한 방법론들도 존재한다. 아예 ML 모형의 “Inpterpretability”를 정의하는 다양한 관점을 정리한 논문도 있다. 이에 대한 자료들은 더 읽어볼 거리에 달아둔다.
Reference
[1] “why should I trust you?” Explaining the predictions of any classifier.
[2] LIME R package vignettes
[3] Looking beyond accuracy to improve trust in machine learning
더 읽어볼거리들
- 모델을 설명하는 예시와 Python 코드를 포함하고 있음
[2] Interpreting Deep Neural Network
- Neural Network의 해석을 시도하는 방법론(Grad-Cam, LIME, Feature Visualization, Loss Landscape)을 간단히 짚어보고, tree- regularization으로 Deep Neural Network의 해석을 시도하는 구체적인 방법론을 설명하는 블로그
- Interpretability를 human-simulatability의 관점으로 접근함
- Tree로 DNN model의 작동 방식을 mimic하는데 이때 DT의 깊이가 너무 깊어져 해석이 어렵게되면 안되므로, DNN을 학습할 때 Tree의 Depth를 regularization term으로 추가하는 방안을 제안함
- LIME의 경우 사후적인 해석을 시도하기 때문에 local 영역에서조차 너무 복잡한 모형은 해석이 어려운 반면, 이런 방법론은 모델을 학습하는 단계에서부터 Complexity를 줄여줘서 해석을 용이하게하려는 시도로 볼 수 있을 듯.
[3] The Mythos of Model Interpretability
- 모델을 해석하려는 다양한 동기 및 해석가능한 모델과 테크닉의 속성에 대해 설명
'Study > Machine Learning' 카테고리의 다른 글
Delayed Feedback Model (0) | 2018.01.26 |
---|