오늘 가져온 논문은 Explaining Time Series Predictions with Dynamic Masks (Crabbe et al., 2021 ICML Accepted)입니다. 흥미로운 논문이기는 하나 성능 및 실효성 검증이 조금 더 필요해 보이긴 합니다.
Link - https://arxiv.org/abs/2106.05303
Intro:
많은 머신러닝 방법론들의 고질적인 문제는 Black-box라는 점입니다. 결과가 나와도 왜 이런 결과가 나왔는지 정확하게 알 수 없죠. 이를 해결하기 위해 다양한 방법들이 도입되었는데, 그 중 하나인 Saliency Method 또한 널리 사용되는 방법 중 하나입니다. 저 또한 예전 포스팅에서 뉴럴넷을 사용해 주식 가격을 예측하는 모델을 만들었었는데, 이의 검증을 위해 Saliency map을 이용한 적이 있습니다. ( https://ajlab402.blogspot.com/2019/06/stock-price-prediction-mlp-visualization.html )
Saliency method는 input 중에서 어떤 feature가 output을 뽑아내는데 가장 많은 영향을 끼쳤는지를 분석하여 어떤 feature가 중요한지를 알아내는 방법입니다. Saliency method에도 gradient 기반, perturbation 기반, Attention 기반 등등 다양한 갈래가 있지만 여기서는 perturbation을 기반으로 하여 Dynamask라는 것을 만들고, 이를 통해 어떤 feature가 중요한지를 알아내고자 합니다.
Sketch:
목표는 Time series의 input 중에서 중요한 feature를 dynamic하게 골라내는 것입니다. 즉, 중요한 feature가 항상 고정된 것이 아니라 상황에 맞게 중요한 feature를 골라내는 것입니다. 중요한 feature를 정확히 골라낼 수 있다면 input에 낀 노이즈를 제거할 수 있을 뿐만 아니라, 오버피팅에 덜 노출될 수 있습니다. 그러나 모든 상황에서 중요한 feature가 같지 않기 때문에, 이를 상황에 맞게 골라내는 것이 목표입니다. 모델의 아키텍쳐는 다음과 같습니다.
X가 input이고, Black Box가 예측에 사용하는 모델입니다. Y는 예측값이고, M이 dynamic mask, Ym은 perturbation 이후의 예측값입니다. 흐름을 간단하게 요약하면 'Mask를 씌우기 이전의 예측값과 Mask를 씌우고 나서의 예측값이 적도록 유지하며, 목표한 개수에 근접한 feature들만 강조하는 Mask를 찾는 것' 정도가 되겠습니다.
Mask의 Optimization은 다음과 같이 이루어집니다.
Le는 Y와 Ym의 차이 (Regression의 경우 mse / Classification의 경우 cross entropy), La는 Mask에서 강조하는 개수를 a개로 남겨두기 위한 loss, Lc는 time step별로 mask간 차이가 크지 않도록 하기 위한 loss입니다. (자세한 부분은 2.3. Mask Optimization 참조)
알고리즘을 요약하면 다음과 같습니다.
Experiments:
Mask의 성능을 알기 위해서는 두 가지 문제점이 존재합니다. 첫째는 data에서 어떤 input이 실제로 relevant한지를 알아야한다는 점이고, 두 번째는 black-box function에 따라 saliency의 성능이 달라진다는 점입니다. 이를 해결하기 위해 총 3번의 실험을 진행했고, 성능은 현존하는 알고리즘들인 Feature Occlusion, RETAIN, DeepLIFT, LIME 등과 유사한 성능을 보였습니다.
Conclusion:
신기했던 부분은 mask를 뽑아내는 방법이 다른 function을 활용하는 것이 아니라 그냥 벡터 하나를 두고 여기다 바로 backpropagation을 하는데도 어느정도 잘 작동한다는 점이었습니다. 그러나 문제점은 성능이 별로 좋지 않은 것 같다는 점입니다. 비교적 간단한 앞의 2개 실험에서는 다른 알고리즘들을 뛰어넘는 성능을 보였지만, 가장 어려웠고 그나마 현실에서 접할만한 세 번째 실험의 경우 accuracy가 다른 알고리즘들에 비해 현저히 떨어졌습니다. 높았던 점은 Mask를 씌우기 전과 후의 output이 비슷하다는 점인데, 사실 accuracy가 낮으면 비슷하다고 해도 매력도가 떨어집니다. 뿐만 아니라 마지막 실험에서의 mask information과 mask entropy를 report해주지 않은 점을 보니 mask entropy가 높았을 것 같은 느낌이 듭니다. 결국 어려운 태스크에서는 이렇게 간단한 masking으로는 feature를 골라내기 힘들 뿐더러 mask의 optimization에 사용한 다른 loss들 때문에 accuracy까지 낮아지는 단점이 있습니다.
따라서 실전 적용 가능성에 대해서는 낮게 점쳐집니다. 그러나 이렇게 간단한 mask로도 생각보다 feature selection이 가능한 것을 보니 생각보다 mask에 제약을 많이 걸어도 잘 작동하는 것 같습니다. 이 부분에 대해서는 실전에 도입해서 몇 가지 확인해보면 좋을 것 같은 느낌이 듭니다.
댓글 없음:
댓글 쓰기