3. Seq2Seq 모델
(1) Seq2Seq 소개
□ Seq2Seq는 하나의 시퀀스를 다른 시퀀스로 변환하는데 사용되는 신경망 구조
■ 주로 기계 번역이나 챗봇, 내용요약 분야에서 활용됨
■ 입력 시퀀스와 출력 시퀀스를 각각 질문과 대답으로 구성하면 챗봇을 만들 수 있고 입력 시퀀스와 출력 시퀀스를 각각 원문과 번역문으로 하면 기계 번역에 활용할 수 있음
(2) Seq2Seq의 구조
□ Seq2Seq는 인코더와 디코더라는 모듈로 이루어져 있고 인코더와 디코더는 모두 RNN 구조로 입력 시퀀스를 받는 RNN 구조를 인코더, 출력 시퀀스를 만드는 RNN 구조를 디코더라고 함
■ 인코더가 문장의 단어들을 순차적으로 입력받고 컨텍스트 벡터를 만들고 이를 기반으로 디코더가 원하는 출력 시퀀스를 생성
■ RNN 구조는 기본 RNN 보다는 주로 LSTM이나 GRU 가 사용됨
■ 인코더 부분에서 기존의 문장은 단어별로 토큰화가 돼서 RNN 모듈에 각 시점에 입력이 됨
□ 인코더는 입력 시퀀스를 입력으로 받아 고정된 길이의 컨텍스트 벡터를 생성함
■ 인코더의 역할은 입력 시퀀스의 문맥 정보를 디코더에 전달 하는 것
■ 입력 시퀀스는 길이가 정해져 있지 않음
■ 인코딩 과정은 임의의 길이를 가진 입력 시퀀스를 고정된 길이의 벡터로 변환하는 작업임
■ 인코더 부분에서 입력이 완료된 뒤에 마지막 RNN 모듈의 은닉 상태를 컨텍스트 벡터라 하고 컨텍스트 벡터는 입력 시퀀스의 정보를 요약하고 압축한 것으 로 시퀀스의 의미와 정보를 인코딩함
□ 디코더는 고정 길이 컨텍스트 벡터를 입력으로 받아 출력 시퀀스를 생성
■ 컨텍스트 벡터는 디코더 RNN 모듈의 첫번째 은닉 상태로 입력이 됨
■ 는 문장의 시작을 의미하는 심볼로 디코더에 맨 처음 입력으로 들어감. 가 입력되면 디코더 RNN 모듈은 다음에 등장할 확률이 가장 높은 단어를 예측함. 그 단어는 다음 시점 RNN 모듈의 입력으로 들어감. 이러한 과정을 반복해서 문장의 끝을 의미하는 가 출력될 때까지 다음 단어들을 순차적으로 예측함
□ RNN 모듈이 인코더와 디코더의 기본 구조인 만큼 이전 시점의 은닉 상태 와 이전 시점에 예측된 토큰 가 입력으로 들어옴
■ 디코더에서는 와 가 현재 시점의 은닉 상태 가 되어 이번에 예측한 토큰과 함께 새로운 토큰을 예측
■ 이전 시점의 은닉 상태를 사용해 다음 단어를 예측하는 과정은 출력 시퀀스를 생성할때 문맥을 고려하는 중요한 역할을 함
□ 디코더는 출력 단어로 올 수 있는 단어를 예측하기 위해 소프트맥스 함수를 사용
■ 디코더의 각 RNN 모듈에서 출력 벡터가 나오면 소프트맥스 함수를 통해 출력 시퀀스의 단어별 확률을 구하고 가장 높은 확률을 가진 단어를 출력함
(3) Seq2Seq의 한계
□ 입력 시퀀스의 모든 정보를 고정된 길이의 컨텍스트 벡터에 압축하는 과정에서 정보의 소실이 발생
■ 시퀀스의 길이가 길수록 정보가 많이 압축되므로 소실되는 정보의 양도 많아짐
□ 모델이 학습한 단어의 범위를 벗어나는 내용을 처리하는데 어려움이 존재
■ 모델에 등록되지 않은 단어나 흔히 사용하지 않는 단어를 사용하는 경우 문제가 발생할 수 있음
'인공지능 > 딥러닝' 카테고리의 다른 글
Pytorch - Tutorials(파이토치 모델 학습 코드 설명) (1) | 2024.04.09 |
---|---|
Transformer (2) | 2024.03.17 |
Attention Mechanism (1) | 2024.03.17 |
인공 신경망의 종류 (2) LSTM (0) | 2024.03.17 |
인공 신경망의 종류 (1) RNN (0) | 2024.03.17 |