본문 바로가기

전체 글

(155)
트랜스포머(Transformer) (3) 2. 트랜스포머 아키텍처■ 트랜스포머 아키텍처는 다음 그림과 같다. 2.5 디코더(Decoder) 구조 ■ 트랜스포머 디코더도 \( N = num layers \)개의 동일한 디코더 계층 스택을 쌓을 수 있다.- 논문에서 사용한 \( N = 6 \)■ 또한, 인코더처럼 디코더 계층의 sub layer 주위에는 잔차 연결을 사용하고, 그 뒤에 계층 정규화를 적용한다. - 논문에서 적용한 층 정규화 방식은 사후 정규화■ 그리고 sub layer로 멀티 헤드 셀프 어텐션을 가지고 있는데, 인코더의 멀티 헤드 셀프 어텐션과 다른 점은 현재 위치가 다음 위치들을 참조하지 못하도록 마스킹한 "Masked Multi-head Self-Attention"이라는 점이다. ■ 이외에도, 인코더 연산이 끝난 다음, 디코더가..
트랜스포머(Transformer) (2) 2. 트랜스포머 아키텍처■ 트랜스포머 아키텍처는 다음 그림과 같다. 2.2 어텐션(Attention)■ 트랜스포머에서 사용되는 세 가지의 어텐션은 Encoder에서 수행되는 셀프 어텐션(Self-Attention)과 Decoder에서 수행되는 Masked Self-Attention 그리고 Encoder와 Decoder를 연결하는 부분에서의 Attention이다. ■ 이때, 각 어텐션 앞에 "Multi-head"라는 이름이 붙어있는데, 이는 한 번에 하나의 어텐션 연산만 수행하는 게 아니라 여러 어텐션 연산을 병렬적으로 동시에 수행하는 것을 의미한다. ■ 논문에는 아래의 그림과 같이 Scaled Dot-Product Attention과 Multi-Head Attention이 소개되는데, 왼쪽의 Scaled..
트랜스포머(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..