RNN(Recurrent Neural Net) 순환 신경망
1. 시퀀셜 데이터란?
영화에서 시퀀스, 자동차의 시퀀셜 라이트 모두 순차적으로 진행됩니다.
순차적으로 진행된다는 것은 결국 시간을 가지고 이는 순서 정보를 가집니다.
영화 장면과 라이트는 동적인 순서 정보가 있는데 텍스트는 정적으로 있어 순서 정보가 있다고 하면 의아할 수 있습니다.
하지만, 텍스트의 어휘, 문장을 순차적으로 읽는다면 이또한 순서 정보가 될 수 있습니다.
이러한 순서 정보를 초점화하여 input을 학습하는 것을 sequential modeling이라고 합니다.
시퀀셜 모델링은 신경망 중에서도 순환 신경망(RNN)이 적합합니다.
2. 시퀀셜 태스크
그럼 시퀀셜 데이터를 어떻게 처리할 수 있고 그와 관련된 태스크들은 무엇이 있을까요?
Many to One
-다중 시퀀스 입력 그리고 하나의 결과
감성 분석 태스크를 예로 들 수 있습니다.
한국어 감성분석 태스크의 대표적인 데이터로 네이버 영화 감성 말뭉치가 있습니다.
이는 네이버 영화평의 positive와 negative가 1, 0으로 어노테이션되어 있는 말뭉치입니다.
Many to Many
-다중 시퀀스 입력 그리고 다중 시퀀스 결과
대표적으로 기계번역, 품사태깅 등이 있는데 아래 페이퍼와 같은 구문 분석에도 적용되는 것을 알 수 있습니다.
https://www.dbpia.co.kr/Journal/articleDetail?nodeId=NODE06398389
3. RNN 특징
RNN의 특징은 타임스텝마다 같은 가중치(W)를 적용한다는 것이 Feed-forward NN와 차이를 가진다는 것입니다.
새로운 상태는 이전 상태와 가중치의 영향을 받아 결정되는 것입니다.
위의 figure는 many to one 태스크 아키텍처를 보여줍니다.
위에서 첫 번째 hidden state는 random initailize로 설정됩니다.
감성분석을 예로 들면 sentiment는 이진 벡터로 판단되는 것이 아니라 아니라 마지막 스텝을 거친 벡터로만 분류하는 것입니다.
LSTM(Long Short Term Memory)
RNN 후속 모델 LSTM
RNN은 시퀀스 길이가 길어지면 앞에서 입력된 데이터를 잊어버리는 단점이 있습니다.
하지만 LSTM은 긴 시퀀스, 문장들도 해결할 수 있게 합니다.
바로, 기존 RNN의 hidden state 이외에 별도의 cell state를 두어 이전 정보를 기억하는 것입니다.
물론, LSTM도 무한정 긴 시퀀스를 잘 처리하는 것은 아닙니다.
RNN보다 상대적으로 긴 시퀀스를 가능한 것입니다.
얻는 것이 있으면 잃는 것이 있듯이, LSTM은 수식이 복잡해져 많아진 파라미터를 훈련 시켜야 해서 데이터와 시간이 더 많이 필요합니다.
아래는 LSTM을 양방향으로 구현한 Bidrectional LSTM을 활용한 의존구문분석기에 관한 페이퍼입니다.
의존 구문 분석(dependency parsing)은 한 문장씩 분석해야 하는데, 평균 10어절 보다 긴 문장들은 상대적으로 챌린지가 필요합니다.
하태빈, 이태현, 서영훈(2018), Bidirectional LSTM을 이용한 전이기반 한국어 의존 구문분석
https://www.koreascience.or.kr/article/CFKO201832073078920.pdf
예를 들어, '나는 학교를 가려다가 주택 청약 상품이 새로 나와 은행을 들리고 연구실로 갔다.'
문장이 길다보니 '나' 주어가 dependent인 '갔다.'와 relation을 가져야 하는데, 마지막 입력인 '갔다'가 문장의 처음 토큰 '나는'과 연결하려면 잊지 않고 기억하고 있어야 합니다.
다른 포스팅에서 한국어 의존구문분석의 모델들이 어떻게 변화되어 왔는지도 따로 정리해보겠습니다.
Reference
http://cs231n.stanford.edu/slides/2017/cs231n_2017_lecture10.pdf
'자연어처리' 카테고리의 다른 글
Transformer - 당신이 필요로 할 장독대 (0) | 2021.06.10 |
---|---|
MRC - 언어능력평가 (0) | 2021.06.09 |
Seq2Seq - 입력과 출력 (0) | 2021.05.22 |
Word2Vec - 단어를 숫자로 (0) | 2021.05.19 |
NLP 벤치마크 데이터셋 - 영어와 한국어 (1) | 2021.05.06 |