week7

MARK AN·2021년 9월 17일
0

학습정리

NLP

7, 8강 Transformer

트렌스포머의 기본 구조와 작동 원리에 대해서 배울수 있었다.
먼저 트렌스포머에 input이 positional encoding을 거치며 기존 인코딩에 각 단어의 위치정보를 받게된다. 그후 입력 행렬은 세개의 Q, K, V 행렬로 복사된다. 각각의 행렬은 서로다른 가중치 행렬과 점곱을 하게 된다. 이후 Q 와 K 행렬의 점곱이 이루어 진다. 이 값을 K 행렬의 차원의 루트값으로 나누게 된다. 그 값을 소프트맥스 취한후 V행렬과 점곱을 하게 되면 하나의 어텐션을 통과하게 된것이다. 이러한 어텐션을 여러개 사용하는것이 multi head attention이다. 이후 레지듀얼 커넥션, 레이어 노말라이제이션, feed forward network등을 거치면 인코더 부분이 완성된다.
디코더는 인코더와 비슷하지만, 차이점을 말해보자면, masked self attention을 사용하게 된다. 이는 단어 추론시에 미리 미래 단어에 대한 어텐션값을 갖지 않기 위해서이다. 또한 multi head attention에 있어서 Q, K 값으로 인코더에서의 아웃풋 행렬을 받아서 사용하게 된다.
간단한 transformer설명이지만 그 안에 세부적인 내용도 많이 있었다. 예를들어 layer normalization, affine transform 등 여러가지 들어보지 못한 내용도 많았다.

9강 Self-supervised Pre-training Models

GPT-1, BERT 등에 대해서 배울수 있던 기회였다. GPT-1의 경우 트렌스포머의 디코더 부분만을 사용하여서 문장생성에 특화되어진 모델이다.
BERT의 경우는 트렌스포머의 인코더 부분만을 사용하여서 문장이해에 특화된 모델이다. 다만 여기서 중요한점은, BERT의 경우 pretraining 과정에서 2가지의 특이한 방식을 취했다는데 있다. 첫째, Masked Language Model이라 하여서 문장 중간 중간에 <Mask>이런 토큰들을 넣음으로써 모델이 그 해당 위치에 어떠한 단어가 들어가는지 학습하도록 하였다. 그리고 Next Sentence Prediction이라고 하여서 문장 단위에서도 다음 문장이 정말 다음문장인지에 대한 학습도 하게 하였다. 이렇게 하였을시에 BERT는 여러가지 테스트에서 상당히 우수한 성능을 확인시켜 주었다.

10강 Advanced Self-supervised Pre-training Models

GPT-2, GPT-3, ALBERT, DistillBERT, TinyBERT, ELECTRA 등 여러가지 모델들에 대해서 배웠으며 각각의 모델들이 어떠한 점을 발전시켜서 기존의 기본모델들에서 더욱 성능을 올렸는지 알아볼수 있었다. 눈여겨 본점은 BERT 기반의 모델같은 경우에 경량화나, 효율성향상등에 그 초점이 있었다면, GPT 기반의 모델들에서는 규모를 크게 늘림으로써 성능향상에 그 초점이 있었다는것을 알수 있었다.
많은 모델들의 개용적인 부분만을 알아보았기때문에 구체적으로 어떠한지는 알지 못하지만, 나중에라도 한번 공부해볼만한 내용이라 생각한다.

피어세션

각각 논문을 선택하여서 해당 논문에대한 발표를 하는 식으로 진행되었다. 내가 선택한 논문은 BERT 였고 아마 앞으로 많이 사용될것이라 생각하여 선택하였다. 다른분들의 논문을 들으며 어떠한 모델들이 있는지 알아볼수 있었고, 이미 배운 모델들에 대해서는 좀더 구체적으로 알아볼수 있는 기회였다. 특히 기억에 남는논문이라면 PEGASUS라는 논문이다. 이름이 특이해서 기억나는 부분도 있지만, 이 PEGASUS는 지금까지 인코더, 디코더로 나뉘어져서 발전하던 모델이 아닌 다시 원본 트렌스포머처럼 작동하는 모델이여서다. 나중에 알아본 바로는 BART라는 모델이 처음으로 다시 트렌스포머처럼 인코더, 디코더의 형식을 취한거라고 한다. 그렇지만 PEGASUS가 내가 처음 들은 인코더 디코더 형식의 모델이라 기억에 남는다.

과제

솔직히 이번주에 과제는 거의 하지 않았다. 실습도 거의 들여다보지 않고 오직 강의에만 집중하고 그 내용을 이해하려고 하였다. 전에도 보니까 어짜피 이론 배울때는 이론하는게 낫고, 프로젝트 할때 저절로 코딩실력 느니까 이론만 제대로 이해하자고 하고 시작했다.

회고

내가 목표한바에 어느정도 도달한것 같다. 애초에 이론만 제대로 알고가자라고 생각하고 왔고, 어느정도 이론은 이해하였다. 전에 DL Basic이나 수학 들을때 이론을 이해하지 못하고 지나간게 너무 뼈아프게 느껴져서 이번에는 다 필요없고 이론을 반드시 이해하려고 하였다. 이번에 이해 못하면 다시 찾아보고 이해하기 힘들꺼라 생각했기에 열심히 강의듣고, 찾아보고 했던것 같다.
물론 이렇게 하는 바람에 코딩에 대해서 거의 알지 못하는 상태이긴 하지만, 앞으로 추석기간에 이부분은 보강할수 있을거라고 생각하며 지나가려 한다.

profile
안녕하세요

0개의 댓글