본 논문은 Multi-Task Learning (이하 MTL)의 기초적인 내용을 다루는 논문입니다.
딥러닝, 머신러닝에서의 MTL의 구현, 발전 과정과 MTL의 올바른 적용법에 대해 알아봅니다.
머신러닝은 훈련 과정에서 특정 metric을 최적화합니다.
이때, 하나의 모델을 사용하거나 앙상블 학습법을 사용합니다.
해당 모델을 훈련할 때, 성능 지표를 개선시킬 한 가지 Task에만 집중하고 이를 제외한 다른 정보는 무시합니다.
이러한 정보는 related task의 signal을 훈련할 때 획득할 수 있습니다.
related task 간의 representations을 공유하여 원래의 task에서 모델이 더 잘 일반화될 수 있도록 우리의 모델을 앙상블할 수 있습니다. 해당 접근법을 MTL이라고 합니다.
MTL 방식에는 다음과 같은 3가지 방법이 존재합니다.
1. Joint Learning
2. Learn To Learn
3. Learning With Auxiliary Tasks
MTL은 관련 task의 훈련 signal에 포함된 도메인별 정보를 활용하여 일반화를 향상시킵니다.
MTL이 처음 제시된 배경은 무엇일까요?
논문에서 여러 관점을 제시하였지만 해당 글에서는 2가지만 다뤄봅니다.
우리는 MTL을 유도적인 전이(inductive transfer)의 형태로 볼 수 있습니다.

해당 방법은 MTL에서 가장 많이 사용되는 방법입니다.
적용법도 단순합니다. 모든 Task에 동일한 은닉층을 공유합니다.
이때, 각 Task별로 별도의 Task-Specific Layer도 유지합니다.
Hard Parameter Sharing은 과적합의 위험을 크게 줄여줍니다.
사실, 동시에 수행되는 Task가 많아질수록 과적합의 위험은 줄어듭니다.
모든 Task를 만족하는 representation을 Capture하는 것이 매우 어렵기 때문입니다.

각 Task마다 각자의 모델과 그에 해당하는 Parameter를 보유하고 있습니다.
모델의 Parameter 사이의 거리는 각 parameter가 비슷해지도록 정규화됩니다.
MTL은 왜 작동하는 것 일까요?
task A만 배우는 것은 task A에 대한 과적한을 위험을 가질 수 있습니다.
그러나, task A와 B를 공동으로 학습하는 것은 모델이 잡음 패턴을 평균화하여 더 나은 representation F를 얻을 수 있도록 합니다.
task의 노이즈가 너무 심하거나 데이터가 제한되고 고차원적이라면 모델이 관련적인 혹은 비관련적인 특징을 구분하는 것에 어려움을 가질 수 있습니다. MTL은 다른 task가 관련성 혹은 비관련성에 대한 추가적인 정보를 제공해 모델이 실제로 중요한 특징에 집중하는 데에 도움을 줍니다.
특징 G는 task B에서 쉽게 학습할 수 있습니다. (라고 합시다.)
그러나 다른 task A에서는 그렇지 않습니다. (역시나.. 라고 합시다.)
MTL을 통해서 우리는 모델이 도청할 수 있도록 합니다. (task B를 통해 G를 학습할 수 있는 것 입니다...!)
MTL은 다른 task에서도 선호하는 representation을 선호하도록 모델을 편향합니다.
이것은 모델이 새로운 task에 대해 일반화할 수 있도록 돕습니다.
마지막으로, MTL은 inductive bias를 통해 Regularizer로도 작동할 수 있습니다.
따라서, 이것은 과적합의 위험을 줄여줍니다.
해당 논문에서 수학이 가장 많이 등장하는 부분입니다.
지금까지는 딥러닝 모델에서의 MTL에 대해 배웠습니다. 이번에는 머신러닝입니다.
그 중에서도 Linear Model, Kernel Model, Bayesian Model에 대한 MTL을 다뤄봅니다.
MTL의 2가지 핵심 아이디어는 다음과 같습니다.
1. Norm regularization를 통해 작업 전체에 희소성 적용
2. task간의 관계 모델링
주의! MTL에 대한 많은 접근법은 모든 task가 단일 출력을 가진다고 가정합니다.
우리는 T개의 task를 가지고 있습니다. 각 task t_i에 대해 우리는 d차원을 갖는 parameter a_t를 갖는 모델 m_t를 보유하고 있습니다.

이때, model의 수는 task의 수와 일치합니다.
A = [a1 | a2 | .. | aT-1 | aT] ∈ R^(d*t)
Single Task Setting에서는 각 작업 t에 대한 parameter a_t를 기반으로 l1 norm이 계산됩니다.
그러나 MTL에서는 A를 기반으로 l1 norm을 계산합니다.
이를 위해 먼저 모든 작업에 걸쳐 해당 특징의 i번째 매개변수를 포함하는 a_i행에 대하여 l_q norm을 계산,
벡터 b = [|| a_1 ||_q ... || a_d ||_q] ∈ Rd를 얻습니다.
그런 다음 이 벡터의 l1 norm을 계산, A의 대부분의 행이 0이 되도록 합니다. (이 과정에서 희소성 즉, sparsity를 확보합니다.)
계산된 lq norm은 q에 따라 결과값이 달라집니다. 각 row마다 다른 q값을 사용할 수도 있습니다.
일반적으로 우리는 l_1|l_q norm 같은 mixed-norm constraints를 선호합니다.
이 block-sparse regularization이 직관적으로 타당하다고 생각되지만, 이는 기능이 작업 간에 얼마나 공유되는지에 매우 의존적입니다.
기능이 크게 겹치지 않으면, l_1/l_q 정규화가 요소별 l_1 정규화보다 오히려 더 나쁠 수 있습니다.
방금까지 설명한 접근법은 MTL에서 사용된 task들이 서로 가깝게 연관되어 있다고 가정합니다.
그러나 각 task들은 모든 가능한 task들에 대해 가깝게 연관되어 있지 않을 수 있습니다.
그러한 경우, 연관되지 않은 task간에 정보를 공유하는 것이 성능을 저하시켜 negative transfer로 알려진 현상이 발생할 수 있습니다.
희소성(sparsity)를 사용하기보다 우리는 이전 지식의 영향력을 행사하여 몇 task들은 서로 연관되어 있고 몇은 그렇지 않음을 표시합니다.
이 시나리오에서는 다음과 같은 constraint를 사용하는 것이 더 적절합니다.

vector a는 파라미터 벡터입니다.
이 방법은 task parameter vector를 군집화합니다. (towards their mean that is controlled by lambda λ.)
그들은 이 규제를 kernel method에 적용합니다. (linear model에도 똑같이 적용할 수 있습니다. )
SVM 모델을 위한 비슷한 규제는 베이시안 메소드 (Bayesian Method)에서 영감을 받았으며 모든 모델 평균 모델에 가깝도록 만듭니다.
[Vacobv et al., 2009] 는 'Cluster Regularization'의 가정을 더 명확하게 하기 위해, 미리 알려진 클러스터 수 C를 전제로 A에 대한 클러스터 제약을 형식화함으로써 가정을 명시화합니다.
그들은 제약을 다음 3가지 별도의 norm을 통해 decompose 합니다.

이 제약 조건은 클러스터가 미리 알려진 것으로 가정하기 때문에, 위의 패널티에 대한 볼록 관계를 도입하여 동시에 클러스터를 학습할 수 있게 합니다.
이후 내용은 연구가 발달되며 어떤 방법을 각각 적용하였는지에 대한 내용입니다. 본문을 직접 읽어보는 것이 좋을 것 같습니다.

대부분의 MTL for Deep Learning은 앞서 제기한 hard parameter sharing 혹은 soft parameter sharing 방법을 사용합니다.
그와 대조적으로, 몇몇 논문들은 그보다 더 좋은 방법은 없는지를 탐구하였습니다.
Structure of Shared and task-specific layers 외에도, fully-connected layer에 prior matrix를 배치해 모델이 이전에 살펴본 일부 베이지안 모델과 유사하게 Task간의 relation을 배울 수 있도록 합니다.
그러나 이 접근 방식은 여전히 공유를 위한 사전 정의된 구조에 의존하며, 이는 잘 연구된 Computer Vision 문제에는 잘 적용되지만 새로운 문제에는 오류가 발생하기 쉽습니다.

훈련 중에 비슷한 task들을 grouping하는 기준을 사용하여 처음에는 얇은 네트워크에서 시작하여 동적으로 greedy하게 네트워크를 확장시키는 하향식(bottom-up) 접근 방법입니다.
그러나, greedy한 방법은 전역 최적의 모델을 찾지 못할 수 있으며, 각 분기를 정확히 하나의 작업에 할당하는 것은 모델이 작업 간의 더 복잡한 상호 작용을 학습하는 것을 허용하지 않을 수 있습니다.

Switch 아닙니다. Stitch 입니다.
별도의 두 모델 아키텍쳐는 그저 soft parameter sharing입니다.
그들은 이후 "Cross-stitch Network"이라고 지칭하는 것을 사용하여 모델이 어떤 방식으로 작업별 네트워크가 다른 작업의 지식을 활용하는지를 결정하도록 합니다. 이는 이전 레이어의 출력의 선형 조합을 학습함으로써 구현됩니다.
NLP의 최근 연구는 MTL에 대한 더 나은 task 계층구조를 찾는 것에 집중하였습니다.
전처리에 사용되는 NLP task는 auxiliary task로 쓰일 때 lower layer에서 지도학습 되어야 합니다. (supervised)
[Hasimoto el al., 2016] 가 MTL을 위한 몇 가지 NLP task로 구성된 hierarchical architecture를 사전에 정의합니다.

공유에 대한 구조 대신에 각 task의 불확실성에 고려해봅시다.
그런 다음, 각 task의 상대적 가중치를 cost function에서 조정하기 위해, task에 따른 불확실성을 최대화하는 Gaussian likelihood를 기반으로 하는 다중 작업 손실 함수를 유도합니다.

이전에 논의된 행렬 분해 접근 방법(matrix factorisation approach) 중 일부를 일반화하고, 모든 layer에 대해 모델 매개변수를 공유 및 작업별 매개변수로 분할하기 위해 텐서 분해를 사용할 수 있습니다. 이를 통해 다중 작업 학습에 대한 텐서 분해 접근 방법을 유도할 수 있습니다.
기존에 제시된 방법들 (hard parameter sharing, cross-stitch network, block-sparse regularization approaches)를 활용하여 task hierarchy를 생성하는 모델입니다.

MTL의 역사에서 대부분의 접근 방식은 작업이 동일한 분포에서 추출된 경우에 초점을 맞추었습니다(Baxter, 1997). 이러한 시나리오는 정보 공유에 유용하지만 항상 유지되지는 않습니다. MTL을 위한 견고한 모델을 개발하기 위해서는 관련이 없거나 또는 느슨하게 관련된 작업을 처리할 수 있어야 합니다.
Hard parameter sharing은 많은 시나리오에서 유용하지만, 작업이 밀접하게 관련되지 않거나 서로 다른 수준에서 추론이 필요한 경우에는 빠르게 실패할 수 있습니다.
게다가, 우리 모델에 작업 계층 구조를 학습할 수 있는 능력을 부여하는 것이 도움이 됩니다. 특히, 서로 다른 정밀도가 필요한 경우에 유용합니다.
모든 작업의 지식을 동일한 매개변수 공간으로 압축하는 것을 제한하는 대신, 우리가 논의한 MTL의 발전을 활용하여 모델이 작업 간 상호 작용을 학습하도록 하는 것이 도움이 됩니다.
이 섹션에서는 다중 작업 학습의 이점을 계속 활용하기 위해 적절한 보조 작업을 찾는 방법을 살펴보겠습니다.
관련 작업을 MTL의 보조 작업으로 사용하는 것이 고전적인 선택입니다.
비슷한 작업끼리 묶으세요.
관련 task에 대해 레이블이 지정된 데이터를 사용할 수 없는 경우가 많습니다. 그러나 어떤 상황에서는 우리가 달성하고자 하는 것과 반대되는 task에 접근할 수 있습니다. 이 데이터는 gradient reversal layer를 사용하여 훈련 오류를 최소화하지 않고 최대화하는 adversarial loss을 사용하여 활용할 수 있습니다.
앞서 언급한 바와 같이, MTL은 원래 작업만을 사용하여 쉽게 학습하기 어려운 특징들을 학습하는 데 사용될 수 있습니다. 이를 달성하기 위한 효과적인 방법 중 하나는 힌트를 사용하는 것입니다. 즉, 특징을 보조 작업으로 예측하는 것입니다.
예를 들어, 이미지 분류 작업을 수행할 때, 이미지의 특정 부분에 주목하고 그 부분이 어떤 특징을 나타내는지 예측하는 보조 작업을 추가할 수 있습니다. 이렇게 하면 모델은 주요 작업인 이미지 분류를 수행하는 동안 보조 작업인 특징 예측도 수행하면서, 보다 유용한 특징을 학습할 수 있습니다.
이러한 보조 작업은 원래 작업의 학습에 도움이 되는 특징을 학습하는 데 도움이 되며, 모델이 더욱 강력하고 일반화되도록 만들 수 있습니다.
마찬가지로, 보조 작업을 사용하여 네트워크가 일반적으로 무시할 수 있는 이미지 부분에 주의를 집중할 수 있습니다.
예를들어...
보조 작업으로 차선 표시를 예측하는 것은 모델이 그것을 표현하고 이해하기 위해 학습하도록 강제합니다. 그 후 이러한 지식은 주요 작업에도 활용될 수 있습니다. 마찬가지로 얼굴 인식에서는 얼굴 랜드마크의 위치를 예측하는 것도 보조 작업으로 학습할 수 있습니다. 왜냐하면 이것들은 종종 독특하기 때문입니다.
많은 작업에서는 훈련 목표가 양자화되어 있습니다. 즉, 연속적인 척도가 더 타당할 수 있지만 레이블은 이산 집합으로 제공됩니다. 이는 데이터 수집을 위해 인간의 평가가 필요한 많은 시나리오에서 발생하는 경우입니다. 예를 들어 질병의 위험을 예측하거나 감정 분석(긍정적/중립적/부정적)과 같은 작업들이 있습니다. 이러한 경우에는 덜 양자화된 보조 작업을 사용하는 것이 도움이 될 수 있습니다. 왜냐하면 그 목표가 더 부드럽기 때문에 보다 쉽게 학습될 수 있기 때문입니다.
일부 시나리오에서는 원하는 목표를 예측하는 데 도움이 되지 않기 때문에 일부 특징을 입력으로 사용하는 것이 비실용적일 수 있습니다. 그러나 이러한 특징들은 여전히 작업의 학습을 안내할 수 있을 수 있습니다. 이러한 경우에는 이러한 특징을 입력이 아닌 출력으로 사용할 수 있습니다.
많은 상황에서, 일부 특징은 예측이 이루어진 후에만 사용 가능해집니다. 예측을 통해 얻어진 데이터는 추가 데이터입니다.
추가 데이터는 실행 시 입력으로 사용할 수 없기 때문에 기존의 특징으로 사용될 수 없습니다. 그러나 훈련 중에 모델에 추가적인 지식을 전달하기 위해 보조 작업으로 사용될 수 있습니다.
다중 작업 학습(MTL)에서 보조 작업의 목표는 모델이 주요 작업에 공유되거나 도움이 되는 표현을 학습할 수 있도록 하는 것입니다. 지금까지 논의된 모든 보조 작업들은 이를 암묵적으로 수행합니다. 그들은 주요 작업과 밀접한 관련이 있기 때문에, 이러한 보조 작업을 학습함으로써 모델이 유익한 표현을 학습할 가능성이 높습니다.
보조 작업은 MTL을 활용하는 데 있어 중요합니다. 그러나 실제로 어떤 보조 작업이 유용한지 확신하기 어렵습니다. 두 작업이 언제 유사하거나 관련성이 있는지에 대한 명확한 기준이 부족합니다.
이러한 이해의 부족으로 인해 우리는 작업 간 유사성을 평가하기 어렵습니다.
최근의 연구에서는 균일한 레이블 분포를 갖는 보조 작업이 선호되는 것으로 나타났으며, 주요 작업이 보조 작업에 비해 빠르게 향상되는 경우가 더 많았습니다.
그러나 이러한 발견은 아직까지 제한된 범위의 실험에서 나온 것으로, 다중 작업 학습에 대한 보다 심층적인 이해를 위한 첫 단계입니다.
해당 논문에서는 MTL의 역사와 최근의 deep learning을 위한 MTL 연구를 검토했습니다. MTL은 점차 더 많이 사용되고 있지만, Hard Parameter Sharing 패러다임은 여전히 널리 사용되고 있습니다. 최근의 지식 공유 학습에 대한 발전은 유망하나, task에 대한 우리의 이해는 아직 제한적입니다. 더 깊은 이해를 위해 보다 철저한 연구가 필요합니다.