Seq2Seq(2)
-
[NLP] Attention
이전 장에서는 하나의 시계열을 입력받아 다른 시계열을 출력하는 Seq2seq 모델에 대해서 살펴보았다. 이번 장에서는 NLP에서 가장 중요한 개념 중 하나인 Attention이 무엇인지 알아보고 구현해보도록 하겠다. 간단한 seq2seq 모델에서는 Encoder로부터 마지막 시점의 은닉 상태(h)만을 이어 받아 Decoder가 이 은닉상태(h)에만 의존한 채 학습을 해나갔다. 마지막 은닉상태 말고 전체 은닉상태를 활용하는 방법이 있다면 더 좋은 학습이 이루어질 수 있다. Encoder에서 생성하는 각 시점의 은닉상태들(hs)의 정보를 Decoder에게 전달하는 방법이 Attention이다. Attention은 말그대로 '주목' 이므로 Decoder가 Encoder의 어떤 시점의 은닉상태에 주목해야할지를 ..
2023.02.26 -
[NLP] Seq2seq
저번 장에서는 LSTM과 같은 모델을 통해서 게이트가 추가된 RNN 모델이 어떻게 장기 기억을 가져가는지 알아볼 수 있었다. 이번 장에서는 이 LSTM 모델을 Encoder와 Decoder라는 2가지 형태로 구현하여 하나의 시퀀스(시계열)를 다른 시퀀스로 변환하는 방법을 알아보도록 하자. seq2seq 모델은 하나의 순환 신경망(Encoder)에서 입력을 통과시켜 출력된 마지막 은닉 상태(h)를 다른 신경망(Decoder) 에 전달한다. 이 은닉 상태(h)는 입력(x)에 대한 정보를 하나로 응축시킨 데이터라고 할 수 있다. Decoder는 이 마지막 은닉 상태만을 가지고 입력에 대한 시계열을 출력한다. Encoder부터 구현해보자. class Encoder: def __init__(self, vocab_..
2023.02.26