안녕하세요 모카의 머신러닝 입니다. 이번 포스팅에서는 Stanford Chelsea Finn 교수님의 Deep Multi-Task and Meta Learning 강의 Lecture 1에 대한 리뷰와 정리에 대해서 이야기 합니다.
Deep Multi-Task and Meta-Learning
주제
- 문제 정의
- 멀티 태스크 러닝 기초
- 메타 러닝 알고리즘: 블랙박스 접근법, 최적화 기반 메타 러닝, metric learning
- 계층적 베이지안 모델과 메타 러닝
- 멀티 태스크 강화학습, goal-conditioned 강화학습, 계층 강화학습
- 메타 강화학습
- 열린 문제들, 초대 강의들, 연구 이야기
이 분야들을 딥러닝, 강화학습 분야를 강조하고 있습니다.
다루지 않을 주제들
강의의 시간 관계상 모든 분야를 다 커버할 수가 없어서, Auto ML topics를 커버하지 않는다고 합니다.
- architecture search
- hyperparameter optimization
- learning optimizers
이 분야들은 딥러닝 분야의 접근법을 강조하는 분야입니다.
Course Format
3가지 종류의 세션이 있습니다.
- lecture (9)
- student reading: presentations & discussions (7)
- guest lectures (3)
연구 분야
Chelsea Finn 교수님의 연구 분야와, 왜 multi-task learning과 meta-learning에 관심을 가지는지 설명합니다.
어떻게 우리는 에이전트가 실제 환경에서 스킬을 배우도록 할 수 있을까?
교수님은 다음과 같이 로봇에 대한 여러 연구들을 하셨습니다.
왜 로봇인가?
로봇은 지능에 대한 것들을 우리에게 가르쳐준다! 그리고 아래와 같은 이유들이 있습니다.
로봇은
- 현실 문제에 직면해 있고
- 할 일, 목적, 환경 등에 반드시 일반화 되어야 하고
- 감독이 주어지지 않을 때 잘 할 수 있는 일반적인 상식을 이해하기
가 필요하기 때문입니다.
박사 처음 시절
교수님의 박사를 하실 때 로봇을 활용한 연구 프로젝트를 진행하셨다고 합니다.
처음에 로봇은 눈이 없는 상태로 비행기 장난감을 조립하는 문제에 대해 학습했다고 합니다.
나중에 눈이 필요한 비전 문제에 관심이 가게 되었다고 합니다.
동그라미, 네모 모양의 교구를 조립하는 일, 텀블러 뚜겅을 닫는일, 물건을 옮기는 일 등 입니다.
한 가지를 학습 하는 일
한가지를 학습하는 일은 하나의 환경에서 처음부터 시작해서 학습하는 것입니다.
하지만 예전에 동료가 로봇이 하키를 하는 문제를 학습하기 위해, 로봇이 퍽을 한번 칠 때 사람이 다시 퍽을 원 위치로 되돌리면서, 자신이 더 많이 움직인 일화를 말해주면서 이러한 방법은 효율적이지는 않다고 설명합니다.
앞서 설명한 부분에 덧붙입니다.
한 가지를 학습하는 일은 하나의 환경에서 처음부터 시작해서 학습하면서 자세한 감독이나 가이드에 의존하는 일읍니다.
이것은 강화학습과 로보틱스 문제에 국한되는 일은 아닙니다.
Machine translation, speech recognition, object detection 과 같이 다양한 문제들이 아직도 하나의 문제를 시작부터 디테일한 감독과 함께 학습된다고 합니다.
하지만 사람은 제네럴리스트 입니다!
왜 우리는 deep multi-task & meta-learning에 관심을 가져야 할까요?
Why shoud we care about deep multi-task & meta-learning?
beyond the robots and general-purpose ML systems
기존의 컴퓨터 비전: 직접 설계된 특징들을 사용함
현대의 컴퓨터 비전: end-to-end 학습
딥러닝은 정제되지 않은 입력들을 (픽셀, 언어, 센서에서 읽은 값 등) 직접 설계된 특징들들을 사용하지 않고, 도메인 지식을 적제 사용해서 다룰 수 있게 해주었습니다.
객체 인식을 위한 딥러닝 예시
머신 번역을 위한 딥러닝 예시
하지만 왜 deep multi-task learning 과 meta-learning 일까요?
큰 데이터셋을 가지고 있지 않으면 어떨까요?
-> 각각의 질병, 각각의 로봇, 각각의 사람, 각각의 언어, 각각의 task를 위해 처음부터 스크래치로 학습하는 것은 실용적이지 않다.
가지고 있는 데이터가 long tail (아래 그래프와 같은 모습)이면 어떨까요?
-> 이런 셋팅은 기존의 머신러닝의 패러다임을 부쉰다.
새로운 것을 빨리 배울 필요가 있으면 어떨까요?
-> 새로운 사람, 새로운 일이나, 새로운 환경 등에 대해서
잠깐 예시로 쉬어가기
test datapoint에 있는 그림이 Braque의 그림이라고 생각하시나요 Cezanne의 그림이라고 생각하시나요?
이렇게 적은 수의 그림 (training data)만 보고 test datapoint를 예측하는 것이 few-shot learning 이라고 합니다.
이것을 어떻게 수행할 수 있을까요? 사전 지식을 활용하면서 할 수 있습니다!
multi-task learning 적용할 수 있는 곳
- 일반적인 목적의 AI 시스템을 원하면 어떨까?
- 큰 데이터셋을 가지고 있지 않으면 어떨까?
- 데이터가 long tail을 가지고 있으면 어떨까?
- 새로운 것을 빨리 배워야 한다면 어떨까?
이것들이 multi-task learning을 적용할 수 있는 곳 들입니다!
task란 무엇인가?
이제부터 task는 데이터셋과 loss function 이 주어졌을 때 최적의 모델을 찾는 것이라고 합니다.
중요한 가정
나쁜 소식
다른 task들은 몇가지 구조를 공유해야 합니다.
만약 이것이 되지 않는다면, single-task learning을 학습하는 것이 더 좋을 것 입니다.
좋은 소식
구조를 공유하는 많은 task들이 있습니다!
task들이 연관되지 않아 보일지라도
- 실제 데이터는 물리 법칙에 의존한다.
- 사람들은 각자의 의사가 있는 유기체들이다. 각자 의견이 다르기도 하고 같기도 하다.
- 영어 언어 데이터는 영어의 법칙에 의존한다.
- 언어들은 비슷한 목적을 위해 개발되었다.
이러한 것들이 랜덤 task들 보다 더 좋은 구조를 이끈다고 합니다.
비공식적인 문제 정의
더 공식적인 정의는 다음 lecture 시간에 한다고 합니다.
정확한 설명을 위해서 영어 설명을 같이 첨부합니다.
멀티 태스킹 러닝 문제
모든 task들을 각각 독립적으로 학습하는 것 보다 더 빨리 또는 더 효율적으로 학습합니다.
메타 러닝 문제
이전 task들에 대한 데이터나 경험이 주어졌을 때, 새로운 task를 더 빨리 그리고/또는 더 효율적으로 학습합니다.
멀티 태스크 러닝을 싱글 태스크 러닝으로 줄일 수 있을까?
할 수 있습니다!
task들 간에 데이터를 aggregating 하거나 단일 모델을 학습하는 것은 멀티 태스크 러닝의 한 가지 접근법 중 하나이다.
하지만, 더 잘 할 수 있습니다!
다른 task들로부터 데이터가 올 것을 알고 있다. 싱글 태스크 러닝을 할 수 도 있지만 멀티 태스크 러닝을 해야할 필요가 있다는 의미이다.
왜 지금 deep multi-task & meta learning을 배워야 하나요?
멀티 태스크 러닝과 메타 러닝은 사실상 머신러닝 연구분야에서 이전부터 지속되어 근본적인 역할을 하는 알고리즘 입니다.
머신러닝과 딥러닝이 발전하면서, 멀티 태스크 러닝과 메타 러닝의 역할은 증가하고 있습니다.
구글 검색 쿼리에서 메타 러닝과 멀티 태스크 러닝의 수가 증가한 모습입니다.
멀티 태스크 러닝과 메타 러닝의 성공은 딥러닝을 보급하는데 중요한 역할을 합니다.
이전에는 120만개의 이미지와 라벨들을 사용하고, 4080만개의 문장의 쌍을 사용하고, 300 시간의 라벨이 된 데이터를 상용했습니다.
최근에는 3만 5000천개의 라벨된 이미지들, 1시간 이하, 15분 이하의 데이터를 사용합니다. 더 적은 수의 데이터를 학습 하는데에 멀티 태스크 러닝과 메타 러닝을 적용할 수 있습니다.
여기까지 Stanford Chelsea Finn 교수님의 Deep Multi-Task and Meta Learning 강의 Lecture 1에 대한 리뷰와 정리에 대한 설명을 해보았습니다. 질문이나 지적, 요청해주실 부분이 있다면 댓글이나 메일 부탁드립니다.
읽어주셔서 감사합니다. 😃