데이터의 가치를 평가하는 방법
머신러닝 관점에서 데이터의 가치는 모델의 정확도 개선에 얼마나 도움이 되는가에 달려 있다. 모델을 평가하는 메트릭은 정량화되어 있으므로, 해당 데이터를 학습에 사용했을 때와 아닐 때의 차이, 즉 기여도도 숫자로 표현할 수 있다. 기여도를 평가하는 방법인 Shapley Value는 Interpretable ML에도 쓰이지만 데이터의 가치를 평가하는 데에도 활용할 수 있다. 이런 아이디어를 제안한 논문이 Data Shapley라는 이름으로 2019년 ICML에 발표되었다.
Approximation
정확한 Shapley Value를 구하려면 모든 조합에 대해 기여도를 구해야 하지만 현실적으로 불가능하다. 저자들은 값을 근사(Approximate)하는 방법 두 가지를 제안한다.
- TMC(Truncated Monte Carlo)
- 자연스럽게 몬테카를로 방법이 나온다. 원래의 Shapley Value가 모든 조합에서 기여도의 평균(기댓값)이기 때문에, 랜덤으로 데이터를 섞고(Random Permutation) 각 데이터의 한계 기여도 구하기를 반복한 뒤 평균내면 불편 추정(Unbiased Estimate)이 된다.
- Truncation: 학습 데이터 개수가 일정 이상이 되면 새로운 데이터 1개가 기여할 수 있는 양은 점점 작아진다. Random Permutation 스캐닝 중에 중에 메트릭이 (저자들이 정의한) Performance Tolerance 범위 안에 들면 나머지의 Value는 굳이 계산하지 않고 0으로 처리해서 처리 효율성을 높였다고 한다.
- Gradient Shapley (G-Shapley)
- 모델 학습이 오래 걸리는 경우에는 TMC를 쓸 수 없다.
- Gradient Shapley는 많은 모델이 파라미터 업데이트에 Gradient Descent 방법을 쓰는 데 착안해서, 해당 데이터로 파라미터 업데이트 하기 전후의 메트릭 차이를 기여도로 보는 방식이다.
Experiments
이렇게 계산한 결과가 정말로 의미있는지 어떻게 검증할 수 있을까?
- 학습 데이터에서 Shapley Value가 높은 것부터, 낮은 것부터, 랜덤 순서로 데이터를 빼면서 메트릭의 변화를 비교한다. 가치가 높은 데이터를 뺐다면 모델 정확도가 급격히 떨어질 것이고, 실제로 그런 결과가 나왔다. 흥미로운 건, 가치가 낮은 데이터를 뺀 경우에는 정확도가 오히려 증가하기도 했다는 점. (아웃라이너? 잘못된 레이블?)
- 새로운 데이터를 획득하는 순서(Active Learning)에도 똑같이 적용할 수 있다. 현재 데이터에서 Shapley Value가 높은 것과 비슷한 데이터를 추가했을 때, 랜덤이나 Value가 낮은 데이터와 비슷한 경우에 비해 모델 개선에 효과적이었다. 이 경우에도 Value가 낮은 데이터를 추가하면 모델 성능이 떨어지는 결과가 나왔다.
Discussion
마지막으로 저자들이 언급한 유의사항도 같이 기록해둔다. Value라는 용어를 쓰고 있지만, 이 값은 특정한 머신러닝 태스크와 평가 메트릭이라는 컨텍스트 안에서 의미가 있다는 점을 유념해야 한다. 예를 들어, 스팸 필터링 태스크라면 스팸 감지에 도움이 되는 데이터의 “가치”가 높겠지만 그런 스팸 메일이 가치있는 것은 아니다. 또한 사람들이 자신의 Shapley Value에 따라 평가나 보상받아야 한다고 제안하는 것도 아님을 분명히 했다.
Moreover we do not propose that people should be exactly compensated by their data Shapley value; we believe data Shapley is more useful for the quantitative insight it provides.