[AI 모델 탐험기] #17 BERT를 더 가볍게, 그리고 ETHICS 벤치마크
[편집자주] 본 글은 커먼컴퓨터에서 Developer Relations Engineer를 맡고 있는 백동훈님이 오픈소스 AI모델을 정리하고 인사이트를 공유하는 글로 시리즈로 기획돼 발행되고 있습니다. 열일곱 번째 글은 BERT의 경량화 모델들과 이들에 대한 ETHICS 벤치마크 결과입니다.
지난 글에서는 ETHICS 데이터셋에 대한 소개와 BERT-base 모델에 대해서 ETHICS 데이터셋의 5가지 요소 중 Justice에 대한 벤치마크 결과를 확인해보았습니다. 이번 글에서는 BERT를 경량화한 모델들은 어떤 것이 있는지 알아보고, 이들에 대해서 ETHICS 데이터셋의 5가지 요소 모두 학습 및 평가를 실행할 수 있는 Ainize Workspace까지 준비했습니다.
프로젝트를 확인해보고 싶으신 분들은 아래 링크를 참조해주세요!
- Github : https://link.ainize.ai/3mLkrmw
- Workspace : https://link.ainize.ai/3EbgbTC
- Workspace Github : https://link.ainize.ai/3jpeutk
자연어처리 분야에서 transformer 기반의 pre-trained language model인 BERT가 등장한 이후 모델의 크기가 기하급수적으로 증가하고 있습니다. 특히 2020년에 등장한 GPT-3은 파라미터가 무려 1750억 개로, 한 번 학습에 1200만 달러의 비용이 소모된다고 합니다. 따라서 모델의 크기가 커짐에 따라 학습에 필요한 비용도 증가하기 때문에 큰 기업 외에는 모델을 사전학습 시키기는 사실상 불가능 해졌습니다. 이로인해 모델의 크기를 줄이기 위한 경량화 방법이 활발히 연구되고 있습니다.
이번 글에서는 BERT를 경량화한 DistilBERT, ALBERT, ELECTRA에 대해 알아보겠습니다. 세 모델 모두 각각 다른 방법으로 모델의 크기를 줄이거나 학습 방법을 개선했는데요, 첫 번째로 소개할 모델은 DistilBERT입니다.
DistilBERT
DistilBERT는 지식 증류(Knowledge Distillation)를 이용하여 BERT를 경량화한 모델입니다. 지식 증류는 모델을 경량화 하기위해 많이 사용되는 방법으로, 크기가 작은 모델(Student network)이 학습이 잘 된 큰 모델(Teacher Network)의 분포를 따르도록 합니다. 이렇게 함으로써 작은 모델의 성능이 큰 모델과 차이가 거의 없도록 하는 것이 목표입니다. 학습 시에는 큰 모델의 출력(벡터)을 지식을 증류할 대상이 되는 작은 모델의 정답 라벨로 사용합니다.
그렇다면 DistilBERT의 사전학습(pre-training) 과정에는 어떤 Loss가 이용되었을까요? DistilBERT 논문에 따르면 총 3개의 Loss를 이용했습니다.
첫 번째는 CrossEntropy Loss입니다. 계산 방법은 일반적인 CrossEntropy Loss계산과 동일하지만 정답 라벨을 Teacher 모델인 BERT의 출력으로 이용합니다. 따라서 아래 식에서 t_i는 Teacher 모델인 BERT의 출력이고, s_i는 Student 모델인 DistilBERT의 출력입니다.
두 번째는 BERT의 사전학습에도 이용되는 Masked Language Modeling Loss입니다. 해당 Loss는 사전학습동안 masking된 토큰을 예측하는 과정에서 발생하는 Loss입니다.
세 번째는 Cosine Embedding Loss입니다. 해당 Loss를 이용하면 Teacher 모델과 Student 모델의 hidden state vector들의 방향을 맞추는 경향을 보인다고 합니다.
그리고 DistilBERT는 모델의 크기를 줄이기 위해 기존 layer의 개수를 2배 줄이고, token-type embeddings layer와 pooler layer를 삭제했습니다. 따라서 학습시에 NSP(Next Sentence Prediction) 작업을 진행하지 않습니다.
결과적으로 DistilBERT는 BERT보다 모델의 크기는 40%로 줄이고, 추론 속도는 BERT의 60%정도로 빨라졌지만 성능은 BERT의 97%까지 유지되도록 하였습니다.
ALBERT
ALBERT(A Lite BERT) 역시 BERT를 경량화한 모델입니다. 경량화를 했음에도 성능은 오히려 BERT보다 높게 측정되었습니다. ALBERT는 다음과 같은 2가지 방법을 이용하여 경량화를 진행했습니다.
첫 번째 방법은 Factorized embedding parameterization입니다. 이는 커다란 행렬을 2개의 작은 행렬로 쪼개는 것입니다. 여기서 ALBERT는의 입력 토큰들이 거치는 embedding layer를 2개로 쪼갭니다. 토큰의 개수를 V, 토큰 임베딩 벡터의 차원(hidden size)을 H라고 하면 기존 BERT에서 embedding layer의 파라미터 수는 V x H 입니다. 하지만 ALBERT에서는 WordPiece embedding size E를 추가하여, V x H크기의 emedding layer를 V x E, E x H 2개의 행렬로 분해합니다.
만약 V=30000, H=768, E=128이라면, BERT의 embedding layer에서의 파라미터 개수는 V x H=30000 x 768=23040000개지만 ALBERT에서는 V x E+E x H=30000 x 128 + 128 x 768=3938304로 줄어듭니다. 파라미터 개수는 줄어들지만 embedding layer를 거친 후 벡터의 차원은 H로 동일합니다.
두 번째 방법은 Cross-layer parameter sharing입니다. ALBERT에서는 임베딩 레이어 간의 파라미터를 공유합니다. 따라서 하나의 임베딩 레이어를 재귀적으로 수행하는 것과 동일한 효과를 가집니다. 인코딩 레이어는 크게 Attention 부분과 FFN(Feed Foward Network)부분으로 나눌 수 있습니다. 인코딩 레이어의 Attention 부분의 파라미터만 공유하는 것이 모든 부분의 파라미터를 공유하거나 FFN 부분의 파라미터만 공유하는 것 보다 성능이 더 높다고 실험적으로 밝혀졌습니다.
결과적으로 위의 두 가지 방법을 이용하면 ALBERT-large 모델의 파라미터 개수는 BERT-large 모델보다 18배나 적고, 학습속도는 1.7배나 빨라진다고 합니다.
마지막으로는 학습 방법을 변경하였습니다. 기존 BERT에서는 주어진 두 문장이 연속되었는지를 판단하는 NSP(Next Sentence Prediction)를 수행합니다. 하지만 BERT의 후속 연구에서 NSP의 난이도가 높지 않기 때문에 학습 효과가 크지 않다는 것이 알려졌습니다. 따라서 ALBERT에서는 NSP 대신 여러 개의 문장에 대해 순서를 예측하는 SOP(Sentence Order Prediction)를 수행합니다.
ELECTRA
ELECTRA(Efficiently Learning an Encoder that Classifies Token Replacements Accurately)는 GAN(Generative Adversarial Network)의 구조를 이용하여 학습 방법의 개선을 통해 더 빠른 학습이 이루어지도록 하였습니다.
ELECTRA와 관련된 내용은 이미 AI Network 블로그에 올라와 있으니, 해당 글을 확인해보세요!
Ainize Workspace를 이용한 ETHICS 데이터셋 벤치마크
이번에는 Ainize Workspace를 이용해서 ETHICS 데이터셋에 대한 학습 및 평가를 진행해보겠습니다. 이번 Workspace는 Link를 통해 생성한 후에 사용하실 수 있습니다. 모델은 huggingface에 올라와 있는 bert-base-uncased(비교용), distilbert-base-uncased, albert-base-v2, google/electra-base-discriminator를 이용하였습니다.
각 모델에 대한 벤치마크 결과는 다음과 같습니다.
하이퍼 파라미터 조절을 하지 않은 상태에서의 결과지만 ELECTRA의 성능이 BERT보다 높게 측정되었습니다. GAN을 이용하여 모델의 구조를 바꾼 것이 유의미한 성능 향상을 이끌었다고 생각할 수 있을 것 같습니다.
지금까지 BERT를 경량화한 모델들과 이들에 대한 ETIHCS 데이터셋 벤치마크 결과를 살펴보았습니다. 앞으로 어떤 방법으로 경량화를 한 모델들이 등장할지 궁금합니다. 또한 경량화 방법들이 모델의 윤리성에는 어떤 영향을 미칠지 궁금해지네요. 여러분들의 의견은 어떠신가요? 댓글을 통해 다른 사람들과 공유해보세요!
레퍼런스
- https://github.com/hendrycks/ethics
- OpenAI’s massive GPT-3 model is impressive, but size isn’t everything
- Distilling the Knowledge in a Neural Network
- DistilBERT, a distilled version of BERT: smaller, faster, cheaper and lighter
- ALBERT: A Lite BERT for Self-supervised Learning of Language Representations
AI 네트워크는 블록체인 기반 플랫폼으로 인공지능 개발 환경의 혁신을 목표로 하고 있습니다. 수백만 개의 오픈 소스 프로젝트가 라이브로 구현되는 글로벌 백엔드 인프라를 표방합니다.
최신 소식이 궁금하시다면 아래 커뮤니케이션 채널을 참고해주시기 바랍니다. 다시 한 번 감사합니다.
AI네트워크 공식 홈페이지: https://ainetwork.ai/
공식 텔레그램: telegram.com/ainetwork_kr
아이나이즈(Ainize): https://ainize.ai
유튜브: https://www.youtube.com/channel/UCnyBeZ5iEdlKrAcfNbZ-wog
페이스북: https://www.facebook.com/ainetworkofficial/
포럼: https://forum.ainetwork.ai/
AIN Price chart: https://coinmarketcap.com/currencies/ai-network/onchain-analysis/