본문 바로가기

메타러닝 CS330

Lecture 1 Intro 리뷰 Deep Multi-Task and Meta Learning

인공지능 로봇을 만드는데 가장 중요한 것은 무엇일까?

 

이미지 처리, 자율 주행 등 다양한 분야에서 사용되고 있는 딥러닝이 휴머노이드나 드론 등 실제 로봇에는 적용되기 힘든 데는 다양한 이유가 있다.

 

먼저 현실에서는 오차가 존재한다는 점, 그리고 현실에서 직접 실험하여 데이터를 얻기 까다롭다는 점, 가장 중요한 것은 로봇 개발의 목적이 단순한 행동의 반복이 아니라 다양한 분야에서의 활용이 필요하기 때문이다.

 

예를 들어, 로봇이 케첩통을 들어서 케첩을 뿌리는 작업을 학습한다고 할 때, 지금까지의 딥 러닝으로는 이를 훌륭하게 수행할 수 있지만, 머스타드병으로만 바꿔줘도 로봇은 헤매게 된다. 단순히 케첩병을 들어 뿌리는 작업만 학습하게된 것이다.

 

아무리 잘 학습시킨다고 해도 조금 다른 행동, 조금 다른 환경에 놓였을 때, 기계는 사람보다 멍청해진다. 이러한 로봇에게 일상생활을 맡기기는 여간 쉬운일이 아니다.

 

Deep Multi-Task and Meta Learning 강의는 Stanford 대학에서 진행하고있는 CS330 과목이다. 나는 이 수업을 듣고 내용을 알기 쉽게 요약할 것이다.

 

사이트 : cs330.stanford.edu/

 

아직 학사수준의 이해능력으로 충분히 설명하지 못하고 오류가 있을 수 있다.


Lecture 1. Intoduction

출처. CS330 Lecture1 Slide

Finn 교수님은 이전에 수행했던 과제를 통해, 로봇이 어려운 작업들을 학습하여 실행하는 것을 보여준다.

 

서로 다른 동작들을 아무것도 학습시키지 않은 상황에서 처음부터 학습하는 것이다.

출처. CS330 Lecture1 Slide

하지만 학습과정에서는 엄청난 노력이 따른다. 영상에서 퍽을 치는 로봇 옆에서 퍽을 다시 제자리에 갖다놓으며 고생하고 있는 대학원생을 볼 수 있다.

(대학원생은 웁니다 ㅜㅜ)

 

출처. CS330 Lecture1 Slide

이런 모습을 봤을 때, 로봇은 Specialist라고 볼 수 있다. 한가지 작업을 완벽하게 수행해 낼 수 있기 때문이다. 하지만 우리가 원하는 로봇의 모습은 이와 다르다.

 

사람이 할 수 있는 일을 하기 위해서는 사람과 같은 Generalist가 되어야한다. Generalist는 눈에 보이는 많은 것들을 다루며 학습하는 것을 뜻한다.

 

우리는 왜 Meta learning과 multi-task learning에 관심을 가져야할까?

- 바로 로봇에게도 사람과 같은 general한 학습 능력을 갖게 하기 위해서이다.

 

그렇다면 왜 Meta learning과 Multi-task learning에 딥러닝을 적용시켜야할까?

- 바로 중간 프로그래밍 단계를 생략하기 위해서이다.

출처. CS330 Lecture1 Slide

예를들어 기존에 사용하던 Computer vision을 이용한 이미지 segmentation 작업 같은 경우, 사람의 얼굴과 팔 다리 등을 구별하기 위해 다음과 같은 과정을 거쳤다.

먼저 사진에서 feature를 추출하는 알고리즘을 사용하고(Hog 등) 또 분류할 대상을 잘 나타내는 Mid-level feature를 추출하는 알고리즘(DPM 등)을 사용한 다음, Classifier를 사용하여 분류한다. Classifier로는 대표적인 SVM(Support Vector Machine)이 있다.

 

말로만 들어도 복잡한 과정인데, 이 중간 단계의 알고리즘들을 모두 만들어내야한다. Hog, DPM, SVM 등등 수학적으로 공부하려고 해도 전공 지식이 꽤 필요한 부분이고, 이를 처음부터 생각해내고 다양한 문제에 적용하기 위해서 그 parameter를 수정하기란 쉽지 않다.

 

즉 segmentation을 위해서 image processing과 optimization에 대한 전반적인 전공지식과 수많은 시행착오가 필요하다는 것이다.

 

반면에 Deep learning은 다음과 같은 과정을 거친다. 다양한 구조로 Convolution layer들을 쌓아 효율적인 구조를 찾고, 학습하기만 하면 되는 것이다.

 

이처럼 중간 단계에 해당하는 수많은 노력들을 생략하기 위해 Deep learning을 통한 방식이 필요한 것이다.

 

- 심지어 이 방법이 훨씬 성능이 좋다.

 

Image classification 문제에 대해 Deep learning을 이용한 방식이 기존의 방식을 뛰어넘었고, 그 정확도가 해가 지날수록 더욱 높아지고 있다.


하지만 Deep learning이 무조건 좋은 것은 아니다.

 

기존의 방식은 특정 알고리즘을 통해 계산을 하는 반면, Deep learning은 Deep neural network를 학습시켜주는 과정이 있어야 제대로 동작할 수 있다.

 

이 과정에서 엄청난 연산능력을 통해 수많은 데이터를 학습한다. 따라서, 우리에게 가장 큰 문제는 수많은 데이터를 어떻게 구하냐는 것이다. 

 

만약에 우리가 하려고 하는 작업이 한번도 시도되지 않았고 그러인해 얻을 수 있는 데이터가 많이 부족하다면 학습에 큰 어려움을 겪게될 것이다.

출처. CS330 Lecture1 Slide

다음과 같은 그래프로 데이터의 특성에 따라 알 수 있다. Image classification은 앞쪽의 초록색 부분에 해당하지만, 우리가 하려고 하는 로봇은 노란색 영역에 있는 작업이다. 

 

만약에 앞서 학습한 내용을 가지고 다른 작업에도 사용할 수 있다면 어떨까?

 

이미 학습한 상황에서의 성능은 놔두고 새로운 상황에서 학습을 진행하는 것이다.

 

따라서 이러한 이유들이 Multi task learning을 사용해야하는 이유가 된다.

 

이 강의에서는 다음과 같이 Multi-task learning problem과 meta-learning problem을 정의하였다.

 

The multi-task learning problem : 여러 tasks를 단일 task에 대해 학습했을 때보다 더 빠르고 숙련되게 한다.

 

The meta-learning problem: 이전의 tasks에 대한 데이터를 바탕으로 새로운 Task를 더 빠르고 숙련되게 배운다.

 

하지만 Multi task learning을 적용하는 것이 쉬울까?

 

단순히 데이터를 모으고, Loss function을 더하기만 해도 문제가 해결된다면 참 좋을 것이다.

 

하지만 실제로는 그 방법은 통하지 않고, 새로운 방법에 대해 배워야한다.

 


왜 지금 이 기술이 필요할까?

 

최근 관심이 증가하고 있으며, 대중들이 더욱 쉽게 Deep learning에 접근할 수 있게 해주는 기술이기 때문이다.