일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Stat110
- NLP
- ddpm
- 생성모델
- Generative Model
- userwidget
- animation retargeting
- 딥러닝
- 디퓨전모델
- motion matching
- cv
- ue5.4
- RNN
- Unreal Engine
- Diffusion
- deep learning
- BERT
- CNN
- inductive bias
- WBP
- UE5
- 언리얼엔진
- Few-shot generation
- dl
- multimodal
- Font Generation
- GAN
- 폰트생성
- WinAPI
- 모션매칭
Archives
- Today
- Total
Deeper Learning
CodeBERT:A Pre-Trained Model for Programming and Natural Languages 본문
AI/Deep Learning
CodeBERT:A Pre-Trained Model for Programming and Natural Languages
Dlaiml 2022. 8. 23. 15:02Zhangyin Feng, Daya Guo, Duyu Tang, Nan Duan, Xiaocheng Feng, Ming Gong, Linjun Shou, Bing Qin, Ting Liu, Daxin Jiang, Ming Zhou, [Research Center for Social Computing and Information Retrieval, Harbin Institute of Technology, China, The School of Data and Computer Science, Sun Yat-sen University, China, Microsoft Research Asia, Beijing, China, Microsoft Search Technology Center Asia, Beijing, China] (2020.02)
Abstract
- Programming language(PL)과 natural language(NL)을 위한 pre-trained bimodal 모델인 CodeBERT를 제시
- CodeBERT는 자연어로 코드 검색, 코드 documentation 생성 등 자연어-코드 적용을 위한 범용적인 representation을 학습
- masked language modeling과 replaced token detection을 사용하여 학습
- 코드 검색, 코드 documentation 생성에서 SOTA를 달성
1. Introduction
- CodeBERT는 bimodal 모델로 자연어와 코드 간의 의미론적 연결성을 잡아내고 범용적인 representation을 학습하여 자연어-코드 관련 task에서 좋은 성능을 보임
- BERT의 masked language modeling과 ELECTRA의 replaced token detection을 사용하여 학습
- 6개 프로그래밍 언어를 사용하여 학습, bimodal 데이터는 함수 단위의 코드와 자연어 documentation pair 사용
- 저자가 언급한 본 논문의 contribution
- 여러 프로그래밍 언어를 위한 최초의 large NL-PL pre-trained 모델
- code search, code-to-text generation에서 CodeBERT가 효과적임을 보이는 empirical result
- code-based pre-trained model의 성능을 측정하는 dataset을 최초로 제시
2. CodeBERT
2.1. Model Architecture
- RoBERTa-base와 동일한 모델 구조 사용 (125M parameters)
2.2. Input/Output Representations
- [CLS] w1 w2 w3 … wn [SEP] c1 c2 c3 … cn [EOS] 형태로 two segment를 이어 붙인 input
- WordPiece를 사용하여 자연어를 split
- output은 CLS token의 representation과 각 자연어, 코드 token의 contextual vector representation
2.3. Pre-Training Data
- Github repository data를 사용
- Python, Java, JavaScript, PHP, Ruby, Go 언어를 학습
2.4. Pre-Training CodeBERT
- masked language modeling(MLM)은 자연어-코드 pair data에만 적용
- Replaced Token Detection(RTD)는 자연어-코드 pair data, unimodal data에 모두 적용
2.5. Fine-Tuning CodeBERT
- natural language code search에는 pre-training과 같은 방식으로 input을 주고 [CLS]를 사용하여 의미론적 언어 관계를 파악
- code-to-text generation에서는 생성모델의 encoder를 CodeBERT로 initialize
3. Experiment
- natural language code retrieval, NL-PL probing, Code-to-Documentation generation task에서 모두 기존 모델보다 뛰어난 성능을 기록하며 SOTA 달성
4. Conclusion
- 자연어와 코드 다루는 최초의 large bimodal pre-trained model CodeBERT를 제시
- code-search code-to-document generation에서 SOTA를 달성
- NL-PL probing task를 정립하고 dataset을 제시
- Future work
- bimodal evidence를 활용하거나 모델 구조를 개선하여 더 generator를 고도로 학습
- generation을 위한 learning objective의 추가
- AST(추상 구문 트리)를 활용한 code 전처리
- 다른 자연어-코드 task로의 확장, 더 많은 언어와 프로그래밍 언어로 학습
후기 & 정리
- Google AI4Code 캐글 대회에 참여하면서 가볍게 훑었던 논문이라 다시 정리
- hugging face에 공개된 pre-trained weight를 사용하였더니 random initialize RoBERTa에 비해 어느 정도 성능 향상이 있었음
- 자연어-코드 bimodal로 학습한 최초의 대규모 언어모델이 가장 큰 의의
- 기존 방식을 그대로 사용하였기 때문에 모델 아키텍처 및 학습 방식에서 novelty는 없음
- 조금 더 code domain에 specific한 모델 설계가 있으면 큰 성능 향상이 있을 것이라고 생각함
Reference
[0] Zhangyin Feng et al. (2020). "CodeBERT: A Pre-Trained Model for Programming and Natural Languages". https://arxiv.org/abs/2002.08155
'AI > Deep Learning' 카테고리의 다른 글
Comments