728x90

 이렇게 하기 위해서는 트랜스포머라고 부르는 새로운 종류의 블록을 만들면 됩니다. 이 트랜스 포머 블록에서 셀프 어텐션을 사용하는데, 동작하는 과정을 보자면 우선 입력 시퀀스로 벡터 x1에서 x4까지 받습니다.

 

 이 전체 벡터에 대해 멀티 해드 셀프 어텐션을 동작시키고, 셀프 어텐션 연산 후에 각 출력은 각 입력과 시퀀스의 다른 원소들 사이의 상호작용으로 구해지게 됩니다. 

 

 셀프 어텐션 후에는 잔류 커낵션/스킵 커낵션을 시키고,

 

 그 뒤에는 레이어 정규화 층을 추가하겠습니다. 이 방법은 심층 신경망에서 정규화 하는 기법 중 하나로 최저과 과정을 도우며, 합성곱 신경망에서는 주로 배치 정규화가 사용되고, 시퀀스 모델의 경우 레이어 정규화가 유용하게 사용됩니다.

 

 레이어 정규화에 대해서 흥미로운 점은 셀프 어텐션의 출력으로 벡터들의 집합이 만들어지는데, 레이어 정규화는 벡터들 사이에 상호작용이나 어떤 연산없이, 셀프 어텐션의 출력 벡터들이 각각 독립적으로 정규화가 되어 벡터들간의 어떤 작용이 존재하지가 않습니다.

 

 레이어 정규화를 한 후에는 순방향으로 다층 퍼샙트론 연산을 하겠습니다. 다른 말로 완전 연결 신경망이라고도 부르는데, 레이어 정규화의 출력은 벡터들의 집합으로 이들을 완전 연결 신경망에 전달하여, 이들을 각 시퀀스별로 독립적으로 연산하겠습니다.

 

 그 다음에는 다층 퍼샙트론 연산들에 대해서 별도의 잔류 커낵션을 추가하고,

 

 

 또 다른 레이어 정규화 계층을 추가 하겠습니다.

 

 

 이들을 한 블록에다가 모은걸 트랜스포머 블록이라 합니다. 이 블록은  벡터 시퀀스를 처리하는 큰 규모의 모델을 만드는데 사용할수 있겠습니다.

 

 이 트랜스포머 블록의 입력으로 벡터 x의 집합이고, 출력은 벡터 y들의 집합으로 입력 벡터와 개수와 출력 백터의 개수는 동일합니다. 하지만 출력 벡터는 다른 차원수를 가질거에요. 이러한 벡터의 차원은 모델 내부에서 바꿀수 있겠습니다.

 

  이 셀프 어텐션/트랜스포머 블록의 흥미로운점은 셀프 어텐션 부분에서만 벡터들간의 상호작용이 일어난다는 점인데, 레이어 정규화와 다층 퍼샙트론에서는 각 벡터들이 독립적으로 연산되기 때문입니다. 이 블록의 이러한 장점 덕분에 트랜스포머 블록은 매우 병렬화 하기 좋고, GPU 하드웨어에서 다루기가 좋아 학습하기에 매우 좋습니다.

 

 그러면 이제 트렌스포머 블록의 시퀀스로 사용해서 트랜스 포머 블록을 만들어봅시다. 트랜스포머 모델을 만들려면 하이퍼 파라미터들을 선전하여야 합니다.

 

 하나는 모델의 깊이로 블록의 갯수인데, "Attention is all you need" 논문에 있었던 블록의 개수는 12개를 사용하였고, 각 플록의 쿼리 차원을 512차원으로 지정하였고, 6개의 멀티 해드 어텐션 레이어를 사용하였습니다. 여기서 멀티 해드 어텐션은 셀프 어텐션 연산에서 수행되요.

 

 이 트랜스포머 아키텍처를 "Imagenet moment for natural language procesing"이라고 부르며, 자연어 처리에서 매우 유용하게 사용되고 있습니다. 여러분도 알다시피 컴퓨터 비전에서 이미지냇으로 선학습 시키고, 특정 작업 용도로 미세 조정하는게 흔하다 시피, 트렌스포머 모델도 수 많은 시퀀스 예측이나 자연어 작업에서 비슷한 효과를 보입니다.

 

 지금 보는 이 내용들은 아주 최근 연구 결과들로, 작년에 있었던 논문에서는 아주 큰 트랜스포머 모델을 인터넷에서 아주 많은 양의 텍스트를 다운받아 다음에 올 단어를 예측하거나 다른 자연어 처리 모델 동작을 할수 있도록 선학습을 시킬수 있고, 기계 번역이나 언어 모델링 혹은 언어 생성이나 질의응답 등 어떤 작업을 하던간에 자연어 처리와 관련된 어느 작업이든 미세조정을 할수 있습니다.

 

 몇 강의 전에 이미지넷 대회에서 이런 전이학습 트랜드가 나타났던처럼 작년(이 강의 발표 기준 2018년같음)부터 트렌스포머 모델을 이용해서 비슷한일이 벌어지고 있습니다.

 

 최근 큰 인공지능 연구소에서 훨씬 큰 트랜스 포머 모델을 만들려고 연구중이며, 기본적인 모델로 2017년 "attention all you need" 어텐션 논문에 나온 transformer base과 transfomer large 모델이 있습니다. large 모델은 213만개 학습가능한 파라미터를 가지고 있어, 8개의 GPU로 학습하는데 3.5일이 걸렸다고 합니다.

 

 다음 논문은 BERT라고 하는 모델로 선학습하고, 미세조정 과정을 거친 모델로 340백만개의 학습가능한 파라미터를 가지며 더 커지고, 13GB의 텍스트로 학습하였습니다. 텍스트 자체는 작지만, 13GB의 텍스트는 아주 큰 데이터이고, 논문에서 훈련 시간이나 하드웨어를 설명을 찾을수가 없었습니다.

 

 구글의 다른 그룹과 페이스 북에서 만든 모델로 XLNet-Large와 RoBERTa가 있는데, 이 모델들은 100GB 이상의 데이터를 학습하였으나 빠르게 학습하였습니다. 구글의 모델은 512TPU 디바이스-v3로 2.5일간 학습하였고, 페이스북의 모델은 1024개의 GPU로 하루를 학습시켰습니다.

 

 Open AI에서 그동안의 한계를 뛰어넘은 모델을 발표했는데, 자체 생성한 40GB 텍스트로 15억개의 학습한 파라미터를 가진 트랜스포머 모델을 학습하였습니다. 모델 자체는 동일하나, 다른 부분은 더 많은 레이어와 각 셀프 어텐션 레이어에서 더 많은 쿼리 차원을 가지고, 더 많은 셀프 어텐션 레이어를 사용한다는 점입니다. 모델 자체는 근본적으로 동일하고, Open AI에서 가지고 있는 이 모델을 GPT2라고 합니다.

 

 

300x250

+ Recent posts