-
Various Sequence To Sequence ArchitecturesGoogle ML Bootcamp/Sequence Models 2023. 10. 3. 12:59728x90
※ Picking the Most Likely Sentence
- Language model : 항상 0 벡터를 입력으로 해서 모델링한다.
- Machine translation : 입력 문장의 표현을 파악하는 인코딩 부분 + 해당 입력 문장을 사용하여 디코딩된 네트워크를 사용함. -> 조건부 언어 모델이라 부르고, 어떤 문장의 확률을 모델링 하는 대신 입력한 어떤 문장에 대한 번역을 모델링한다.
- 분포를 무작위로 샘플링 하지 않고, 조건부 확률을 극대화하는 문장 y를 찾는다.
- 수식의 항을 최대화하는 y값을 찾도록 알고리즘을 짜야한다.
- visiting 보다 going이 더 일반적으로 사용되는 단어라, 확률이 높기 때문에 greedy search를 하게 되면 두번째 문장이 선택되어 덜 최적인 문장을 만들게 된다.
- 일반적으로 근사 검색 알고리즘을 사용한다. -> 근사 검색 알고리즘인 arg max는 조건부 확률을 극대화하는 문장 y를 선택한다.
※ Beam Search Algorithm
- greedy search는 가장 비슷한 단어를 고르는 반면, Beam search는 여러 대안을 고려할 수 있다.
- Beam search에는 B라는 매개변수가 있어서 빔 폭을 설정할 수 있다.(B = n 이라면, n개의 가장 높은 가능성을 고려한다는 것을 의미한다.)
- 인코딩 네트워크를 통해서 문장을 정확히 입력한 다음, 디코드 네트워크 첫 단계를 통해서 10,000가지 가능성이 있는 softmax 출력을 얻는다.
- 10,000가지 가능한 출력을 가져와서 상위 n개를 메모리에 보관한다.
- 두 번째 단어의 확률을 구하기 위해 인코더를 설정한 상태에서 디코더 네트워크에서 해당 단어를 yhat<1>으로 넣고, yhat<2>를 구할 수 있도록 설정한다.
- 가장 그럴듯한 첫 번째와 두 번째 단어의 쌍을 찾아야 해서 조건부 확률 규칙에 따라, 첫번째 단어와 두번째 단어의 확률을 곱한다.( P(y<1>, y<2> | x) = P(y<1> | x) * P(y<2> | x, y<1>))
- 첫 번째 단계에서 설정한 n개를 모두 같은 방식으로 step 2 과정을 반복한다.
- Step 2까지의 단어를 합쳐서 세트로 가장 가능성이 높은 n개를 선택한다.
- 네트워크 복사본이 총 n개씩 각 step 마다 생겨난다.
※ Refinements to Beam Search
- underflow 방지를 위해서 log를 사용한다.
- 최대화하는 대신 번역문 내 단어의 수로 나누어 정규화 하는 방식 -> 각 단어의 확률의 로그를 평균을 내서 더 긴 번역문을 입력하는 페널티를 상당히 줄여준다.
- 휴리스틱을 사용한 경우, Ty^(alpha)를 사용하는데, alpha = 1 : 완전 정규화, alpha = 0 : 정규화 X
- large B : better result, slower
- small B : worse result, faster
※ Error Analysis in Beam Search
- Beam search에 문제가 있다면 B를 늘리는 방식을 택한다.
- RNN model에 문제가 있다면 정규화 추가, 데이터 늘리기, 다른 네트워크 아키텍처 모델링 등을 택한다.
※ Attention Model
- attention weight 세트를 모두 합쳐서 새로운 context가 생성됨.(c<1> = sum(alpha<1, t'> * a<t'>)
- alpha<1, t'> : Attention weight
- alpha<t, t'>은 y<t>가 a<t'>에 대해 지불하는 attention의 양. 시간 t의 출력 단어를 생성할 때 시간 t'의 입력 단어에 얼마나 주의를 기울여야 하는지.
- 두번째 step인 S<2>에서도 각 attention weight 세트를 모두 합쳐서 새로운 context를 생성하고, y<1>을 Input으로 하여, 두 번째 단어를 생성할 수 있음.
- S<2>의 가중치 총합이 두 번째 시간 단계의 context가 된다.(c<2> = sum(alpha<2, t'> * a<t'>)
- 위의 네트워크는 context vector가 출력되는 표준 RNN sequence이고 한 번에 한 단어씩 번역을 생성한다.
- a<t,t'> 공식은 attention weight의 합이 1이 되도록 한 다음 느리지만 꾸준하게 한 번에 한 단어를 생성하도록 한다.
- 신경망은 경사 하강법을 사용하여 모든 것을 자동으로 학습하는 입력 문장의 오른쪽 부분에 주의를 기울인다.
- 단점 : 알고리즘을 작동시키려면 2차의 cost와 time이 필요하다. 입력에 단어 Tx와 출력에 단어 Ty가 있다면 attention 매개변수의 총 개수는 Tx * Ty가 된다. -> 2차 비용으로 실행이 된다.
728x90'Google ML Bootcamp > Sequence Models' 카테고리의 다른 글
Transformer Networks (1) 2023.10.04 Learning Word Embeddings: Word2vec & GloVe (0) 2023.10.02 Word Embeddings (1) 2023.10.01 Recurrent Neural Networks (0) 2023.09.29