본문 바로가기

Machine-Learning/NLP (Natural Language Processing)12

[ML] GLUE (General Language Understanding Evaluation) GLUE (General Language Understanding Evaluation) GLUE의 탄생과 활용의 예 전이 학습(Transfer Learning)과 관련된 연구를 시작하고, 자연어 처리 내에서도 전이학습의 성공이 이어짐에 따라 모델을 평가하기 위한 새로운 방법론의 필요성이 대두되었다 특정 문제만을 해결하기 위해 End-to-End 방식으로 학습된 Single Task Model들과 달리 전지 학습모델은 Deep한 모델을 이용해 자연어의 일반화된 이해를 중점으로 학습한다. 즉, 전이 학습 모델들 사전학습을 통해 언어에 대한 일반적인 이해 능력을 가질 수 있게 되는 것이다. 이처럼 사전학습을 통해 얻어진 자연어 이해 능력은 해당 모델을 특정 태스크를 수행하기 위해 fine-tuning 할 때 .. 2022. 11. 30.
[NLP] BERT 의 이해 BERT (Bidirectional Encoder Representations from Transformer) 2018년도에 구글에서 공개한 사전 훈련된 모델이다. BERT라는 이름은 세서미 스트리트 라는 미국 인형극의 캐릭터 이름이기도 한데, 앞서 소개한 임베딩 방법론 ELMO와 마찬가지로 세서미 스트리트의 캐릭터 이름을 따온 것이기도 한다 BERT는 트렌스포머를 이용하여 구현되었으며, 위키피디아 25억 단어 BooksCorpus 8억 단어와 같은 레이블이 없는 텍스트 데이터를 사전 훈련된 언어 모델이다. BERT가 높은 성능을 얻을 수 있었던 것은 레이블이 없는 방대한 데이터로 사전 훈련된 모델을 가지고, 레이블이 있는 다른 작업(Task)에서 추가 훈련과 함께 하이퍼 파라미터를 재조정하여 이 모델을.. 2022. 11. 19.
[NLP] Transforemr decoder 이해 트랜스포머 디코더 이해 영어 (입력 문장) 'I am good'을 입력하면 프랑스어 (타킷 문장) 'je vais bien'을 생성하는 번역기를 만든다고 가정하자. 번역기를 만들려면 먼저 입력 문장인 'I am good'을 인코더에 입력해야 한다. 인코더는 임력 문장의 표현 학습한다. 인코더의 입력 결과값을 가져와서 디코더에 입력값으로 사용하며, 디코더는 다음과 같은 그림으로 인코더의 표현을 입력값으로 사용하고 타깃 문장인 'je vais bien' 을 생성한다. 인코더 부분을 다룰 때 인코더 N개를 누적해서 쌓을 수 있다는 것을 배웠다. 인코더와 유사하게 디코더 역시 N개를 누적해서 쌓을 수 있다. N=2로 예를 들어보면 표시된 것처럼 하나의 디코더 출력 값은 그 위에 있는 디코더의 입력 값으로 전송된.. 2022. 11. 15.
[NLP] 멀티 헤드 어텐션(multi-head attention) 원리 멀티 헤드 어텐션 원리 어텐션을 사용할 때 헤드 한 개만 사용한 형태가 아닌 헤드 여러개를 사용한 어텐션 구조도 사용할 수 있다. 어텐션 행렬이 아닌 다중 어텐션 행렬을 계산해보자. All is well이라는 문장으로 예를 들어보자. 단어 well의 셀프 어텐션을 계산한다고 하자. 계산 결과 다음과 같은 결과를 얻었다고 가정하자 위의 그림에서 볼 수 있듯이 단어 'well' 의 셀프 벡터 값은 가중치를 적용한 각 단어의 벡터 값의 합임을 알 수 있다. 단어 'well'의 벡터값은 단어 'All' 이 가장 우세하게 작용하는 것을 알 수 있다. 즉, 단어 'well'의 벡터값은 단어 'All'의 벡터값에 0.6을 곱한 값과, 단어 'well'의 벡터값에 0.4를 곱한 결과를 합한 것이다. 이는 단어 'All.. 2022. 11. 6.
[NLP] Transforemr - 피드포워드, add와 Norm 피드포워드 네트워크 (Feed-Forward Networks) 2개의 전 결합층 (dense layer)과 ReLU 활성화 함수로 구성 피드 포워드 네트워크의 변수는 문장의 다른 위치에서는 동일하고 인코더 블럭에서는 다르게 나타낸다 add와 norm 요소 인코더에서 중요한 요소 중 하나는 바로 add와 norm 관련 부분이다. 이 부분은 서브레이어의 입력과 출력 부분에 연결되어 있다. - 서브레이어에서 멀티헤드 어텐션의 입력값과 출력값은 서로 연결한다 - 서브레이어에서 피드포워드의 입력값과 출력값을 서로 연결한다 add와 norm 요소는 기본적으로 레이어 정규화 (layer normalization)의 잔차 연결 (residual connection)이다 Residual Connection 특정 레이어를.. 2022. 11. 6.
[NLP] Transformer - positional encoding, self-attention Transformer의 인코더의 이해 트랜스포머는 N개의 인코더가 쌓인 형태다. 인코더의 결괏값은 그 다음 인코더의 입력값으로 들어간다. 인코더는 N개로 쌓인 형태로 보여준다. 각 인코더의 결괏값은 그 위에 있는 인코더의 입력값으로 들어간다. 가장 마지막 있는 인코더는 결과값이 입력값의 최종 표현 결과가 되는 것이다. 최초 인코더에 대한 입력값으로는 입력 문장을 넣게 되고, 최종 인코더의 결과값으로 입력 문장에 따르는 표현 결과를 얻는 것이다 트랜스포머 관련 논문인 "Attention Is All You Need"를 보면 N=6개로 인코더를 6개 누적해서 쌓아 올린 형태를 표현한 것이다. 하지만 N을 다양한 값으로 지정해 인코더의 형태를 바꿀 수 있다. 그럼 인코더는 어떤 원리로 작동할까? 입력 문장으로.. 2022. 10. 11.
[NLP] Transformer-Overview 트랜스포머 소개 트랜스포머는 현재 여러 자연어뿐만 아니라 컴퓨터 비전 과제에서도 최신 기술로 사용되고 있다. 트랜스포머가 출현함으로 자연어 및 컴퓨터 비전 등에서 많은 발전을 이루고 있으며, BERT, GPT, VIT(vision transformer) Swin Transformer 등과 같이 발전하는 기반을 마련했다. 트랜트포머는 RNN에서 사용한 순환 방식을 사용하지 않고, 순수하게 어텐션만 사용한 모델이다. 트랜스포머는 셀프 어텐션(Self-attention)이라는 특수한 형태의 어텐션을 사용한다. RNN과 LSTM 네트워크는 다음 단어 예측(next word prediction), 기계 번역 (machine translation), 텍스트 생성 (text generation)등의 순차적 태스크에서.. 2022. 10. 11.
[NLP] Seq2Seq Seq2Seq Sequence to Sequence Learning with Neural Networks: https://arxiv.org/pdf/1409.3215.pdf 기존 LSTM 기반의 번역은 한계가 있었다. 왜냐하면 LSTM은 하나가 들어오면 바로 하나의 output을 낼 수 있는데 이것이 문제가 된다. 문자 그대로 인코더는 입력 데이터를 인코딩(부호화)하고, 디코더는 인코딩 된 데이터를 디코딩(복호화) 한다. 즉 인코더는 입력을 처리하고 디코더는 결과를 생성한다. Context벡터는 입력에 대한 정보를 압축하고 있는 벡터. 즉 인코더는 문장을 가지고 context 벡터를 만들어주는데, 이 context 벡터에는 문장에 대한 정보가 응축되어 있다. 반면 디코더는 정보가 응축되어 있는 contex.. 2022. 10. 4.
[NLP] LSTM /GRU LSTM (Long Short-Term Memory) RNN은 가변 길이의 시퀀셜 데이터 형태 입력에는 훌륭하게 동작하지만, 그 길이가 길어지면 앞서 입력된 데이터를 잊어버리는 단점을 가지고 있다. 하지만 LSTM의 등작으로 RNN을 단점을 보완할 수 있게 되었다. LSTM은 기존 RNN의 은닉 상태 이외에도 별도의 셀 스테이트 (cell state)라는 변수를 두어 그 기억력을 증가 시킨다. 그 뿐만 아니라 여러 가지 게이트(gate)를 둠으로써 기억하거나, 잊어버리거나, 출력하고자 하는 데이터의 양을 상황에 따라 마치 수도꼭지를 잠갔다가 열듯이 효과적으로 제어한다. 그 결과 긴 길이의 데이터에 대해서도 효율적으로 대처할 수 있게 되었다 요약하면 장단기 메모리(Long Short-Term Memory).. 2022. 9. 29.