4주차(2) - Fast and Accurate Entity Recognition with Iterated Dilated Convolutions

2019. 2. 10. 21:00풀잎스쿨 NLP Bootcamp

논문링크: https://arxiv.org/abs/1702.02098

참고자료: (백병인님 자료)Fast and Accurate Entity Recognition with Iterated Dilated.pdf


Abstract

4주차 첫번째 논문인 'End-to-end Sequence Labeling via Bi-directional LSTM-CNN-CRF' 리뷰글에서 LSTM 방식을 통한 Sequence Labeling에 대해서 잠깐 소개했었다. 2017년은 GRU/LSTM과 같은 Sequential Model을 사용한 방식이 대세를 이루었다. 이는 Sequence 전체에 대한 Feature/Hidden State를 고려할 수 있다는 점이 가지는 이점이 매우 컸기 때문이다.

하지만 이러한 Sequential Model은 GPU에서의 병렬처리가 매우 비효율적이라는 큰 단점이 존재한다. 이는 모델의 학습 시간을 매우 많이 소모하게 되며, 이는 곧 Prediction속도에도 영향을 끼치게 된다. 물론 CNN방식을 사용하면 이러한 병렬처리의 단점을 커버할 수 있게 되지만, CNN은 Kernel의 크기만큼만 보게 된다는 단점이 존재한다.

이러한 CNN에서의 단점을 Dilated Convolution을 사용함으로써 RNN의 장점과 CNN의 장점을 모두 살리고자 한다. 해당 논문에서는 Dilated Convolution을 사용하여 Bi-LSTM-CRF(4주차 논문) 만큼의 Accuracy가 나오면서 Bi-LSTM-CRF에 비해 14~20배의 속도를 내는 모델을 제시한다.

해당 논문은 NER(Named Entity Recognition)에 대해서만 모델을 적용한다.

Contribution

CNN Model Description

이 모델에서는 기존 Bi-LSTM-CNN-CRF방식 대신 CNN만을 사용한 모델을 제시한다.



하지만 CNN을 사용할 경우, 모든 Feature를 한꺼번에 커버하기 위해서는 상당히 많은 수의 Layer가 필요해진다. 위 그림을 살펴보면, 4개의 Layer가 7개의 Feature에 대한 정보를 포함할 수 있고, 커버할 수 있는 Feature의 갯수는 Layer의 갯수에 선형적으로 비례하여 증가하게 된다.


만약 Dilated CNN을 사용하게 된다면 커버할 수 있는 Feature의 갯수는 Layer의 갯수에 지수적으로 지례하여 증가하게 된다. 위 그림을 따라 살펴보면 4개의 Layer가 포함할 수 있는 Feature 정보의 갯수는 15개이다. 4개의 Layer는 최대 33개의 Token을 포함할 수 있으며, 8개의 Layer를 사용한다면 최대 1000개 이상의 Token을 커버할 수 있게 된다. 이는 포함하고자 하는 Feature 정보의 갯수가 늘어감에 따라 필요한 Layer가 기하급수적으로 많이 차이가 나게 된다.


그렇다면 Dilated CNN은 반드시 좋은 방법이 되는걸까? 실험을 통해서 살펴본 바는 그렇지 않다. Dilated Conv.를 사용할 경우, Overfitting이 쉽게 일어난다는 단점이 있으며, Dilated Conv. Layer를 깊게 쌓을수록 학습이 진행되지 않는다는 단점이 존재한다. 그렇다면 이러한 단점을 해결할 방법이 있을까?


이 논문에서는 Iterated Dilated CNN(ID-CNN)이라는 방식을 통해 해결책을 제시한다. 여기서는 3개의 Dilated Layer만을 사용하여 Block을 만든 후, 해당 Block을 계속 재사용하여 학습하는 방식을 제시한다. 이러한 방식의 장점은 CRF처럼 Label간의 관련성을 직접 고려하지 않더라도, 간접적으로 오류 수정 효과를 기대할 수 있다는 점, 계산이 훨씬 간단하다는 점, 그리고 Vanishing Gradient에 대해 더 안전하다는 점이다.


학습에 사용한 Loss는 Maximum Log-likelihood이며, Average Loss Minimization을 사용하고 있다.

<Maximum log-likelihood>


<Average Loss Minimization>


Dropout

기존에 Dilated Conv.에서 Overfitting이 나오는 현상을 해결하지 못했던 것은 아니다. 보통 Dropout을 통해 이러한 Overfitting 문제를 해결하는 방식을 취했는데, 이러한 방식은 Deep-CNN에서 Test시의 성능을 떨어뜨린다는 단점이 존재한다. 따라서 해당 논문에서는 기존의 Dropout을 사용하는 대신 'Dropout with expectation-linear regularization'이라는 방법을 사용한다.
(Dropout with expectation-linear regularization 논문링크: https://arxiv.org/abs/1609.08017)

Result & Conclusion

Result

일단 결과 몇가지만 소개하고자 한다.

모델의 성능은 논문에서 제시했던 대로 Bi-LSTM-CRF에 비해 크게 개선되지는 않았다. BI-LSTM-CRF와 비교해보면 오차 범위 이내에 드는 것을 확인할 수 있다.


속도에서는 기존 방식에 비해 큰폭으로 증가한 것을 볼 수 있다. Bi-LSTM-CRF가 LSTM-RNN방식때문에 중첩되는 Sequential Model을 갖게 됨으로써 속도가 느려진 부분이 있었다면, 해당 논문에서는 CNN방식을 통해 병렬처리에 유리한 구조를 가지게 됨으로써 확실하게 성능 개선을 이루어 냈다. 다만 CRF Layer를 사용할 경우, 여전히 느린 모델이라는 점은 동일하다.


Dropout을 사용할 경우에 어느정도의 성능 개선을 보인다. 다른 방식에 비해 Dropout을 사용할 때 성능이 늘어난 폭이 큰 것을 확인할 수 있다.


Conclusion

이 논문에서는 Dilated Conv.를 통해 기존 방식보다 더 빠른 성능을 보이고자 하는 시도를 보여준다. 실제로 결과를 살펴보면 CRF를 사용하지 않는 방식에 비해 엄청나게 속도가 빨라졌다고 느껴지지는 않는다. (다만 기존 방법에 비해 28%정도 더 빨라졌다면 상당한 속도 개선은 맞다) 다만 성능이 엄청나게 좋아진 점은 아니라는 점을 눈여겨 보고 싶다.

한가지 재밌는 점은, 발표를 들으면서 들었던 사람들의 느낌은 논문 자체가 대학원생의 모델 제작기 같은 느낌이라는 것이다. 여러가지 시도를 그대로 보여주는 것과 어떤 부분에서 실패했고 어떤 부분에서 잘 되었는지 자세히 보여주는 점 때문에 그렇지 않을까 싶다.