인공지능/자연어 처리

자연어 처리 기계 번역 - 병렬 학습 데이터셋 수집

이게될까 2024. 4. 26. 14:04
728x90
728x90

임베딩 과정에 대해 다시 한번...

Transformer 모델에서 문장을 처리하는 과정은 다음과 같은 여러 단계를 포함합니다:

1. 토큰화(Tokenization)

먼저, 입력되는 문장을 작은 단위로 분해해야 합니다. 이 작은 단위를 토큰이라고 하며, 토큰은 단어나 서브워드(subword) 단위일 수 있습니다. 서브워드 토큰화는 일반적으로 Byte Pair Encoding (BPE)나 SentencePiece와 같은 알고리즘을 사용하여 수행되며, 이는 자주 사용되는 문자열을 하나의 토큰으로 결합합니다. 이러한 접근 방식은 언어의 유연성을 높이고 OOV 문제를 줄이는 데 도움을 줍니다.

2. 임베딩(Embedding)

토큰화된 각 토큰은 임베딩 과정을 거쳐 고정된 크기의 벡터로 변환됩니다. 이 벡터는 해당 토큰의 의미적, 문법적 특성을 모델 내부적으로 표현하는 데 사용됩니다. Transformer 모델에서는 이 임베딩 벡터에 추가적으로 위치 정보를 부여하는 위치 인코딩(Positional Encoding)이 더해집니다.

위치 인코딩

Transformer는 문장의 순서 정보를 고려하지 않는 구조이기 때문에, 각 토큰의 위치 정보를 임베딩 벡터에 인코딩하여 추가합니다. 위치 인코딩은 토큰의 위치에 따라 다른 값을 가지며, 이 값은 사인 함수와 코사인 함수의 주기적 변화를 이용하여 계산됩니다. 위치 인코딩을 통해 모델은 토큰의 순서 정보를 유지할 수 있습니다.

3. 토큰 임베딩과 위치 인코딩의 결합

각 토큰의 임베딩 벡터와 해당 토큰의 위치 인코딩을 합산하여 최종 입력 벡터를 생성합니다. 이 벡터는 Transformer 모델의 입력 레이어로 전달되어 인코더와 디코더를 거치면서 번역 과정이 수행됩니다.

4. 인코더와 디코더

인코더는 입력 문장의 각 토큰 벡터를 처리하여 문맥에 맞는 새로운 표현을 생성합니다. 이 과정에서 어텐션 메커니즘이 사용되어 모든 토큰 간의 관계를 동시에 고려합니다. 디코더는 인코더의 출력과 이전에 생성된 출력 토큰들을 사용하여 타겟 언어의 문장을 하나씩 생성해 나갑니다. 디코더 또한 어텐션 메커니즘을 사용하여 입력 문장의 모든 토큰과 연관성을 고려하며 번역을 수행합니다.

Transformer 모델은 이러한 과정을 통해 복잡한 언어적 특성과 문맥적 의미를 학습하고, 이를 기반으로 정확한 기계 번역을 제공합니다.

토큰 임베딩(token embeddings)은 기계 번역 시스템에서 텍스트를 수치적 형태로 변환하는 중요한 과정입니다. 이 과정은 토큰화된 단어나 서브워드를 고정된 크기의 벡터로 매핑하여, 모델이 이해할 수 있는 형태로 만드는 것입니다. Transformer 모델에서 토큰 임베딩은 다음과 같은 과정을 통해 부여됩니다:

1. 토큰화

먼저, 입력 텍스트는 작은 단위인 토큰들로 분리됩니다. 이 토큰들은 단어, 서브워드, 혹은 특수 문자일 수 있습니다. 토큰화 과정은 주로 Byte Pair Encoding (BPE), SentencePiece와 같은 기법을 사용하여 수행됩니다.

2. 임베딩 테이블

각 토큰은 임베딩 테이블에서 해당하는 벡터로 변환됩니다. 임베딩 테이블은 모델의 학습 파라미터의 일부로, 훈련 과정에서 데이터로부터 학습됩니다. 각 토큰은 임베딩 테이블에서 고유의 인덱스를 가지며, 이 인덱스를 사용하여 토큰을 대응하는 고차원 벡터로 매핑합니다.

3. 벡터 매핑

임베딩 테이블에서 각 토큰에 대응하는 벡터를 검색합니다. 이 벡터는 보통 수백 차원의 크기를 가지며, 각 차원은 특정한 의미적, 문법적 속성을 인코딩할 수 있습니다. 예를 들어, 유사한 의미를 가진 토큰들은 임베딩 공간에서 서로 가까운 위치에 매핑될 수 있습니다.

4. 위치 인코딩의 추가

Transformer 모델은 시퀀스의 순서 정보를 직접적으로 모델링하지 않기 때문에, 각 토큰의 위치 정보를 벡터로 인코딩하여 토큰 임베딩에 추가합니다. 위치 인코딩은 각 위치에 대한 고유한 벡터를 생성하고, 이를 토큰 임베딩 벡터와 요소별로 합산합니다. 위치 인코딩은 주기적인 함수(사인과 코사인 함수)를 이용하여 계산되며, 이를 통해 모델은 문장 내에서 각 토큰의 위치를 고려할 수 있습니다.

5. 임베딩 벡터의 사용

이렇게 생성된 임베딩 벡터는 Transformer 모델의 인코더와 디코더에서 입력으로 사용됩니다. 인코더는 이 벡터들을 기반으로 문장의 문맥적 의미를 학습하고, 디코더는 이 정보를 바탕으로 타겟 언어로의 번역을 생성합니다.

토큰 임베딩은 딥러닝 모델이 자연어의 복잡한 특성을 수치적으로 표현하고, 이를 통해 더 깊은 언어 이해와 번역의 정확성을 도모하는 데 핵심적인 역할을 합니다.

목표 - 기계 번역 모델 학습을 위한 병렬 학습 데이터셋 수집 방법에 대해 이해하기

오버피팅 방지 때문인가...?

정렬 == 매칭

공개된 데이터 셋이 불충분하다 ? 의미적으로 같은 데이터들을 매칭해야 한다...

MUSE가 다른 언어의 임베딩을 같은 수준의 임베딩으로 변화해준다. (그림보면 나와있다.)

단어 수준의 임베딩을 정렬한다.

문장 수준에서도 의미가 같은 문장을 같이 임베딩 되도록 한다.

병렬 코퍼스 - 입력 문장과 의미가 같은 타겟 언어의 문장을 출력할 수 있도록 의미적인 정렬을 해준다.

딥러닝은 좀 더 쉽게 할 수 있다.

영어의 데이터가 압도적으로 많아서 한쪽이 너무 많아진다. -> 성능에 악영향 

표에 상황에 대한 방법들이 정리되어 있다.

단일 언어 수집은 쉽다!

외부 언어 모델을 기계번역에 통합한다.

디코딩 시간을 비효율적으로 만든다...

사전학습된 모델을 사용한다. 

데이터의 양을 직접적으로 늘리는 것이다. 역번역 방법과 비지도 학습

역번역 방법! 

품질 좋은 정답 원본이 있어야 고품질 번역을 얻을 수 있다. 입력은 품질이 낮아도 괜찮다.

저자원이면 워드 임베딩도 잘 되지 않는다....

워드 임베딩이 잘 완성될 정도만 되면 작동이 잘 된다.

기본적으론 둘 다 고자원인 코퍼스보다는 성능이 떨어지긴 한다.

희귀한 단어 사용을 통해 자주 사용된 단어의 지식 전이가 일어난다. 

비전에서 자주 사용

 

 

저자원 언어의 이점을 얻을 수 있다. 

 

728x90