본문 바로가기
파이썬 & 머신러닝

최근 머신 러닝 핫한 연구 분야 (2/3)

by 두재 2020. 12. 20.

두 번째 글입니다. 이번에는 Meta learning (메타 러닝, 메타 학습), Semi-Supervised, Self-Supervised Learning 그리고 Continual Learning 에 대해서 소개하겠습니다.

  1. Generative Model (생성 모델)
  2. Reinforcement Learning (강화 학습)
  3. Bayesian Deep Learning (베이지안 딥러닝)
  4. Meta-Learning (메타 러닝)
  5. Semi-Supervised, Self-Supervised Learning (SSL)
  6. Continual Learning (지속 가능한 학습)
  7. Interpretable Neural Network (설명 가능한 뉴럴 네트워크)
  8. Federated Learning (연합 학습)
  9. 그 외 # Neural Cryptography, CryptoNet, Novelty(Anomaly) Detection

다시 말하지만, 저 또한 이 분야에 전문가는 아니고 공부해보게 되어 짧게 소개하고 몇몇 논문들을 보여드리려고 합니다.

 

4. Meta Learning (메타 러닝)

Meta Learninig은 "Learning to Learn"이라고도 불리는데, 한 마디로 배우는 법을 배운다는 것입니다. 다르게 말하면 모델이 새로운 task를 빠르게 배울 수 있도록 만드는 것입니다. 이 문장이 이해가 안 되실 수 있는데 말해보겠습니다.

meta-learning은 meta-training과 meta-testing이 있습니다. meta-training에서 학습을 하고 meta-testing에서는 새로운 데이터, 혹은 새로운 환경에서 적은 학습을 한 후에 성능을 평가합니다. meta-testing에서 좋은 성능을 얻기 위해서는 meta-training에서 만들어야 하는 모델은,

  1. 잠시 후 meta-testing에서 조금만 업데이트해도 되도록 좋은 파라미터를 찾아놓는 것.
  2. 어떤 새로운 데이터, 태스크가 들어올 지 모르니 Generalization을 잘 해놓는 것.

위 두 가지가 필요합니다. 그렇다면 처음에 말한 새로운 task가 무엇인지 궁금할 수 있습니다. 이 부분은 예시를 들어 생각하는 것이 쉽습니다. 가장 유명한 것으로는 1. Few-shot Learning 이 있고 2. Meta Reinforcement Learning과 3. Neural Process가 있습니다. (하지만 Neural Process에 대해서는 설명하지 않겠습니다. 제가 잘 이해를 못했습니다.)

1. Few-shot Learning (참고 : A survey on Few-Shot Learning)

Few-Shot Learning (FSL) is a type of machine learning problems (specified by E, T and P), where E contains only a limited number of examples with supervised information for the target T.

쉽게 말하자면 supervised training에서 데이터 포인트가 정말 적은 것입니다. 통상 머신 러닝 모델의 정확도는 학습 데이터의 개수가 중요하게 작용합니다. 이론적으로는 세상의 모든 데이터로 학습을 하면 웬만해서는 다 맞출 수 있겠죠. 하지만 학습 데이터의 개수와 크기는 머신 러닝 연구자들에게 골치 아픈 부분 중 하나였습니다. 왜냐하면 학습 데이터가 많을수록 학습 시간이나 연산 시간이 늘어나기 때문이죠. 하드웨어의 발전도 계속 이루어지고 있지만 해보시면 알겠지만 학습하는 동안 기다려야 시간이 굉장히 깁니다. 그런데 사실 사람은 그렇지 않죠. 여느 머신 러닝이 그렇듯이 사람한테서 또 따온 것 중 하나인데, 여러분에게 아래 사진을 보여드렸습니다. 

푸른 독화살 개구리 (Dendrobates tinctorius)

위 개구리를 처음봤다고 가정하더라도 아래 사진과 위 개구리는 같은 종이라는 것을 알 수 있을 것입니다.

즉, 인간은 사진 한 장만 보더라도 그 동물을 다른 각도에서 찍은 그림이나 밝기, 조도, 채도가 바뀐 사진도 다 Classification을 할 수 있는 것이죠.

 

이미지 classification에서 FSL은 N-way-K-shot classification 상황에서 시작하는데, N개의 class가 있고 각각이 K개의 데이터가 있는 것입니다. 위에서 개구리는 1 way 1 shot classification인데, 1 way는 하지 않겠죠. 예를 들어 2 way 4 shot classification이면 강아지 사진 4개와 고양이 사진 4개를 보여주고 학습하고 나중에 이제 Classification을 해야 합니다. 그래서 FSL에서는 최대한 주어진 적은 개수의 이미지에서 많은 정보를 뽑아내야 합니다. 우리가 단순히 CrossEntropy로 그냥 학습하는 식으로 강아지 고양이 사진 8개 가지고 학습을 하면 안 봐도 성능이 정말 안 좋을 것이 예상이 되시죠. 그래서 FSL에서는 Data Augmentation을 많이 하거나 다음에 설명할 SSL과 관련이 있는데, 이미지들끼리 잘 조작해서 이미지 하나만 봤을 때는 알 수 없는 정보들을 얻어냅니다.

 

이 FSL이 Meta-Learning과 결합되면 다음과 같은 Problem formulation이 주어집니다. 위에서 나온 " 예를 들어 2 way 4 shot classification이면 강아지 사진 4개와 고양이 사진 4개를 보여주고 학습하고 나중에 이제 Classification을 해야 합니다." 상황에서 적은 데이터로 학습을 하는 건 맞는데, "나중에 이제 Classification을 해야 합니다." 이 부분에서 나중에 테스트로 들어오는 Class가 강아지와 고양이가 아닌 것입니다. 막 악어와 앵무새를 Classify를 해야하는 것이죠. 맨 처음에 Meta-Learning은 새로운 task로 빠르게 adapt하는 것이 중요하다고 했는데 FSL에서는 어떤 Class가 주어지는지가 task가 됩니다. 이를 위해 학습을 할 때에는 Class 관점에서 Generalize된 모델이 필요합니다. 

 

2. Meta Reinforcement Learning

Reinforcement Learning 분야에 굉장히 유명한 사람으로는 Sergey Levine, Chelsea Finn 교수님이 있습니다. 그 중 Chelsea Finn 교수님이 17년 7월에 내신 Model-Agnostic Meta-Learning for Fast Adaptation of Deep Networks, MAML이 Meta RL의 대표적인 논문입니다. MAML은 RL분야에만 쓰이는 것이 아니라 기존 meta-learning의 한 알고리즘 중 하나입니다. 

Model-Agnostic Meta-Learning for Fast Adaptation of Deep Networks

위 그림이 MAML을 설명하는 도식인데, 각각의 task specific한 Gradient가 있고 (라플라시안 L1, L2, L3) 검정 선으로 표현된 meta-learning은 theta라는 파라미터를 전체적인 Gradient의 방향으로 보냅니다. 이후 task-specific한 파라미터는 theta1*, theta2*, theta3*으로 표현되어 있네요. 알고리즘을 보면 쉽습니다.

Model-Agnostic Meta-Learning for Fast Adaptation of Deep Networks

여느 meta-learning처럼 몇 개의 task를 sampling하고 각 task에 대해서 Backpropagation을 통해서 gradient를 계산합니다. 그렇게 해서 각각의 theta_i'를 구하는데 이것이 모델의 task-specific한 파라미터가 되겠죠. 이후에는 전체 gradient를 더해서 (엄밀하게는 loss function이 theta_i'일 때로 구하고 backpropagation을 통해 얻은 gradient죠) theta를 업데이트합니다. 알파와 베타는 그저 각 task에 대한 learning rate과 meta-learning에 대한 learning rate입니다. 

 

위 알고리즘을 조금 정리해보자면, task들을 아우르는 theta라는 파라미터가 있고 이것이 각 task로부터 얻어진 정보를 바탕으로 업데이트됩니다. 또, 각 task에 대해서는 이 theta라는 시작점으로부터 한 번 혹은 적은 횟수의 gradient update를 통해서 theta'을 찾습니다.

위 알고리즘은 아주 조금만 수정하면 RL에서 쓸 수 있고, 이 논문에서는 meta-RL 테스트도 진행했습니다. 여기서 진행한 것은 MuJoCo 환경에서 half-cheetah의 forward/backward랑 ant의 goal velocity입니다. halfcheetah의 경우 앞으로 가는 것으로 meta-training하면 meta-testing 때는 뒤로 가는 것으로 리워드를 주면서 0번, 1번, 2번, 3번 gradient step을 한 후 퍼포먼스를 보는 것이죠. ant의 경우 어떤 주어진 속도로 가라 라는 것이 리워드로 주어집니다. 그래서 이 meta-RL도 아까 말했듯이 아주 적은 gradient step을 한 후 좋은 퍼포먼스를 낼 수 있어야 합니다.


정리해보자면,

최근 머신 러닝 모델들은 공통적인 문제점이 있습니다. 딱 한 가지 문제를 잘 풀 수 있다는 것이죠. 예를 들어, BERT나 GPT-3 같은 모델들은 사람의 말을 알아듣고, 말을 생성하려고 합니다. GAN은 이미지를 새로 만드려고 하고, PPO나 SAC는 로봇을 걷게 만듭니다. 이는 사람이 모델에게 어떤 문제를 풀게 시켰느냐에 따라 달라집니다. 하지만 아직 괜찮습니다. 지금 상태는 "모든 것을 다 잘하는 건 어렵지. 그래도 저거 하나만큼은 사람보다 잘해" 라는 것이 있으니까요. 그러나 문제는 뭐냐면 저거 하나조차 다 잘하는게 아닙니다. 뭐냐하면, 똑같이 말을 알아듣는 문제에서 영어로 학습된 BERT는 한국말이 들어오면 전혀 하지 못하며 다리가 두 개 달린 로봇을 걷게 만든 모델은 다리가 3개만 되더라도 아예 못합니다. 최근 트렌드에서는 이 문제를 해결해보려고 하는 것이 주인 것 같습니다.

 

5. Semi-Supervised, Self-Supervised Learning (SSL)

머신러닝에는 흔히 Supervised와 Unsupervised가 있습니다. 이 둘에 대한 설명은 정말 너무 많은 곳에 있을테니 짧게 넘어가겠습니다. Supervised의 대표적인 예시로는 MNIST classification입니다. 

(아직 포스팅을 완료하지 못했습니다...)