s5unnyjjj's LOG

[sunnyjjj's Review] Sequence Models & Attention Mechanism 본문

Review (Paper, Code ...)/Etc Review

[sunnyjjj's Review] Sequence Models & Attention Mechanism

s5unnyjjj 2024. 10. 10. 21:31

강의 제목: Sequence Models & Attention Mechanism

 - Basic Models
 - Picking the Most Likely Sentence
 - Beam Search

강사: Prof. Andrew Ng VP & Chief Scientist of Baidu; Co Chairman and Co Founder of Coursera; and an Adjunct 

 

위 강의를 보고 내용을 작성하였습니다.


1. Basic Models

 * Sequence models are useful for everything from machine translation to speech recognition

   - Translation French sentence like Jane visite I’Afrique en septembre to the English sentence like Jane is visiting Africa in September

 

 *  The ideas are from these two papers

   - Sutskever et al, 2014. Sequence to sequence learning with neural networks

   - Cho et al, 2014. Learning phrase representations using RNN encoder-decoder for statistical machine translation

 

Additional Explanation

Sequence model은 Jane visite I’Afrique en septembre와 같은 프랑스어 문장에서 Jane is visiting Africa in September와 같은 영어 문장을 의미하는 machine translation부터 speech recognition까지 다양한 분야에서 유용합니다. 본 아이디어는 아래와 같은 “Sequence to sequence learning with neural networks”와 “Learning phrase representations using RNN encoder-decoder for statistical machine translation”인 두 개의 논문에서 나오게 되었습니다.

 

 

 

Additional Explanation

Sequence model은 크게 두 개로 구성된 아키텍처로 구성되는데, 그것을 Encoder와 Decoder라고 부릅니다. 인코더 아키텍처와 디코더 아키텍처의 내부는 사실 두 개의 RNN 아키텍처입니다. 입력 문장을 받는 RNN 셀을 인코더라고 하고, 출력 문장을 출력하는 RNN 셀을 디코더라고 합니다. 근래에는 성능 문제로 인해 실제로는 RNN이 아니라 LSTM 셀 또는 GRU 셀들로 구성된다고 합니다. Encoder는 입력 문장인 French 문장의 모든 단어들을 순차적으로 입력으로 넣은 뒤에 마지막에 모든 단어 정보들을 압축해서 하나의 벡터로 만들게 됩니다. 이렇게 입력 문장의 정보가 하나의 벡터로 모두 압축되면 인코더는 해당 벡터를 디코더로 전송합니다. 디코더는 벡터를 받아서 번역된 단어를 한 개씩 순차적으로 출력하게 됩니다.

 

 

Additional Explanation

본 구조는 image captioning에서의 작동과 매우 유사합니다. Image captioning을 하고 싶은 이미지를 input으로 넣게 되는데, 여기서는 pretrained Alexnet을 사용하여 input image의 특징을 학습하게 됩니다. 해당 이미지를 input으로 넣게 되면 마지막에 입력 이미지를 나타내는 4096개의 feature vector로 나타나게 됩니다. 여기서 pretrained Alexnet은 encoder 네트워크가 될 수 있습니다. encoder의 입력으로 넣은 특징들을 압축해서 하나의 벡터로 만들었다면 해당 벡터를 decoder의 입력으로 넣게 되면, decoder 네트워크는 한 번에 한 단어의 caption을 생성하게됩니다. 본 구조는 생성하고자 하는 caption이 길지 않는 경우에 Image captioning에서 잘 작동합니다.

(+) Image captioning: 이미지를 보고 어떤 이미지인지 언어로 설명함으로써 캡션을 달아주는 작업이다.

 

2. Picking the Most Likely Sentence

 *  Language model

   - Language model allows you to estimate the probability of a sentence

 

 * Machine translation model

   - Machine translation model uses the encoding network in green and the decoding network in purple

   - The decoder network looks pretty much identical to the language model

Additional Explanation

Language model은 한 문장의 확률을 추정하며 하나의 네트워크로 구성되어있습니다. 반면 Machine translation model은 초록색으로 표현된 인코딩네트워크와 보라색으로 표현된 디코딩네트워크로 구성되어있습니다. 디코딩 네트워크가 Language model과 유사하며, 디코딩 네트워크는 인코딩 네트워크에서 입력 문장을 나타내는 형태로 출력한 값으로 시작하게 됩니다.

 

 

Additional Explanation

French sentence가 input으로 들어감으로써 조건이 부여 되었다는 의미로 Machine translation model은 Conditional language model이라고도 불립니다. 하지만 아래처럼 보여지다시피 무작위로 단어를 샘플링하여 문장을 얻게 된다면 기대하는 문장과는 다른 번역을 받게 됩니다. 그러므로 단어의 전체 순서를 y1, y2,... ,y<ty>까지 골라서 전체 단어의 공동 확률을 극대화 하기 위해서 Decoding 하는 방법으로는 Greedy Search와 Beam Search 방법이 있지만, 대게 Bean Search 방법을 사용합니다.

 

 

Additional Explanation

그 이유는 Greedy search는 각 출력을 예측할 때, 각 스텝에서 가장 가능성이 높은 단어를 선택하기때문입니다. 탐색하는데 매우 빠르다는 장점을 갖고 있지만 최종 출력이 최적화된 결과에서 멀어진다는 단점을 갖고 있기 때문입니다. 즉, 이렇게 추출된 방법은 지역적으로 최적의 단어를 선택할 수 있을 지라도 전역적으로는 불필요한 단어가 섞여있기 때문에 최적의 문장이 아닐 수 있기 때문에 이 접근법은 효과가 없는 것을 확인할 수 있습니다.

 

3. Beam Search

 * To alleviate the problem of greedy search, Beam search is used for translation

 

 * Beam search algorithm has a parameter which is called the beam width B

   - They’re not just one possibility but consider B at a time

   - We keep track of the B most likely possible choices for the first word

 

 * To evaluate what is the probability of that first word, use the10 thousand words in the vocabulary


Additional Explanation

이러한 Greedy Search의 문제를 완화시키기위해 Beam Search에서는 매번 하나의 출력 값이 아닌 Beam width라 불리는 Beam 개수 만큼 출력 값을 내놓도록 하여 다양성을 주고 마지막에 가장 좋은 Sequence가 무엇인지 판단하도록 하는 방법으로 Decoding 됨으로써 번역에 사용됩니다. Beam Search 알고리즘은 Beam width라 불리는 파라미터 B를 갖고 있습니다. 한 번에 하나의 가능성이 아닌 B 만큼의 가능성을 고려하며, 첫 번째 단어에 대한 가장 가능성 있는 B개를 선택합니다. Beam width가 1이라면 기본적으로 Greedy search 알고리즘과 같게됩니다. 그러나 Beam width가 1이 아닌 그 이상의 숫자가 된다면 여러 가능성을 고려하게 되므로 Beam search 알고리즘은 Greedy search 알고리즘보다 더 나은 문장을 outupt으로 출력하게 됩니다. 또한 가능성을 평가하기위해, vocabulary에 있는 10,000개의 단어들을 사용합니다.

(+) Greedy search: heuristic search에 속하는 방법으로, 최적해를 구하는 데 사용되는 근사적인 방법입니다. 여러 경우 중 하나를 결정해야 할 때마다 그 순간에 최적이라고 생각되는 것을 선택하며 진행해나가는 알고리즘이다.

(+) Beam search: heuristic search에 속하는 방법이다.

 

 

Additional Explanation

Beam width를 3이라 정하게 되면 확률 상 가장 높은 3개의 단어를 선택합니다.

 

 

Additional Explanation

선택된 단어 중, 첫 번째 단어인 “in”이라는 단어 다음에 나올 단어의 확률을 구하기 위해 10,000개의 vocabulary를 나열하여 in 다음에 나올 각 단어들의 확률을 구합니다. 이때, softmax함수를 이용하여 확률을 구하게 됩니다.

 

 

Additional Explanation

그 다음 두 번째 단어인 “jane”이라는 단어 다음에 나올 각 단어들의 확률을 구합니다.

 

 

Additional Explanation

마지막으로 세 번째 단어인 “september”라는 단어 다음에 나올 각 단어들의 확률을 구합니다.

 

 

Additional Explanation

이렇게 구한 각 단어들의 확률 중, 확률 상 가장 높은 Beam width 만큼인 상위 3개의 단어를 선택합니다. 여기서는 “september”와 “is”와 “visits”가 선택됩니다. Decoding 각 step에서 Softmax 결과 기준 상위 Beam width 만큼을 남기고 나머지는 고려대상에서 제외시킵니다.

 

 

Additional Explanation

그러므로 현재 “in september”와 “jane is”와 “jane visits”라는 단어가 구성되었습니다. 그 다음 아까 했던 과정을 반복하게 됩니다. “in september”다음에 올 단어를 찾기 위하여 vocalbulary에 나열된 각 단어들의 확률을 구합니다.

 

 

Additional Explanation

이러한 과정을 반복하다보면 최종적으로 Beam width 만큼의 sequence가 나오게 되는데, 여기서는 Beam width가 3이기 때문에 3개의 sequence가 도출되었습니다. 도출된 3개의 sequence 중 최대 확률값을 가진 sequence를 최종 sequence로 선택하게 됩니다. 각 sequence의 최종 점수는 지금까지의 모든 확률 값을 곱하면 얻을 수 있습니다. 예를 들어 step이 2번째까지 진행된 문장의 확률은 아래 식처럼 구할 수 있습니다. 여기서는 Step <Ty>만큼 진행되었더라면 아래와 같이 각 step마다의 확률을 곱하여 최종 점수를 얻을 수 있습니다.

 

 

※ Additional Question&Answer

Q1. Sequence model에서 Greedy Seach 대신에 BEAM Search를 사용해야하는 이유

A1. Greedy search는 각 output을 예측하기 위해 각 step에서 가장 가능성있는 하나의 단어를 선택하기 때문에 지역적으로는 최고의 단어를 선택했을지라도 전역적으로 보면 최적의 문장이 아니라는 단점이 있습니다. 반면, Beam search는 Beam width만큼의 단어를 선택하기 때문에 많은 가능성을 고려하게 되기에 Greedy search보다 더 최적화된 문장을 도출하게 되기 때문에 Greedy search보다 Beam search를 사용합니다.

 

Q2. Language model과 machine translation model의 차이

A2.아래 그림을 보시다시피 Language model은 하나의 네트워크를 사용하는 반면 Machine translation model은 초록색으로 표시된 인코딩 네트워크와 보라색으로 표시된 디코딩 네트워크 총 2개의 네트워크를 사용합니다.

 

Q3. Sequence model에 있는 decoder input 설명

A3. sequence model에 있는 encoder가 모든 단어를 입력으로 받은 뒤에 모든 단어 정보들을 압축해서 만들어진 하나의 벡터가 decoder의 input으로 들어가게 됩니다.

 

 

Q4. machine translation model을 쌓을 때, conditional language model 설명

A4. machine translation model에서 decoder는 encoder를 통해 압축된 vector가 input으로 들어가게 되는데, 해당 vector는 decoder를 통해 나오는 정보들을 위한 condition으로써 역할을 하기에 conditional language model이라고 불리게 됩니다.


>> 위 내용은 필자가 직접 작성한 내용입니다.

>> 부족한 점이 많을 수 있기에 잘못된 내용이나 궁금한 사항이 있으면 댓글 달아주시기 바랍니다.

>> 긴 글 읽어주셔서 감사합니다.

반응형
Comments