Today I Run

[GoogleStudyJam] Transformer Models and BERT Model

조핑구 2024. 5. 10. 21:31

Transformer-Model

  • Transformer 이전 모델은 단어를 벡터로 표현할 수 있었지만, 이런 벡터에는 context가 포함되지 않았다. 예를 들어 은행나무의 은행과 은행 강도의 은행은 attention mechanism이 등장하기 전에 같은 벡터를 사용했을 가능성이 있다. Transformer model은 인코더 디코더 모델이며 attention mechanism를 사용한다. 또한 모델 아키텍처를 통해 동시 로드를 활용하고 대량의 데이터를 동시에 처리 할 수도 있다. 주목 매커니즘은 기계 번역 어플리케이션의 성능을 개선하는데 도움이 된다.
  • 인코딩 컴포넌트는 같은 숫자로 이루어진 인코더의 stack이다. 6개의 인코더를 상호 간에 스태킹한다. (6은 초매개변수에 불과하다) 인코더는 모두 구조적으로 동일하지만 가중치(weight)가 다르다. 각 인코더는 2개의 하위 layer로 구분할 수 있다.
    • 첫 번째 계층을 ‘self attention’이라고 한다. 인코더의 입력은 먼저 자체주목계청을 통해 흐르며 이는 인코더가 입력 문장의 중심 단어를 인코딩하는 과정에서 단어의 관련있는 부분을 볼 수 있도록 도와준다.
    • 두 번째 계층은 ‘feedforward’ 이다. self attention계층의 출력은 순방향신경망에 제공된다. 동일한 순방향 신경망이 각 위치에서 독립적으로 적용된다. 디코더는 1,2계층을 모두 가지지만 두 계층 사이의 encoder-decoder attention은 디코더가 입력 문장의 관련 있는 부분에 집중하도록 돕는다. 단어를 입력문장에 삽입한 후에는 각 임베딩 벡터가 인코더의 두 계층을 통해 흐른다. 각 위치의 단어는 self-attention process를 거친 다음 순방향 신경망을 거친다. 이는 각 벡터가 각각의 다른 라인을 통해 거치게 된다. 이러한 경로 사이에는 종속항목이 존재한다. 하지만 순방향 계층에는 이러한 종속항목이 없으므로 다양한 경로가 순방향을 거치는 동안 동시에 실행될 수 있다.
    • 자체 주목 계층에서는 입력 임베딩이 쿼리, 키 및 값 벡터로 구분된다. 이러한 벡터는 Transformer가 학습 프로세스 도중에 학습하는 가중치를 사용하여 계산된다 이러한 모든 계산은 모델에서 행렬 계산의 형식으로 동시에 발생한다. 쿼리, 키, 값 벡터를 구한 후에는 합산을 위한 준비로 각 값 벡터를 softmax 스코어로 곱해야 한다. 여기서의 의도는 중요한 단어의 값을 온전히 유지하고 0.001 등의 매우 작은 숫자로 이를 곱하여 관련 없는 단어를 제외하는 것이다.

BERT (Bidirectional Encoder Representations from Transformers)

  • BERT는 Transformer라는 모델 아키텍처를 기반으로 한다. Transformer는 자연어 처리 작업에 사용되는 인코더와 디코더라는 두 가지 주요 구성 요소로 구성되어 있는 반면 BERT는 인코더만을 사용하여 문장을 이해하고 표현한다.또한 BERT는 사전 훈련된 언어 모델을 사용하여 학습된다. 사전 훈련된 언어 모델이란 대규모의 텍스트 데이터를 사용하여 미리 학습된 모델을 말한다. BERT는 큰 양의 텍스트 데이터를 사용하여 사전 훈련되며, 이를 통해 문맥적인 정보를 풍부하게 학습할 수 있다.
  • 사전 훈련된 BERT 모델은 다양한 자연어 처리 작업에 fine-tuning하여 사용할 수 있다. 이는 새로운 작업에 대해 추가로 학습하고 feauture를 추출할 수 있도록 하는 것을 의미한다. 이러한 방식으로 BERT는 다양한 자연어 처리 작업에서 뛰어난 성능을 보이며, 현재까지도 많은 연구와 응용에서 사용되고 있다.
  • BERT의 가장 큰 특징 중 하나는 양방향(bidirectional)이라는 점이다. 이는 이전의 모델들과는 다르게 문맥을 좌우 양쪽 모두를 고려하여 단어를 이해하고 표현할 수 있다는 의미이다. 이것은 문맥을 이해하는 데 있어서 매우 중요한 요소이며, BERT가 다양한 자연어 처리 작업에서 우수한 성능을 발휘하는 이유 중 하나이다.
  • 현재 Google 검색은 BERT에 기반한다. 같은 검색어에 대해 BERT가 어떻게 다른 결과를 제공했는지를 전과 후로 확인할 수 있다. BERT는 두 변형으로 학습되었다. 한 모델에는 BERT Base가 포함된다. 여기에는 Transformer 스택 12개와 1.1억 개의 매개변수가 있었으며 나머지인 Bert Large에는 Transformer 계층 24개와 약 3억 4천 만 개의 매개변수가 있었다. BERT 모델이 강력한 이유는 긴 입력 컨텍스트를 처리할 수 있기 때문이다. 이는 Wikipedia 전체의 코퍼스와 도서 코퍼스에 대해 학습되었다. BERT 모델은 1백만 단계에 대해 학습되었다. BERT는 여러 작업에 대해 학습되었으며 다중 작업 목표가 있음을 의미한다. 덕분에 BERT는 매우 강력하다. 학습한 작업의 종류로 인해 BERT 모델은 문장수준과 토큰 수준 둘 다에서 작동한다. 다음은 처음에 공개된 BERT의 두 가지 버전이다. BERT Base는 계층이 12개였던 반면 BERT Large는 24개였다. 원래의 Transformer는 계층이 6개였다.
  • BERT는 두 가지 종류의 마스킹을 사용한다:
    1. 마스크된 언어 모델링(Masked Language Modeling, MLM): MLM은 BERT의 사전 훈련 과정에서 사용되는 주요 기술 중 하나이다. 이 방법은 입력 문장에서 일부 단어를 랜덤하게 마스킹한 후, 모델이 이러한 마스킹된 단어를 예측하도록 하는 것이다. 이를 통해 모델은 문맥을 파악하고 마스킹된 위치의 단어를 올바르게 복원하는 능력을 향상시킬 수 있다. 단어의 일정 비율을 마스킹해야 한다. 권장되는 마스킹 비율은 15%다. 마스킹이 너무 적으면 학습 프로세스에서 너무 높은 비용이 발생하며 마스킹이 너무 과도하면 모델에 필요한 컨텍스트가 제거된다.
    2. 다음 문장 예측(Next Sentence Prediction, NSP): NSP는 BERT의 사전 훈련 과정에서 사용되는 보조 작업입니다. 이 방법은 입력으로 두 개의 문장을 받아, 두 번째 문장이 첫 번째 문장의 다음 문장인지 아닌지를 예측하는 것입니다. 이를 통해 BERT는 문장 간의 관계를 이해하고 문맥을 파악하는 능력을 향상시킵니다. 예를 들어 모델에는 두 세트의 문장이 주어집니다 BERT는 문장 간의 관계를 학습하고 주어진 첫 번째 문장의 다음 문장을 예측하는 것을 목표로 삼습니다 예를 들어 문장 A는 '한 남자가 매점에 갔다.' 문장 B는 '그는 우유 1갤런을 구입했다.'일 수 있습니다 BERT는 문장 B가 문장 A에 이은 다음 문장에 있는지를 분류하는 역할을 합니다 이는 이진 분류 작업이며 BERT가 문장 수준에서 작동하도록 돕습니다 BERT를 학습시키려면 세 종류의 임베딩을 모델에 제공해야 합니다
  • 입력 문장의 경우 세 가지의 임베딩 즉, Token, Segment, position 임베딩을 얻는다.
    1. 토큰 임베딩(Token Embedding): 입력 문장의 각 단어 또는 토큰을 벡터로 나타낸 것이다. 일반적으로 단어 임베딩 행렬을 사용하여 각 단어에 해당하는 고정된 크기의 벡터를 가져온다.
    2. 포지셔널 임베딩(Positional Embedding): Transformer 모델은 시퀀스의 위치 정보를 인코딩하기 위해 포지셔널 임베딩을 사용한다. 이 임베딩은 각 단어의 상대적인 위치나 순서 정보를 나타낸다. Transformer의 아키텍처는 임베딩과 위치 정보를 결합하여 문맥 정보를 얻을 수 있도록 설계되었다..
    3. 세그먼트 임베딩(Segment Embedding): Transformer 모델은 두 개 이상의 문장을 처리할 수 있으며, 이러한 경우 각 문장에 대한 정보를 구분하기 위해 세그먼트 임베딩을 사용한다. 예를 들어, 번역 작업에서는 원본 문장과 대상 문장을 구분하기 위해 세그먼트 임베딩이 사용될 수 있다.
    이러한 세 가지 임베딩은 모두 입력 문장을 모델에 제공하기 전에 결합되고 모델의 입력으로 사용된다. 이들은 모델이 입력 문장의 토큰, 위치 및 문장 구분 정보를 동시에 고려하여 효과적으로 처리할 수 있도록 도와준다..
  • Transformer 모델의 입력 문장에서 생성되는 세 가지 임베딩:
  • 토큰 임베딩은 각 토큰을 입력 문장의 임베딩으로 표현한다. 단어는 특정 크기의 벡터 표현으로 변환된다. BERT는 텍스트 분류와 관련된 NLP 작업도 해결할 수 있다. 예를 들자면 두 문장인 '내 반려견은 귀엽습니다. 그리고 노는 것을 좋아합니다.'가 의미상으로 유사한지 구분하는 경우이다. 입력 텍스트 쌍은 단순하게 연결되어 모델에 제공된다. BERT는 세그먼트 임베딩을 사용해 주어진 쌍의 입력을 구분한다. SEP로 표현되는 특수 토큰이 있으며 이는 문장의 상이한 두 분할을 구분한다.
  • 또 다른 문제는 문장의 단어 순서를 학습하는 것이다. BERT는 Transformer의 스택으로 구성된다. BERT는 최대 길이 512의 입력 문장을 처리한다. 입력 문장의 순서는 포지션 임베딩으로 통합된다. 이를 통해 BERT는 각 위치의 벡터 표현을 학습할 수 있다. BERT는 여러 다운스트림 작업에 사용할 수 있다. 비록 BERT는 MASS 언어 모델링과 단일 문장 분류에 대해 학습되었지만 인기 있는 NLP작업에도 사용할 수 있다.

🤔임베딩이란?

  • 단어 임베딩(Word Embedding)은 특정 단어를 대표하는 고정된 길이의 실수 벡터입니다. 이 벡터는 단어의 의미, 문법적 특성, 문맥 정보 등을 포함하고 있습니다. 단어 임베딩은 주로 단어의 의미를 고차원 공간상의 좌표로 표현하여, 비슷한 의미를 가진 단어들이 유사한 벡터 공간상의 위치에 나타나도록 합니다.단어 임베딩 이외에도, 문자 임베딩(Character Embedding), 문장 임베딩(Sentence Embedding) 등 다양한 종류의 임베딩이 있으며, 각각의 임베딩은 텍스트 데이터의 다양한 측면을 고려하여 표현됩니다.
  • 임베딩은 일반적으로 사전 훈련된 단어 임베딩을 사용하거나 특정 작업에 맞게 해당 작업에 맞는 데이터로부터 학습된 임베딩을 사용할 수 있습니다. 사전 훈련된 임베딩은 대규모 텍스트 데이터를 사용하여 사전에 학습된 임베딩 벡터이며, 예를 들어 Word2Vec, GloVe, FastText 등이 있습니다. 이러한 임베딩은 자연어 처리 작업에서 널리 사용되며, 학습 데이터가 적을 때에도 효과적으로 작동할 수 있습니다.
  • "임베딩(Embedding)"은 자연어 처리에서 사용되는 용어로, 단어나 문자, 문장 등의 텍스트 데이터를 고차원의 벡터로 변환하는 기술을 말합니다. 이러한 변환된 벡터는 컴퓨터가 텍스트 데이터를 이해하고 처리할 수 있는 형태로 표현됩니다.

오늘은 어땠냐면요

encoder-decoder가 이해될듯 말듯 애매했는데 오늘의 강의를 들으니까 형체가 잡힌 느낌이다! 아이가 단어를 배우는 것 같은 느낌이 든다. 여러 문장의 순서를 맞추고, 빈 칸에 들어갈 단어를 찾고 아마 훈련을 설계할때 언어학적 고려를 하는거겠지? 저런 기초적인 행위가 가능해지면 언어실력이 늘듯 전자두뇌 AI도 그럴것이라고 생각한걸까