Processing math: 100%
본문 바로가기

자연어처리

(50)
트랜스포머(Transformer) (1) 1. 기존 Seq2Seq 모델의 한계■ 기존의 Seq2Seq 모델은 Encoder-Decoder 구조로 구성되어져 있었다. 여기서 Encoder는 입력 시퀀스를 하나의 고정 길이 벡터(context vector)로 압축하였고, Decoder는 이 벡터를 받아 출력 시퀀스를 생성했다.■ 하지만, 이러한 구조는 Encoder에서 입력 시퀀스를 고정 길이 벡터로 압축하기 때문에, 입력 시퀀스의 길이가 길어지면, 입력 시퀀스의 정보가 일부 손실된다는 단점이 있었다.■ 이 단점을 보완하기 위해 어텐션(Attention)을 RNN 계층의 보정을 위한 용도로 사용하였다.■ 어텐션을 사용해도 단점이 남아 있는데, 그것은 바로 RNN은 "병렬 처리가 불가능"하다는 것이다. ■ Encoder와 Decoder에 RNN을 사..
어텐션(Attention) (4) 1. Seq2Seq + Attention을 이용한 이미지 캡셔닝(Image Captioning)■ 시퀀스투시퀀스(Sequence‑to‑Sequence, seq2seq) (4) 에서 일반적인 Seq2Seq 구조를 이용한 이미지 캡셔닝을 구현하였다. 이번 예시에서는 여기에 어텐션 메커니즘을 추가하여 구현한다. ■ 아래의 그림은 어텐션 메커니즘을 통해 이미지를 설명하는 문장(캡션)을 생성하는 과정에 대한 그림이다. ■ 위의 그림에서 이미지가 입력으로 들어가는 부분을 Encoder, 캡션이 입력으로 들어가는 부분을 Decoder로 본다면,■ 이미지가 Encoder의 입력으로 들어가서, CNN 모델을 거쳐 특징 맵(feature map)(또는 특징 벡터)으로 변환된다. ■ Seq2Seq + Attention에서 ..
어텐션(Attention) (3) 1. Seq2Seq + Attention을 이용한 번역기 구현■ 시퀀스투시퀀스(Sequence‑to‑Sequence, seq2seq) (2) 에서 일반적인 Seq2Seq 구조를 이용한 번역기를 구현하였다. 이번 예시에서는 여기에 어텐션 메커니즘을 추가하여 번역기를 구현한다. 데이터 전처리 및 데이터 로드 과정은 동일하다. 1.1 Seq2Seq + Attention의 Encoder ■ Encoder 구조는 일반적인 Seq2Seq의 Encoder 구조와 동일하다. 입력 시퀀스가 들어오면, 입력 시퀀스는 임베딩 계층과 LSTM 계층을 통과하여 은닉 상태를 반환한다.class Encoder(nn.Module): def __init__(self, src_vocab_size, embedding_dim, hid..
어텐션(Attention) (2) 1. Seq2Seq + Attention■ 어텐션(Attention) (1) 에서 Seq2Seq 모델에 어텐션 메커니즘을 적용할 때, Query는 Decoder의 은닉 상태, Key와 Value는 Encoder의 은닉 상태들로 설정한다고 하였다. ■ 이렇게 설정하는 이유는 어텐션의 핵심 아이디어와 동작 방식에 기반한 것이다. 1.1 Seq2Seq + Attention의 아이디어■ SeqSeq + Attention의 핵심 아이디어는 Decoder가 출력 단어를 예측할 때, Encoder 입력 시퀀스의 어떤 부분에 더 주목(Attention)해야 할지를 결정하는 것이다. ■ 이를 쿼리(Query), 키(Key), 값(Value) 관점에서 설명하면 다음과 같다.① 쿼리(Query): 디코더의 은닉 상태(Hid..
어텐션(Attention) (1) 1. 어텐션(Attention)1.1 RNN에 기반한 Seq2Seq의 문제점■ RNN에 기반한 Encoder-Decoder 구조의 Seq2Seq 모델은 Encoder가 시계열 데이터를 인코딩한 후, 그 정보를 고정 길이 벡터 h에 담아 Decoder에 전달한다. ■ Decoder는 이 벡터를 바탕으로 정답(또는 타깃)과의 비교를 통해 예측 결과를 평가하고, 이를 바탕으로 Loss를 계산하여 학습을 수행하는 구조이다.■ 이렇게 RNN에 기반한 Seq2Seq구조에는 두 가지 주요한 문제점이 있으며, 각각 Encoder와 Decoder에 관련되어 있다.■ 먼저, RNN에 기반한 Decoder의 문제점은 고질적 문제인 기울기 소실 문제이다.■ Encoder의 문제점은 은닉 상태와 관련이 있다.■ E..
언어 모델의 평가 방법 - Perplexity, BLEU Score(Bilingual Evaluation Understudy Score) 1. Perplexity(PPL)■ 시퀀스투시퀀스(Sequence‑to‑Sequence, seq2seq) (2)에서 언어 모델(Language Model)인 Decoder가 얼마나 정확하게 번역했는지 평가하는 번역 성능 지표로 Perplexity(PPL)를 사용했다.1.1 Perplexity 의미■ 입력 데이터가 여러 개인 경우 Perplexity(PPL)의 공식은 다음과 같다. ■ 계산된 perplexity 값의 해석은 '과거 단어 다음에 출현할 수 있는 단어의 후보 수'이다. 그러므로 값이 낮을수록 모델의 예측 성능이 좋은 것으로 간주할 수 있다.- 만약 perplexity 값이 10이라면, 이는 과거 단어의 다음 단어로 출현할 수 있는 단어의 후보가 10개임을 의미한다.- perplexity 값이 ..
시퀀스투시퀀스(Sequence‑to‑Sequence, seq2seq) (4) 1. Seq2Seq 응용 - 이미지 캡셔닝(Image Captioning) ■ Seq2Seq는 '어떤 하나의 시계열 데이터'를 '다른 시계열 데이터'로 '변환'하는 프레임워크라고 할 수 있다.■ 시계열 데이터를 변환하는 프레임워크를 이용하여 영어-프랑스어 번역처럼 '한 언어의 문장(입력 시퀀스)'을 '다른 언어의 문장(출력 시퀀스)'으로 변환하는 "기계 번역", '긴 문장(입력 시퀀스)'을 '짧은 요약문(출력 시퀀스)'으로 변환하는 "문장 요약", '질문(입력 시퀀스)'에 대한 '응답(출력 시퀀스)'을 생성하는 "질의-응답" 등에 이용할 수 있다. ■ Seq2Seq는 2개가 짝을 이루는 시계열 데이터를 다루는 문제에도, 자연어 외에도 음성이나 영상 등에도 이용할 수 있다. 음성과 영상에도 어떤 '순서(s..
시퀀스투시퀀스(Sequence‑to‑Sequence, seq2seq) (3) 1. Seq2Seq 개선 ■ Seq2Seq 모델의 학습 진행 속도와 정확도를 개선할 수 있는 방법으로 입력 데이터를 반전(reverse)하는 것과 Peeky Decoder를 사용하는 방법이 있다. 1.1 Encoder에 들어가는 입력 시퀀스 반전(reverse)■ 첫 번째 방법은 Encoder에 입력되는 입력 시퀀스 데이터의 순서를 반전시켜 Encoder 모델어 입력하는 것이다. 이 기법은 단순하지만 성능을 개선시킬 수 있다.■ 입력 시퀀스 반전 기법이란, 예를 들어 '나', '는', '고양이', '로소', '이다.'라는 순서를 가지는 시퀀싀의 순서를 반전시켜 '이다', '로소', '고양이', '는', '나'와 같이 역순으로 Encoder 모델에 입력하는 것이다.■ 단순히 입력 시퀀스의 순서를 바꾸는 ..