늦깎이 공대생의 인공지능 연구실
[해석할 수 있는 기계학습(6-4)]영향력 있는 인스턴스(Influential Instances) 본문
[해석할 수 있는 기계학습(6-4)]영향력 있는 인스턴스(Influential Instances)
Justin T. 2021. 4. 5. 22:32
기계학습 모델은 궁극적으로 학습 데이터의 산물이며 학습 인스턴스 중 하나를 삭제하면 결과 모델에 영향을 미칠 수 있습니다. 학습 데이터에서 학습 인스턴스를 삭제하면 모델의 매개 변수나 예측이 크게 변경될 때 우리는 학습 인스턴스를 "영향력"이라고 합니다. 영향력 있는 학습 인스턴스를 식별함으로써, 우리는 기계학습 모델을 "디버그"하고 그들의 행동과 예측을 더 잘 설명할 수 있습니다.
이 장에서는 영향력 있는 인스턴스를 식별하는 두 가지 방법, 즉 삭제 진단 및 영향 함수를 보여 줍니다. 두 가지 접근법 모두 강력한 통계량을 기반으로 하며, 이 통계량은 이상치(Outlier) 또는 모델 가정 위반의 영향을 덜 받는 통계적 방법을 제공합니다. 강력한 통계량은 데이터의 강력한 추정치(예: 평균 추정치 또는 예측 모델의 가중치)를 측정하는 방법도 제공합니다.
여러분들이 살고 계신 도시 사람들의 평균 수입을 추산하고 길거리에서 무작위로 10명의 사람들에게 그들이 얼마나 벌고 있는지 물어고자 합니다. 표본이 정말 형편없다는 사실 외에도, 한 사람이 평균 소득 추정치에 얼마나 많은 영향을 미칠 수 있을까요? 이 질문에 답하기 위해, 개별 답변을 생략하여 평균 값을 다시 계산하거나 평균 값이 어떻게 영향을 받을 수 있는지 "영향 함수(Influence functions)"를 통해 수학적으로 도출할 수 있습니다. 삭제 접근 방식을 사용하면 평균값을 10회 재계산하고 매번 소득계산서 중 하나를 생략하고 평균 추정치가 얼마나 변화하는지 측정합니다. 큰 변화는 한 예가 매우 영향력이 있었다는 것을 의미합니다. 두 번째 접근 방식은 통계 또는 모델의 첫 번째 파생물의 계산에 해당하는 사람 중 한 명을 무한정 작은 무게로 가중시킵니다. 이 접근 방식은 "무한한 접근 방식" 또는 "영향 함수"라고도 합니다. 답은 평균이 단일 값에 선형적으로 척도화되기 때문에 평균 추정치가 단일 답변에 의해 매우 강하게 영향을 받을 수 있다는 것입니다. 더 강력한 선택은 중위값(절반의 사람들이 더 많이 벌고 나머지 절반은 더 적게 버는 값)입니다. 왜냐하면 표본에서 소득이 가장 높은 사람이 10배 더 많은 경우에도 결과 중위값는 변경되지 않기 때문입니다.
삭제 진단 및 영향 함수는 기계학습 모델의 행동을 더 잘 이해하거나 개별 예측을 설명하기 위해 매개 변수 또는 예측에도 적용할 수 있습니다. 영향력 있는 인스턴스를 찾기 위한 이 두 가지 접근 방식을 살펴보기 전에 이상치와 영향력 있는 인스턴스 간의 차이를 살펴보기로 합니다.
이상치(Outlier)
이상치는 데이터 집합의 다른 인스턴스와 멀리 떨어져 있는 인스턴스입니다. "먼 거리"는 다른 모든 예에 대한 유클리드 거리 같은 거리가 매우 크다는 것을 의미합니다. 신생아 데이터 세트에서 신생아 몸무게 6kg은 이상치치로 간주됩니다. 당좌예금이 대부분인 은행 계좌의 데이터 집합에서 전용 대출 계좌(대규모 마이너스 잔액, 거래 수 적음)는 이상치로 간주됩니다. 다음 그림은 1차원 분포에 대한 이상치를 보여 줍니다.
이상치는 흥미로운 데이터 점(예: 크리티시즘)일 수 있습니다. 이상치가 모델에 영향을 미치는 경우 이 이상치는 영향력 있는 인스턴스이기도 합니다.
영향력 있는 인스턴스
영향력 있는 인스턴스는 제거가 학습된 모델에 강력한 영향을 미치는 데이터 인스턴스입니다. 모델이 학습 데이터에서 특정 인스턴스를 제거한 상태에서 재학습될 때 모델 파라미터 또는 예측이 더 많이 변경될수록 해당 인스턴스의 영향력이 더 커집니다. 인스턴스가 학습된 모델에 영향을 미치는지 여부도 대상 모델에 대한 값에 따라 달라집니다. 다음 그림은 선형 회귀 모델에 대한 영향력 있는 인스턴스를 보여 줍니다.
왜 영향력 있는 인스턴스가 모델을 이해하는데 도움이 되는 것일까?
해석력에 대한 영향력 있는 인스턴스의 핵심 아이디어는 모델 매개 변수와 예측을 처음부터 다시 추적하는 것입니다. 바로 학습 데이터입니다. 학습자, 즉 기계학습 모델을 생성하는 알고리즘은 특성 X와 목표 y로 구성된 학습 데이터를 가져다가 기계학습 모델을 생성하는 기능입니다. 예를 들어, 의사 결정 트리 학습자는 분할 특성과 분할할 값을 선택하는 알고리즘입니다. 신경망의 학습자는 역전파를 사용하여 최상의 가중치를 찾습니다.
학습 과정에서 학습 데이터에서 인스턴스를 제거하면 모델 매개 변수 또는 예측이 어떻게 변화할지 모델에 물어봅니다. 이는 부분의존도 또는 특성 중요도와 같이 예측될 인스턴스의 특성을 조작할 때 예측이 어떻게 변화하는지 분석하는 다른 해석력 접근법과 대조적입니다. 영향력 있는 인스턴스에서는 모델을 고정으로 취급하지 않고 학습 데이터의 함수로 취급합니다. 영향력 있는 인스턴스는 전역 모델 동작 및 개별 예측에 대한 질문에 답변하는 데 도움이 됩니다. 모델 파라미터와 전체 예측에 가장 큰 영향을 미친 인스턴스는 무엇입니까? 어떤 것이 특정 예측에 가장 큰 영향을 미쳤을까요? 영향력 있는 인스턴스는 모델에 문제가 발생할 수 있는 경우, 오류를 확인하고 모델의 견고성에 대한 인상을 주어야 하는 학습 인스턴스를 알려줍니다. 단일 인스턴스가 모델 예측 및 파라미터에 강력한 영향을 미치는 경우 모델을 신뢰하지 않을 수 있습니다. 적어도 그건 우리가 더 분석하게 만들 것입니 궁극적으로 학습 데이터의 산물이며 학습 인스턴스 중 하나를 삭제하면 결과 모델에 영향을 미칠 수 있습니다. 학습 데이터에서 학습 인스턴스를 삭제하면 모델의 매개 변수나 예측이 크게 변경될 때 우리는 학습 인스턴스를 "영향력"이라고 합니다. 영향력 있는 학습 인스턴스를 식별함으로써, 우리는 기계학습 모델을 "디버그"하고 그들의 행동과 예측을 더 잘 설명할 수 있습니다.
영향력 있는 인스턴스를 어떻게 찾을 수 있을까요? 영향력을 측정하는 두 가지 방법이 있습니다. 우리의 첫 번째 옵션은 학습 데이터에서 인스턴스를 삭제하고 축소된 학습 데이터셋에서 모델을 재학습하고 모델 매개 변수 또는 예측의 차이를 관찰하는 것입니다(개별 또는 전체 데이터셋). 두 번째 옵션은 모형 파라미터의 기울기를 기준으로 파라미터 변경 사항을 근사화하여 데이터 인스턴스의 가중치를 높이는 것입니다. 삭제 접근 방식은 이해하기 쉽고 상향식 접근 방식에 동기를 부여합니다. 그래서 우리는 전자에서 부터 시작합니다.
삭제 진단(Deletion Diagnostics)
통계학자들은 영향력 있는 인스턴스, 특히 (일반화된) 선형 회귀 모형에 대한 많은 연구를 이미 수행해왔습니다. "영향력 있는 관측치"를 탐색할 때 첫 번째 탐색 결과는 DFBETA와 Cook 거리(Cook's distance)와 같은 측도에 대한 것입니다. DFBETA는 모델 매개 변수에 대한 인스턴스 삭제의 영향을 측정합니다. Cook 거리(Cook, 1977)는 모델 예측에 대한 인스턴스 삭제의 영향을 측정합니다. 두 가지 측정 모두 매번 개별 인스턴스를 생략하고 반복적으로 모델을 재학습해야 합니다. 모든 인스턴스를 포함하는 모델의 파라미터 또는 예측은 학습 데이터에서 인스턴스 중 하나가 삭제된 모델의 파라미터 또는 예측과 비교합니다.
DFBETA는 다음과 같이 정의합니다.
$$DFBETA_{i}=\beta-\beta^{(-i)}$$
여기서 β는 모델이 모든 데이터 인스턴스에 대해 학습될 때 가중치 벡터이고, \(\beta^{(-i)}\)는 인스턴스 i 없이 모델이 학습될 때 가중치 벡터입니다. 꽤 직관적임을 알 수 있죠. DFBETA는 로지스틱 회귀 분석 또는 신경망과 같은 가중치 매개 변수가 있는 모델에만 작동하지만 의사 결정 트리, 트리 앙상블, 일부 SVM 등과 같은 모델에는 작동하지 않습니다.
Cook 거리는 선형 회귀 모델을 위해 발명되었으며 일반화된 선형 회귀 모델을 위한 근사치가 존재합니다. 학습 인스턴스에 대한 Cook 거리는 i번째 인스턴스가 모델 학습에서 제거될 때 예측 결과의 차이 제곱합(척도)으로 정의됩니다.
$$D_i=\frac{\sum_{j=1}^n(\hat{y}_j-\hat{y}_{j}^{(-i)})^2}{p\cdot{}MSE}$$
여기서 분자는 i번째 인스턴스를 포함하는 모델의 예측과 포함하지 않는 모델의 예측 간의 제곱 차이이며, 데이터셋에 대해 합산됩니다. 분모는 특성 p와 평균 제곱 오차(MSE)의 곱입니다. 분모는 어떤 인스턴스 i를 제거하든 모든 인스턴스에 대해 동일합니다. Cook 거리는 학습에서 i번째 인스턴스를 제거할 때 선형 모델의 예측 출력이 얼마나 변화하는지 알려줍니다.
Cool 거리와 DFBETA를 기계학습 모델에 사용할 수 있을까요? DFBETA에는 모델 파라미터가 필요하므로 이 측정방법은 모수화된 파라미터에만 적용됩니다. Cook 거리에는 모델 파라미터가 필요하지 않습니다. 흥미롭게도, Cook 거리는 보통 선형 모델과 일반화된 선형 모델의 맥락 밖에서는 보이지 않지만, 특정 인스턴스를 제거하기 전과 후에 모델 예측 간의 차이를 취하는 생각은 매우 일반적입니다. Cook 거리 정의의 문제점은 MSE인데, 이는 모든 유형의 예측 모델(예: 분류)에 의미가 있는 것은 아닙니다.
모델 예측에 대한 효과에 대한 가장 간단한 영향 측정법은 다음과 같이 세울 수 있습니다.
$$\text{Influence}^{(-i)}=\frac{1}{n}\sum_{j=1}^{n}\left|\hat{y}_j-\hat{y}_{j}^{(-i)}\right|$$
이 표현식은 기본적으로 Cook 거리의 분자로, 제곱차 대신 절대차를 더한다는 차이가 있습니다. 이는 직접 본인이 선택한 것입니다. 왜냐하면 이는 나중에 예시를 들 수 있기 때문입니다. 삭제 진단 측정의 일반적인 형태는 측정(예: 예측된 결과)을 선택하고 모든 인스턴스와 해당 인스턴스가 삭제되었을 때 훈련된 모델에 대한 측정의 차이를 계산하는 것으로 구성됩다.
우리는 쉽게 영향력을 분석하여 인스턴스 j의 예측을 위해 i번째 학습되는 인스턴스의 영향이 무엇인지 설명할 수 있습니다.
$$\text{Influence}_{j}^{(-i)}=\left|\hat{y}_j-\hat{y}_{j}^{(-i)}\right|$$
이는 모델 파라미터의 차 또는 손실의 차에도 적용됩니다. 다음 예에서는 이러한 간단한 영향 측정 방법을 사용할 것입니다.
삭제 진단 예제
다음 예에서는 위험 인자가 주어진 자궁경부암을 예측하고 전체 및 특정 예측에 가장 큰 영향을 미친 학습 사례를 측정하기 위한 SVM을 학습합니다. 암의 예측은 분류 문제이기 때문에, 우리는 암의 예측 확률 차이로 영향을 측정합니다. 모델 학습에서 인스턴스를 제거할 때 데이터셋에서 예측 확률이 평균적으로 크게 증가하거나 감소하는 경우 인스턴스가 영향을 받습니다. 858개의 모든 학습 인스턴스에 대한 영향을 측정하려면 모든 데이터에 대해 한 번 모델을 학습하고 매번 한 인스턴스를 제거한 상태에서 858번(= 학습 데이터의 크기) 다시 학습해야 합니다.
가장 영향력 있는 인스턴스는 약 0.01의 영향도를 갖습니다. 0.01의 영향은 540번째 인스턴스를 제거하면 예측 확률이 평균 1% 포인트씩 변화한다는 것을 의미합니다. 암에 대한 평균 예측 확률이 6.4%라는 점을 고려할 때 이는 상당한 수치입니다. 가능한 모든 삭제에 대한 영향도의 평균 값은 0.2% 포인트입니다. 이제 모델에 가장 큰 영향을 미친 데이터 인스턴스가 무엇인지 알게 되었습니다. 이 정보는 이미 데이터 디버깅에 유용하게 사용됩니다. 문제가 있는 예가 있을까요? 측정 오류가 있을까요? 영향력 있는 인스턴스는 각 오류가 모델 예측에 큰 영향을 미치기 때문에 먼저 오류를 확인해야 합니다.
모델 디버깅 외에도 모델을 더 잘 이해할 수 있는 방법을 배울 수 있을까요? 가장 영향력 있는 상위 10개 인스턴스를 출력하는 것만으로는 많은 특성을 가진 인스턴스 테이블이기 때문에 그다지 유용하지 않습니다. 인스턴스를 출력으로 반환하는 모든 방법은 적절한 표현 방법이 있어야만 의미가 있습니다. 그러나 다음과 같은 질문을 할 때 어떤 종류의 인스턴스가 영향을 미치는지 더 잘 이해할 수 있습니다. 영향력 있는 인스턴스와 영향력이 없는 인스턴스를 구분하는 것은 무엇일까요? 이 질문을 회귀 문제로 전환하고 인스턴스의 영향을 특성값의 함수로 모델링할 수 있습니다. 해석 가능한 기계 학습 모델(챕터5에서 다루었던 모델들)에서 원하는 모델을 자유롭게 선택할 수 있습니다. 이 예에서는 35세 이상 여성의 데이터가 SVM에 가장 큰 영향을 미쳤음을 보여주는 의사결정 트리(아래 그림)를 선택했습니다. 데이터셋에 포함된 모든 여성 중 858명 중 153명이 35세 이상입니다. 부분의존도에 대한 장에서 우리는 40세 이후에 암의 예측 확률이 급격히 증가한다는 것을 보았고 특성중요도는 나이를 가장 중요한 특징 중 하나로 감지했습니다. 영향 분석을 통해 더 높은 연령의 암을 예측할 때 모형이 점점 불안정해진다는 것을 알 수 있습니다. 이것은 그 자체로 가치 있는 정보입니다. 이는 이러한 인스턴스의 오류가 모델에 강력한 영향을 미칠 수 있음을 의미합니다.
이 첫 번째 영향 분석을 통해 전체적으로 가장 영향력 있는 인스턴스가 발견되었습니다. 이제 가장 영향력 있는 학습 데이터 인스턴스를 찾아 예측을 설명하는 7번째 인스턴스 중 하나를 선택합니다. 이는 반사실적인 질문과 같습니다. 만약 우리가 학습 과정에서 인스턴스 i를 생략한다면 인스턴스 7에 대한 예측은 어떻게 변할까요? 모든 인스턴스에 대해 이러한 제거를 반복합니다. 그런 다음 우리는 학습에서 누락될 때 인스턴스 7의 예측에 가장 큰 변화를 가져오는 학습 인스턴스를 선택하고 이를 사용하여 해당 인스턴스에 대한 모델의 예측을 설명합니다. 예측 확률이 가장 높은 경우(7.35%)이기 때문에 7번 예측을 설명하기로 했는데, 이 예측은 좀 더 깊이 분석할 수 있는 흥미로운 인스턴스라고 생각했습니다. 표로 나타낸 7번째 인스턴스를 예측하기 위해 가장 영향력 있는 상위 10개 인스턴스를 반환할 수 있습니다. 별로 유용하지 않습니다. 왜냐하면 우리는 많은 것을 볼 수 없었기 때문입니다. 다시 말해, 특성을 분석하여 영향력 있는 인스턴스와 영향력 없는 인스턴스를 구별하는 방법을 알아내는 것이 더 합리적입니다. 우리는 주어진 특성에 영향을 예측하기 위해 학습된 의사결정 트리를 사용하지만, 실제로는 구조를 찾기 위해서만 사용하고 무언가를 실제로 예측하기 위해서만 사용하지 않습니다. 다음 의사결정 트리에서는 7번째 인스턴스를 예측하는 데 가장 큰 영향을 미친 학습 인스턴스를 보여 줍니다.
흡연했거나 18.5년 이상 흡연한 여성의 데이터 인스턴스는 7번째 흡연의 예측에 큰 영향을 미칩니다. 7번째 인스턴스 이후에 있는 여성은 34년 동안 담배를 피웠습니다. 이 데이터에서 12명의 여성(1.40%)이 18.5년 이상 흡연했습니다. 이 여성들 중 한 명의 흡연 년수를 수집할 때 어떠한 실수가 있게 된다면, 7번째 인스턴스의 예측 결과에 큰 영향을 미칠 것입니다.
예측에서 가장 극단적인 변화는 663번 인스턴스를 제거할 때 발생합니다. 그 환자는 의사결정 트리에서 나온 결과와 일치하여 22년간 담배를 피웠다고 전해집니다. 663번 인스턴스를 제거하면 7번째 인스턴스의 예측 확률이 무려 7.35%에서 66.60%로 변경됩니다!
가장 영향력 있는 인스턴스의 특성을 자세히 살펴보면 또 다른 문제를 발견할 수 있습니다. 이 자료에 따르면 이 여성은 28살이고 22년째 담배를 피우고 있습니다. 정말 극단적인 경우이고 6살 때부터 담배를 피우기 시작했거나, 아니면 데이터 오류일 수도 있습니다. 아마도 저라면 후자를 믿는 경향이 있습니다. 이는 확실히 우리가 데이터의 정확성에 의문을 제기해야만 하는 상황입니다.
이러한 예는 디버그 모델에 대한 영향력 있는 인스턴스를 식별하는 것이 얼마나 유용한지를 보여 줍니다. 제안된 접근 방식의 한 가지 문제는 각 학습 인스턴스에 대해 모델을 다시 학습시켜야 한다는 것입니다. 전체 재학습은 매우 느릴 수 있습니다. 왜냐하면 수천 개의 학습 인스턴스가 있을 경우 모델을 수천 번 재학습해야 하기 때문입니다. 모델이 학습되는 데 하루가 걸리고 1000개의 학습 인스턴스를 가지고 있다고 가정한다면, 영향력 있는 인스턴스의 계산은 병렬화 없이 거의 3년이 걸릴 것입니다. 아무도 이럴 시간이 없습니다. 이 챕터의 나머지 부분에서는 모델 재학습이 필요하지 않은 방법을 보여드리겠습니다.
영향 함수
여러분: 우리는 특정한 예측을 하는 한 학습 인스턴스에 대한 영향을 알고 싶습니다.
연구원: 여러분은 학습 인스턴스를 삭제하고, 모델을 유지하고, 예측의 차이를 측정할 수 있습니다.
여러분: 좋아요! 그런데 재학습 없이 알 수 있는 방법이 있을까요? 시간이 꽤 걸릴거 같은데요.
연구원: 파라미터에 대해 두 번 미분할 수 있는 손실함수를 갖고 있는 모델이 있나요?
여러분: 로지스틱 손실이 있는 신경망을 학습시켰습니다. 그러므로 갖고 있습니다.
연구원: 그렇다면 모델의 파라미터와 영향 함수의 예측으로 인스턴스의 영향력을 근사할 수 있습니다. 영향 함수는 모델 파라미터 또는 예측이 학습 인스턴스에 얼마나 강하게 의존하는지 나타내는 측도입니다. 이 방법은 인스턴스를 삭제하는 대신 손실된 인스턴스의 가중치를 매우 작은 단계만큼 높입니다. 이 방법에는 기울기 및 헤시안 행렬을 사용하여 현재 모델 매개 변수 주변의 손실 근사치가 포함됩니다. 가중치 손실은 인스턴스를 삭제하는 것과 유사합니다.
여러분: 좋아요, 우리가 찾던 것이군요!
Koh와 Liang (2017)은 한 인스턴스가 모델 파라미터나 예측에 어떤 영향을 미치는지 측정하기 위해 강력한 통계 방법인 영향 함수를 사용할 것을 제안했습니다. 삭제 진단과 마찬가지로 영향 함수는 모델 파라미터와 예측을 담당 학습 인스턴스로 추적합니다. 그러나 이 방법은 학습 인스턴스를 삭제하는 대신 경험적 위험(학습 데이터에 대한 손실의 합계)에서 인스턴스가 가중될 때 모델이 변화하는 정도를 근사적으로 계산합니다.
영향 함수의 방법에서는 모델 파라미터에 대한 손실 기울기에 대한 액세스가 필요하며, 이는 기계학습 모델의 서브셋에서만 작동합니다. 로지스틱 회귀 분석, 신경망 및 SVM이 적합하며 랜덤 포레스트와 같은 트리 기반 방법은 적합하지 않습니다. 영향 함수는 모델 동작을 이해하고 모델을 디버그하며 데이터 집합의 오류를 탐지하는 데 도움이 됩니다.
다음 절에서는 영향 함수에 대한 직관 및 수식에 대해 설명합니다.
영향 함수에 대한 수학
영향 함수의 핵심 아이디어는 학습 인스턴스의 손실을 무한히 작은 단계인 ϵ만큼 증가시키는 것이며, 이로 인해 새로운 모델 파라미터가 생성됩니다.
$$\hat{\theta}_{\epsilon,z}=\arg\min_{\theta{}\in\Theta}(1-\epsilon)\frac{1}{n}\sum_{i=1}^n{}L(z_i,\theta)+\epsilon{}L(z,\theta)$$
여기서 θ는 모델 파라미터 벡터이고 \(\hat{\theta}_{\epsilon,z}\)는 매우 작은 숫자 ϵ로 z를 가중시킨 후의 파라미터 벡터입니다. L은 모델이 학습된 손실 함수이고, \(z_i\)는 학습 데이터이며, z는 우리가 인스턴스의 제거를 시뮬레이션하기 위해 가중치를 올리고자 하는 학습 인스턴스입니다. 이 공식의 배경은 다음과 같습니다. 학습 데이터에서 특정 인스턴스 \(z_i\)의 가중치를 (ϵ)만큼약간씩 올리고 그에 따라 다른 데이터 인스턴스의 가중치를 낮춘다면 손실은 얼마나 달라질까요? 이러한 새로운 복합 손실을 최적화하기 위해 파라미터 벡터는 어떻게 보일까요? 파라미터의 영향 함수, 즉 파라미터에 대한 학습 인스턴스 z의 가중치가 미치는 영향은 다음과 같이 계산할 수 있습니다.
$$I_{\text{up,params}}(z)=\left.\frac{d{}\hat{\theta}_{\epsilon,z}}{d\epsilon}\right|_{\epsilon=0}=-H_{\hat{\theta}}^{-1}\nabla_{\theta}L(z,\hat{\theta})$$
마지막 표현식 \(\nabla_{\theta}L(z,\hat{\theta})\)은 커진 학습 인스턴스의 파라미터에 대한 손실 기울기입니다. 기울기는 학습 인스턴스 손실의 변화율입니다. 모델 파라미터 \(\hat{\theta}\)를 약간 변경했을 때 손실량이 얼마나 변하는지 알려줍니다. 기울기 벡터에 양의 입력이 있으면 해당 모델 파라미터의 작은 증가는 손실을 증가시키고 음의 입력은 파라미터의 증가가 손실을 감소시킨다는 것을 의미합니다. 첫번째 파트 \(H^{-1}_{\hat{\theta}}\)은 역헤시안 행렬(모델 파라미터에 대한 손실의 두 번째 파생 모델)입니다. 헤시안 행렬은 기울기의 변화율 또는 손실로 표현되는 것은 손실의 변화율의 변화율입니다. 아래 식을 사용하여 추정할 수 있습니다.
$$H_{\theta}=\frac{1}{n}\sum_{i=1}^n\nabla^2_{\hat{\theta}}L(z_i,\hat{\theta})$$
좀 더 비공식적으로 다음을 수행합니다. 헤시안 행렬은 특정 지점에서 손실의 곡선을 기록합니다. 헤시안 행렬은 단순한 벡터가 아니라 행렬입니다. 왜냐하면 헤시안은 손실의 곡면성을 묘사하고 곡면성은 우리가 보는 방향에 따라 달라지기 때문입니다. 파라미터가 많은 경우 헤시안 행렬의 실제 계산에는 시간이 많이 걸립니다. Koh와 Liang은 효율적으로 계산하기 위한 몇 가지 요령을 제안했고, 이것은 이 챕터의 범위를 넘어섭니다. 위의 공식에서 설명한 대로 모델 파라미터를 업데이트하는 것은 추정된 모델 파라미터 주위에 2차 확장을 구성한 후 단일 뉴턴 단계를 수행하는 것과 같습니다.
이 영향 함수 공식 뒤에는 어떤 직관이 있을까요? 공식은 파라미터 \(\hat{\theta}\)를 중심으로 2차 확장을 형성함으로써 얻어집니다. 즉, 실제로 알지 못하거나 인스턴스 z의 손실이 제거/업그레이드될 때 얼마나 정확하게 변하는지 계산하기가 너무 복잡합니다. 현재 모델 파라미터 설정에서 구배도(= 기울기) 및 곡률(= 헤시안 행렬)에 대한 정보를 사용하여 지역에서 함수를 근사합니다. 이 손실 근사치를 사용하여 인스턴스 z를 상향 조정할 경우 새 파라미터가 근사적으로 어떻게 표시되는지 계산할 수 있습니다.
$$\hat{\theta}_{-z}\approx\hat{\theta}-\frac{1}{n}I_{\text{up,params}}(z)$$
근사 파리미터 벡터는 기본적으로 원래 파라미터에서 z 손실의 기울기를 뺀 것입니다 (손실을 줄이려고하기 때문). 곡률(= 역 헤시안 행렬에 곱한)로 스케일링되고 1 대 n으로 스케일링된 z 손실의 기울기를 뺀 값입니다. 이는 단일 훈련 인스턴스의 가중치이기 때문입니다.
다음 그림은 가중치증량의 작동 방식을 보여줍니다. x축은 θ 파라미터의 값을 표시하고 y축은 상승된 인스턴스 z로 손실의 해당 값을 표시합니다. 여기서 모델 파라미터는 설명 목적으로는 1차원이지만 실제로는 일반적으로 고차원적입니다. 우리는 예를 들어 z의 손실 개선 방향으로 단지 n분의 1만 이동합니다. z를 삭제할 때 손실이 실제로 어떻게 변할지는 모르지만, 손실의 첫 번째와 두 번째 파생 모델을 사용하여 현재 모델 파라미터를 중심으로 이 2차 근사치를 만들고 이것이 실제 손실이 작동하는 방식이라고 가정합니다.
실제로 새 파라미터를 계산할 필요는 없지만 파라미터에 대한 z 영향의 척도로 영향 함수를 사용할 수 있습니다.
가중치증량 학습 인스턴스 z를 사용할 때 예측은 어떻게 변할까요? 새로운 파라미터를 계산한 다음 새로 파라미터화된 모델을 사용하여 예측을 하거나, 체인 규칙을 사용하여 영향을 계산할 수 있기 때문에 예측에 대한 인스턴스 z의 영향을 직접 계산할 수도 있습니다.
$$\begin{align*}I_{up,loss}(z,z_{test})&=\left.\frac{d{}L(z_{test},\hat{\theta}_{\epsilon,z})}{d\epsilon}\right|_{\epsilon=0}\\&=\left.\nabla_{\theta}L(z_{test},\hat{\theta})^T\frac{d\hat{\theta}_{\epsilon,z}}{d\epsilon}\right|_{\epsilon=0}\\&=-\nabla_{\theta}L(z_{test},\hat{\theta})^T{}H^{-1}_{\theta}\nabla_{\theta}L(z,\hat{\theta})\end{align*}$$
이 방정식의 첫 번째 줄은 인스턴스 z의 가중치를 높이고 새로운 파라미터 \(\hat{\theta}_{\epsilon,z}\)를 얻을 때 테스트 인스턴스의 손실 변화로서 특정 예측 \(z_{test}\)에 대한 학습 인스턴스의 영향을 측정한다는 것을 의미합니다. 방정식의 두 번째 줄에 대해, 우리는 미분의 체인 규칙을 적용했고, 파라미터에 대한 z의 영향과의 곱에 대한 테스트 인스턴스의 손실의 미분을 얻었습니다. 세 번째 줄에서는 파라미터에 대한 영향 함수로 식을 대체합니다. 세 번째 줄의 첫 번째 항 \(\nabla_{\theta}L(z_{test},\hat{\theta})^T{}\)는 모델 파라미터와 관련된 테스트 인스턴스의 기울기입니다.
공식은 훌륭하고 현상을 보여주는 과학적이고 정확한 방법입니다. 하지만 공식이 무엇을 의미하는지 직감하는 것이 매우 중요하다고 생각합니다. \(I_{\text{up,loss}}\)에 대한 공식은 학습 인스턴스 z가 인스턴스 \(z_{test}\)의 예측에 미치는 영향 함수에 "인스턴스가 모델 파라미터의 변화에 얼마나 강하게 반응하는가"를 곱한 것이라고 말합니다. 공식을 읽는 또 다른 방법은 다음과 같습니다. 영향은 학습 및 테스트 손실에 대한 기울기의 크기에 비례합니다. 학습 손실의 기울기가 높을수록 파라미터에 미치는 영향과 테스트 예측에 대한 영향력이 커집니다. 테스트 예측의 기울기가 높을수록 테스트 인스턴스의 영향력이 커집니다. 전체 구조는 학습과 테스트 인스턴스 간의 유사성(모델에서 학습한 바와 같이)을 측정하는 것으로도 볼 수 있습니다.
이것이 바로 이론과 직관입니다. 다음 절에서는 영향 함수를 적용할 수 있는 방법에 대해 설명합니다.
영향 함수의 적용
영향 함수에는 많은 적용사례가 있으며, 그 중 일부는 이 챕터에 이미 나와있습니다.
모델 동작의 이해
기계학습 모델마다 예측 방법이 다릅니다. 두 모델이 동일한 성능을 가지고 있더라도 특성에서 예측하는 방식은 매우 다를 수 있으므로 시나리오마다 실패할 수 있습니다. 영향력 있는 인스턴스를 식별하여 모델의 특정 약점을 이해하는 것은 마음속으로 기계 학습 모델 동작의 "멘탈 모델"을 형성하는 데 도움이 됩니다.
영역 불일치/모델 오류 디버깅 처리
영역 불일치를 처리하는 것은 모델 동작을 더 잘 이해하는 것과 밀접한 관련이 있습니다. 영역 불일치는 학습 데이터와 테스트 데이터의 분포가 다르다는 것을 의미하며, 이로 인해 모델이 테스트 데이터에서 성능이 저하될 수 있습니다. 영향 함수는 오류를 일으킨 학습 인스턴스를 식별할 수 있습니다. 수술을 받은 환자의 결과에 대한 예측 모델을 학습했다고 가정합니다. 모든 환자들은 같은 병원에서 왔습니다. 이제 다른 병원에서 이 모델을 사용하고 많은 환자에게는 잘 작동하지 않는다는 것을 알 수 있습니다. 물론, 두 병원의 환자 수는 서로 다르다고 가정할 수 있습니다. 이 두 병원의 데이터를 보면 여러 가지 특성이 다르다는 것을 알 수 있습니다. 그러나 모델이 "망가트린" 특성이나 인스턴스는 무엇일까요? 여기서도 영향력 있는 인스턴스가 이 질문에 대답하는 좋은 방법입니다. 모델이 잘못된 예측을 한 새로운 환자 중 한 명을 사용하여 가장 영향력 있는 인스턴스를 찾아 분석합니다. 예를 들어, 이는 두 번째 병원의 평균보다 더 나이가 많은 환자가 있다는 것을 보여줄 수 있으며, 학습 데이터에서 가장 영향력 있는 인스턴스는 첫 번째 병원의 환자 중 몇 명 안 되는 나이 많은 환자이며, 모델은 단순히 이 하위그룹을 잘 예측하는 방법을 학습하는 데 필요한 데이터가 부족했습니다. 결론은 이 모델이 두 번째 병원에서 잘 작동하기 위해서는 나이가 많은 환자들에 대한 데이터를 더 많이 학습해야 한다는 것입니다.
학습 데이터 고정
정확성을 확인할 수 있는 학습 인스턴스 수에 제한이 있다면 어떻게 효율적으로 선택할 수 있을까요? 가장 좋은 방법은 가장 영향력 있는 인스턴스를 선택하는 것입니다. 정의에 따라 모델에 가장 큰 영향을 미치기 때문입니다. 값이 분명히 잘못된 인스턴스가 있더라도 인스턴스의 영향력이 없고 예측 모델에 대한 데이터만 필요한 경우에는 영향을 받는 인스턴스를 확인하는 것이 좋습니다. 예를 들어, 환자가 병원에 남아 있어야 하는지 또는 일찍 퇴원해야 하는지 예측하는 모델을 학습합니다. 환자를 잘못 퇴원시키면 좋지 않은 결과를 초래할 수 있으므로 모델이 견고하고 정확한 예측을 수행하는지 확인해야 합니다. 환자 기록은 매우 지저분할 수 있으므로 데이터의 품질에 대한 완벽한 확신이 없습니다. 그러나 환자 정보를 확인하고 수정하려면 시간이 많이 걸릴 수 있습니다. 왜냐하면 어떤 환자를 확인해야 하는지 보고한 후에는 병원에서 실제로 다른 사람을 보내 선택된 환자의 기록을 좀 더 자세히 살펴봐야 하기 때문입니다. 손으로 직접 써서 보관해 둘 수도 있습니다. 환자의 데이터를 확인하는 데 한 시간 이상 걸릴 수 있습니다. 이러한 비용을 고려할 때 몇 가지 중요한 데이터 인스턴스만 확인하는 것이 좋습니다. 가장 좋은 방법은 예측 모델에 큰 영향을 미친 환자를 선택하는 것입니다. Koh와 Liang(2017)은 이러한 유형의 선택이 무작위 선택이나 가장 높은 손실 또는 잘못된 분류를 가진 사람들의 선택보다 훨씬 더 잘 동작한다는 것을 보여주었습니다.
영량력 있는 인스턴스를 식별할 때의 장점
삭제 진단 및 영향 함수의 접근 방식은 대부분 모델 불특정법 챕터에 제시된 특성 교란 기반 접근 방식과 매우 다릅니다. 영향력 있는 인스턴스를 살펴보면 학습 프로세스에서 학습 데이터의 역할이 강조됩니다. 따라서 영향 함수 및 삭제 진단은 기계학습 모델에 가장 적합한 디버깅 도구 중 하나가 됩니다. 여기서 제시된 기법 중 오류를 확인해야 할 인스턴스를 직접 식별하는 데 도움이 되는 것은 그것뿐입니다.
삭제 진단은 모델 불특정법이며, 이는 접근 방식을 모든 모델에 적용할 수 있습니다. 또한 미분 모델에 기초한 영향 함수도 광범위한 모델에 적용될 수 있습니다.
이러한 방법을 사용하여 서로 다른 기계학습 모델을 비교하고 예측 성능만 비교하는 것을 넘어, 서로 다른 행동을 더 잘 이해할 수 있습니다.
우리는 이 챕터에서 이 주제에 대해 이야기하지 않았지만, 미분 모델을 통한 영향 함수를 사용하여 적대적 학습 데이터를 생성할 수도 있습니다. 이러한 인스턴스는 모델이 조작된 인스턴스에 대해 학습될 때 모델이 특정 테스트 인스턴스를 올바르게 예측할 수 없도록 조작된 인스턴스입니다. 적대적 인스턴스 챕터의 방법과 다른 점은 공격이 학습 시간 동안 발생한다는 것입니다(중독 공격이라고도 함). 관심이 있으시다면 Koh와 Liang(2017)의 논문을 읽어보시기 바랍니다.
삭제 진단 및 영향 함수의 경우 예측의 차이와 영향 함수의 손실 증가를 고려했습니다. 그러나, 실제로, 그 접근 방식은 어떤 형태의 질문에도 일반화될 수 있습니다. "... 인스턴스 z를 삭제하거나 가중치를 높이면 어떻게됩니까?", 여기서 "..."를 원하는 모델의 함수로 채울 수 있습니다. 학습 인스턴스가 모델의 전체 손실에 얼마나 영향을 미치는지 분석 할 수 있습니다. 학습 인스턴스가 특성중요도에 얼마나 영향을 미치는지 분석 할 수 있습니다. 의사결정 트리를 학습시킬때 학습 인스턴스가 첫 번째 분할을 위해 선택되는 특성에 얼마나 영향을 미치는지 분석 할 수 있습니다.
영향력 있는 인스턴스를 식별핼 때의 단점
삭제 진단은 재학습이 필요하기 때문에 계산 비용이 매우 높습니다. 하지만 역사는 컴퓨터 자원이 끊임없이 증가하고 있다는 것을 보여주었습니다. 20년 전에는 자원 측면에서 생각할 수 없었던 계산이 스마트폰으로 쉽게 수행될 수 있습니다. 노트북에 수천 개의 학습 인스턴스와 수백 개의 파라미터가 있는 모델을 몇 초/분 내에 학습할 수 있습니다. 따라서 삭제 진단이 10년 후 대규모 신경망에서도 문제 없이 작동한다고 가정하는 것은 그리 큰 비약이 아닙니다.
영향 함수는 삭제 진단의 좋은 대안이지만 신경망과 같이 차별화 가능한 파라미터를 가진 모델에만 적용됩니다. 랜덤 포레스트, 부스트 트리(Boosted tree) 또는 결정 트리와 같은 트리 기반 방법에서는 작동하지 않습니다. 파라미터와 손실 함수가 있는 모델이 있더라도 손실은 구별할 수 없습니다. 하지만 마지막 문제에는 다음과 같은 요령이 있습니다. 예를 들어, 기초 모델이 일부 미분 가능한 손실 대신 힌지 손실(Hinge loss)을 사용할 때 영향을 계산하는 대신 미분 가능한 손실을 사용합니다. 손실은 영향 함수의 문제가 있는 손실의 평활화로 대체되지만, 모델은 여전히 평활하지 않은 손실로 학습될 수 있습니다.
영향 함수는 접근 방식이 파라미터를 중심으로 2차 확장을 형성하기 때문에 근사치일 뿐입니다. 근사치가 틀릴 수 있으며 제거할 때 인스턴스의 영향력이 실제로 더 크거나 더 낮을 수 있습니다. Koh와 Liang(2017)은 일부 인스턴스에서 영향 함수에 의해 계산된 영향이 인스턴스 삭제 후 실제로 재학습 되었을 때 얻은 영향도에 가깝다는 것을 보여주었습니다. 그러나 항상 근사치가 그렇게 가까울 것이라는 보장은 없습니다.
영향력 있는 인스턴스 또는 영향력 없는 인스턴스라고 하는 영향 측정의 명확한 분류는 없습니다. 예를 영향력별로 분류하는 것은 유용하지만, 인스턴스를 정렬하는 것뿐만 아니라 실제로 영향력 있는 경우와 영향력이 없는 경우를 구분할 수 있는 방법을 갖는 것은 매우 좋을 것입니다. 예를 들어, 테스트 인스턴스에 대해 가장 영향력 있는 상위 10개의 학습 인스턴스를 식별하면 상위 3개만 실제로 영향을 미쳤기 때문에 일부 학습 인스턴스는 영향을 받지 않을 수 있습니다.
영향 측정은 개별 인스턴스 삭제만 고려하고 여러 인스턴스를 한 번에 삭제하는 것은 고려하지 않습니다. 데이터 인스턴스 그룹이 클수록 모델 학습 및 예측에 큰 영향을 미치는 상호작용이 있을 수 있습니다. 그러나 문제는 조합론에 있습니다. 데이터에서 개별 인스턴스를 삭제할 수 없습니다. 학습 데이터에서 두 인스턴스를 삭제할 수 있는 횟수(n-1)가 있습니다. 세 번을 삭제할 수 있는 횟수(n-1)가 n개 있습니다. 이게 어떻게 진행되는지 알 수 있을 것 같지만 너무나 많은 조합이 있습니다.
소프트웨어 및 대안
삭제 진단은 구현하기가 매우 쉽습니다. 이 챕터의 예제를 위해 저자가 작성한 코드를 봅니다.
선형 모델 및 일반화된 선형 모델의 경우 Cook 거리와 같은 많은 영향도가 R의 stats 패키지에서 구현됩니다.
Koh와 Liang은 그들의 논문에서 영향 함수에 대한 파이썬 코드를 github저장소에 공개했습니다. 정말 잘 됐네요! 불행히도 이 코드는 논문의 코드일 뿐이지 유지되고 문서화된 Python 모듈은 아닙니다. 코드는 Tensorflow 라이브러리에 초점이 맞춰져 있으므로 sci-kit 학습과 같은 다른 프레임워크를 사용하는 블랙박스 모델에는 직접 사용할 수 없습니다.
Keita Kuita는 Koh와 Liang의 논문을 더 잘 이해할 수 있도록 해주는 영향 함수를 위한 훌륭한 블로그 글을 썼습니다. 블로그 게시물은 블랙박스 모델에 대한 영향력 함수의 수학적 배경에 대해 조금 더 자세히 설명하고, 이 방법이 효율적으로 구현되는 수학적 '트릭'에 대해서도 설명합니다.
참고자료: https://christophm.github.io/interpretable-ml-book/influential.html
'해석할 수 있는 기계학습 > 6. 예제 기반 설명' 카테고리의 다른 글
[해석할 수 있는 기계학습(6-3)]프로토타입과 크리티시즘(Prototypes and Criticisms) (0) | 2021.03.20 |
---|---|
[해석할 수 있는 기계학습(6-2)]적대적 예제(Adversarial Examples) (1) | 2021.02.04 |
[해석할 수 있는 기계학습(6-1)]반사실적 설명(Counterfactual Explanations) (0) | 2021.01.30 |
[해석할 수 있는 기계학습(6-0)] 예제 기반 설명(Example-Based Explanations) (0) | 2020.12.01 |