이 글은 현재 활동중인 팀블로그에 함께 작성 되었습니다.

https://ropiens.tistory.com/215

 

editor, Seungeon Baek(백승언)

Reinforcement learning Research Engineer


 

[Kor]

안녕하세요, 오랜만에 블로그를 쓰게 되네요! 이번 글은 논문 리뷰가 아닌, 강화학습 관련한 저의 첫 포스팅 글입니다.

 

 이번에 작성하는 글에서 다루고자 하는 내용은 "강화학습은 어떤 문제를 풀 수 있는가?"입니다. 이와 관련하여, 비슷한 글이 있는지 여러 키워드로 검색을 해 보았는데 강화학습이 어떤 문제를 풀 수 있는지에 대한 내용보다는, 강화학습이 현재 적용되고 있는 분야와 관련된 블로그들이 대부분임을 알 수 있었습니다. (Application of RL, Usage of RL,... etc)

 

 그렇기에, 부족하지만, 제가 한 번 강화학습이 어떤 문제를 풀 수 있는지에 대한 것을 주제로 글을 작성해보자 하는 생각이 들어, 해당 주제를 선정하였습니다. (요즘 핫한 ChatGPT도 슬쩍 끼워 넣어 보았습니다 :D)

 

그럼, 본격적인 포스팅 시작 하겠습니다!

 

[Eng]

 Hello, it's been a while since I wrote a blog post! This post is not a review of a paper but rather my first post on the topic of reinforcement learning.

 

 In this post, I want to cover the topic of "What problems can reinforcement learning solve?". In researching this topic, I searched for various keywords to see if there were any similar articles. Still, I found that most of the blogs related to reinforcement learning were focused on the current fields where it is being applied(Application of RL, Usage of RL,..., etc.) rather than what problems reinforcement learning can solve. (I also sneakily inserted ChatGPT, which is trendy these days :D)

 

Therefore, even though it may be lacking, I have decided to write a post on what RL can do.

 

So without further ado, let's get started with the post!

 

제목

[Kor]

 이번 포스팅 자료의 제목은 What can RL do?로 선정하였습니다. 최근 들어, 유명한 ChatGPT에도 강화학습(RLhf)이 적용 되며, 강화학습에 대한 관심이 늘었지만, 과연 "내 문제에도 강화학습을 적용할 수 있을까?"를 고민하고 계시는 분들께 도움이 될만한 자료라고 생각해주시면 될 것 같습니다.

 

[Eng]

 The title of this post is "What can RL do?". Recently, reinforcement learning(RL) has been applied to famous models like ChatGPT, which has increased interest in RL. However, for those who are wondering, "Can RL be applied to my problem?" this post can be a helpful resource

 

목차

[Kor]

 발표 순서는 다음과 같습니다. 먼저 도입부에서 강화학습이 무엇인지에 대해 간단히 설명을 드리고, 강화학습이 집중해서 풀어온 문제들에 대해, 알고 있는 지식 하에서, 8가지 범주로 나누어 설명을 드리고자 합니다. 흐흐 이렇게나 많은 문제를 풀 수 있다니!

  • Control problem
  • Multi-armed bandit problem
  • Combinatorial optimization
  • Cooperative behavior learning
  • Competitive behavior learning
  • Mixed behavior learning
  • Learning from human experts
  • Learning from human feedback

 

[Eng]

 The presentation order is as follows. First, in the introduction, I will briefly explain what RL is. Then, based on existing knowledge, I will explain the problems that reinforcement learning has been focused on solving, divided into eight categories. Wow, RL can solve so many problems!

  • Control problem
  • Multi-armed bandit problem
  • Combinatorial optimization
  • Cooperative behavior learning
  • Competitive behavior learning
  • Mixed behavior learning
  • Learning from human experts
  • Learning from human feedback

 

[Kor]

먼저, 도입부입니다.

 

[Eng]

First, let's begin with the introduction

 

Basics of RL

[Kor]

이 장과 다음 장에서는, 강화학습의 정의, 목적, 강화학습의 몇몇 중요 요소들에 대해서 말씀을 드리고자 합니다.

 

 강화학습의 정의는 다음과 같습니다.

  • "agent와 환경이 상호 작용을 하며, 이를 통해 얻은 행동에 대한 피드백과 경험들을 토대로 agent를 학습할 수 있게 하는 머신러닝 기법의 종류 중 하나".

 

 또한, 강화학습의 목적은 다음과 같습니다.

  • "에피소드의 끝까지 agent가 받는 보상의 총 합(sum of reward)를 최대화하는 것"
  • 혹은 "최대화 할 수 있게끔 하는 정책(policy)을 학습하는 것" 

 

 강화학습의 중요 요소들은 다음과 같습니다. 이 장에서는, 공학적인 용어보다는 중요한 용어들을 위주로 준비해 두었습니다.

  • Agent: 강화학습 내에서 학습을 수행하는 것 혹은 의사 결정자
  • Environemnt: 에이전트를 제외한 모든 것들을 포함하는 것
  • Step: 환경과 에이전트의 단위 상호작용
  • Episode: 시스템이 끝나거나, 종료 상태에 도달 할 때까지의 스텝의 길이

 

[Eng]

In this slide and the next, I would like to discuss the definition, purpose, and some important components of RL.

 

The definition of RL is as follows:

  • "Type of machine learning technique that enables an agent to learn in an interactive environment by trial and error using feedback from its action and experience"

 

In addition, the purpose of RL is as follows:

  • "To maximise the total sum of rewards(return) received by the environment until the end of the episode"
  • Or "To learn a ppolicy that can maximise the reward"

 

The important elements of RL are as follows. In this chapter, I have prepared important terms rather than mathematical terms.

  • Agent: What performs learning and decision-making in RL
  • Environment: Everything outside the agent
  • Step: Unit interaction between the agent and the environment
  • Episode: The length of steps until the system ends or reaches a terminal condition(state)

 

Basics of RL

[Kor]

강화학습의 중요 요소들은 다음과 같습니다.

  • Action: Agent가 실행 가능한 모든 가능한 움직임들
  • State: 환경으로 부터 받은 현재 상황
  • Reward: 마지막 행동에 대한 평가로써, 환경으로 부터 받은 순시 반환 값피드백
  • Policy: 현재 상황을 기반으로, 다음 액션을 정의함에 있어서, 에이전트가 활용하는 전략
    •  정책 policy는 state space S로부터 action space A로의 사상이며(정의역이 상태 공간, 치역이 행동 공간인 함수!) 보통 theta라고 하는 파라미터로 모수화 되어 있음.

 

 이러한 사전 지식을 활용하여, 장애물을 모두 피해서 도착 지점에 잘 도착하는 슈퍼 마리오(agent)를 학습시키는 예제에 대해서 설명해 보겠습니다.

 

 슈퍼 마리오(RL agent)는 방향키와 대쉬, 점프 키(action) 등을 활용하여, 도착 지점(terminal state)에 도착하기 위해 스테이지 내에서(environment) 이런저런 시도를 해보며(trial and error), 환경으로 부터 점수(feedback)를 받고(굼바를 못 피하면 -10, 거북이를 못 피하면 -10, 금화를 먹으면 +1, 도착점에 도착하면 + 200 등), 이를 통해 특정 상황(state)에서, 어떤 방향키(action) 및 특수 키를 눌러야 하는지에 대한 승리 전략(policy)을 수립하게 된다!

 

어지럽다고요? 죄송합니다. 필력이 좋지가 않네요ㅎ

 

[Eng]

The important elements of reinforcement learning are as follows.

  • Action: All the possible moves that the agent can exert
  • State: Current situation returned by the environment
  • Reward: An immediate return sent back from the environment to evaluate the last action
  • Policy: The strategy that the agent employs to determine the next action based on the current state
    • Policy, parameterized with \theta is a mappping from state space S to action space A

 Using this prior knowledge, let me explain an example of training Super Mario(agent) to arrive at the destination point by avoiding all obstacles.

 The Super Mario(reinforcement learning agent) uses directional keys, dash, jump key(action), etc., to try various approaches(trial and error) to reach the destination point(terminal state) in certain stage(environment). The Super Mario receives score(feedback) from the environment(such as -10 if it fails to dodge a Goomba, -10 for failing to dodge a Koopa Troopa, +1 for collecting a coin, and +200 for arriving at the destination point). Through this, the agent establishes a 쟈ㅜwinning strategy(policy) for which direction key(action) and special key to press in a specific situation(state).

 

Confusing? I'm sorry. My writing skills are not that great.

 

[Kor]

 이 장부터는 본격적으로 강화학습이 집중해서 풀어온 문제들에 대해, 각각의 카테고리 별로 간단한 설명과, 예제 문제들을 소개해 드리도록 하겠습니다.

 

[Eng]

 Starting from this slide, I will focus on the problems RL has been tackling and introduce summaries and examples for each category.

 

Control problem

[Kor]

 먼저, 강화학습 agent는 control problem을 해결할 수 있습니다. Control problem이란, 특정 환경 내에서, 강화학습 agent가 object를 제어하는 문제라고 말씀드릴 수 있을 것 같습니다.

 

 이때, 강화학습 agent는 해당 문제를 다양한 레벨로 다룰 수 있습니다. 인지 - 의사결정 - 제어의 모든 과정을 end-to-end로 다룰 수가 있고, 이러한 연구는 한정된 환경에서 학습을 수행하는 로봇 연구에서 많이 채택됩니다. 또한, 의사결정 - 제어의 부분만 강화학습 agent가 다룰 수 있습니다. 이는 인지 기술이 많이 발달한 자율주행자동차 연구에서 주로 행해지는 것 같습니다. 뿐만 아니라, 강화학습은 시스템의 일부를 제어만 할 수도 있습니다.

 

 이러한 강화학습을 이용해 control problem을 해결 해온 연구의 예시로는, 로봇 팔 도메인에서 블록 쌓기 등의 복잡한 task를 end-to-end로 학습하는 사례들이 있으며, 또한, 자율주행 자동차 도메인에서 decision and control problem을 학습하는 사례 등이 있을 것 같습니다.

 

[Eng]

 First, an RL agent can solve control problems. Control problems can be described as problems where the RL agent controls an object in a particular environment.

 

The RL agent can handle the problem at various levels in this case. It can handle the entire perception, decision-making, and control process end-to-end. This type of research is often adopted in a robot domain where learning is performed in a limited environment. In addition, the agent can only handle decision-making and control as part of the process. This is mainly done in autonomous driving research, where perception technology has advanced. Furthermore, RL can also control only part of the system.

 

 Examples of research that have solved control problems using RL include learning complex tasks such as block stacking in the robot arm domain through end-to-end learning and learning decision and control problems in the autonomous driving domain.

 

Multi-armed bandit problem

[Kor]

 두 번째로, 강화학습 agent는 multi-armed bandit problem을 해결할 수 있습니다. Multi-armed bandit problem이란 특정 집합에서 행동을 선택하는 문제라고 말씀드릴 수 있을 것 같습니다.

 

 이때, 강화학습 agent는 해당 문제를 다양한 horizon으로 다룰 수 있습니다. 유한한 길이의 문제 뿐만 아니라, 무한한 길이의 문제도 잘 다룰 수 있다는 것이 근본 책, 논문 등에서 수학적으로 다루어져 왔습니다.

 

 이러한 강화학습을 이용해 multi-armed bandit problem을 해결해온 연구의 예시로는, 보드 게임 도메인에서의 연구가 있을 것 같습니다. 바둑 같은 경우, 매 스텝 빈칸 중 승률이 높아 보이는 칸을 선택하는 문제로 해석할 수 있지요! 또한, 추천 시스템 도메인 역시 매 트리거 타임마다 user에게 item set 중 아이템을 선택하여 유저에게 추천해 주기 때문에, 많은 연구가 수행되고 있는 것으로 알고 있습니다. 또한, CS 도메인에서는 매 스텝 머신에게 job을 할당하는 문제인 job-shop scheduling 문제에서 강화학습이 이러한 관점으로 적용이 되고 있다고 알고 있습니다.

 

[Eng]

 Secondly, an RL agent can solve the multi-armed bandit problem, which can be described as a problem of selecting actions from a specific set.

 

 In this case, the RL agent can handle this problem from various horizons. It has been mathematically treated in the literature as well as in papers, not only for finite-length problems.

 

 Examples of research that have solved the multi-armed bandit problem using RL include studies in board game domains. For example, in the game of Go, the problem can be interpreted as selecting a blank space with a high winning probability at each step. In addition, in the domain of recommendation systems, many studies have been conducted as the system recommends an item to a user by selecting an item from an item set at each trigger time. Also, in the computer science domain, RL is being applied from this perspective in job-shop scheduling problems where a machine is assigned a job at each step.

 

Combinatorial optimization problem

[Kor]

 다음으로, 강화학습 agent는 combinatorial optimization problem을 해결 할 수 있습니다. Combinatorial optimization problem이란 주어진 특정 집합 내에서 최적의 결정들(결정들의 조합)을 내리는 문제라고 말씀드릴 수 있을 것 같습니다.

 

 이때, 강화학습 agent는 이를 1 step MDP로 간주 하여, 해당의 조합 최적화 문제를 해결해 낼 수 있다는 것이 최근 들어 많은 연구 사례들이 보여주고 있습니다.

 

 이러한 강화학습을 이용해 combinatorial optimization problem을 해결 해 온 연구의 예시로는, 웨이퍼 상에 칩들을 배치하는, chip placement도메인에서의 연구가 있을 것 같습니다. 또한, routing problem 분야에서도, 단일 차량 혹은 다중 차량의 운행 순서를 정해주는 등 강화학습을 이용하여 여러 연구들이 진행되고 있는 것으로 알고 있습니다.

 뿐만 아니라, 강화학습은 수학 문제를 해결할 수 있는데, 지도학습에서 특정 task를 학습하기 위해 어떤 loss 식이 좋은지를 graph 혹은 symbolic으로 표현된 term들의 최적의 조합을 찾는 방식으로 해당 문제를 해결하는 것이 가능합니다.

 

[Eng]

 Next, an RL agent can solve combinatorial optimization problems. Combinatorial optimization problems refer to problems of making optimal decisions(combination of decision) witn a certain set.

 

 In this case, the reinforcement learning agent can consider it as a 1-step MDP and solve the combinatorial optimization problem, as many recent reserach cases have shown.

 

 Examples of research that has used reinforcement learning to solve combinatorial optimization problems include chip placement domains, where chips are placed on a wafer, and the routing problem field, where reinforcement learning is used to determine the operating order of single or multiple vehicles.

In addition, reinforcement learning can solve mathematical problems. In supervised learning, it is possible to solve problmes by finding the optimal combination of graph or symbolically expressed terms that are good for a given loss function used to learn a specific task.

 

Cooperative behavior learning problem

[Kor]

 또한, 강화학습 agent는 cooperative behavior learning problem을 해결할 수 있습니다. 협력적인 행위를 학습한다는 것은, 주어진 특정 환경 내에서 여러 객체들이 하나의 목표를 달성하기 위한 행위들을 학습한다는 것으로 말씀드릴 수 있을 것 같습니다.

 

 이때, 강화학습은 해당 문제를 individual reward만을 줘서 해결 할지, team reward를 주어 credit assignment까지 풀어낼지를 세팅하여 해결할 수 있습니다.

 

 강화학습을 이용해 cooperative behavior를 학습해온 연구의 예시로는, 통신 도메인에서 기지국이 모든 사용자들을 고려해 편익이 최대로 하는 방향으로 resource를 분배하는 등의 연구가 있을 것 같습니다.

또한, 게임 분야에서도, 이러한 협력적인 행위를 학습하기 위한 연구들이 많이 수행되고 있으며, 대표적으로 SMAC이라고 하는, 3s vs 5z 등 다중 유닛이 협력하여 상대방을 쓰러뜨리는 행위를 학습하는 환경에서 여러 연구들이 수행되고 있는 것으로 알고 있습니다.

 

[Eng]

 Moreover, an RL agent can solve cooperative behavior learning problems. Learning cooperative behavior menas learning actions by multiple objects within a given environment to archive a team goal.

 

 In this case, RL can solve the problem by setting wheter to give individual rewards or team rewards, and solving the credit assignment when giving team rewards.

 

 Examples of research that has used RL to learn cooperative behavior include studies in the communication domain, such as the dstribution of resource by base stations considering all users for maximum benefit.

In addition, in the game domain, many studies are being conducted to learn such cooperative behavior, and there are several studies carried out in environments where multiple units cooperate to take doooown opponents, such as 3s vs 5z, known as SMAC envrionment.

 

Competitive behavior learning problem

[Kor]

 더욱이, 강화학습 agent는 competitive behavior learning problem을 해결 할 수 있습니다. 경쟁적인 행위를 학습한다는 것은, 주어진 특정 환경 내에서 여러 객체들이 zero-sum game을 수행하고, 각자가 상대에 대응해 이기기 위한 전략을 학습한다는 것으로 말씀드릴 수 있을 것 같습니다.

 

 강화학습을 이용해 competitive behavior를 학습해온 연구의 예시로는, 가장 유명한 AlphaGo, AlphaStar 등이 있을 것 같습니다. 워낙 유명한 연구들이지요.

 

[Eng]

 In addition, an RL agent can solve competitive behavior learning problems. Learning competitive behavior menas that multiple objects perform a zero-sum game in a given environment and learn strategies to truimph against each other.

 

 Examples of studies that have used RL to learn competitive behavior include the famous AlphaGo and AlphaStar. Theses studies are very well known!

 

Mixed behavior learning problem

[Kor]

 이 뿐만 아니라, 강화학습 agent는 cooperative behavior와 competitive behavior가 혼합된, mixed behavior를 학습할 수 있습니다. 예시로 슬라이드에 첨부한 Predetor-Prey game 환경처럼, 동일 그룹 내에서는 협력적인 행위를, 타 그룹과는 경쟁적인 행위를 동시에 학습할 수 있는 것이죠.

 

 이러한 강화학습의 능력에 힘입어, game domain에서는 11 vs 11 축구를 관제하는 big brother와 같은 centralized agent를 학습할 수 있었고(Google Research Football Environment), 자율주행 자동차 도메인 내에서는 Mixed autonomy 하에서 일반 차량들과 조화를 이루는 자율주행 자동차의 제어 방법이 연구되고 있습니다.

 

[Eng]

 Furthermore, an RL agent can learn mixed behaviors, which combine cooperative and competitive behaviors. For example, in an environment such as Predetor-Prey game figured to the slides, agents can learn both cooperative behavior within the same group and competitive behavior with other groups.

 

 Thanks to this ability of RL, centralized agents like the big brother controlling 11 vs 11 soccer games in the game domain(Google Research Football Environment) have been developed, and in the autonomous vehicle domain, research is being conducted on controlling autonomous vehicles that harmonize with human vehicles under mixed autonomy. 

 

Learning from human experts problem

[Kor]

 그리고, 강화학습 agent는 learning from human experts(demonstration)컨셉으로 학습할 수 있습니다. 해당 방법론을 이용하는 강화학습 기법들은 인간(전문가)의 시연데이터를 통해 학습을 수행하기 때문에, 밑바닥부터 학습하는 기존의 강화학습들에 비하여 복잡한 task를 상대적으로 쉽게 학습해 낼 수 있다고 말씀드릴 수 있을 것 같습니다.

 

 이러한 방식을 통해 학습한 강화학습 연구의 예시로는, 자율주행 자동차 도메인 내에서 복잡한 시나리오(회전 교차로, 신호 교차로, 도심부 주행 등) 에서의 계획 및 제어를 수행하는 연구가 있을 것 같습니다. 또한, 금융 분야에서 복잡한 시장 상황을 고려하여 주식을 사고파는 트레이딩 봇 같은 경우도 이러한 RLfD(Reinforcement Learning from Demonstration) 컨셉의 연구들이 있는 것으로 알고 있습니다.

뿐만 아니라, 최근 DeepMind의 GATO라고 하는 agent는 실제 사람처럼 "여러 개"의 게임을 사람 이상의 실력으로 클리어하는 괴물과 같은 모습도 보여주었습니다. 해당 agent는 human experts의 demonstration을 통해 학습이 이루어졌답니다.

 

[Eng]

 And then, an RL agent can learn from human experts(demonstration). RL techniques that use this concpet can leaern complex tasks relatively easily compared to traditional RL methods, as they leveraging the knowledge through human demonstration data rather than starting from scratch.

 

 Examples of RL research learned through this approach, there are studies that perform planning and control in complex scenarios(such as turning intersections, signal intersections, and urban driving) in the autonomous vehicle domain. Also, in the finantial sector, there are studies on trading bots that buy and sell stocks considering complex market situations based on the RLfD(Reinforcement Learning from Demonstration) concept.

Moreover, DeepMind's recent agent called GATO showed a monstrous capability to clear "multiple games" with human-level proficiency. The agent learned through demonstration from human experts.

 

Learning from human feedback(preference) problem

[Kor]

 마지막으로, 강화학습 agent는 learning from human feedback(preference)컨셉으로 학습할 수 있습니다. 해당 방법론을 이용하는 강화학습 기법들은 인간의 직접적인 feedback을 받아 학습을 수행하기 때문에, 자연스러운 action을 생성해 낼 수 있다는 것이 장점으로 생각됩니다.

 

 이를 실현하기 위해, 기존의 강화학습과는 조금 다르게, 환경은 reward를 제공하지 않게 됩니다. 대신에, 사람이 observation을 보고 feedback을 주면, 특별한 모델인 reward predictor가 사람의 feedback을 통해 reward 함수를 모델링, 해당 reward 모델과 함께 강화학습 agent가 학습되는 방식인 것 같습니다.

 

 이러한 방식을 통해 학습한 강화학습 연구의 예시로는, 유명한 Open AI의 로봇 "손" 큐브 풀기 연구(DAgger)가 있을 것 같습니다. 사실은 reward predictor를 이용해 학습이 되지는 않았지만, 계속하여 사람이 더 좋은 행위를 개입해서 알려주는 DAgger의 방식이 RLhf(RL frorm human preference)와 철학적으로는 비슷하다고 생각하여 넣어 보았습니다.

더욱이, 해당 방식은 LLM(Large Language Model)과 결합하여, 최근 돌풍을 일으키고 있는 ChatGPT!!를 가능하게 한 기술이기도 합니다. RLhf 덕분에 ChatGPT는 조금 더 친절하고, 조금 더 자연스럽고, 또한 혐오 발언 등을 자제할 수 있었다고 합니다.

 

[Eng]

 Finally, an RL agent can also learn from human feedback(preference). The RL techniques that use human feedback can generate natural actions as they receive direct feedback from humans.

 

 To achieve this, the environment does not provide rewards as in traditional RL. Instead, humans give feedback based on observations, and a special model called the reward predictor models the reward function based on the human feedback. The RL agent is trained with this reward model.

 

 An example of RL research using this approach is the famous OpenAI's robot hand solving a Rubik's cube using the DAgger algorithm. Although not trained using the reward predictor, the DAgger approach continuously incorporates better behaviores informed by human feedback, which is similaar philosophically to RLhf(Reinforcement Learning from human preference)

Moreover, this approach can be combined with LLM(Large Language Model) technology, which has recently gained popularity in the form of ChatGPT. Thanks to RLhf, ChatGPT can be more friendly, natural, and also avoid hate speech.

 

Thank you!!

[Kor]

 정말로 오랜만에 블로그 글을 쓰게 되었는데, 여기까지 읽어 주신 모든 분들께, 짧지 않은 글을 읽어 주셔서 감사하다는 말씀을 드립니다. 궁금하신 점들은 댓글을 통해 질문을 주시면 가끔씩이라도 들러 답변을 드릴 수 있도록 하겠습니다.

 

[Eng]

 This is my first time writing a blog post in Eng, and I would like to thank those who have read this lengthy post. If you have any question, please feel free to leave a comment and I will try to drop by and provide answers whenever possible.

 
Personal information
  1. Name: 백승언, Seungeon Baek
  2. E-mail: bsewo5959@naver.com / bsewo5959@gmail.com
  3. Organization: Nota ITS
  4. Position: ML/RL Research engineer
  5. Github: Here
  6. LinkedIn: Here
  7. 팀블로그: 당황했습니까 휴먼? [닉네임: 잿빛들판]

 

Research interests

  1. Reinforcement Learning
    1. Multi-agent RL
    2. Safety, efficient exploration methods for real world application
    3. Action representation
      1. Discrete / Continuous / Hybrid actions for domain specific problem
      2. Elaborated action representation like AlphaStar(Pointer Net)
  2. Graph Neural Network
    1. State representation for MARL
    2. State representation for domain specific problem(spatial, spatio-temporal)
    3. Modeling for relateion with agents in MARL
    4. Action modeling for RL with combinatorial optimization problem
  3. Causal Inference
    1. currently studying
  4. Meta learning, Meta RL
    1. currently stduying

 

Skills

  1. Computer languages: Python, C++, C, MATLAB
  2. Deep learning framework: Tensorflow2, Tensorflow-probability, Keras
  3. Deep RL framework: Gym, StableBaseline3, PettingZoo

 

Domain experience

  1. Planning/Control of autonomous vehicle
  2. Mission planning and Behavioral planning of swarm drone
  3. Scheduling of traffic signal control in Arterial, Network

가짜연구소 5기 멀티태스크메타러닝-초읽기 아카데믹 러너 활동을 통해 위의 논문을 읽게 되었습니다.

제가 주로 다루는 분야가 아니기에, 가볍게 정리하는 느낌으로 가져가 볼까 합니다.

 

Title: Meta-Learning with Differentiable Convex Optimization

Abstract

  •  few-shot learning을 위한 많은 meta-learning 접근법들은 nearst-neighbor classifier와 같은 simple base learner들에 의존하고 있다고 합니다.
  •  그러나, 심지어 few-shot regime에서도, discriminative하게 훈련된 linear predictor들이 더욱 좋은 일반화 성능을 보여주고 있다고 합니다.
  •  저자들은 이러한 predictor들을 few-shot learning을 위한 표현을 학습할 수 있는 base learner로써 사용하고, 그것들이 few-shot recognition benchmark들에서 feature size나 성능 사이의 tradeoff면에서 더욱 이점을 제공할 수 있다는 것을 보여주었다고 합니다.
  •  저자들의 목적은 새로운 category들을 위한 linear classification 규칙 아래에서, 일반화가 더욱 잘된 feature embedding을 학습하는 것이라고 합니다. 음?
  •  이러한 목적을 효율적으로 달성하기 위해, 저자들은 linear classifier의 두 개의 속성을 십분 활용했다고 합니다: convex problem의 optiality condition의 implicit differentiation 그리고 optimization problem의 dual formulation.
    •  이는 저자들에게 computational overhaed면에서 약간의 증가와 함께, 개선된 high-dimensional embedding의 일반화 성능을 선물로 주었다고 합니다.
  • MetaOptNet으로 명명한 저자들의 접근법은 miniImageNet, tieredImageNet, CIFAR-FS 그리고 FC100과 같은 few-shot laerning benchmark들에서 SOTA를 갱신했다고 하며, 코드는 online으로 공개했다고 합니다.

 

Introduction

 몇몇 예제들로부터 학습을 할 수 있는 능력은 human intelligence만이 가진 특징이라고 하며, 이는 modern ML system이 풀어야 하는 숙제로써 남겨져 있다고 합니다.

  •  이 문제는 최근 few-shot learning이 meta-learning problem으로 등장하면서, ML community로부터 상당한 관심을 받아왔다고 합니다.

 

 그 녀석들의 목표는 few training example들을 가지는 task들의 분포들 사이에서 일반화 error를 최소화 하는 것이라고 합니다.

  •  전형적으로, 이러한 접근법들은 input domain을 특징 공간으로 mapping해주는 embedding model과, 특징 공간을 task variable로 mapping해주는 base learner로 이루어져 있다고 합니다.

 

 Meta laerning objective는 base learner가 task들 사이에서 일반화 성능을 가질수 있도록? embedding model을 학습하는 것이라고 합니다.

  •  많은 선택할 수 있는 base learner들이 존재한다고 합니다. 가장 인기 있는 최근접 이웃 기반 분류기와 그들의 variants들은 간단하고, low-data regime에서 잘 동작하는 접근법이라고 합니다.

 

 하지만, discriminative하게 훈련된 linear classifier는 더 좋은 분류 경계를 학습하기 위해, 더 풍부한 negative example들을 활용할 수 있기 때문에, low-data regime안에서, 종종 최근접 이웃 분류기들을 뛰어넘는 성능을 보여준다고 합니다.

  •  더욱이, 그 친구들은 model의 capacity가 L1, L2 norm과 같은 적절한 정규화 방법을 이용해 제어될 수 있기 때문에, high dimensional feature embedding을 더 효율적으로 사용할 수 있다고 합니다.

 

 그러므로, 해당 논문에서 저자들은 few-shot learning을 위한 meta-learning based approach를 위해, base learner로써 linear classifier를 사용하는 방안에 대해서 연구를 수행했다고 합니다.

  •  해당 접근법은 Figure 1에 도시되어 있으며, linear support vector machine(이하 SVM)이 주어진 labeled training example set을 분류하기 위해, 그리고 동일한 task로부터 새로운 example set들로부터 generalization error를 계산하기 위해 사용되었다고 합니다.

 

 Key challenge는 계산 이슈라고 하며, 왜냐하면 task들 사이의 generalization error를 최소화 하는 meta-learning의 objective는 inner loop of optimization에서의 liniear classifier의 훈련을 필요로 하기 때문이라고 합니다. (그니까 for 문 두 개 돌아서 그렇다는 것 같군요 호호)

  •  그러나, linear model의 objective는 convex하고 그래서 효율적으로 해결이 될 수 있다고 합니다.

 

 저자들은 meta-learning을 효율적으로 해줄 수 있는 convex nature로부터 다음의 추가적인 두 가지 속성을 관찰했다고 합니다. (1) Implicit differentiation of the oiptimization, (2) the low-rank nature of the classifier in the few-shot setting.

  •  첫 번째 속성은 optima를 추정하기 위해 그리고 embedding model을 훈련하기 위한 KKT conditions 혹은 optimality를 암묵적으로 미분하기 위해 자주 사용되는 convex optimizer들의 사용을 허용한다는 것입니다.
  •   두 번째 속성은 dual formation의 최적화 변수들의 숫자가 few-shot learning을 위한 feature dimension에 비해 굉장히 작다는 것을 의미한다고 합니다. 완전 최적화 수학 논문이겠는데요?!

 

 이를 위해, 저자들은 few-shot classification task들을 위한 다양한 linear classifieres(SVMs, linear regression)과 embedding model을 end-to-end learning이 가능하도록, differentiable quadratic programming(이하 QP) solver를 통합했다고 합니다.

  •  이러한 속성들을 사용함에 따라, 저자들은 자신들의 기법이 실용적이며, computational cost의 약간의 증가로, 최근접 이웃 classifier에 비해 상당한 이점을 제공할 수 있다는 것을 보여준다고 합니다.

 

 저자들의 기법은 자주 이용되는 benchmark인 miniImageNet, tieredImageNet, CIFAR-FS 그리고 FC100 등에서 5-way 1-shot, 그리고 5-shot classification에서 SOTA 성능을 갱신했다고 합니다.

 

Related work

 Meta-laerning은 learner의 어떤 측면들이 task들의 분포 사이에서 일반화를 효과적으로 할 수 있을지에 대해 연구한다고 합니다.

 

 Few-shot learning을 위한 meta-learning 접근법들은 넓게 3가지 그룹으로 분류하는 것이 가능하다고 합니다.

(1) Gradient-based metdhos

(2) Nearst-neighbor methods

(3) Model-based methods

 

 Gradient-based methods는 training example들에 embedding model parameter를 적응하게 하기 위해, gradient descent를 사용하는 기법들이라고 합니다.

 

 Nearst-neighbor methods는 embedding들에 대해 distance-based prediction rule을 학습하는 것이라고 합니다.

  •  예를 들어, prototypical network는 각 class를 example들의 mean embedding으로 표현한다고 하며, 분류 기준은 nearset class mean까지의 거리를 기반으로 한다고 합니다.
  •  다른 예제는 matching network라고 합니다. 이 친구는 training data에 대한 embedding을 사용해서 class density들의 KDE를 학습한다고 합니다.

 

 Model- based methods는 model parameter들을 추정하기 위해 parameterized predictor를 학습한다고 합니다.

  •  예를 들면, parameter space에서 few steps of gradient descent방법과 유사한 parameter를 예측하는 reccurent network 음…??

 Gradient-based 기법들은 일반적이지만, 그 친구들은 embedding dimension이 성장함에 따라 overfitting하는 경향이 있다고 합니다.

 

 최근접 이웃 접근법들은 단순하며 few-shot setting에 잘 확장 된다고 합니다.

  •  하지만, 최근접 이웃 기법들은 feature selection을 위한 메커니즘이 없으며, 또한 noisy feature에 강건하지 않다고 합니다.

 

 저자들의 작업물은 최적화 절차에서의 backpropagation과 연관이 있는 기술이라고 합니다.

  •  Domke는 fixed num of steps에 대한 gardient decsent unrolling과 기울기를 계산하기 위한 automatic differentiation기반의 generic method를 제안했다고 합니다.

 

 그러나, trace of the optimizer는 large problem에 대해 금지될 수 있는 기울기를 계산하기 위해 저장할 필요가 있다고 합니다….??

  •  storage overhead issue는 Maclaurin 등에 의해 조금 더 자세히 다뤄졌다고 하네용ㅎ 그들은 deep network의 optimization trace의 낮은 표현 정확도를 연구했다고 합니다.

 

 Unconstrained quadratic minimization problem에서와 같이 최적회 문제의 argmin을 해석적으로 찾을 수 있다면, 기울기를 해석적으로 계산하는 것도 가능하다고 합니다.

  •  이는 low-level vision problem을 학습하기 위해서 적용되어 오기도 했다고 합니다.
  •  관련 연구[3]은 이러한 아이디어로, ridge regression 기반의 learner와 함께 closed-from solution을 사용해서 few-shot model을 학습시키기도 했다고 합니다.
  •  저자들은 또한 논문의 독자들에게 Gould et al의 differentiating argmin and argmax problem을 위한 기법을 survey한 논문을 추천해주기도 했네요.

 

 저자들의 접근법은 convex learning problem으로 형식화 될 수 있는 lineaer classifier의 사용을 주장한다고 합니다.

  •  특히, objective는 gradient-based technique을 사용하여 global optima를 얻기 위해 효율적으로 풀 수 있는 QP로 형식화 했다고 하네요.
  •  더욱이, convex problem의 solution은 implicif function theorem을 이용하는 learner의 역전파를 사용할 수 있게 해주는, convex problem의 KKT condition으로 특정 지을 수 있다고 합니다.

 

 구체적으로, 저자들은 QP와 QP의 gradient를 계산하기 위해 효율적인 GPU routine을 제공하는, Amos와 Kolter의 formulation을 사용했다고 합니다.

  •  그것들은 constraint satistaction problem에 대한 표현을 학습하기 위해 해당 framework를 적용했지만, 일반적으로 발생하는 문제의 크기가 작기 때문에, few-shot learning에도 또한 적합하다고 하네요

 

 저자들의 실험은 hinge loss와 l2 정규화를 포함하는 선형 분류기에 초점을 맞추고 있지만, 저자들의 framework는 다른 loss function들 그리고 non-linear kernel들에도 사용될 수 있다고 합니다.

  •  예를 들어, [3]에서 이용된 ridge regression learner의 경우에도 저자들의 framework 내에서 구현이 가능하다고 합니다.

 

Meta-learning with Convex Base Learners

 저자들은 먼저, 이전 연구들을 따라 few-shot learning의 meta-learning framework를 유도하고, 그 다음 linear SVM과 같은 convex base learner가 어떻게 이와 통합될 수 있을지에 대해서 다룬다고 합니다.

 

Problem formulation

 Base learner A의 목표는, training set D^train = {(x_t, y_t)}(t=1~T)이 주어지면 predictor y=f(x; \theta)가 unseen test set D^teset ={(x_t, y_t)}(t=1~Q)에 대해 일반화가 잘 될 수 있도록, predictor의 parameter \theta들을 추정하는 것이라고 합니다.

  •  training and teset set은 same distribution으로 부터 샘플링 되고, domain은 \phi로 parameterized된 embedding model f_\phi를 사용해서 feature space로 사상된다고, 종종 가정이 된다고 합니다.
  •  최적화 기반 learner들에서, parameter들은 training data에 대한 empirical loss와 simpler model을 촉진하기 위한 regularaiation error를 최소화 하기 위해 얻어진다고 합니다. 이는 다음과 같이 쓸 수 있다고 합니다.

 

 이때, L^base는 loss function이며, label들에 대한 negative log-likelihood 같은 친구라고 합니다. 그리고, R(\theta)는 regularization term이라고 합니다. 이 정규화 항은 training data가 제한적일때 중요한 역할을 해준다고 합니다.

 

 Few-shot learning을 위한 meta-learning 접근법은 task distribution으로부터 샘플링된 task들의 분포들 사이에서 일반화 오류를 최소화 하는 것을 목적으로 한다고 합니다.

  •  구체적으로, 이는 collection of task T={(D^train_i, D^test_i)}_(i=1~I)에서의 learning으로써 생각할 수 있다고 하며, 이는 종종 meta-training set으로 불리운다고 합니다.
  •  Tuple (D^train_i, D^test_i)는 training and, test dataset or task를 의미한다고 합니다.

 Objective 는 base learner A가 주어졌을 때, task들 사이에서 generalization error을 최소화 하는 embedding model의 \phi를 학습하는 것이라고합니다.

  • 형식적으로, learning objective는 다음과 같아진다고 합니다.

 Figure 1은 single task에 대한 training과 testing을 보여주고 있다고 합니다. 일단 embedding model f_\phi가 학습되면, 그 친구의 일반화는 held-out tasks(종종 meta-test set으로 불리기도 하는) S={(D^train_j, D^test_j)}_(j=1~J)의 집합을 통해서 추정이 된다고 합니다.

 

 이전 연구에 따라, 저자들은 방정식 2와 3의 기댓값을 추정하는 단계를 각각 meta-training and meta-testing으로써 본다고 합니다.

  •  Meta-training하는 동안, 저자들은 추가적인 held-out meta-validation set을 meta-learner의 hyperparameter와 best embedding model을 선택하기 위해 사용한다고 합니다.

 

Episodic samplings of tasks

 miniImageNet과 같은 표준적인 few-shot learning benchmark들은 model들을 K-way, N-shot classification task들에서 평가함. 여기서 K는 num of classes이고, N은 num of training examples per class라고 합니당.

 

 Few-shot learning technique은 N이라고 하는 작은 값에 대해서 평가가 된다고 하며, N은 보통 {1, 5}사이에 속하는 값이라고 합니다. 5 shot까지가 보통인가보네용!

  •  실제적으로, 이러한 데이터셋들은 명시적으로 tuple (D^train_i, D^test_i_를 포함하지 않는다고 하며, 각 meta-learning을 위한 task들은 meta-training stage동안 일반적으로 episode로 칭하는 단계에서, “on the fly”로 구축된다고 합니다. 으음?

 

 예를 들어, 이전 연구 [32, 33]에서, task (or episode) T_i = (D^train_i, D^test_i)는 다음과 같이 샘플링된다고 합니다.

  •  Overall set of categories is C^train. 각 에피소드에서, C^train으로부터 온 K category를 포함하는 categories C_i는 먼저 sampling 됩니다. 그 다음, category별로 N개의 image로 구성된 training (support) set D^train_i = {(x_n, y_n) | n=1, … , N * K, y_n \in C_i}가 sampling 된다고 합니다.
  •  마지막으로, category별로 Q개의 image로 구성된 the test(query) set D^test_i = {(x_n, y_n) | n=1, … , Q * K, y_n \in C_i}가 sampling 된다고 합니다.

 

 저자들은 일반화 에러를 최적화 하기 위해, 해당 과정에서 replacement 없이 sampling했다는 것을 강조하고 있습니다. 다시 말해서, D^train_i와 D^test_i의 교집합이 공집합이라는 것을요!

  •  같은 방식으로, meta-validation set과 meta-test set도 C^val 그리고 C^test로부터 on the fly로 구축이 된다고 합니다.

 

 Embedding model의 unseen categories에 대한 일반화 능력을 측정하기 위해, C^train, C^val 그리고 C^test는 상호 분리적으로 선택이 되었다고 합니다.

 

Convex base learneres

 base learner A의 선택은 Equation 2에 대해 상당한 임팩트를 가지고 있다고 합니다.

  •  \theta = A(D^train ; \phi)를 계산하는 base learner는 효율성을 가지고 있어야 하는데, 왜냐하면 expectation이 task들의 분포로부터 계산이 되기 때문이라고 합니다.

 

 게다가, embedding model의 \phi를 추정하기 위해, task test error L^meta(D^test; \theta, \phi)의 \phi에 대한 gradient들이 효율적으로 계산이 되어야 한다고 합니다.

  •  이는 base learner의 매개변수가 계산하기 쉽고 objectiver가 미분 가능한, nearst class mean과 같은 base learner를 사용하는 이유가 되어 왔다고 합니다.

 

 저자들은 objective가 convex한 multi-class linear classifier기반의 base learner들을 고려했다고 합니다.

  •  예를 들어, K-class lineaer SVM은 \thtea = {w_k}_(k=1~K)로 쓰여질 수 있다고 하는데 음..?
  •  Crammer와 Singer는 multi-class SVM을 다음과 같이 형식화 했다고 합니다.

 

 이때 D^train = {(x_n, y_n)}이라고 하고, C는 regularization parameter이며, \delta는 Kronecker delta function이라고 합니닷

 

 Figure 1에 따르면, 저자들은 자신들의 시스템을 end-to-end train이 가능하게끔 만들기 위해, SVM solver의 solution이 input에 대해 미분 가능하도록 했어야 한다고 합니다. 다시 말해서, 저자들은 밑의 식을 계산할 수 있었어야 한다고 합니다.

  •  Objective of SVM은 convex하고 unique optimum을 가지고 있다고 합니다. 이는 necessary gradients를 얻기 위한 KKT condition에 대해 implicit function theorem을 사용할 수 있게끔 해준다고 합니다.

 

 완비성의 관점에서, 저자들은 convex optimization problem의 이론적인 형태를 유도했다고 하며, 다음의 convex optimization problem을 고려했다고 합니다.

 

 이때, vector \theta \in R^d는 최적화 변수이며, vector z \in R^e는 input parameter of the optimization problem, which is {f_\phi(x_n)}이라고 합니다.

  •  저자들은 다음의 Lagrangian의 안장 점을 찾는 것을 통해, objective를 최적화 할 수 있다고 합니다.

 

 다르게 말하면, 저자들은 g(\tilde \theta, \tilde \lambda, \tilde v, z)=0을 해결하여 objective function의 optimum을 얻을 수 있다고 합니다.

 

 함수 f(x): R^n → R^m가 주어졌을 때, D_x f(x)는 그 함수에 대한 Jacobian \in R^(m x n)이라고 합니다. 이때, 정리 1은…

⇒ train loss를 최소로 하는 \theta를 closed-form으로 획득 할 수 있게 해주는 식인 것 같습니다.

 

Time complexity.

 저자들이 사용한 접근법인 equation (4)의 계산 즉, forward pass는 num of optimization varibale d에 대해, O(d^3)의 complextiy를 가지는 QP solver의 solution을 필요로 한다고 합니다.

  •  이 시간은 KKT matrix primal dual interior point 기법에 필요한 KKT 행렬을 분해 하는 시간에 의해 결정된다고 합니다.

 

 Backwrad pass는 theorem 1에서의 방정식 8의 solution을 요구한다고 합니다. 이 친구는 O(d^2)의 복잡도를 가진다고 하네용.

  •  이러한 forward pass와 backward pass는 embedding f_\phi의 차원이 클 때 비용이 비싸질 수 있다고 합니다.

 

Dual formulation

 Equation 4의 objective의 dual formulation은 embedding dimension의 poor dependence를 완화하는 것을 허용해 준다고 합니다. 그리고, 다음과 같이 쓰여질 수 있다고 합니다 후….

 이는 dual variable {alpha^k}_(k=1~K)에 대한 QP의 결과라고함. 저자들은 최적화 변수의 size가 num of training example에 클래스 수를 곱한 값이라고 합니다.

  •  이는 few-shot learning의 feature dimension에서의 숫자보다 매우 작은 경우들이 종종 있다고 합니다.
  •  저자들은 dual QP 방정식 10을 differentiable GPU-based QP solver를 이용해서 해결했다고 합니다.

 

 실제적으로, table3을 보면 알 수 있다시피, QP solver가 사용한 시간은 ResNet-12 아키텍쳐를 이용해서 feature를 계산하는 시간과 필적하고 그래서 전체적인 iteration별 speed는 Prototypical Network에서 사용된 nearst class prototype과 같은 간단한 base learner기반의 그것들과 많이 다르지 않을 것이라는 얘기를 합니다.

 

 저자들의 work과 동시에, Bertinetto 등은 closed-form solution을 가진 base learner인 ridge regression을 사용했었다고 합니다.

  •  비록 ridge regression은 classification problem에 best suite하지는 않지만, 그들의 작업물은 실제 상황에서 one-hot label에 대해 MSE로 훈련시킨 모델이 잘 동작하는 것을 보여주었다고 합니다.
  •  Ridge regression의 최적화 결과는 또한 QP이고, 이는 저자들의 framework 내에서 구현될 수 있다고 합니다.

 

Meta-learning objective

 model의 성능을 측정하기 위해, 저자들은 same task로부터 샘플링된 test data의 negative log-likelihood를 평가했다고 합니다.

  •  그러므로, 저자들의 meta-learning objective 방정식 2는 다음과 같이 다시 표현할 수 있다고 합니다.

 

 Few-shot learning에서의 이전 연구들은 learnable scale parameter \gamma에 의한 prediction socre를 조정하는 것이 nearest class mean과 ridge regression base learneers아래에서 더 좋은 성능을 제공할 수 있다는 것을 제안했었다고 합니다.

  •  저자들 또한 경험적으로 \gamma를 삽입하는 것이 SVM base learner를 사용하는 meta-learning에서도 이점이 있는 것을 확인했다고 합니다.
  •  또한 저자들은 hinge loss와 같은 다른 teset loss를 선택하는 것도 가능하지만, log likelihood가 실험에서 가장 좋은 성능을 보였다고 보고했습니다.

 

Experiments

저자들은 먼저, 자신들의 실험에서 사용된 네트워크 구조와 최적화에 관련된 detail들을 4.1에서 설명한다고 합니다.

 

 그 다음, 저자들은 derivatives of Imaganet(4.2) 그리고 CIFAR(4.3)등을 포함하는 표준적인 few-shot classification benchmakrs에서의 결과를 보고한다고 합니다.

  •  그 이후에, same embedding network와 training setpup을 사용했을 때, 다양한 base learner를 사용했을 때의 정확도와 속도 면에서의 효과들을 자세히 분석한다고 합니다.

 

Implementation details

Meta-learning setup. 저자들은 관련 연구[18, 20]을 따라, ResNet-12를 자신들의 실험에서 사용했다고 합니다. 자세한 사항은 밑의 사진에서 참고 부탁드려용!

 

 Meta-training 동안, 저자들은 horizontal flip, random crop and color jitter와 같은 [10, 21]에서 사용한 데이터 augmentation 기법들을 사용했다고 합니다.

  •  ResNet-12를 이용한 miniImagaNet에서의 실험에서, 저자들은 label smoothing with \epsilon=0.1도 사용했다고 하네요.. 이런 기법도 있었군요?

 

 Meta-testing보다 meta-tarining에 more higher way 분류를 수행한 [28]과 달리, 저자들은 [10, 20]과 같은 최근의 연구를 따라 동일한 stage의 5-way classification을 사용했다고 합니다.

  •  각 class들은 meta-training동안 사용할 6개의 test(querey) sample들과 meta-testing 동안 15개의 test sample들을 포함한다고 합니다.
  •  저자들의 meta-trained model은 meta-validation set에서의 5-way 5-shot test accuracy를 기반으로 선택된다고 합니다.

 

Meta-training shot. Prototypical network에서, 저자들은 meta-training shot과 meta-testing shot과정을 동일하게 가져갔다고 합니다. SVM and ridge regression의 경우, 저자들은 meta-training shot을 meta-test shot 보다 더욱 높게 가져가는 것이 그림 2에서처럼 정확도가 향상된다는 것을 보여주었다고 합니다.

  •  그러므로, meta-training동안 저자들은 training shot을 miniImageNet with ResNet에서는 15로, miniImagaNet with 4-layer CNN에서는 5로, tiredImaganet에서는 10으로, CIFAR-FS는 5, FC100은 15로 설정했다고 합니다.

 

Base-learner setup. 선형 분류기 학습의 경우, 저자들은 QP solver인 OptNet을 사용했다고 합니다. SVM에서의 정규화 파라미터 C는 0.1로 했다고 하고, ridge regression에서의 정규화 파라미터 lambda는 50으로 정했따고 합니다.

  •  최근접 클래스 평균(prototypical networks)의 경우, 저자들은 metric으로써 Euclidean distance를 사용했다고 합니다.

 

Early stoping. 저자들은 optimizer가 수렴할 때 까지 동작할 수 있음에도 불구하고, 그냥 고정된 수의 iteration동안 solver를 동작 시키는 것이 현실에서 잘 동작한다는 것을 확인했다고 합니다.

  •  Early stopping은 추가적인 정규화로써 행동할 수 있고, 꽤나 좋은 성능을 이끌어 냈다고 합니다.

 

Experiments on ImageNet derivatives

 miniImagaNet dataset은 ILSVRC-2012에서 100개의 랜덤 하게 선택된 class로 이루어진 few-shot image classification benchmark라고 합니다.

  •  이 클래스들은 64, 16 그리고 20개의 meta-training, meta-validation, meta-testing class들로 나뉜다구 합니다.
  • 각 클래스들은 84 x 84 size의 600개의 이미지들로 구성이 되어 있다고 합니다.

 

 tiredImagaNet benchmark는 ILSVRC-2012의 larger subset이라고 하며, 34개의 high-level category 내에서 608개의 class들로 구성되어 있다고 합니다.

  •  이는 20개, 6개, 8개의 meta-training, meta-validation, meta-testing을 위한 category들로 나뉜다고 합니다.
  •  각각의 category에는 251, 97, 160개의 class가 속해있다고 합니다.

 

Results. Table 1은 5-way miniImageNet and tieredImagaNet의 결과를 요약해서 보여주고 있다고 합니다.

  •  저자들의 기법은 해당 benchmark에서 5-way SOTA성능을 달성했다고 합니다.

 

 LEO는 encoder와 relation network를 WRN-28-10에 추가하여 gradient descent에 대한 초기화를 잘 했다고 합니다. MAML 비슷한 느낌인거일려나요?

 TADAM은 task embedding network(TEN) block을 각 convolutional layer에 적용하여 element-wise scale and shift vectors를 예측했다고 합니다.

 

 이전 연구들은 feature extraction을 위한 부분과 base learner를 따로따로 가지고 있으며, few-shot시 앞 단을 freeze하는 방법을 사용한다는 점을 지적

  •  저자들의 기법은 대조적이게도, end-to-end로 meta-train된다고 하며, 이러한 전략이 meta-learning에서 효과적이었다는 것을 실험으로 확인했다는 식으로 서술함.

 

Experiments on CIFAR derivatives

 CIFAR-FS dataset은 최근에 제안된, CIFAR-100의 모든 100개의 class들로 이루어진 few-shot image classification benchmark라고 합니다.

  •  해당 class들은 64, 16, 20개의 meta-training, meta-validation, meta-testing을 위한 class로 randomly split되며, 각 클래스는 32 x 32의 600개의 image들로 구성되어 있다고 합니다.

 

 FC100 dataset은 CIFAR-100으로부터 유도된 다른 데이터셋이며, 20개의 super class로 그루핑 된 100개의 클래스들을 포함하고 있다고 합니다.

  •  이 클래스들은 각각 60 classes from 12 superclasses, 20 classes from 4 super classes, 20 classes from 4 superclasses로 meta-training, meta-validation, meta-testing을 위해서 나뉜다고 합니다.
  •  각 클래스는 위와 동일하게, 32 x 32의 600개의 image들로 구성되어 있다고 합니다.

 

Results. Table2는 5-way classification tasks에 대한 결과를 요약해서 보여주고 있으며, 저자들의 MetaOptNet-SVM이 SOTA 성능을 달성했다고 합니다.

  •  더 어려운 FC100에 대해서, 이 차이는 더욱 상당했다고 합니다. 이는 complex base learner를 few-shot learning setting에서 사용했을 때의 이점을 강조한다고 합니다.

 

Comparisons between base learners

 Table3는 two different embedding architecture에 대해, base learner를 변화시켜가며 얻은 결과라고 합니다.

  •  저자들은 4-layer convolutional network(1600 feature dimension)을 사용했을 때, few-shot learning을 위한 discriminative classifier를 채택해도 큰 이득이 없었다고 얘기합니다.
  •  실제로, 최근접 이웃 기반 classifier는 low-dimensional feature 하에서도 동작이 잘 됬다고 얘기합니다. (Prototypical network 처럼)

 

 그러나, embedding dimension이 16000 정도로 굉장히 높은 경우에, SVMs은 다른 base learner들에 비하여 더 좋은 few-shot accuracy를 보였다고 하고 있습니다.

  •  Thus, 정규화된 선형 분류기들도 높은 차원의 feature가 이용 가능하면, 어느 정도 강건한 성능을 보였다고 하네요.

 

 이러한 benefit의 증가는 computational cost의 증가를 가져왔다고 합니다. ResNet-12의 경우, 최근접 분류기에 비교하여 13%정도 추가적인 overhead가 ridge regression base learner에서 발생 했고, 30~50% 정도 추가적인 overhead가 SVM base learner에서 발생했다고 합니다.

 

 Figure2를 보면, 1-shot, 5-shot 영역에서의 저자들의 모델의 성능은 meta-training shot이 증가할수록 증가하는 것을 볼 수 있다고 합니다.

  •  이는 모든 meta-test shot에 대해 더 많은 shot을 meta-training에서 활용할 수 있으므로, 저자들의 기법을 더욱 실용적인 접근으로 만들어준다고 합니다.

 

 FC 100 실험에서 보고 된 것처럼, SVM base learner는 test와 train에 쓰인 data간의 semantic overlap이 더 적을 때, 이점을 가지는 것으로 보인다고 서술함.

 

 저자들은 class embedding들이 test data보다 train data에 대해 훨씬 더 compact하다고 가정한다고 합니다. 따라서, base learner의 flexibility는 noisy embedding에 대한 강건성을 가지게 해주고, 일반화 성능을 높여준다고 서술했습니다.

 

Reducing meta-overfitting

Augmenting meta-training set. Task들을 sampling하는 것에도 불구하고, MetaOptNet-SVM with ResNet-12의 meta-training의 종료 시점에는 tiredImageNet을 제외하고, 모든 meta-training dataset들에 대해서 거의 100%의 test accuracy를 보였다고 합니다.

  •  해당 overfitting을 완화시키기 위해, [21, 25]와 유사하게, 저자들은 meta-training과 meta-validation set의 합집합을 사용해, epoch와 같은 hyperparameter등은 이전 셋팅과 동일하게 유지하면서 임베딩을 meta-training했다고 합니다.
  •  특히, 저자들은 miniImageNet에서는 21 epoch이후에, tieredImageNet에서는 52 epch 이후에, CIFAR-FS와 FC 100에서도 각각 21 epoch이후에 meta-training을 종료했다고 합니다.
  •  Table 1과 2는 augmented meta-training set의 결과를 보여주고, 이 결과를 MetaOptNet-SVM-trainval으로 명명해두었다고 합니다.

 

 miniImageNet, CIFAR-FS 그리고 FC100 dataset들에서, 저자들은 test accuracy의 개선을 관측했다고 합니다. 그런데 아쉽게도, tiredImageNet dataset에서의 차이는 미미했다고 하네요.

  •  저자들은 이것이 그들의 시스템이 overfitting의 영역에 들어가지 못 해서 그런 것이라고 해석했습니다. (사실, tiredImagaNet meta-training에서 94%까지의 정확도는 보았다고 하네요.)

 

 저자들의 결과는 더 많은 meta-training class들이 meta-learning embedding의 meta-training set에 대한 overfitting을 줄이는 것을 도와줄 수 있는 것을 보여준다고 합니다.

 

Various regularization techniques. Table 4는 ResNet-12로 이뤄진 MetaOptNet-SVM에서의 정규화 기법들에 대한 효과를 보여준다고 합니다.

  •  저자들은 few-shot learning에서의 초기 연구인 [28, 8]이 이러한 기법들을 적용하지 않았음을 알린다고 합니다.
  •  저자들은 regularization을 사용하지 않았을 때, ResNet-12의 성능은 조그마한 CNN정도의 성능으로 줄어든다고 하며, 이를 Table 3에서 보여주었다고 합니다.

 이는 meta-learner들을 위한 정규화의 중요성을 보여준다고 합니다. 저자들은 few-shot learning system들의 성능이 새로운 정규화 기법들을 도입함에 따라 더욱 향상될 수 있으리라 기대한다고 합니다.

 

Efficiency of dual optimization

 Dual optimization이 실제로 효과적이고 효율적인지 확인하기 위해, 저자들은 QP solver의 iteration을 변화해가며 meta-test의 정확도를 측정했다고 합니다.

  •  QP solover의 각 iteration은 KKT matrix의 LU decomposition을 통해 primal과 dual update를 계산하는 과정을 포함한다고 합니다.
  •  결과는 Figure3에 도시되어 있다고 합니다.

 

 QP solver는 just one iteration안에 ridgi regression objective의 최적점에 도달했다고 합니다.

  • 대안적으로, [3]에서 사용한 closed-form solution을 사용할 수도 있다고 합니다.

 

 또한, 저자들은 1-shot task들에 대해서, QP SVM solver가 비록 KKT condition이 정확히 만족 되지 않음을 관찰했지만, 1 iteration만에 optimal 정확도에 도달할 수 있었다고 합니다.

 

 5-shot task들에 대해서는, 심지어 QP SVM solver를 1 iteration만 돌렸음에도, other base learner들에비해 더 좋은 정확도를 달성할 수 있었다고 합니다.

 

 또한, 저자들은 SVM solver의 iteration이 1 iteration으로 제한 되었을 때, ridge regression solver와 계산 비용이 비슷했다는 것을 Table3에서 구체적인 수치로 보여주었다고 합니다.

 

 이러한 실험들은 SVM과 ridge regression의 dual objective를 푸는 것이 fet-shot setting 아래에서 매우 효율적임을 보여준다고 합니다.

 

Conclusions

 해당 논문에서, 저자들은 few-shot learning을 위해 convex base learner를 이용하는 meta-learning approach를 보여주었다고 합니다.

 

 Dual formulation과 KKT condition은 few-shot learning problem에 특히 적합한 meta-learning에서의 계산 효율과 메모리 효율을 허용하기 위해 십분 이용이 되었다고 합니다.

 

 Linear classifier는 약간의 computational cost의 증가 만으로, 최근접 이웃 분류기보다 더욱 좋은 일반화 성능을 제공했다고 합니다.

 

 저자들의 실험들은 정규화된 선형 모델들이 overfitting을 줄이면서도 상당히 높은 embedding dimension을 허용한다는 것을 보여주었다고 합니다.

 

 Future work으로는, 저자들은 kernel SVM들과 같은, 다른 convex base-learner에 대해서 해당 기법을 적용해보는 것을 목표로 하고 있다고 합니다.

  •  저자들은 이를 통해 task에 더 많은 훈련 데이터를 사용할 수 있게 되고, 모델의 capacity를 점진적으로 늘릴 수 있을 것이라고 얘기합니다.

가짜연구소 5기 멀티태스크메타러닝-초읽기 아카데믹 러너 활동을 통해 위의 논문을 읽게 되었습니다.

제가 주로 다루는 분야가 아니기에, 가볍게 정리하는 느낌으로 가져가 볼까 합니다.

 

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

Abstract

  •  저자들은 classification, regression, 그리고 강화학습을 포함하는, 다양한 서로 다른 학습 문제들에 적용 가능한, 그리고 gradient-descent로 훈련되는 모델에 호환 가능한, model-agnostic meta-learning알고리즘을 제안했다고 함.
  •  meta-learning의 목적은 small number of training sample만으로, 새로운 learning task를 해결할 수 있게 되어, 모델이 다양한 learning task를 학습할 수 있게 하는 것이라고 함.
  •  저자들의 접근 방법은, model의 parameter들이 explicit하게 훈련되고, 그래서 새로운 task로부터 적은 훈련 데이터를 가지고 약간의 gradient step을 수행하더라도, 해당 task에 대해 good generalization 성능을 낸다고 함.
  •  실제로, 저자들의 기법은 model을 조금 더 쉽게 fine-tuning할 수 있도록 훈련시킨다고 합니다.
  •  저자들은 제안하는 기법이 두 개의 few shot image classification benchmark에서 SOTA성능을 이끌어 낼 수 있었고, few-shot regression에서도 좋은 성능을 냈으며, 그리고 NN policy를 가지는 PG 기반 RL의 fine-tuning을 조금 더 가속화시켰다고 합니다.

Introduction

 Few example들로부터 object를 인식하는 것이나, 단지 몇 분만의 경험 이후에 새로운 skill들을 빠르게 학습하는 것 등을 포함하는, 빠른 학습은 인간 지능의 전형적인 특징이라고함.

 우리의 artificial agent들은 이를 동일하게 할 수 있어야 하며, 더욱 많은 데이터들에 대해서 계속해서 적응이 가능해야 한다고 첼시 핀 교수는 얘기합니다.

 이러한 fast and flexible learning들은 어려운데, 새로운 데이터에 대해서 overfitting되지 않으면서도, agent가 자신의 사전 지식을 적은 양의 새로운 정보에 통합해야 하기 때문이라고 합니다.

  • 게다가, 사전 지식의 형태와 새로운 데이터는 task에 의존한다고 합니다.

 

 이 연구에서, 저자들은 어떤 learning problem이나 gradient 기반으로 학습되는 모델에 직접적으로 적용할 수 있는, 일반적이고, model을 알 필요가 없는(이 해석이 맞을지 모르겠네요) meta-learning algorithm을 제안한다고 합니다.

  •  저자들의 초점은 DNN model이며, 뿐만 아니라 저자들은 어떻게 제안한 기법이 분류, 회귀 그리고 PG류 RL 등을 포함하는 different architectures and problem setting에 쉽게 적용이 가능한 지를 보여준다고 합니다.

 

 Meta-leaerning에서, 학습된 모델의 목표는 적은 양의 새로운 데이터로부터 new task를 빠르게 배우는 것이라고 하며, model은 meta-learner에 의해서 많은 수의 다른 task들을 배울 수 있게 된다고 합니다.

 

 저자들이 제안한 기법의 key idea는!! 새로운 태스크로부터 small amount of data를 통해 한 번 혹은 여러 번의 gradient step을 통해서 업데이트가 되면, 해당 태스크에서 maximal performance를 model이 가질 수 있도록, model의 initial parameter들을 훈련시키는 것이라고 합니다.

  •  말이 조금 어렵지만, one-shot 혹은 few-shot등에 대비하기 위해, 다양한 task에 대해서 general 한 weight update를 large dataset으로 끝내 놓고(이를 initial parameter setting으로 표현), 그다음에 one-shot 혹은 few-shot을 대비하는 느낌으로 저는 이해했습니다.

 

 기존의 update function 혹은 update rule을 학습하는 meta-learning method들과 달리, 저자들의 알고리즘은 num of learned parameter들을 확장시키거나, model architecture에 제한을 두는 등의 방식을 사용하지 않았고, MLP, CNN, RNN 계열들에도 쉽게 combine 할 수 있다고 합니다.

  • 또한, 이는 지도 학습 계열의 loss, 그리고 RL objective 등의 다양한 loss function들에서도 사용할 수 있다고 합니다.

 

 Few or even a single gradient step과 같이 model의 parameter들을 훈련시켜서 새로운 task에서 좋은 결과를 생성할 수 있도록 하는 프로세스는, 다양한 task들에 대해 광범위하게 적합한 internal representation을 구축하는 feature learning 관점으로써 볼 수 있다고 합니다.

  •  만약 internal representation이 많은 task들에 적합하다면, 간단히 fine-tuning을 함으로써, 좋은 결과를 낼 수 있을 거라고 핀 교수는 말합니다.

 

 사실, 저자들의 model을 최적화하는 절차는 빠르고 쉽게 fine-tune할 수 있다고 하며, 빠른 학습을 통해 올바른 sapce에 적응하는 것을 가능하게 해 준다고 합니다.

  •  dynamical system관점에서, 저자들의 learning process는 parameter들에 대해 새로운 task의 loss function들에 대한 민감도를 최적화하는 관점으로써 볼 수 있다고도 합니다. (hessian이 나오는…ㅎ)
  • ⇒ sensitivity가 높다면, small local changes to the parameters가 task loss의 large improvement를 이끌어 낼 수 있다고 합니다.

 이 연구의 primary contribution은 적은 수의 gradient update가 new task에 대한 빠른 학습으로 이어질 수 있도록, 모델의 parameter들을 학습하는 meta-learning을 위한, simple model 및 task-agnostic algorithm이라고 합니다.

  •  저자들은, 해당 알고리즘이 여러 다른 model type들에서 동작하는 것을 보여준다고 합니다.
  •  저자들의 실험 평가는 제안한 meta-laerning 알고리즘이 classification을 위해 설계된 SOTA one-shot method들에 근접할 뿐만 아니라, 더 적은 parameter를 갖는다는 것과, regression, rl 등의 다른 domain에서도 쉽게 적용될 수 있음을 보여주었다고 합니다.

 

Methodology(Model-Agnostic Meta-Learning)

 저자들은 rapid adaptation을 달성할 수 있도록 모델을 학습시키는 것을 aiming 했다고 합니다. 문제 정의는 few shot learning으로 형식화했다고 하네용

 

 해당 section에서, 저자들은 problem setup과 저자들의 알고리즘의 general form을 제공한다고 하네요.

 

Meta-learning problem set-up

 Few-shot meta-learning의 목적은 단지 few data points와 training iteration만으로, new task에 빠르게 적응할 수 있는 모델을 학습하는 것이라고 합니다.

  •  이를 달성하기 위해, model or learner는 set of task들에 대해 meta-learning phase동안 훈련되고, trained model은 small number of examples만을 통해 net task에 빠르게 적응할 수 있어야 한다고 합니다.

 

 해당 섹션에서, 저자들은 meta-learning problem setting을 differnt learning domain들의 간단한 예제를 포함하는, general manner로 형식화한다고 하네용

 

 저자들은 model을 observation x를 output a로 mapping하는 f로써 명명했다고 합니다. meta-learning동안, model은 large or inifite num of task에 적응할 수 있게끔 훈련이 된다고 합니다.

  •  저자들은 자신들의 framework가 다양한 learning problem에 적용될 수 있도록, generic notation of a learning task를 다음과 같이 소개한다고 합니다.

 저자들은 각 task를 T로 명명하고, RL혹은 sequential task까지를 포함할 수 있도록 하기 위해, episode length H라고 하는 변수를 포함하도록 정의한 것 같습니다. ⇒ 역시나, 다양한 분야에 정통한 천재 박사는 남들과 다른 생각을 할 수 있는 것 같습니다. 그들의 노력에 박수를 보냅니다..

 

 저자들의 meta-learning 시나리오에서, 저자들은 자신들의 model이 적응하는 것을 기대하는 task들의 분포 p(T)를 고려했다고 합니다.

  •  K-shot learning setting에서, 모델은 q_i로부터 draw된 K sample들로부터, p(T)에서 draw된 net task T_i와, T_i로부터 생성된 feedback L_(T_i)를 통해서 학습이 된다고 합니다.

 

 meta-training 동안에는 task T_i는 p(T)에서 샘플링되고, model은 해당 task에서부터 L_(T_i)와 K sample을 가지고 훈련이 되고, new samples from T_i에서 평가가 된다고 합니다. (same task, new sample)

  •  meta learning이 끝나는 시점엔, new task 가 p(T)로부터 sampling되고, eta-performance가 new task에 대한 K sample을 통해 학습된 이후 측정된다고 합니다.
  •  일반적으로, meta-testing때 사용되는 task들은 meta-training중에는 보류(hold-out)가 되었던 친구들이라고 합니다.

 

Model-Agnostic Meta-Learning Algorithm

Entire dataset을 입력받는 RNN 계열을 훈련시키거나, test time에 non-parametric method들과 결합되기 위해 feature embedding을 입력 받는 식의 이전 연구들과는 대조적으로, 저자들은 어떤 표준 모델의 parameter들이라도 fast adaptation을 준비할 수 있게, meta-learning을 통해 학습할 수 있는 기법을 제안했다고 합니다.

  •  이러한 접근의 intuition은, “어떤 internal representation이 다른 것들에 비해 transferrable할까?” 였다고 합니다.
  •  예를 들어, neural network는 single individual task보다는 모든 task에 넓게 적용 가능한 internal feature를 배울 수 있다.

 

 우리는 어떻게 이러한 일반적인 목적의 representation의 출현을 촉진할 수 있을까?

  •  저자들은 이러한 문제의 explicit approach를 다음과 같이 삼는다고 함: model이 새로운 task에 대해 gradient-based learning rule을 이용해서 fine-tuning될 것이기 때문에, 저자들은 overfitting 없이, p(T)로부터 draw된 새로운 task들에 대해 빠르게 학습할 수 있는 model을 학습하는 것을 aiming한다고 함.

 

 실제로, 저자들은 figure 1과 같이, loss의 gradient의 방향이 바뀌었을 때, parameter의 small change가 p(T)에서 darw된 어떤 task의 loss function이라도 많은 개선을 만들어 낼 수 있도록, task의 change에 sensitive한 model parameter를 찾는 것을 aiming한다고 함.

 

 저자들은 model의 parameter가 theta라는 것과, loss function이 gradient-descent 기법을 적용할 정도로 충분히 smooth하다는 것 정도 이외에, model의 형태에 아무런 가정을 하지 않았다고 함.

 

 Formally, 저자들은 parameterized function f_theta에 의해서 표현된 모델을 고려한다고 함. new task T_i에 model parameter를 적응하면 theta ⇒ theta’_i로 변한다고 함.

 저자들의 기법에서, updated parameter vector theta’_i는 하나 혹은 그 이상의 gradient descent update를 task T_i에서 계산한다고 함. 예를 들면, one gradient update의 경우, alpha라는 learning rate(hyper param)를 가정하여 다음과 같이 정의!

 

 그러면 모델의 파라미터들은 f_(theta’_i)를 theta와 다양한 task들에 대해서 최적화하기 위해 훈련된다고 함! 더욱 구체적으로, meta-objective는 다음과 같이 정의한다고 합니다.

 

 Meta-optimization은 parameter theta에 대해서 수행되고, 반면에 objective는 updated model parameter theta’에 의해서 계산된다고 함. 사실, 저자들의 method는 이러한 newt task에 대한 one or small # of gradient stop이 해당 태스크에 대한 효율을 최대로 하는 것을 목적으로 한다고 합니다.

 

 여러 task들에 대한 meta-optimization은 SGD를 통해 수행된다고 하며, 그래서, model parameter theta는 다음과 같이 업데이트가 된다고 하네요. (beta는 meta step size라고 합니당.)

 

 MAML meta-gradient update는 gradient through gardient를 포함하고 있다고 합니다. 계산적으로, 이는 hessian vector를 계산하기 위해, 추가적인 backward process를 필요로 한다고 하는데요, 이는 표준적인 DL library라면 지원을 해준다고 합니당.

  •  저자들의 실험에서, 저자들은 또한 first-order approximation을 이용해서 해당 backward pass를 수행하지 않는 trick을 제안하고 이를 비교해 보았다고 합니다ㅎ

 

Species of MAML

 해당 섹션에서, 저자들은 지도 학습과 강화학습에 대한 저자들의 meta-learning algorithm에 대한 구체적인 사례를 보여준다고 합니다.

  •  해당 도메인들은 loss function면에서 차이가 존재하고, task가 generate되고 model을 표현하는 방법 면에서 조금 다르다고 합니다. 하지만, both cases에 대해, 제안한 adaptation mechanism은 동일하게 적용될 수 있음을 보여준다고 합니다.

 

Supervised regression and classification

(중략)

 Supervised regression과 classification problem을 meta-learing의 문맥에서 형식화하기 위해, 저자들은 horizon H를 1로 두고, time step subscript t를 x_t에서 뺐다고 합니다.

  •  그리하여, regression과 classification의 loss는 다음과 같이 표현했습니다. regression: L2 loss, classification: cross-entropy

 Conventional terminology에 따라, K-shot 분류 task는 N-way 분류를 위한 총 NK data points에 대해 각 class에 대해 K개의 intput/output pair를 사용했다고 합니다.

 

 Task distribution p(T_i)가 주어지면, 위의 loss function들은 algorithm 2에 도시된 것처럼, meta-learning을 수행하기 위해 theta를 업데이트하는 위의 방정식들(MAML 본체 방정식!!)에 직접적으로 사용될 수 있다고 합니다.

 

Reinforcement learning

 강화학습에서, goal of few-shot meta-learning은 test setting에서 small amount of experience만을 사용해서 net task에 대한 policy를 빠르게 얻는 것이 가능하게 하는 것이라고 합니다.

  •  새로운 task는 new goal을 달성하는 것을 포함할 수도 있고, new environment에서 이전에 학습된 목표를 이어받는 것일 수도 있다고 합니다.
  •  예를 들어, agent는 new maze를 마주쳤을 때, 어떻게 탈출해야 하는지 빠르게 학습하는 것 등이 있다고 합니다.
  •  이 섹션에서, 저자들은 MAML이 어떻게 RL을 위한 meta-learning에 적용될 수 있는지 다룬다고 하네용

 

 각 RL task T_i는 initial state distribution q_i(x_1)과 transition distribution q_i(x_(t+1) | x_t, a_t) 그리고 reward function R에 따른 loss L_(T_i)를 포함한다고 합니다.

  •  전체 task는 MDP with horizon H이며, 여기서 learner는 few-shot learning을 위해, 제한된 수의 sample trajectory들을 query 할 수 있다고 합니다. 또한, MDP의 측면은 task p(T)에 따라 달라질 수 있다고 합니다.

 

 model이 학습되면, f_theta는 각 time step t \in {1, …, H}에 state x_t로부터 action a_t를 mapping하는 정책이라고 합니다. 해당 task T_i를 위한 loss와 model f_phi는 다음과 같이 형성된다고 합니다.

 

 K-shot RL에서, task T_i와 f_theta로부터 얻은 K개의 rollout들 그리고, 그에 따른 reward R(x_t, a_t)들은 new task T_i에 adaptation을 함에 있어서 사용이 된다고 합니다.

 

 Expected reward가 일반적으로 unknown dynamics로 인해 미분이 불가능하기 때문에, 저자들은 model gradeint와 meta optimization을 위해 gradient를 추정하는 데 있어서 PG method를 사용했다고 합니다!

  •  Policy gradients는 on-policy algorithm이기 때문에, f_theta를 적용하는 동안 각 additional gradient step에서는 현재 정책 f_theta_i의 new sample들이 요구된다고 합니다.

 

 저자들은 이를 algorithm 3에 자세히 서술해 두었다고 합니다. 이 알고리즘은 Algorithm 2와 동일한 구조를 가지고 있다고 하며, 주된 차이는 step 5, step8에서 sampling trajectory를 필요로 한다는 점이라고 합니다. (datapoints ⇒ trajectories)

  •  이 기법을 구현함에 있어서, 최근에 제안된 pg algorithm(TRPO 등)들을 포함하여, 다양한 rl 알고리즘을 사용할 수 있을 것이라고 핀 교수는 얘기합니다.

 

Related work

 저자들이 해당 논문에서 제안한 기법은 few-shot learning을 포함하는 meta-learning의 일반적인 문제를 해결한다고 함.

 

 Meta-learning을 위한 popular approach는 leaner’s model의 parameter update를 어떻게 할지에 대해 학습하는 meta-learner를 훈련시키는 것이라고 합니다. 어우 복잡해… 비문 같네요.

  •  최근의 접근 중 하나는 few-shot image recognition을 위해서, weight 초기화와 optimizer 둘 다를 학습한다고 합니다. 으흠..?

 

 저자들은 이러한 기법들과는 달리, MAML learner의 weight은 learned update 대신 gradient를 이용해서 업데이트가 된다고 하며, 또한, 저자들의 기법은 meta-learning을 위한 추가적인 파라미터를 도입하지 않았다는 점과, 특별한 learner architecture를 요구하지 않는 점을 강조하고 있습니다.

 

 Few-shot learning 기법들은 또한, generative modeling이나 image recognition과 같은 특별한 task들을 위해 개발되어 왔다고 합니다.

  •  Few-shot classification을 위한 하나의 성공적인 접근은 learned metric space에서 new example들을 비교하는 방법을 학습하는 것이라고 합니다. 예를 들면 Siamese network, recurrent with attention(Vinyals et al 2016 등) 등이 있다고 합니다.
  •  이러한 접근 법들은 몇몇 성공적인 결과들을 생성해 왔지만, RL과 같은 다른 문제들로 직접적인 확장을 하기에는 어려움이 있었다고 합니다.
  •  이와 대조적으로, 저자들의 기법은 model의 형태나 learning task를 가리지 않는다고 합니다. agnostic!

 

 Meta-learning의 다른 접근은 다양한 태스크에 대해 memory augmented model을 학습시키는 것입니다. 일반적인 memory augmented model에서는, recurrent learner이 새로운 작업이 roll out되면, 이에 적응하도록 훈련이 됩니다.

  •  이러한 network들은 few-shot image recognition에 적용되기도 했고, rl agent들을 빠르게 학습하기 위해 적용되기도 했다고 합니다.
  •  저자들의 실험은 few-shot classification에서 이러한 recurrent approach들을 뛰어넘는 성능을 보여주었다고 합니다.

 

 게다가, 이러한 모델들과는 달리, 저자들의 접근은 단순히 learner와 meta update모두에게 same gradient descent를 사용하고, 좋은 초기 가중치를 제공한다고 합니다.

  •  결과적으로, 이는 additional gradient step에 대해 learner를 fintune하는 것을 간단하게 해 줍니다.

 

 저자들의 접근법은 또한 심층 네트워크들을 초기화하는 방법과 관련이 있다고 합니다. 컴퓨터 비전에서, large-scale image classification에서 pretrain된 모델들은 다양한 범위의 문제들에서 feature를 효율적으로 학습한다는 것을 보여주어 왔다고 합니다.

  •  대조적으로, 저자들의 기법은 모델이 only a few example들 만으로 새로운 태스크들에 적응할 수 있게 하는, fast adaptability를 위해 모델을 명시적으로 최적화한다고 합니다.

 

 저자들의 기법은 또한, 모델 파라미터들에 대한 new task losses의 민감도를 명시적으로 최대화하는 것으로 간주할 수도 있다고 합니다. 진짜 똑똑쓰

  •  몇몇 이전의 연구들은 deep network들의 sensitivity를 탐험했다고 하며, 이는 종종 초기화와 관련된 context에서 이루어졌다고 합니다.
  •  대부분의 이러한 연구들은 good random initialization을 고려한다고 합니다. 비록 많은 수의 논문들이 data dependent한 initializer를 해결했지만 말이죠.
  •  대조적으로, 저자들의 기법은 주어진 task distribution에서의 parameter들의 sensitivity를 명시적으로 훈련할 수 있으며, 그리하여 K-shot learning이나 rapid reinforcement learning 등을 only one or a few gradient setep만으로 극한의 효율적인 adaptation을 할 수 있게 해 준다고 합니다.

 

Experimental Evaluation

저자들의 실험 평가의 목표는 다음의 질문에 답하기 위한 것이라고 합니다.

(1) Can MAML enable fast learning of new tasks?

(2) Can MAML be used for meta-learning in multipld different domains, including supervised regression, classifcation, and reinforcement learning?

(3) Can a model learned with MAML continue to improve with additional gradient updates and/or examples?

 

 모든 저자들이 고려하는 meta-learning problem들은 test-time에서 new task에 어느 정도 적응을 해야 한다고 합니다. 가능한 경우, 저자들은 자신들의 결과를 모델의 성능에 대한 상한으로 task에 대해 이미 알고 있는 오라클로 설정하여 비교를 수행했다고 합니다.

  •  저자들은 tf를 썼다고 합니다 크크 코드 공개도 했다네용

 

Regression

 저자들은 MAML의 기본 원리를 설명하기 위해, 단순한 regression 문제로 시작했다고 합니당. 각 태스크는 sine wave로, 크기나 위상 등을 바꾸면서 테스트했다고 하네용

  •  Amplitude는 0.1~5.0, phase는 0~pi로, input/output dimension은 1로 했다고 합니다.
  • Input x는 [-5~5] 사이를 균일하게 sampling하였고, loss는 MSE로 했답니다. neural network는 40 node의 hidden layer 2층, ReLU 등등을 사용!
  • Few shot K의 size는 10, step size는 0.01, Adam optimizer를 사용했다고 합니다.

 

 성능을 평가하기 위해, 저자들은 single meta-learned model을 K개의 varying number of K examples에 대해서 fine tuning했다고 하고, 두 개의 baseline들과 비교를 수행했다고 합니다.

(a): pretraining on all of tasks ⇒ fine tuning with gradient descent on K provided points, using an automatically tune step size

(b): oracle receives the true amplitude and phase as input

 

 저자들은 MAML로 학습되고 파인튜닝된 모델의 성능을 평가했는데, 이때 K={5, 10, 20}일 때 평가했다고 합니다.

  •  Fine-tuning동안, 각 gradient step은 same K datapointes를 사용해서 계산이 되었다고 합니다.
  •  정성적인 평가는 Figure 2, Appendix B에 있다고 합니당 ⇒ MAML로 프리트레인되고, 학습된 모델은 5개의 data만으로도 빠르게 적응하는 것을 보여주었는데, 그냥 지도학습으로 프리트레인된 친구는 catastrophic overfitting없이 적응하는 것이 불가능했다고 합니다 크…
  •  중요한 점은, K datapoints들이 모두 one half of the input range에만 있었으며, MAML로 trained된 모델은 other half of the range에 있는 amplitude와 phase마저 추론해낼 수 있었다는 것이라고 합니다. 대박쓰..
  •  게다가, 저자들은 정량적인 평가마저도 MAML로 학습된 모델이 조금 더 좋은 성능을 보인 것을 Figure 3을 통해서 보여주었다고 합니다.

 이러한 개선점은 MAML이 parameter를 최적화하여, 그 값들이 p(T)내의 task들의 손실 함수에 대해 민감하고, 빠른 적응이 가능한 영역에 놓이도록 하는, 2.2에서 논했던 것을 보여주고 있다고 합니다.

 

Classification

 이전의 meta-laerning and few-shot learning algorithm들과 비교하여 MAML을 평가하기 위해, 저자들은 MAML을 Omniglot and MiniImagenet dataset에서의 few-shot recognition에 적용해 보았다고 합니다.

  •  Omniglot dataset은 50개의 다른 알파벳들로부터 1623개의 캐릭터 별로, 20개의 instance만을 가진 dataset이라고 합니다. 이때, 각 instance들은 different person으로부터 얻어졌다고 하네요.
  •  MiniImagenet dataset은 Ravi, Larochelle(2017)에 의해 제안되었으며, 64개의 training classes, 12개의 validation classes 그리고 24개의 test classes를 포함하고 있다고 합니다.

 

 Omniglot and MiniImagenet image recognition task들은 few-shot learning benchmark들에서 최근 가장 많이 사용되었었다고 하네용

  •  저자들은 Vinyals가 제안한, N-way classification with 1 or 5 shots에서의 빠른 학습을 포함하는 실험 프로토콜을 따랐다고 합니다.
  •  N-way classification problem은 다음과 같이 셋업 된다고 합니다: N개의 unseen classes를 선택하고, 각 N class마다 K개의 다른 instance들을 모델에게 제공해준다. 그다음, N개의 class에서, new-instance를 분류할 수 있는지에 대한 능력을 평가한다.

 

 Omniglot에서, 저자들은 1200개의 character를 임의로 선정해 학습에 사용하고, 나머지를 testing에 사용했다고 합니다. Omniglot dataset은 Santoro 등이 제안한 것처럼, 90도씩 회전한 데이터들로 증강해서 사용했다고 합니다.

 

 저자들의 모델은 Vinyals가 사용한 것과 동일한 4 modules with a 3x3 convolutions and 64 filters를 embedding function으로 사용하였고, batch norm, ReLU, 2x2 max-pooling 등등을 사용했다고 합니다.

  •  또한, Omniglot imaga는 28 x 28로 다운샘플링 해서 사용했다고 하며, 그리고 last hidden layer의 차원은 64로 했다고 합니다. (…. 중략)
  •  그리고, Santoro 등이 제안한 memory-augmented neural network과 공정한 평가를 하기 위해, MLP에서도 학습을 수행했다고 합니다.

 

 결과는 Table 1에 도시되어 있다고 합니다. convolutional model은 해당 task에서 SOTA 결과를 보여주었으며, 기존의 기법들을 좁은 보폭으로 제쳤다고 써두었습니다.

  •  좁은 보폭으로 제끼긴 했지만, 이러한 기존의 기법들은 rl과 같은 도메인에는 적용하기가 쉽지 않다고 얘기를 하고 있습니다.
  •  추가적으로, MAML로 학습된 모델은 더 적은 전체적인 파라미터를 사용한다고 하며, 이는 분류기 자신이 사용하는 weight이외에 additional parameter를 도입하지 않았기 때문이라고 합니다.

 

 MAML의 상당한 계산 비용은 meta-objective에서의 gradient 연산을 통한 meta-gradient를 역전파 할 때, 2계도 미분이 사용되기 때문이라고 합니다. MiniImagenet에서, 저자들은 2계도 미분을 생략한 MAML의 first-order approximation과 MAML의 비교를 했다고 합니다.

  •  이는 신기하게도, 거의 같은 결과를 가져왔다고 합니다 와우 TRPO, PPO가 떠오르네요. ⇒ 계산 속도는 대략 33% 정도 향상되었다고 합니다.

 

Reinforcement learning

 RL problem에서의 MAML을 평가하기 위해, 저자들은 몇몇 task 집합을 구축했다. → continuous control environments in the rllab.

  •  저자들은 개별 domain에 대해서 아래에서 논한다고 합니다. 모든 도메인에서, 모델들은 MAML로 훈련되고, 100개의 node를 가지는 two hidden layer의 policy + ReLU가 사용되었다고 합니다.
  •  gradient update방법으로는 vanilla PG가, meta-optimizer로는 TRPO가 사용되었다고 합니다.
  • ⇒ 이렇게 되면, 3계도 미분에 대해서 계산해야 하기 때문에, TRPO의 hessian ector product를 계산하기 위해서 유한 차분을 사용했다고 하네용.

 

 이러한 learning과 meta-learning에서, 저자들은 standard linear feature baseline을 사용했다고 합니다. 응? 이는 배치에서 샘플링된 각 task에 대해 각 iteartion마다 별도로 fit되는 거라고 하는데 무슨 소리징

 

저자들은 3개의 baseline model들을 비교했다고 합니다.

(a) pretraining one policy on all the tasks and then fine-tuning

(b) training a policy from randomly initialized weights

(c) an oracle policy which receives the parameteres of the task as input, which for the tasks below corresponds to a goal position, goal direction, or goal veloicty for the agent.

 

2D Navigation

 첫 번째 meta-RL 실험에서, 저자들은 2D에서 agent에게 differnent goal position으로 움직이게끔 하는 task를 먼저 연구했다고 합니다.

  •  observation은 현재의 2D position과 action 그리고 속도로 했다고 하네용. reward 같은 경우는 negative squared distance to the goal로 했고, episode는 100 step에 다다르거나, goal에 0.01 이내로 가까워지면 끝난다고 합니당

 

 MAML로 훈련된 policy는 20 trajectory를 가지고 한 번 PG를 경험시켜서 성능을 극대화시킨다고 했습니당. fine tune 과정 얘기한 것 같네용.

  •  평가를 할 때는, 4 gradient step까지 net task를 적응시켜서 결과를 비교했다고 하며, 그 결과는 Figure 4에 도시했다고 합니다.
  •  실험 결과, MAML의 adaptation performance가 다른 친구들보다 좋은 것을 잘 확인할 수 있었습니다.

 

Locomotion

 MAML이 복잡한 deep RL에 어떻게 잘 확장할 수 있는지 연구하기 위해, 저자들은 또한 high-dimensional locomotion task에 adaptation하는 연구를 수행했다고 합니다.

  •  해당 task는 (…중략)
  •  또한, episode별 step수 즉, horizon H는 200으로, 20 rollouts per gradient step을 모든 문제에 대해서(ant의 경우만 40으로) 적용했다고 합니다.
  •  결과는 figure 5에서 보여주고 있으며, MAML이 single update만으로도 속도와 방향을 잘 잡는 것을 보여주었다고 합니다.
  •  결과는 또한, 이러한 challenging task들에서도 MAML initialization이 random initaialization과 pretraining에 비해 상당히 우월한 성능을 가진다는 것을 보여준다고 합니다.

 

Discussion & Future work

 저자들은 gradient descent를 통해 model parameter를 easily adaptable하게 학습할 수 있는 meta-learning 기법을 소개했다고 함

 

 저자들의 접근은 여러 이점을 가지고 있다고 함.

  •  제안한 모델은 간단하고, 다른 meta-learning을 위한 learned parameter들을 도입하지 않는다고 함.
  •  또한, gradient based training이 가능한 모든 model representation과, 분류, 회귀, 강화학습을 포함하는 어떤 differentable objective들과 결합이 가능하다고 합니다.
  •  마지막으로, 저자들의 기법은 단순히 weight initialization을 생성하기 때문에, 실험에서 사용한 특정 문제(one or five examples per class에 대한 분류 문제)에 대해서 SOTA를 찍었음에도 불구하고, 더욱 많은 데이터와 더욱 다양한 gradient step에서도 사용이 가능하다는 것을 얘기했습니다. (그러니까 실험한 것 이외에 더 확장이 가능하다! 라는 걸 강조하는 것 같습니다.)

 

 게다가, 저자들은 제안하는 기법이 매우 modest한 양의 경험들로, PG기반의 RL agent가 adapt를 할 수 있다는 것도 보여주었다고 합니다.

 

 과거의 task로부터 얻은 지식을 재활용하는 것은 DNN과 같은 high-capacity scalable model 작은 data set으로 빠르게 훈련할 수 있도록 만드는 데에 있어 중요한 재료라고 합니다.

 

 저자들은, 이 work이 어떤 문제 그리고 어떤 모델에도 적용할 수 있는 simple and general-purpose meta-learning technique면에서 한 스텝 나아갈 수 있게 해 준 work이 되리라 믿는다고 합니다.

 

 Further research in this area can make multitask initialization a standard ingredient in deep learning and reinforcement learning.

 가짜연구소 5기 멀티태스크메타러닝-초읽기 아카데믹 러너 활동을 통해 위의 강의를 듣게 되었습니다.

 

 해당 스터디 활동의 조건은, 스터디에 참여하지 않은 사람들도 공부를 함께 할 수 있도록 하는 것이 원칙 중 하나기에, 스터디 과정 내 요약한 강의 요약본을 포스팅하게 되었습니다. 부족한 점이 있겠지만, 재미있게 봐주시면 감사하겠습니다!

 

Editor: 백승언

논문 링크: https://arxiv.org/pdf/1605.06065.pdf

코드 출처: https://github.com/sudharsan13296/Hands-On-Meta-Learning-With-Python/blob/master/05.%20Memory%20Augmented%20Networks/5.7%20Building%20MANN%20in%20Tensorflow%20.ipynb

 

목차

  Remind CS-330 Lecture 3

  Related code review - NTM, MANN

    MANN 간단 정리

      Abstract

      Introduction

      Methodology

    Code review(구두 설명)

 

Remind CS-330 Lecture 3

meta-learning

  long-term으로 특정 task를 위한 training data set에 대해 학습을 시킨 후, short-term으로, 학습에 사용되지 않은 data set에 대해 특정 task를 수행하거나, 혹은 학습에 사용되지 않은 task를 수행할 수 있게 학습하는 것?

 

 학습에 사용되는 task i에 대한 training set을 D^tr_i, 학습에 사용되지 않아, 모델이 절대 볼 수 없는 task i에 대한 test set을 D^test_i라고 하는 것 같다.

  • k-shot learning: class 별로 k개의 example만을 보여주고, 결과를 예측하는 task

 

 대표적인 meta-learning을 위해 사용할 수 있는 데이터셋인 Omniglot dataset. class는 10개에, data가 엄청 많은 MNIST와 달리, class는 1600여 개에, 클래스별 데이터가 20개밖에 없어서 MNIST의 전치 버전이라고 불린다고 한다.

 

 Black-box adaptation ⇒ neural network가 training data set을 통해 특정 변수 phi_i를 학습하게 하고, 이 phi를 이용하는 black box model g를 통해서, test data set의 본 적 없는 x^ts를 통해 y^ts를 예측하는 것

 

 대표적인 black-box adaptation 모델로써 여러가지 모델들이 소개되었으며, DeepMind에서 연구한 NTM, MANN이 대표적인 모델인 것 같다.

 

Related code review - NTM, MANN

 해당 강의의 경우, 해당 수업의 과제로써 data set processing과, 대표적인 black-box meta-learner 중 하나인 MANN을 구현해 오는 것을 과제로 주었다.

 

 물론, 구현을 from scracth로 요구하지는 않고, 코드 조각 내에 핵심적인 코드만을 작성할 수 있게끔 배려를 해주었던 것 같다.

 

 이 글에서도, MANN의 코드를 간단히 리뷰하고자 하며, 그 이전에, MANN에 대해서 간단하게만 정리를 한 후, 코드를 리뷰하고자 한다.

 

MANN 간단 정리

Abstract

최근 들어, 늘어나는 DNN의 성공에도 불구, one-shot learning은 어려운 점이 많다.

 

 전통적인 gradient 기반의 네트워크들은 새로운 데이터를 마주치게 되었을 때, 해당 데이터로 parameter update를 하면 안 된다. 이때 catastrophic forgetting이 일어날 수 있기 때문. 그래서 처음부터 다시 학습해야 하는 어려움이 있다.

 

 이전 연구인 NTM(Neural turing machine)과 같은 memory를 가지고 있는 구조는 새로운 정보를 빠르게 encode, retrive할 수 있는 능력을 제공하며, 기존의 고전적인 model들의 단점을 피할 수 있다.

 

 저자들은 제안하는 MANN이 기존의 memory를 쓰는 기법들과 다르게, memory contents에 초점을 맞추어 external memory에 접근할 수 있는 기법이라고 하며, 좋은 성능을 보여주었다고 함

 

Introduction

 많은 흥미로운 문제들은 적은 양의 데이터로부터 빠른 inference를 요구한다고 함. 이러한 종류의 유연한 적응은 인간 지능의 유용한 측면이라고 함.

 

 이를 위해 meta-leraning이라고 하는 기법들이 제안 되어왔으며, memory capacity를 가지는 신경망들이 제안되어 왔다고 함.

  •  하지만, 이게 좋은 solution이 되려면, input data들이 안정적이고, element-wise로 접근이 가능하게끔 메모리에 저장이 되어야 한다고 함.
  •  또한, parameter들의 숫자와 memory size는 연관이 있으면 안 된다고 함. (이미 internal memory를 가지고 있는, LSTM 계열 모델을 지적하려고 한 말인 것 같아요.)

 

 위의 internal memory를 가지는 신경망의 단점을 극복할 수 있는 아키텍처가 2014년 Graves 등의 Neural Turing Machine, 2014년 Weston 등의 memory network 등으로 제안이 되어왔다고 합니다.

 

 그러나, 저자들은 이러한 NTM과는 다르게, content로 접근이 가능한 memory access module을 설계하였으며, memory location을 이용하지 않았다고 합니다.

 

 또한, 본 적 없는 Omniglot data set에 대해, 사람과 같거나 더 높은 정확도로 분류 task를 해결해낸 것을 보여준다고 합니다.

 

Methodology

Memory-Augmented Model

  • NTM

 NTM은 read head, write haed들을 이용해 external memory module과 상호작용 하는 feed-forward or LSTM과 같은 controller로 구성이 되어 있다고 합니다.

  •  Controller: FF network or Recurrent model. It reads from and writes to the memory
  •  Memory: memory matrix or memory blank는 정보가 저장되는 공간. 메모리는 일반적으로 memory cell들로 구성된 two-dimensional matrix로 구성되어 있다고 합니다. 또한, memory matrix는 N rows, M column을 포함하고 있다고 합니다.
  •  Controller를 이용하면, 연구자들은 memory의 contents에 접근할 수 있다고 하며, controller는 external environment로부터 input을 받고, memory matrix와 상호 작용하여 응답(contents)을 출력해 낸다고 합니다.
  •  Read and write heads: read head와 write head는 해당 정보가 어디로부터 읽어와야 하고 어디에 쓰여야 하는지에 대한 주소를 포함하는 pointer들이라고 합니다.

 

 또한, NTM은 external memory module에서 memory를 encode하고 retrive를 빠르게 한다고 합니다.

  •  LSTM, FF network를 사용하기에, gradient 기반의 최적화 방식을 이용하여 long-term storage가 가능하며, external memory module을 이용한 short-term storage가 모두 가능하기 때문에, low-shot prediction을 위한 meta-learning이 가능한 모델이라고 합니다.
  •  초기의 NTM은 gradient를 통해 read/write head를 학습시키는 방법에 대해서 제안을 제대로 하지 못했던 것 같습니다. (뇌피셜)

 

 그러나, NTM은 input의 type of representation 즉 contents를 아주 잘 활용하지는 못했던 것 같습니다. 저자들은 representation을 조금 더 활용하여 못 봤던 data에 대한 더욱 정확하고 빠른 예측을 위해 모델을 개선한 것 같습니다.

  •  초기의 NTM은 gradient를 통해 read/write head를 학습 시키는 방법에 대해서 제안을 제대로 하지 못했던 것 같습니다. (뇌피셜^2)

 

  • MANN

 제안된 모델에서 사용하는 controller들은 기존의 NTM과 같이 FF network or LSTMs가 될 수 있다고 함. 제어기는 memory로부터 표현을 retreive하거나 place 하는 등에 있어서 input x_t를 십분 활용하고자 함.

  • input x_t가 주어지면, controller는 memory matrix M_t의 행에 접근할 수 있는 key k_t를 만들어냄.
  • 이때, M_t는 cosine similarity measure를 이용해 특정 지어진다고 함.

 

 이를 이용해, read weight vector w^r_t를 만들어 낸다고 하며, memory r_t는 read weight vector를 통해서 retrive 된다고 합니다.

 

 해당 메모리는 controller에서 classifier의 입력으로써도 사용하고, next controller state의 입력으로써도 사용할 수 있다고 하는 것 같습니다.

 

  • Least Recently Used Access(LRUA)

 기존의 NTM에서, memory들은 content와 location에 대해서 address되었다고 합니다. location-based addressing은 sequence-based prediction task에는 장점을 가지고 있지만, sequence에 대해 독립적인 정보를 가지고 있는 Omniglot 분류 등의 task에는 좋은 방법이 아니었다고 합니다.

  •  이러한 이유로, 저자들은 memory에 정보를 써넣는 새로운 방법인 LRUA module을 제안했다고 합니다.

 

 LRUA 모듈은 least used memory location / most recently used memory location에 memory를 write 하는 순수 content-based memory writer라고 합니다.

  •  새로운 정보는 최근에 encoding된 정보를 보존하면서, 거의 사용하지 않는 위치에 기록되거나, 마지막으로 사용된 위치에 기록되며, 이는 보다 최신의 관련성 있는 정보로 메모리를 업데이트하는 기능을 할 수 있다고 합니다.

 

 이는 이전의 read weight들 사이의 내삽, 그리고 weight w^u_t의 크기에 따라 일련의 식을 통해 만들어진다고 하며, 이러한 usage weight들은 각 time-step에 다음과 같은 식을 통해서 업데이트된다고 합니다.

  •  이때, w^r_t는 위에서 계산된 식이며, least-used weights w^lu_t(i)는 w^u(t)를 이용해서 밑 밑 식을 통해 계산이 된다고 합니다. (m(v, n): n_th smallest element of the vector v, n: number of reads)

 

 또한, write weights w^w_t의 경우, learnable sigmoid gate parameter로써 얻어졌으며, 직전의 read weight와 직전의 least-used weight을 convex 하게 combination 했다고 합니다.

  • sigma: sigmoid function, alpha: scalar gate parameter.

 

 이렇게 write weight vector가 계산되면, memory에 정보를 써넣는 것은 다음과 같은 계산으로 이뤄진다고 합니다.

 

Code review(구두 설명)

class MANNCell():
    def __init__(self, rnn_size, memory_size, memory_vector_dim, head_num, gamma=0.95,
                 reuse=False):
        
        #initialize all the variables
        self.rnn_size = rnn_size
        self.memory_size = memory_size
        self.memory_vector_dim = memory_vector_dim
        self.head_num = head_num                                   
        self.reuse = reuse
        self.step = 0
        self.gamma = gamma
        
        #initialize controller as the basic rnn cell
        self.controller = tf.nn.rnn_cell.BasicRNNCell(self.rnn_size)
        
    def __call__(self, x, prev_state):
        prev_read_vector_list = prev_state['read_vector_list']     
        controller_input = tf.concat([x] + prev_read_vector_list, axis=1)
        
        #next we pass the controller, which is the RNN cell, the controller_input and prev_controller_state
        with tf.variable_scope('controller', reuse=self.reuse):
            controller_output, controller_state = self.controller(controller_input, prev_controller_state)
            
        num_parameters_per_head = self.memory_vector_dim + 1
        total_parameter_num = num_parameters_per_head * self.head_num
        
        #Initiliaze weight matrix and bias and compute the parameters
        
        with tf.variable_scope("o2p", reuse=(self.step > 0) or self.reuse):
            o2p_w = tf.get_variable('o2p_w', [controller_output.get_shape()[1], total_parameter_num],
                                    initializer=tf.random_uniform_initializer(minval=-0.1, maxval=0.1))
            o2p_b = tf.get_variable('o2p_b', [total_parameter_num],
                                    initializer=tf.random_uniform_initializer(minval=-0.1, maxval=0.1))
            parameters = tf.nn.xw_plus_b(controller_output, o2p_w, o2p_b)
        
        head_parameter_list = tf.split(parameters, self.head_num, axis=1)
        
        #previous read weight vector
        prev_w_r_list = prev_state['w_r_list']   
        
        #previous memory
        prev_M = prev_state['M']
        
        #previous usage weight vector
        prev_w_u = prev_state['w_u']
        
        #previous index and least used weight vector
        prev_indices, prev_w_lu = self.least_used(prev_w_u)
        
        #read weight vector
        w_r_list = []
        
        #write weight vector
        w_w_list = []
        
        #key vector
        k_list = []
    
        #now, we will initialize some of the important parameters that we use for addressing.     
        for i, head_parameter in enumerate(head_parameter_list):
            with tf.variable_scope('addressing_head_%d' % i):
                
                #key vector
                k = tf.tanh(head_parameter[:, 0:self.memory_vector_dim], name='k')
                
                #sig_alpha
                sig_alpha = tf.sigmoid(head_parameter[:, -1:], name='sig_alpha')
                
                #read weights
                w_r = self.read_head_addressing(k, prev_M)
                
                #write weights
                w_w = self.write_head_addressing(sig_alpha, prev_w_r_list[i], prev_w_lu)
           
            w_r_list.append(w_r)
            w_w_list.append(w_w)
            k_list.append(k)

        #usage weight vector 
        w_u = self.gamma * prev_w_u + tf.add_n(w_r_list) + tf.add_n(w_w_list)   

        #update the memory
        M_ = prev_M * tf.expand_dims(1. - tf.one_hot(prev_indices[:, -1], self.memory_size), dim=2)
        
        #write operation
        M = M_
        with tf.variable_scope('writing'):
            for i in range(self.head_num):
                
                w = tf.expand_dims(w_w_list[i], axis=2)
                k = tf.expand_dims(k_list[i], axis=1)
                M = M + tf.matmul(w, k)

        #read opearion
        read_vector_list = []
        with tf.variable_scope('reading'):
            for i in range(self.head_num):
                read_vector = tf.reduce_sum(tf.expand_dims(w_r_list[i], dim=2) * M, axis=1)
                read_vector_list.append(read_vector)
        
        #controller output
        NTM_output = tf.concat([controller_output] + read_vector_list, axis=1)

        state = {
            'controller_state': controller_state,
            'read_vector_list': read_vector_list,
            'w_r_list': w_r_list,
            'w_w_list': w_w_list,
            'w_u': w_u,
            'M': M,
        }

        self.step += 1
        return NTM_output, state

    #weight vector for read operation   
    def read_head_addressing(self, k, prev_M):
        
        "content based cosine similarity"
        
        k = tf.expand_dims(k, axis=2)
        inner_product = tf.matmul(prev_M, k)
        k_norm = tf.sqrt(tf.reduce_sum(tf.square(k), axis=1, keep_dims=True))
        M_norm = tf.sqrt(tf.reduce_sum(tf.square(prev_M), axis=2, keep_dims=True))
        norm_product = M_norm * k_norm
        K = tf.squeeze(inner_product / (norm_product + 1e-8))                  
        K_exp = tf.exp(K)
        w = K_exp / tf.reduce_sum(K_exp, axis=1, keep_dims=True)               
        
        return w
    
    #weight vector for write operation
    def write_head_addressing(sig_alpha, prev_w_r_list, prev_w_lu):
        return sig_alpha * prev_w_r + (1. - sig_alpha) * prev_w_lu     
    
    #least used weight vector
    def least_used(w_u):
        _, indices = tf.nn.top_k(w_u, k=self.memory_size)
        w_lu = tf.reduce_sum(tf.one_hot(indices[:, -self.head_num:], depth=self.memory_size), axis=1)
        return indices, w_lu

    
    #next we define the function called zero state for initializing all the states - 
    #controller state, read vector, weights and memory
    def zero_state(self, batch_size, dtype):
        one_hot_weight_vector = np.zeros([batch_size, self.memory_size])
        one_hot_weight_vector[..., 0] = 1
        one_hot_weight_vector = tf.constant(one_hot_weight_vector, dtype=tf.float32)
        with tf.variable_scope('init', reuse=self.reuse):
            state = {
                'controller_state': self.controller.zero_state(batch_size, dtype),
                'read_vector_list': [tf.zeros([batch_size, self.memory_vector_dim])
                                     for _ in range(self.head_num)],
                'w_r_list': [one_hot_weight_vector for _ in range(self.head_num)],
                'w_u': one_hot_weight_vector,
                'M': tf.constant(np.ones([batch_size, self.memory_size, self.memory_vector_dim]) * 1e-6, dtype=tf.float32)
            }
            return state

혹시나 끝까지 봐주신 분이 계시다면, 봐주셔서 감사하다는 말씀을 드리며 마무리 짓겠습니다!

가짜연구소 5기 멀티태스크메타러닝-초읽기 아카데믹 러너 활동을 통해 위의 논문을 읽게 되었습니다.

노션을 복붙 해오니 영 마음에 들진 않지만..! 제가 주로 다루는 분야가 아니기에, 가볍게 정리하는 느낌으로 가져가 볼까 합니다.

 

One-shot Learning with Memory-Augmented Neural Networks

Abstract

  •  최근, DNN의 적용 사례들에도 불구하고, 아직 까지도 지속적인 어려움을 주고 있는 컨셉 중 하나는 “one-shot learning”이라고 함.
  •  전통적인 gradient 기반의 네트워크들은 학습을 위해 많은 데이터와 함께, 종종 광범위한 반복 적인 학습을 요구한다고 함. 모델이 새로운 데이터를 마주쳤을 때, catastrophic interference 없이 새로운 정보를 적절히 통합하기 위해서는, 그들의 파라미터를 비효율적 이게도, 다시 학습해야만 한다고 함.
  •  NTM과 같은 augmented memory capacities를 가지고 있는 구조는 새로운 정보를 빠르게 encode and retrieve 할 수 있는 능력을 제공하고, 그러므로 conventional model들의 단점들을 잠재적으로 피해갈 수 있다고 함.
  •  이 논문에서, 저자들은 memory-augmented neural network가 빠르게 새로운 데이터와 친해지고, 단지 몇 샘플들 만으로도 정확한 예측을 하기 위해, 이 데이터들을 활용하는 능력을 보여준다고 함.
  •  또한, 저자들은 추가적인 memory location-based focusing mechanism을 이용하는 이전의 기법들과 달리, memory contents에 초점을 맞춘 external memory에 접근할 수 있는, 새로운 기법을 제안한다고 함.

 

Introduction

 DL의 현재의 성공은 gradient 기반의 최적화를 high-capacity model들에 적용하는 능력에 달려 있다고 함.

  •  이러한 접근은 많은 대규모의 지도학습 태스크들에서 인상적인 결과들을 달성해 왔다고 함. (image classficiation, speech recognition, game 등등).

 명백히, 이러한 태스크에서의 성능들은 large data set에서의 광범위하고 점진적인 학습 이후에 평가되었다고 함.

  •  대조적으로, 많은 흥미로운 문제들은 적은 양의 데이터로부터 빠르게 inference하는 것을 필요로 한다고 함. “one shot learning”에서의 한계로, single observation들은 행동의 급격한 변화를 가져와야 한다고 함?

 이러한 종류의 유연한 적응은 human learning의 유용한 측면이며, motor control로부터 추상 컨셉 획득??까지 다양하게 나타난다고 함.

  •  하나 혹은 둘 정도의 문맥들 만으로 새로운 세계의 full range of applicability를 추론해내는 등, 몇 조각의 정보들로부터 추론해낸 정보를 기반으로 새로운 행위를 만들어 내는 것은 현재의 machine intelligence가 도달한 것을 아득하게 뛰어넘는 무언가로 남겨져 있다고 함.
  • 또한, 이는 deep learning에겐 특히나 벅찬 도전 요소를 제공한다고 함

 

 몇몇 example들이 하나씩 주어지는 상황에서, gradient-based solution은 해당 순간마다 data로부터 parameter들을 완전히 재 학습해야 한다고 언급.

  •  이러한 상황에서, 위험도의 관점에서 non-parametric method들이 종종 더욱 적합한 것으로써 여겨진다고 함. (이 부분은 실험을 통해 보여줌)

 

 그러나, 이전의 작업들은 sparse data로부터 빠른 학습에 도달하기 위한 meta-learning이라는 개념의 하나의 잠재적인 전략을 제안했습니다.

  •  비록 해당 term은 다양한 sense로(뉘앙스 같음) 사용되어 왔지만, meta-learning은 일반적으로 agent가 두 단계로 학습하며, 각 단계는 different time scale과 연관되어 있는 시나리오를 말한다고 합니다. ⇒ 큰 데이터로 주구장창 배우고, 몇몇 데이터로 few shot 하는 느낌의 얘기 일까용?

 

 빠른 학습은, ‘태스크 내에서’ 발생하는데, 예를 들면 특정 데이터셋 내에서 정확하게 분류하는 방법을 학습할 때 발생합니다. 이 학습은 ‘태스크 전반에 걸쳐’ 점진적으로 축적된 지식에 따라 진행이 되며, 이는 task의 구조가 타겟 도메인에 따라 변하는 방식을 capture합니다.

  • 이러한 two-tiered 구조가 주어지면, 이러한 형태의 meta-learning은 종종 learning to learn으로 묘사된다고 합니다.

 

 meta-learning과 관련된 능력이 있음을 보여온, memory capacity를 가지는 neural network들이 제안되어 왔다고 합니다(Hochreiter et al, 2001). 이러한 신경망들은 weight update를 통해 그들의 bias를 shift할 뿐만 아니라, memory내의 cache representation을 빠르게 학습하여 출력을 조절한다고 합니다.

  •  예를 들어, 메타 학습을 위해 훈련된 LSTM들은 적은 수의 data sample들 만으로 never-before seen quadratic function들을 빠르게 학습할 수 있었다고 합니다. (Hochreiter et al, 2001)

 

 memory capacity를 가지는 NN은 deep network내에서 meta-learning을 위한 유망한 접근 법을 제공한다고 합니다.

  •  하지만, 구조화되지 않은 recurrent architecture에서의 내재적인 memory를 사용하는 특정 전략은, 새로운 정보가 rapily encoded 되기 위해서, 상당히 많은 양의 새로운 정보를 요구하기 때문에, 확장성이 있는 셋팅은 되지 않을 것 같다는 비판을 하는 것 같습니다… 너무 어렵게 쓰는데요..ㅠ

 

 Scalable solution은 거의 적은 필요조건들을 가지고 있어야 한다고 주장합니다. 1) 정보는 안정적이고, element-wise로 접근이 가능한 형태로, 메모리에 저장이 되어야 합니다. (필요할 때 안정적으로 접근할 수 있어야 하며, 관련 정보의 조각들에 선택적으로 접근할 수 있어야 합니다.) 2) parameter들의 숫자는 memory의 size와 연관이 있으면 안 됩니다.

  •  이러한 두 개의 특성은 LSTM류와 같은 기존의 memory architecture 내에서는 자연스럽게 발현되지 않는 특성이라고 함.

 

 그러나, Neural Turning Machines(Graves et al, 2014), memory network(Weston et al, 2014)과 같은 최근의 아키텍처들은 이러한 요구 조건을 만족한다고 합니다.

  •  그리고 또한, 이 논문에서 저자들은 meta-learing problem에 revisit 하며, higly capable memory-augmented neural network 관점으로부터 meta-learning problem을 setup 한다고 하네용.
  •  또한, MANN은 external-memory equipped NN이라고 부르고, LSTM과 같은 memory-based architecture들을 “internal”로 퉁쳐서 부르겠다고 합니다.

 

 저자들은 MANNs가 상당히 짧은 term과 긴 term의 memory demands를 수행하는 task들에서 meta-learning을 할 수 있는 능력을 보여 주었다고 합니다.

  • 본 적 없는 Omniglot class들을 거의 사람과 같은 정확도로 분류해내는 데 성공하여 이런 것을 명백히 했다고 하네요.

 

 더욱이, 저자들은 content로 접근 가능한 memory access module을 강조하였으며, NTM과 같은 추가적인 memory location을 사용하지 않았다고 합니다.

 

 그러면, 같이 한 번 methdology와 실험을 보시죠!

 

Methodology

Meta-learning task Methodology

저자들은, 보통 하듯이 Dataset D들로부터 cost L을 최소화하는 parameter theta를 선택했다고 합니다. 그러나, meta-learning을 위해서는, 저자들은 expected leanring cost across a distribution of dataset p(D)를 감소시키기 위해 parameter를 선택했다고 합니다.

이를 달성하기 위해서는, 적절한 task setup이 매우 중요하다고 합니다. 저자들의 setup에서, task 혹은 episode는 some dataset D={d_t}^T_t=1의 제공을 포함한다고 합니다.

 

(중략)

 

 궁극적으로, 이 system은 예측 분포 p(y_t | x_t, D_(1:t-1); theta)를 모델링하여, 각 time step에 대응하는 loss를 유도하는 것을 목표로 한다고 합니다.

 

 이 task structure는 exploitable meta-knowledge를 통합한다고 합니다. meta-knowledge: 메타 학습 모델은 데이터 표현 또는 레이블의 실제 내용에 관계없이 데이터 표현을 적절한 label로 라벨링 하는 방법을 배우고, 이러한 표현을 예측하기 위한 적절한 클래스 또는 함숫값에 매핑하는 일반적인 전략을 사용한다고 합니다.

 

Memory-Augmented Model

Neural Turing Machines(NTM)

 NTM은 MANN의 fully differentiable한 구현체라고 합니다. 이 모델은 read and writh heads들을 이용해 external memory module과 상호작용 하는, FF or LSTM과 같은 controller로 구성되어 있다고 합니다. NTM은 또한, external memory module에서 memory encoding and retrieval은 빠르다고 합니다.

  •  이 능력은 NTM이 wiehgt update를 통한 long-term stroage와 external memory module을 이용한 shor-term strage가 모두 가능하기 때문에, meta-learning and low-shot prediction의 완벽한 후보가 될 수 있게끔 해준다고 하네요.

 

 그래서, 만약 NTM이 types of representation을 memory에 place할 수 있고, 예측을 위해 이러한 표현들을 나중에 어떻게 사용할지 등에 대한 일반적인 전략을 학습할 수 있다면, 한 번밖에 못 봤던 data의 정확한 예측을 빠르게 만들어 낼 수 있는 능력을 사용할 수 있다고 함.

 

 제안된 모델에서 사용하는 controller들은 LSTMs or FF network이 될 수 있다고 함. 제어기는 memory로부터 표현을 retreive하거나 place하는 등에 read write를 사용하는 external memory와 상호작용 한다고 함.

  • input x_t가 주어지면, controller는 memory matrix M_t의 행에 접근할 수 있는 key k_t를 생산해내는 느낌.
  • memory에서 retrive할 때, M_t는 cosine similiarity measure를 이용해서 addressed 된다고 함.

 

이는 read_weight vector w^r_t를 만들어낼 수 있다고 함.

 

더욱이, memory r_t는 weight vector를 통해서 retrive 된다고 합니다.

 

 해당 메모리는 controller에서 classifier의 입력으로써 사용되고 next controller state의 입력으로써도 사용된다고 하는 것 같습니다.

 

Least Recently Used Access(LRU access)

 이전의 NTM에서, memory들은 content와 location에 대해서 address되었다고 합니다. location-based addressing은 tape를 따라서 달리는 것 혹은 long-distance jumpts across memory하듯 iterative step을 촉진하는 데 사용되었었다고 하네요.

  • 이 기법은 sequence-based prediction task에 장점을 가지고 있다고 합니다.
  • 그러나, 이러한 aceess type은 sequence에 독립적인 정보를 가지고 있는 task에는 최적이 아니라고 합니다.

 

 이러한 이유로!! writing to memory in our model은 새로이 디자인된 LRUA module을 포함하고 있다고 하네용

 

 LRUA 모듈은 least used memory location이나 most recently used memory location에 memory를 write하는 pure content-based memory writer라고 합니다.

  •  이 모듈은 information과 관계된 정확한 encoding을 강조하고, qure content-based retrival을 강조한다고 하네요 음?
  •  새로운 정보는 recently encoded된 정보를 보존하면서, 거의 사용되지 않는 위치에 기록되거나, 마지막으로 사용된 위치에 기록되며, 이는 보다 최신의 관련성 있는 정보로 메모리를 업데이트하는 기능을 할 수 있다고 합니다.

 

 이 두 개의 옵션의 차이는, 이전의 read weight들 사이의 interpolation, 그리고 weight의 scale에 따라 만들어진다고 하네용. 이러한 usage weight들은 각 time-step에 다음과 같은 prevous usage weights와 current read/write weights들을 이용해서 업데이트된다고 합니다.

  •  이때, gamma는 decay parameter이고, w^r_t는 위에서 계산된다고 합니당. the least-used weights w^lu_t는 w^u_t를 이용해서 2번째 식으로 계산된다고 합니다. (이때, n은 memory의 number of reads와 같다고 합니다.)

 

 또한, write weights w^w_t를 얻기 위해, learnable sigmoid gate parameter가 previous read wiehts와 previous least-used weights를 convex combination 하기 위해 사용되었다고 합니다.

  •  이때, sigma(.)이 sigmoid function이고, alpha는 scalar gate parameter라고 합니다. memory에 writhe를 하기 이전에, least used memory location은 w^u_(t-1)로부터 계산되고, 이는 set to zero가 된다고 합니다.

writing to memory는 write weithgs의 vector를 계산한 이후에 바로 일어난다고 하네요.

 그래서, 메모리들은 zeroed memory slot에 write되거나, previous used slot에 write 된다고 하고, least used memory는 간단히 제거가 된다고 합니다.

 

Experimental Results

Data

 두 개의 sources of data가 사용되었다고 합니다. classification을 위한 Omniglot, 그리고 regression을 위한 fixed hyperparameter를 가진 GP로부터 sampling된 functions.

 

 Omniglot dataset은 클래스별로 예제가 많이 없는, 1600개 이상의 분리된 클래스로 이루어진 데이터 셋이라고 하며, MNIST의 transpose라고 불린다고도 합니다. overfiting의 risk를 줄이기 위해서, 저자들은 data augmentation을 사용했다고 합니다.

  •  model을 학습시킬 때에는 1200개의 original classes(with augmentations)의 데이터를 사용했으며, 나머지 423개의 classes(with augmentation)은 test experiment에 사용되었다고 합니다. 또한, 계산 시간을 줄이기 위해 image를 downscale 했다고 하네요.

 

Omniglot classification

 class label을 one-hot vector 표현으로 하여 학습을 수행했다고 합니다. 100,000 episode의 학습 이후, network에게는 never-before-seen classes로 이뤄진 series of test episodes가 주어졌다고 합니다.

  •  해당 모델은 two shot에서도 82.8%의 high classification accuracy를 보여주었다고 하며, fifth instance, tenth instance들을 보여줌에 따라 정확도가 94.9%, 98.1%에 도달하는 것을 보여주었다고 합니다.

 

 또한 조금은 복잡한 방식으로….ㅎㅎ 사람에게 유사한 task를 시킨 다음 사람이 수행한 결과와 MANN의 성능을 비교해 본 결과, 각 instance 들에서 사람을 뛰어넘는(surpass) 성능을 보여주었다고 합니다.

 

 large one-hot vector를 이용하여 classifier의 wieht들을 학습하는 것은 scale이 증가함에 따라 점점 어려워지기 때문에, 클래스에 label을 지정하는 다른 접근 방식을 사용해, 주어진 에피소드에서 제공되는 클래스의 수를 임의로 늘릴 수 있다고 합니다.

  •  이러한 새로운 label은 five character로 이루어진 string으로 구성되었다고 하며, 각 character는 5개 중 하나의 value를 가질 수 있게끔 설정했다고 합니다. {’a’, ‘b’, ‘c’, ‘d’, ‘e’} 허허…
  •  srting들은 one-hot vector로 표현된 후, concat되어 25 만큼의 길이를 가진 vector로써 사용되었다고 하네요. 이러면 3125개의 class를 표현할 수 있는데, omniglot이 1600여 개여서 이렇게 했다고 하는 것 같습니다.

 

 제안하는 network가 이러한 class 표현을 이용해서 학습할 수 있는지 확인하기 위해, 실험을 다시 수행해 보았다고 합니다. 그랬더니, MANN with a standard NTM access module은 MANN with LRU access module에 미치지 못하는 성능을 명백하게 보여주었다고 합니다.

 

 또한, 저자들은 set of baseline으로써 feed-forward RNN, LSTM and a nonparametric nearst neighbours classifier that used either raw-pixel input or features extraced by an autoencoder 등등을 고려했다고 합니다.

  •  autoencoder 기반 분류기의 경우, MANN보다 많은 parameter를 가질 수 있게 설정하였고, 3배의 augmented data를 통해 학습을 시켰다고 합니다. 그럼에도 불구하고 더 좋은 성능을 냈다고 하네요ㄷㄷ
  •  또한, 도입부에서 언급한 것처럼, non-parametric approach인 kNN계열의 분류기가 gradient-based parametric model인 FF, LSTM 등등보다 더 좋은 성능을 낸 것도 재미있는 결과인 것 같습니다.

 

CURRICULUM TRAINING

 episodes with fifteen classes에서의 one-shot classification task에서 성공을 얻은 이후, 저자들은 classification capability를 늘리기 위해, curriculum training regime를 사용해 보았다고 합니다.

  •  그리하여, 해당 모델은 episode별로 fifteen class를 구별하는 태스크를 학습시키고, 10000개의 episode마다, episode당 제공되는 최대 클래스를 하나씩 증가시켜보았다고 합니다.

 

 그 결과로, network는 training 동안 높은 정확도를 유지하였고, 100,000 episode가 지난 뒤에는(25 개의 class로 학습이 된 꼴) 50개의 class까지 잘 분류해 냈다고 하는 것 같습니다. 이렇게 학습을 계속하였더니, 100개의 class까지는 잘 증가하였다고 합니다.

 

Regression

 저자들의 MANN 아키텍처는 meta-leraning을 위한 broad strategy를 만들어 냈기 때문에, 해당 모델이 never-before-seen function에 대한 regression task를 잘 수행하는지에 대해서 확인하고자 했다고 합니다.

  •  이를 실험하기 위해, fixed set of hyper parameter들을 가지는 GP prior로부터 생성되는 함수들로 학습을 수행했다고 합니다.

 

입력으로는 x값과 time-offset function value f(x_(t-1))을 받았다고 하네요. 그 후, x_t를 예측하는 task인 것 같습니다.

 

 제안하는 모델의 성능은, network에서 학습한 것과 동일한 순서로 제공된 sample의 실제 GP 예측과 비교되었다고 합니다.

  •  중요한 점은, GP는 모든 data point에 대한 복잡한 query를 수행하는 것이 가능한 모델이라고 합니다.
  •  이에 비해, MANN은 메모리에서 local update만을 수행하는 것이 가능하므로, GP의 기능을 대략적으로만 수행할 수 있다고 합니다.

 

 Figure 5에서 볼 수 있듯, MANN 예측은 제공된 함수를 잘 따라가며, 이미 학습한 함숫값과 거리가 먼 값을 예측할 때에는 분산이 증가하는 것을 확인할 수 있었다고 합니다.

1

 

또한, 2 dim, 3-dim의 경우로 문제를 더욱 확장하였을 때에도 어느 정도 좋은 성능을 보여주었다고 합니다.

 

Discussion & Future work

 많은 중요한 learning problem은 small amount of data로부터 빠르게, 그리고 새로운 정보에 대해서 조정이 가능할 수 있게 끔 지적으로?, 타당한 추론을 이끌어내는 능력을 요구한다고 합니다.

 이러한 문제들은 일반적으로 느리고, 점진적으로 파라미터가 바뀌는 deep learning에 있어서는 특히 어려운 점이라고 합니다.

저자들은 meta-learning의 idea를 기반으로 하여 이 문제에 접근해 보았다고 합니다.

  •  해당 논문에서, 점진적인 학습은 작업 전반에 걸쳐있는 background knowldedge를 encoding하는 반면, 보다 유연한 memory resource는 새로 마주치는 task들에 특정한 정보를 binding한다고 합니다.

 

저자들의 핵심 contribution은 meta learning을 위한 MANN의 유용성을 입증하는 것이라고 합니다.

  •  이는 프로세스 제어를 구현하는 메커니즘으로부터 구조적으로 독립적인, 주소 지정이 가능한 전용 메모리 리소스를 포함하는 딥러닝 아키텍처라고 합니다.
  •  해당 MANN은 희소 데이터 만을 사용하는 classification, regression 두 개의 meta-learning task들에서 LSTM보다 우수한 성능을 보여주는 것으로 확인되었다고 합니다.

 

“Inductive transfer”에 대해 언급.

 

 Meta-leraning은 human intelligence의 core ingredient로써 인식되고 있다고 함. DNN에서의 huan skill들을 모델링하는 것에 있어서 최근의 성공들을 감안할 때, MANN이 human meta learning의 메커니즘에 대한 promising hypothesis를 내포하는 지를 묻는 것은 가치가 있다고 함 음..?

 

 그러면서, 사람도 이긴 MANN의 성능을 강조. 하지만, memory가 task사이에서 비어있지 않을 때, MANN은 proactive interference로부터 고통을 받는다고 함. 이는 human memory and inference들에서 많이 연구되어 왔다고 함.

 

해당 연구를 제안하면서, 저자들은 next-stage development에 대한 몇몇 opening을 남겨두었다고 합니다.

  1. 저자들의 실험은 classification, regression 등의 task에 매우 적합한, 메모리에 writing하기 위한 새로운 절차를 구현해 낸 것이라고 함. meta- learning이 optimal memory addressing procedure를 스스로 발견할 수 있는지 여부에 대한 것을 고려하는 것이 흥미로울 것이라고 함
  2. 비록 저자들은 MANNs를 episode에 따라 task parameter가 변하는 셋팅에서 실험을 수행하였지만, 연구된 task들은 높은 수준의 high-level structure의 공유를 포함하고 있다고 함… 음 ⇒ 조금 더 넓은 범위의 task에 대한 학습은 catastrophic interference의 위험을 포함하는, continual learning과 관련된 standard challenge들을 다시 불러올 수 있을 수 있다고 합니다.
  3. 마지막으로, observation이 active하게 선택되어야 하는, active learning이 요구되는 meta-learning task들에서 MANN의 성능을 조사하는 것이 흥미로울 것 같다는 얘기를 남겼습니다.

 가짜연구소 5기 멀티태스크메타러닝-초읽기 아카데믹 러너 활동을 통해 위의 강의를 듣게 되었습니다.

 

 해당 스터디 활동의 조건은, 스터디에 참여하지 않은 사람들도 공부를 함께 할 수 있도록 하는 것이 원칙 중 하나기에, 스터디 과정 내 요약한 강의 요약본을 포스팅하게 되었습니다. 부족한 점이 있겠지만, 재미있게 봐주시면 감사하겠습니다!

 

Editor: 백승언

강의 슬라이드 링크: http://cs330.stanford.edu/fall2020/slides/cs330_intro.pdf

강의 링크: https://www.youtube.com/watch?v=0KWT9wIYoF8&list=PLoROMvodv4rOxuwpC_raecBCd5Jf54lEa

 

목차

  Plan for today

  Multi-task learning

    Model

    Objective

    Optimization

    Challenges

 

Plan for today

 이번 강의에서는 Multi-Task(MT) learning을 주로 다루며, transfer learning의 basic에 대해서도 다소 다룬다고 하심.

 

 MT learning에 대해서는 문제 정의, model, objectives, optimization 등에 다루고, 그다음 case study들에 대해서 다룬다고 하심. (이번 리뷰에서, case study는 제외했습니다!)

  • Youtube의 recommender system 등

 

Multi-task learning

MT learning에 대해 다루기 전에, 먼저 이후 강의에서도 사용할 notation에 대해서 먼저 정리해 주심.

  • x: input, y: output or label
    • 이미지, 텍스트 등등에 대해 사례를 들어 재밌게 설명해 주심
  • theta: parameters of neural network
  • neural network는 f_theta(y|x)로 표현!
  • Dataset D: input output pair
  • L: loss function

 

  또한, task는 무엇인지에 대해서 다시 formal하게 정의해주심.

  • A task: data set의 분포인 p_i(x), x에 대해 추론된 y의 분포인 p_i(y|x), 특정 task i에 대한 loss function L_i가 있을 때, task는 그것들의 집합으로써 정의됨.
    • T_i := {p_i(x), p_i(y|x), L_i}
    • 또한, task별로 training data set D_i^tr, D_i^test에 대해서도 notation을 알려주심. D_i^tr은 D_i로 편하게 쓰겠다고 하심!

 examples of multi-task problem에 대해서도 설명해주심

  • Multi-task classification
    •  오른쪽 위의 per-language handwriting recognition과 같은 task들의 경우, 모든 task의 loss function이 cross entropy로 동일.
    • spam filter의 경우도, L_i는 동일. 하지만 p(x)와 p(y|x)가 다름.
  • Multi-label learning
    •  loss function L_i, p_i(x)는 동일. 하지만, p(y|x)가 다름. 이것에 대한 예시로, scene understanding을 예제로 설명해주심.
    •  예제로 들어주신 scene understanding의 경우, 하나의 사진에서 instance segmentation, depth prediction 등 여러 task에 대한 label이 주어지고, 사진 하나에 대해 각 task들을 모두 예측/분류하는 것이 목표인 multi-task.
      • L_i가 동일하다고 표현하신 이유는, task별 loss function들을 weight하여 합쳐서 사용했기에 그런 것 같음.
  • 그러면, 언제 L_i가 task에 따라 달라질 수 있는가?
    • mixed discrete, continuous labels across task ⇒ 이해 정확히 안 됨
    • multiple metrics that you care about
      • spam filter의 경우, 해당 mail이 spam인지 ham인지
      • 추천 시스템의 경우, 유저의 개인별 만족도 등이 metric이 되는 경우

 

 model을 어떻게 학습하는가? task descriptor z_i를 통해 task들이 condition될 수 있다는 것을 가정하고 학습을 수행한다고 하심.

  • model의 input으로 task descriptor z_i를 입력받아서 model이 어떤 task를 해야 하는지 알려주는 컨셉
  •  이러한 z_i는 task의 개수에 따라 단순히 one-hot encoding으로 사용할 수도 있고, user혹은 language별 meta-data 등이 될 수 도 있다고 하심

 

 또한, Vanilla MTL objective function에 대해서 말씀하심. theta에 대해서, 모든 Loss L_i들을 각자의 task data set D_i에 대해 계산하여 합친 후, 최소화시키는 것.

 

 이 슬라이드 이후에는, the model, the objective and the optimization 기법들에 대해서 설명하고, 어떻게 z_i를 조건화하는지, 어떤 objective function을 사용해야 하는지, objective function을 어떻게 최적화해야 하는지에 대해서 말씀한다고 하심

 

Model

How should the model be conditioned on z_i?

what parameters of the model should be shared?

 

model이 어떻게 task에 대해서 condition될 것인가?

⇒ 기본적으로, z_i를 one-hot task index라고 가정해보자!

그러면, 어떻게 이런 z_i를 share할 것인가?

 

Conditioning on the task

 각 task별 model들은 독립적으로 학습시키고, 마지막에 gating 방식으로 하여 z_i를 사용하는 첫 번째 컨셉. 각 모델은 각기 다른 weight들로 수렴하도록 학습을 하게 됨.

 이전의 컨셉과 대척점에 있는 컨셉으로써, 단지 z_i를 거의 마지막 혹은 middle 쪽에 더해줌으로써, 각기 다른 task들이 모든 parameter들을 share하는 컨셉.

  •  z_i가 one-hot이라면, z_i에 바로 따라오는 weight의 경우, task별로 0 혹은 1이 곱해지기 때문에, 이 친구는 share에서 예외다! 라는 설명을 해주심

 

An alternative view on the multi-task architecture

 위의 컨셉과는 다른 방법으로써, 모델의 parameter theta를 shared parameter theta^sh와 task-specific parameter theta^i로 나누는 컨셉을 설명해주심

 

 몇몇 일반적인 conditioning 방법들에 대해서 설명을 해주심

Conditioning examples

 z_i를 input 혹은 중간의 정보에 concatenate하거나, 더하는 케이스. 이 두 가지는 정확히 같은 방법인데, 그 이유는 아래 그림처럼 z_i에 w_(z_i)를 곱하고 더하는, 일련의 계산 과정이 동일하기 때문이라는 것을 설명해주심.

 

 multi-head architecture: shared representation을 입력받은 후, task-specific layer들로 분기하는 형태의 구조.

multiplicative conditioning: z_i가 더해지면, 이를 linear layer를 통과시킨 후, input의 representation과 곱하는 형태의 구조.

  • ⇒ 이게 good idea인 이유는, adding, concatenating보다 더욱 표현력이 좋을 수 있기 때문(DNN이 universal appriximate estimator라는 것을 언급).
  • 또한, 앞서 언급된 independnet network, independent head의 일반화된 형태라는 것을 언급해주심

 

 추가적으로, 핀 교수님은 복잡한 conditioning example중의 일부를 가져와서 소개해주심. 어질어질하군용

불행하게도, 이러한 설계들은 1) 문제에 의존 적이고, 2) 연구자의 직관이나 지식에 의존적이며, 3) 과학보다는 art에 가까운 측면을 가지고 있다고 하심

 

Objective

How should the objective be formed?

 연구자들은 종종 vanilla MTL objective function을 그대로 사용하기보다는, task별로 weight을 다르게 주는 것을 원했다고 합니다. (맨 위 왼쪽 식 ⇒ 오른쪽 식)

 

 그러면, “task별로 이러한 weight들을 어떻게 선정할 것인가?”가 MTL에서의 objective function을 설계하는 데 있어 핵심적인 질문이 된다고 합니다.

 

 이를 manually tuning할 수도 있지만, 이는 좋은 방법이 아니라고 하심. 그러면서 이러한 weight들을 자동으로 조정하는 방법에 대해서 소개를 해주심

  •  various heuristic ⇒ gradients들이 simillar magnitude를 가질 수 있게끔 weight을 정해주는 방법(ICML 2018)
  •  task uncertainty를 사용하는 방법 ⇒ 특정 task의 uncertainty가 크다면, 해당 task의 uncertainty를 작게 만들 수 있도록 w_i를 튜닝하는 방법..! (CVPR 2018)
  •  pareto optimal solution을 향해, 점진적으로 개선하는 것 (Nips 2018)
  •  worst-case task loss를 최적화하는 것. (or task robustness or for fairness)

 

Optimization

How should the objective be optimized?

 설계된 objective를 어떻게 최적화할 것 인지에 대한 주제도 간단히 다룸. 먼저, basic version에 대해!

  •  먼저, task가 몇 개 안 된다면 모든 task에서 data를 sampling할 수도 있을 것이고, task가 많다면 task별로 mini-batch datapoints를 sampling할 수도 있을 것임.
  • 이에 대해서 loss를 계산하고, loss를 통해 gradient를 계산 ⇒ backprogate, ⇒ applying gradient!
  • 이때, loss의 scale이 동일할 수 있게, task별 loss에 weight을 곱해주는 과정이 필요할 수 도 있다는 얘기를 해주심

 

이다음 장부터는, MTL에서의 challenging components에 대해서 다룬다고 하심.

 

Challenges

 첫 번째로, negative transfer에 대해서 언급. 가끔은 independent network가 좋더라… Why?

  •  먼저, 최적화 과정에서의 어려움이 있기 때문. cross-task interference가 gardient를 어지럽힐 수 있고, 각 task들의 learning rate가 다를 수도 있다는 점을 언급해주심
  •  또한, limited representational capacity를 언급해주심. multi-task network는 종종 single-task network에 비하여 더욱 큰 capacity를 요구한다고 하심

 만약, negative transfer 현상이 발견되면, task별 shared parameter를 직접적으로 sharing하는 것이 아니라, soft하게 sharing하는 방법을 제안해주심.

  •  soft sharing의 경우, 저는 최적화 문제에서의 hard constraint / soft constraint와 비슷한 느낌으로 이해가 되는 것 같습니다.

 두 번째 어려운 요소로써, overfitting에 대해서 언급하심. 이는 충분히 sharing하지 않기 때문에 발생하는 문제라고 하네요..! MTL은 regularizing의 하나라고 간주할 수 있다고 하시며, 이를 해결하기 위해서는 sharing하는 parameter의 양을 늘리면 좋다고 추천해주셨습니다.

 

혹시나 끝까지 봐주신 분이 계시다면, 봐주셔서 감사하다는 말씀을 드리며 마무리 짓겠습니다!

클릭해 주셔서 감사합니다.

 

GNN 논문 리뷰 연재 첫 번째 글이며, 계획한 GNN 연재 분 중 두 번째 순서의 글입니다.

 

 현생에 밀려, 2022년엔 글을 거의 쓰지 못하다 보니, 여러 아쉬움이 들었던 것 같습니다. 그리하여, 이번 달부터라도 글을 열심히 써보고자 합니다!

 

 최근 들어, 강화학습과 더불어서 Graph Neural Network에도 많은 관심을 가지고 있습니다. 7-9월간 오프라인 스터디를 주선하여 논문 스터디를 할 정도로, 진지하게 공부를 했었습니다.. 물론, 현재 맡은 직무와도 어느 정도 관련도 있구요...ㅎ 어쨌든!

 

 본론으로 돌아와, 이번 논문 리뷰글은 Graph LSTM이라고 하는, 특히 vision task에서, 기존의 sequential한 데이터만 다룰 수 있던 LSTM 구조를 Graph structure로 일반화한 Graph LSTM에 대한 내용으로 이루어져 있습니다. Graph LSTM의 컨셉을 간단히 말씀드리면, "이웃 정보를 선택적으로 활용(학습)할 수 있는 LSTM" 이라고 할 수 있을 것 같습니다.

 

그럼, 본격적인 리뷰 시작하겠습니다!

 

 논문의 제목은 굉장히 task specific합니다. Semantic object parsing이라는 특정 태스크를 타겟으로, 그 태스크를 잘 해결하기 위해 Graph LSTM이 제안되었다는 느낌이 슬슬 옵니다. 원래는, spatio-temporal 즉, 시공간 데이터를 임베딩 할 수 있는 Graph Neural Network 알고리즘이라고 생각하고 논문을 골랐는데, 잘못 골라 버렸습니다ㅠ. 그래도 수준 있는 비전 논문을 처음 읽어 봤는데, 좋은 경험이었던 것 같습니다.

 

 목차는 다음과 같습니다.

 

 가장 먼저, 도입부에서는, 저자들이 해결하고자 한 task인 semantic object parsing이라고 하는 task가 어떤 것인지에 대해 먼저 말씀드리고자 합니다. 논문을 이해하고자 함에 있어, 중요한 부분일 뿐만 아니라, 제가 잘 모르는 분야이기에 따로 준비를 했습니다. 그다음, image processing 분야에서 기존의 LSTM들이 성능을 내기 위해 어떤 방식으로 적용되어 왔는지에 대해서도 설명을 드리고자 합니다. 

 

 그 후, 본론에서는, Graph LSTM을 더욱 잘 이해하기 위한 배경에 대해 설명드리고, 방법론에 대해서 논문에서 설명한 순서대로, 설명을 진행하도록 하겠습니다.

 

 마지막으로, 실험 결과 부분에서는, Graph LSTM 논문에서 해당 task를 위해 사용된 데이터 셋에 대한 설명과, 실험 결과, 그리고 저자들이 수행한 ablation study에 대해서도 공유드리고, 발표를 마무리 짓겠습니다.

 

 가장 먼저, 도입부입니다. 도입부에서는 Semantic object parsing task와, LSTM on imagae processing에 대해서 말씀드리겠습니다.

 

 Semantic object parsing이란, 특정 object를, 몇몇 의미를 가진 부분들(semantic parts)로 분할하는 태스크를 의미합니다. 저도 정확한 정의를 알지는 못 하지만, 기존의 vision task에서 이미 많이 연구되던, semantic segmentation과의 다른 점은, semantic object parsing이 조금 더 디테일한 분할에 초점을 맞춘 태스크인 것 같습니다.

  •  이에 대해 초점을 맞추어 자세히 설명드리면, 오른쪽 위의 두 번째 사진에서, semantic segmentation task는 image를 {벽, 바닥, 여자} 이렇게 큼직하게 의미론적으로 픽셀들을 분할하는 태스크를 해결한다면, semantic object parsing task의 경우, {여자가 어떤 옷을 입었고, 여자의 머리와 팔을 이루고 있는 픽셀들은 어디인지}를 분할하는 태스크인 것 같습니다.

 저자들은, 이러한 semantic object parsing task의 경우, computer에게 imgae의 자세한 내용을 이해할 수 있게 해주는 task이기 때문에 중요하다고 언급을 하고 있습니다. 또한, 이러한 task가 성공적으로 이루어질 경우, image-to-caption generation, person re-identification, human behavior anaysis와 같은 downstream task or high level application에게도 큰 도움을 줄 수 있다며, 해당 태스크의 중요성을 설명했습니다.

  • imagae-to-caption generation: 여자가 벽 앞에서, 드레스와 선글라스를 낀 채, 서있다.
  • person re-identification: 빨간색 셔츠와 백팩, 파란 바지를 입고 있던 남자가 근처 카메라에서 다시 발견되었을 경우, 그 둘을 동일한 인물로서 인식
  • human behavior analysis: 특정 인물이 camera 앞에서 오른팔을 머리 위로, 좌 우로 흔들고 있는 것을 인식  

 

 그런데, vision-task에서 큰 성공을 얻어온, CNN 기반의 모델들은, 해당 task에서 제한된 성능을 보여주곤 했다고 합니다. 저자들은 그 이유에 대해서 다음과 같은 점을 지적합니다.

  •  CNN 기반의 모델들은 제한된 neighboring context로부터, 지역적인 정보만을 빌려와 학습이 수행된다. (convolutional filter의 한계 지적)
  •  직관적으로, imaga 내에서, 각 semantic part를 인식하는 데에 있어서, critical cue들은 lager local context와 global perspective이며, CNN은 이를 다룰 수 없다.

 그리하여, 이러한 단점을 극복하기 위해, 이전의 연구자들은 imaga에 LSTM 기반의 모델들을 적용하는 연구를 수행하여 semantic object parsing 태스크를 해결해 왔다고 언급합니다. 자연스레 다음 장으로...

 

 저자들의 언급에 따르면, LSTM 기반의 모델들은 semantic object parsing task에 적용될만한 능력을 가지고 있다고 합니다. LSTM 기반 모델들은 sequential data를 처리하기 위해, memory cell들을 사용하며, 그뿐만 아니라, "spatial dimension을 따라 image를 순차적으로 처리할 수 있다"라고 언급합니다.

 

 그리하여, 저자들은 이를 위해 제안되었던 LSTM 기반의 variation들에 대해서 소개해줍니다.

  •  Grid LSTM: Grid LSTM의 경우, 이미지 내에서 horizontal 방향으로, 순차적으로만 memory cell, hidden states가 전파되던 LSTM의 구조를, vertical 방향으로도 해당 정보들이 전파되게끔 수정한 알고리즘이며, 그렇기에 Grid LSTM이라고 하는 이름을 붙인 알고리즘입니다.
  •  Row LSTM, Diagonal Bi-LSTM: Row LSTM의 경우, 이미지 내에서, 특정 pixel에 대응되는 hidden states를 업데이트 함에 있어, 이전 Row pixels혹은 Diagonal pixels을 종합하여 hidden states들이 업데이트될 수 있도록 DeepMind에서 제안한 알고리즘입니다. 그리하여, 이미지 내에서 scene understanding과 같은 태스크에 있어서 CNN 기반의 모델들보다 더욱 좋은 성능을 낸 것으로 보고 되었습니다.
  •  Local-Global LSTM: Local-Global LSTM, 줄여서 LG LSTM의 경우, 앞선 알고리즘보다 더욱 좁은 topology를 다루긴 하지만, LSTM 구조 내에서, 특정 pixel의 hidden state를 업데이트 함에 있어, 자신의 feature, memory cell, hidden states정보(local) 뿐만 아니라, 주변의 정보(gloabl)를 종합하여 업데이트하는 방식으로 수정된 알고리즘입니다. 해당 모델은 semantic object parsing task에서 이 논문 이전에 가장 좋은 성능을 보였다고 합니다. (Graph LSTM 저자와 동일한 저자입니다. ㅎㅎ)

 도입부에서 준비한 내용은 여기까지이며, 지금부터는 Graph LSTM에 대해서 본격적인 소개 및 설명을 수행할 수 있도록 하겠습니다!

 

 Graph LSTM에 대한 내용은 먼저 연구 배경에 대해서 말씀드리고, 방법론에 대해서 길게 설명드리는 구조로 되어 있습니다. 재미있게 읽어주세요 :)

 

 저자들은 해당 연구의 배경으로 두 가지를 얘기하고 있습니다. 먼저, traditional semantic segmentation을 넘어서, semantic object parsing이라는 태스크가 중요해지고 있으며, 해당 태스크는 image를 조금 더 fine-grained semantic을 얻을 수 있는 multiple parts로 분할하는 것을 목적으로 두고 있다고 합니다.

  • (해당 task에서 CNN 기반 모델들은 제한된 성능을 내왔다, 그 이유는 어떻다는 도입부의 반복.. 생략할게요!) 
  •  또한, 해당 task에서 기존의 LSTM 기반의 모델들은 promising resulte들을 만들어 내 왔지만, 이들에겐 정보 전달의 측면에서, 기 정의된, 고정된 위상만을 탐험할 수 있다는 단점을 가지고 있었다고 합니다.

 그리하여, 저자들은 기존의 sequential and multi-dimensional data를 다루던 기존의 LSTM 기반 모델들을 general graph-structure data를 처리할 수 있도록 확장된, Graph LSTM을 제안했다고 합니다.

  •  해당 모델에서 graph는 arbitrary-shpaed superpixel을 graph의 node로, superpixel간의 spatial neighborhood relation을 grpah의 edge로 해석하여 2D image위에서 구축되었으며, Graph LSTM은 이러한 그래프 데이터를 처리함으로써 pixel들 사이의 관계를 capture할 수 있다고 저자들은 얘기하고 있습니다.

 

 마지막에 너무 뚱딴지같은 소리가 나왔지만, 앞으로 천천히 풀어서 설명드릴 예정이니 뒤로 가기를 누르지 말아 주세요!

다음 장부터는, 해당 논문에서 제안한 알고리즘의 방법론에 대해서 차근차근 설명드리도록 하겠습니다.

 

 방법론에 대해서 자세히 설명드리기 이전에, 먼저 Graph LSTM이 semantic object parsing task를 해결함에 있어 어떤 역할을 하는지, 전체 네트워크 구조와 함께 설명을 드려야 할 것 같습니다.

 

 Graph LSTM의 경우, image를 입력받아, 해당 image의 pixel들이 어떤 의미론적 의미를 가지고 있는지 mapping 해주는 오른쪽 아래의 전체 그래프 상에서, 추출된 visual feature들에 global structure context에 대한 이해도를 향상시켜주는 역할을 하고 있습니다. 즉, 단일 모델로써 역할을 하는 친구는 아닙니다.

 

 그리하여, 이 장에서는 먼저, Graph LSTM을 포함하는 전체 네트워크의 연산 단계를 하나씩 설명드리겠습니다.

  1.  Input image는 stakc of convolutional layer를 거쳐, convolutional feature map을 뽑아냅니다. 사진 상에서의 deep connect 부분이 convolutional layers입니다.
    1.  해당 feature들은 특정 CNN based model을 거쳐 confidence map으로 변환됩니다. 이 confidence map은 해당 pixel이 어떤 label로 mapping이 되는지에 대한 확률 중 가장 큰 값을 가진 map으로 저는 이해했습니다. 논문에서는 자세한 설명이 수행되진 않았습니다. 그림에서 deep connect 이후 윗 분기의 내용입니다.
  2.  또한, input image는 SLIC라고 하는 알고리즘을 통해서, superpixel map으로 변환되기도 합니다. (왼쪽 아래 그림) 이 superpixel map은 추후 Graph LSTM layer에서 사용됩니다.
    1.  Graph LSTM layer에서는 해당 superpixel map을 graph로 간주하고, 앞서 계산된 confidence map을 이용해, graph의 node(LSTM unit)들의 업데이트 순서를 정해줍니다. (기존의 순차적으로 업데이트되던 LSTM과 큰 차이 점 중 하나입니다.)
      1.  이후, 논문에서 제안된 LSTM unit들의 hidden states, memory cell의 update 수식에 따라, 각각이 업데이트됩니다.
    2.  또한, 앞서 계산된 Convolutional feature들은 residual connection을 이용해, Graph LSTM의 연결 사이, 연결 후 에도 정보를 전달해 줍니다.

 이번 장에서 설명드린 큰 그림에서는 생략된 내용이 너무 많아, 복잡한 감이 있지만, 추후 설명드릴 내용을 통해 하나씩 이해가 되시면, 저자들의 똑똑한 아이디어가 이해가 가시리라 생각됩니다!

 

 이 장에서는, 그러면 superpixel map이 어떻게 graph로 간주될 수 있는지에 대한 엔지니어링 내용에 대해서 설명드리고자 합니다.

 

 먼저 저자들은, (1) 특정 알고리즘을 통해 얻은 image의 superpixel map 내에서, 하나의 superpixel을 하나의 node로 간주하였습니다. (2) 또한, node feature의 경우, superpixel내의 pixel들의 feature들의 평균으로써 이용했습니다. (3) 마지막으로, 실제 superpixel간의 relation 정보를 graph 상에서의 undirected edge로써 간주함으로써, superpixel map을 superpixel graph G로써 간주 하였습니다.

 

 이렇게 구축된 그래프는, 오른쪽 아래 그림처럼, Graph LSTM을 거쳐서 local - global context 정보를 convolutional feature에 더해주는 데 사용이 되었다고 합니다.

 

 그런데, SLIC알고리즘을 통해서 만들어진 superpixel map은 기존의 fixed topology를 가지는 image와 다르게, arbitrary topology를 가질 수밖에 없다는 문제가 발생했습니다. 그리하여, 기존의 fixed topology를 이용해서 순차적으로 업데이트되던 LSTM 기반의 모델들과 달리(왼쪽 아래 그림), 해당 모델은 node update 순서를 직접 정해주어야 할 필요성이 존재했습니다.

 

 이에 대해, 저자들은 기존의 graph를 순회하는 알고리즘인 BFS, DFS등에 의존한 것이 아니라, confidence-driven update scheme을 적용하는 것을 제안합니다. 해당 전략은, 기 계산된 confidence map을 기반으로, 신뢰도가 높은 superpixel부터 node의 업데이트를 하는 전략입니다.

  •  이 전략에 대해 저자들은, higher confidence score를 지닌 node들의 visual feature를 messga passing 하는 것이 더욱 reliable하기 때문이라고 서술하고 있었습니다.
  •  또한, 같은 confidence score를 가진 node들이 충돌할 경우가 발생할 수 있고, 이때는 이전의 node와 가까운 node부터 업데이트하는 방식을 사용했다고 합니다.

 

 이 장 까지는, Graph LSTM layer관점에서 설명이 이루어졌다면, 이 장부터는, Graph LSTM unit과, 해당 모델의 수식에 대해서 자세히 설명드리도록 하겠습니다.

 

 가장 먼저, Graph LSTM elements의 경우, 기존의 LSTM element와 거의 유사하다는 것을 LSTM의 그림과 슬라이드 내 적어진 사항들을 보시면 알 수 있습니다. (notation 같은 경우는 조금 다를 수 있습니다.)

  •  하나 다른 점이 있다면, Graph LSTM의 경우, 단일 forget gate를 사용하는 것이 아닌, adaptive forget gate bar_g^f를 사용하는 것을 확인할 수 있습니다.
  •  또한, gate별로 매칭되는 weight matrix와, input featre, hidden feature들에 대한 notation matching도 슬라이드 내에 이뤄져 있습니다. 

 

 또한, 하나의 단일 unit에서 정보를 받던 기존의 LSTM과 달리, Graph LSTM은 도입부에서 설명한 image를 위한 LSTM 모델들처럼, 여러 neighboring nodes로부터 hidden states를 받습니다. 그 상황에 있어, Graph LSTM은 기존의 모델들에서 발생하지 않던, 다음과 같은 문제가 발생합니다.

  •  내 hidden states를 업데이트하기 위해 모은 주변 노드들의 hidden states가 과연 업데이트가 된 값인가? 아니면 이전의 값인가?

 이를 판단하기 위해, 저자들은 각 노드별로 visiting flag q_i를 도입합니다. 그리하여, update를 하면 flag를 1로, update 하지 않으면 flag를 0으로 지정하여, 이 flag값을 hidden states, memory cell을 업데이트 함에 있어서 활용합니다.

 

 이 장에서는, 이전 장에서 언급했던 adaptive forget gates와, 전체적인 업데이트를 위한 수식에 대해서 말씀드리겠습니다.

 

 먼저, adaptive forget gates의 경우, node i의 hidden states를 업데이트할 때, 주변의 이웃 노드 정보(node j들의 hidden states)를 사용함에 있어, 해당 hidden state(j)의 정보에 따라 각기 다른 forget gates 가중치를 주어, 이웃 노드 별로 영향도를 다르게 가져가기 위해 제안된 방법입니다.

 

 그리하여, 주변 superpixel 중 중요한 부분을 알아서 학습할 수 있도록, 모델의 weight들을 조정할 수 있는, 그런 컨셉입니다. GAT가 떠오르는 느낌.

 

 나머지 밑의 수식들은, 대부분이 LSTM과 유사한 방식으로 계산이 되기 때문에 일부 생략하지만, 한 가지 memory/cell state를 업데이트 함에 있어서도, visit flag가 쓰인다는 것만이 기존의 LSTM과 다른 점일 것 같습니다.

 

이 장부터는 해당 저자들이 모델 검증을 위해 수행한 실험의 셋팅과, 결과에 대해 말씀드리겠습니다.

 

가장 먼저, 저자들이 사용한 dataset들에 대해서 말씀드리겠습니다.

 

 해당 데이터셋들은 semantic object parsing task를 평가하기 위해, 기존에 쓰였던 데이터 셋들이며, 먼저, 사람과 동물의 신체 부분이 라벨링 되어 있는 PASCAL-Person-Part dataset과, Horse-Cow dataset이 있습니다. 두 번째로는, 사람이 어떤 옷을 입었는지 등의 정보가 라벨링 되어 있는 ATR dataset과, Fashionista data셋이 있습니다.

 

 저자들은 이 4개의 데이터셋에 대해 기존의 SOTA 모델과의 비교를 수행하였으며, 가장 challenging한 PASCAL dataset에서는 ablation study를 수행하여, 자신들이 제안한 세부 기법들의 중요성에 대해서 보여주었습니다.

 

 실험 셋팅 내용은 다음과 같습니다. 앞서 신체 관련된 두 개의 데이터셋의 경우, IOU, pixel-wise accuracy등이 evaluation metric으로 사용되었고, ATR, Fashionista dataset의 경우, 기존의 분류 문제에서 다루는 metric들이 사용되었다고 저자들은 설명하고 있었습니다.

 

 네트워크 구조는, 각각 기존의 SOTA 모델을 backborn model로 사용하였다고 설명하였습니다. 여러 하이퍼 파라미터 들은 슬라이드에 기재한 값으로 되어 있었습니다.

 

 그리하여, 실험 결과는, 몇몇 클래스를 제외하곤, 모든 데이터셋에 대해 저자들이 제안한 Graph LSTM이 가장 좋은 성능을 보였다는 것을 알 수 있었습니다. 또한, 계속해서 등장하는 LG-LSTM 역시 저자들의 논문인 것은 저와 독자만의 비밀입니다..

 

 해당 사진은, 실제 저자들이 논문에서 공개한, 정성적인 성능을 볼 수 있는 결과들입니다. 저자들은, 해당 모델의 우수한 성능을, 기존의 SOTA 모델과 비교하여 보여주었습니다. 왼쪽 사진의 경우, 일렬로 있는 사람들의 torso와 arm의 구분이 깔끔하게 되어 있는 결과는 꽤나 놀라웠습니다. (오른쪽 위에서 두 번째 사진)

 

 또한, 저자들은 failure case를 언급하면서, 해당 모델이 너무 작은 object나 유사한 appreance를 지닌 parts들을 분리하는 데엔 어려움이 있다는 것을 인정하며, 실험 결과에 대한 설명을 마무리 지었습니다.

 

 저자들은 또한, 세부 기법이 얼마나 성능에 영향을 끼쳤는지 등을 평가하기 위한, ablation study를 다양하게 수행하였습니다.

 

 가장 먼저, 저자들은 superpixel smoothing이 다른 LSTM 기반 모델과 합쳐졌을 때의 성능을 확인함으로써, Graph LSTM의 아키텍쳐 및 다른 세부 기법들의 효용을 확인하고자 하였습니다. 그 결과, directed Bi-LSTM, LG-LSTM과 superpixel smoothing이 합쳐졌을 때에도 어느 정도 성능 개선이 있었지만, Graph LSTM정도의 성능은 내지 못한다는 것을 확인했습니다.

 

 또한, 저자들은 node updating scheme의 효용을 보여주기 위해, BFS, DFS, BFS with confidence, DFS with confidence등의 다른 updating scheme을 테스트하였으며, 그 결과, 제안된 confidence-driven scheme에서의 성능이 가장 높은 것을 보여주었습니다.

 

 세 번째로, adaptive forget gates을 적용하였을 때와, 그렇지 않을 때, 즉 단일 forget gates를 사용할 때의 실험 결과도 공유함으로써, 제안된 기법의 효용을 확인하였습니다.

 

 마지막으로, residual connection의 유무에 대한 실험도 수행하였고, num of superpixel에 대한 parameter study 결과를 보여줌으로써, 자신들이 사용한 파라미터에 대한 타당성을 검증하였습니다.

 

 논문을 리뷰하다 보니, 비전 연구를 하시는 분들은 파라미터 하나를 정함에 있어서도 굉장히 많은 실험을 통해 그걸 입증하는 과정을 수행하는 것을 보면서 리스펙을 하게 되었습니다. 물론 강화학습이 그런 걸 안 하는 건 아니지만... 뭐 그렇습니다!

 

여기까지 읽어주신 분이 계시다면 감사하다는 말씀드리며, 글을 마무리하겠습니다.

 

 논문의 링크는 밑에 준비되어 있습니다.

https://xiaohuishen.github.io/assets/eccv2016_graphlstm.pdf

+ Recent posts