일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- bert
- attention
- Language Modeling
- Homomorphic Encryption
- Residual Connection
- 딥러닝
- 머신러닝
- 동형암호
- 자연어처리
- math
- Private ML
- Machine Learning
- matrix multiplication
- Computer Vision
- Model Compression
- GPT
- ICML
- NLP
- Data Augmentation
- AI
- Transformer
- Copilot
- KT
- Pre-training
- Deep learning
- Knowledge Distillation
- 표현론
- Natural Language Processing
- Github Copilot
- Knowledge Tracing
- Today
- Total
Anti Math Math Club
A Neural Network Solves and Generates Mathematics Problems by Program Synthesis: Calculus, Differential Equations, Linear Algebra, and More 본문
A Neural Network Solves and Generates Mathematics Problems by Program Synthesis: Calculus, Differential Equations, Linear Algebra, and More
seewoo5 2022. 1. 3. 23:31최근에 현생(?)을 사느라 좀 바쁘기도 했고, Vision Transformer가 나온 이후로 너무 Transformer 관련 논문만 쏟아지는 것 같아서 한동안 딥러닝 논문을 안 읽고 있었는데, 최근에 대학 수준의 수학문제를 딥러닝으로 풀었다는 논문이 나왔다고 해서 블로그를 켰습니다. 구글이나 페이스북같은 기업에서 쓴 논문이 아니고 MIT, Columbia, Harvard, Waterloo에서 쓴 논문인데, 저자 중에서 유일하게 눈에 들어오는 사람은 가장 마지막에 있는 Gilbert Strang이었습니다. 학부때 봤던 선형대수 교재를 쓴 MIT 교수님인데 요즘 이쪽으로 관심을 갖고 계시다는 소식은 어디선가 들었지만 여기서 보게 되니 신기하네요. 처음에 논문을 다운받으니 114페이지라고 해서 이걸 리뷰해야 하나 싶었는데, 앞의 7쪽을 제외한 나머지는 실제 실험 결과들이었습니다. (왜 실험 결과가 100쪽이 넘어가는지는 리뷰를 읽다보면 아시게 될겁니다.) 그래서 간략하게나마 읽어보자고 마음을 먹었습니다.
먼저, 딥러닝으로 수학 문제를 풀려고 했던 시도들이 당연히 예전에 없었던건 아닙니다. 누구나 해볼 수 있는 생각은, 어디선가 데이터셋을 제공해 준다면 Pre-trained transformer를 가져와서 어케어케 fine-tuning을 하면 되지 않을까..? 인데, 조금 더 생각해보면 어떻게 fine-tuning을 해야 수학문제를 풀 수 있을지 바로 떠오르지는 않는다는걸 알 수 있습니다. GPT처럼 문제를 prompt로 앞에 넣어서 뒤에 답변이 나오도록 해보는게 가장 처음 해볼 수 있는 시도같은데, 이것만으로 잘되었다면 이 논문이 나오지도 않았을 것 입니다. 이런 류의 task를 Math Word Problem (MWP)라고 부르는데, MWP-BERT나 Graph2Tree Solver에서 사용한 방법들은 pre-trained transformer나 GNN등을 이용해서 문제를 encode한 뒤, 이를 문제의 답을 주는 식의 형태로 바꾸어주는 tree-based decoder에 집어 넣어서 원하는 식과 결과를 얻어내는 방식입니다. 하지만, 이 모델들을 평가한 데이터셋은 거의 초등학교 수준의 사칙연산을 길게 풀어쓴 문제들이고, 대학 수준의 문제들을 풀어내는데에는 한계가 있습니다. 특히 답 자체가 tree-based decoder로 얻어낼 수 없는 문제(그래프를 그리라는 등)는 이 방법으로는 어렵다고 봐야합니다. Solving Machine Learning Problems라는 논문에서도 비슷한 방법을 이용해서 머신러닝 과목의 문제를 푸는 모델을 만들었는데 (제목이 뭔가 어색하다 싶었습니다) 다른 과목으로 확장하기는 쉽지 않은 방법론입니다. (참고로 이 논문의 저자들이 이번에 리뷰하려는 논문에 많이 포함되어 있습니다.)
이번에 리뷰하려는 논문에서 풀고자 하는 문제들은 학부 수준의 미적분학, 선형대수학, 미분방정식 등의 문제들이고, 그만큼 문제에서 요구하는 것들도 다양합니다. 그렇기 때문에 단순하게 자연어 처리로 접근하거나 앞서 언급한 (Transformer/GNN) Encoder - Tree-based Decoder로 해결하기에는 무리가 있는데, 이 논문에서는 문제 자체를 Python 코드로 바꿔서 코드를 돌리면 답이 나오도록 하는 방법을 취합니다. 신박하죠? 그러면 생성된 코드보고 답을 계산하라고 할 수도 있고, 그래프를 그리라고 할 수도 있으니 해결할 수 있는 문제의 범위가 훨씬 커지게 됩니다.
그렇다면 코드는 어떻게 생성할까요? 이와 관련이 깊은게 바로 얼마 전에 화제가 되었던 OpenAI의 Github Copilot인데, 이는 Github의 코드들에 fine-tune된 GPT-3로 주석을 집어넣으면 해당하는 코드를 자동으로 생성해주는 모델입니다. (저도 쓰고 있는데 생산성이 거의 두배 이상 좋아진 것 같습니다. 강추...) Copilot의 전신이 되는게 바로 Codex인데, Codex에 문제를 집어넣어 코드를 만든다는 아이디어 입니다. 참 쉽죠?
애석하게도, 정말 그렇게 쉽게는 안됩니다. 문제를 Codex에 집어넣기 이전에 약간의 전처리(?)를 해줘야 하는데, 논문에서는 크게 1) Topic Context, 2) Library Context, 3) Definition Context and Probabilistic Programming, 4) Interaction, 5) Simplication의 5가지 augmentation으로 분류하고 있습니다. 굳이 자세히 설명하지 않아도, 아래 그림을 보면 대충 어떤 느낌인지 감이 오실겁니다. 어떤 주제의 문제인지, 어떤 python 라이브러리를 바탕으로 코드를 만들면 되는지, 필요한 정의들이 무엇인지 등을 포함하고 있습니다. 예를 들어서, 포커의 특정 패가 나올 확률을 구하라고 한다면, 포커에서 어떤 패가 있는지 이런걸 추가적으로 넣어줘야 한다는 것이죠.
그래서, 잘 푸나요? 예! 잘 풉니다. 총 12개의 강좌에서 210개의 문제를 뽑아서 실험했는데, 그 중에 몇개를 맞았는지 적어놓지는 않았지만 이 문제들을 Codex로 만들어진 코드와 함께 전부 다 논문의 Appendix에 넣어놨습니다. 그래서 논문이 100쪽이 넘어갑니다. 이 중에서 인상적인 예시 하나만 뽑아봤습니다. 또한, AMC나 AIME같은 미국 고등학생 수학 경시대회 문제들을 모아놓은 데이터셋인 MATH dataset에서는 100% 다 맞췄다고 합니다. (참고로 단순히 GPT-3를 이용하면 정답률이 6.3%밖에 되지 않는다고 합니다.) 믿거나 말거나
여기서 좀 더 나아가면, 이 방법을 이용해서 문제를 생성하는것도 가능합니다. 실제 문제들을 여러개 가져와서 마지막 문제를 앞의 몇 단어만 남긴 채로 넣어주면 뒷 부분을 알아서 완성하는 방식입니다. 이렇게 문제를 만들어서 실제 MIT 학생들에게 사람이 만들었는지 아닌지를 구분해보라고 시켰고, 설문조사 결과는 아래와 같습니다. 일단 평가된 난이도도 비슷하고, 문제 자체도 전체적으로 적절하다고 평가되었으며 (사람이 만든것보다는 그래도 별로라고 나오네요. 참고로 18.02는 다변수 미적분학 과목이라고 합니다.) 사람이 만들었는지 기계가 만들었는지를 구분하는 것에서는 위의 방법대로 생성된 문제에 대해서는 거의 5:5로 나오는 것을 볼 수 있습니다.
결론적으로는 Codex를 써서 코드로 바꾼다는 아이디어가 핵심인 것 같습니다. 한계점에 대해서도 논문 마지막에서 얘기를 하고 있는데, image가 입력으로 들어가는 문제에서는 못쓴다는 점(다들 이걸 보고 Vision Transformer나 Multimodal Transformer를 생각하겠죠?)이나 긴 증명같은건 아직 어렵다는 점이 있습니다. 얼마 전에는 구글에서 머신러닝으로 순수수학 문제를 푸는데에 도움을 줬다는 연구도 나왔었는데, 다음에는 이에 대해서 리뷰를 할까 합니다.
'Machine Learning & Deep Learning > Others' 카테고리의 다른 글
Advancing mathematics by guiding human intuition with AI (0) | 2022.01.27 |
---|---|
지극히 주관적인 Interesting papers in ICML 2021 (1) - Transformers and Attentions (5) | 2021.07.14 |
Constructions in combinatorics via neural networks (0) | 2021.05.02 |
Neural Ordinary Differential Equation (2) | 2020.11.27 |
Improving Knowledge Tracing via Pre-training Question Embeddings (0) | 2020.11.27 |