안녕하세요, 오늘 읽은 논문은 YOLOr, You Only Learn One Representation: Unified Network for Multiple Tasks 입니다.
해당 논문은 explicit knowledge와 implicit knowledge를 함께 사용하여 예측하는 모델을 제안합니다.
사람은 촉각, 시각, 청각과 과거의 경험을 통해 세상을 이해합니다. 사람의 경험은 일반적인 학습(explicit knowledge) 또는 subconsciously(implicit knowledge)에 의해 학습합니다. 그리고 이 두 경험은 뇌에 저장되고, 이 경험을 결합하여 이전에 보지 않았던 상황을 예측합니다.
위 강아지 그림을 보고 사람은 두 가지 경험을 활용하여 여러 질문에 답변할 수 있습니다.
저자는 사람이 explicit knowledge와 implicit knowledge를 결합하여 정보를 처리하는 것을 모방해 두 지식을 함께 활용하는 모델을 제안합니다. 이 두 지식을 활용한다면 general representation을 갖고 있고 다양한 task에 적합한 sub-representation을 지닌 모델을 학습시킬 수 있다고 말합니다.
사전학습된 CNN 모델은 다른 유형의 문제에 좋지 않은 성능을 보입니다. 예를 들어, 이미지 분류를 목적으로 학습된 CNN은 질문 및 답변 문제를 거의 예측하지 못합니다. 저자는 이 이유가 CNN에서 explicit knowledge만을 추출하여 활용하고, CNN에 내포된 많은 implicit knowledge를 사용하지 않기 때문이라고 말합니다.
explicit knowledge와 implicit knowledge에 대한 명확한 정의가 없기 때문에, 이 논문에서는 observation에 직접적으로 해당하는 knowledge를 explicit knowledge라고 표현하고, observation에 아무것도 하지 않는 지식을 implicit knowledge라고 부릅니다.
Contribution
(1) explicit knowledge와 implicit knowledge를 통합하여 general representation을 학습하는 unified network를 제안합니다. 또한 이 general representation을 통하여 다양한 task를 수행할 수 있습니다.
(2) kernel space alignment, prediction refinement, multi-task learning into the implicit knowledge learning process
(3) implicit knowledge를 modeling 하기 위한 도구로서 the ways of using vector, neural network, or matrix factorization
(4) 학습된 implicit representation이 spectific physocal characteristic 정보를 포착
How Implicit knowledge works?
implicit knowledge를 효과적으로 학습하고 이것을 빠르게 inference하는 방법에 집중합니다. implicit representation zi는 observation과 관계가 없으므로 이를 constant tenser의 집합 Z = {z1, z2, ... ,zk}로 간주합니다. 저자는 이 implicit knowlege가 constant tensor로서 다양한 task에 적용될 수 있는지 소개합니다.
(1) Manifold space reduction
저자는 good representation은 manifold space로의 적절한 projection을 찾을 수 있다고 합니다. 그리고 이 projection을 활용하여 목표로하는 tasks를 성공적으로 수행합니다. 위 그림을 살펴보면 projection space에서 초평면(hyper-plane)에 의해 성공적으로 target categories가 분류되었으면, 좋은 결과를 도출할 수 있습니다.
위 그림에서 projection vector와 implicit representation을 내적하여 매니폴드의 차원을 감소시키고, 다양한 task에 효율적인 성능을 나타낼 수 있다고 합니다.
처음에 implicit representation을 constant vector 표현한다고 했을 때 의구심이 들었는데, 이 상수 벡터로 manifold 차원을 감소시키는 목적으로 사용하려는 저자의 생각이 놀랍네요...ㅎㅎ
(2) Kernal space alignment
위 (a) 그림은 multi-task에서의 kernel space misalignment의 예시입니다. 신경망의 출력 kernel space가 misalignment하는 것을 확인할 수 있습니다. 이 문제를 해결하기 위하여 output feature와 implicit representation을 multiplication을 합니다.
신경망의 각 output kernel space를 align하기 위해 kernel space는 translated, rotated, scaled가 될 수 있습니다. 위 그림 (b)가 예시입니다. 이러한 연산은 object detection에서 large object와 small object를 feature alignment하는 FPN와 large model과 small model를 통합하기 위한 knowledge distillation과 같이 여러 분야에 적용되고 있습니다.
(3) More functions
여러 task에 적용될 수 있는 함수들을 고려하면, implicit knowledge는 더 많은 functions들로 확장될 수 있습니다. (a)는 바운딩박스 중심 좌표를 예측하기 위한 덧셈 연산, (b)는 앵커 박스의 하이퍼파라미터를 자동으로 탐색하기 위한 multiplication, (c)는 multi-task feature selection을 수행하기 위해 dot multiplication과 concat이 사용됩니다.
Implicit Knowledge in our unified networks
저자는 multi-purpose network를 학습하는 경우에 왜 implicit knowledge가 중요한지 설명하기 위해 conventional netowkr와 제안된 unified network의 손실 함수를 비교합니다.
(1) Formulation of implicit knowledge
Conventional Network
Conventional netowkr 학습을 위한 손실함수는 다음과 같이 표현할 수 있습니다.
여기서 x는 observation이고 $\theta$는 신경망의 파라미터, $f_{\theta}$는 신경망 연산, $\epsilon$은 error term, y는 주어진 task의 target 입니다.
error term을 최소화하는 방향으로 학습하여 target과 신경망의 출력값이 동일해지도록 합니다. 이는 동일한 target을 지닌 observation들이 f에 의해 얻어진 sub space에서 하나의 점이 되도록 합니다. 다른 말로하면 해 공간은 현재 task에 대하여 discriminative가 얻어지고, 다른 task에 취약합니다.
여러 task에서 역할을 수행할 수 있는 representation을 얻고 싶다면 relax $\epsilon$이 필요합니다. relax $\epsilon$은 manifold space에서 동시에 각 task의 해를 찾을 수 있도록 합니다.
하지만 relax error 방법은 수학적인 방법을 사용하는 것이 불가능합니다. 따라서 이 문제를 해결하기 위해 여러 task에 대한 solution을 찾을 수 있도록 error term을 modeling 합니다.
Unified Networks
제안된 unified network를 학습시키기 위해 explicit, implicit knowledge를 함께 사용하여 error term을 modeling 합니다. 그리고나서 이를 multi-purpose network training process로 guide하기 위해 사용합니다.
두 error term은 관측값 x와 latent code z로부터의 explicit error와 implicit error 입니다. g는 explicit, implicit knowledge 로부터의 정보를 선택하거나 결합하는 역할을 하는 task specific 연산입니다.
위 식을 아래와 같이 작성할 수 있습니다.
별표는 f와 g 두개를 결합할 수 있는 연산을 나타냅니다. addition, multiplication, concatenation이 될 수 있습니다.
만약 multiple task를 다루기 위해 error term을 확장하면 다음의 식을 얻습니다.
특수 기호가 많아서 논문 내용을 갖고 오겠습니다...ㅎㅎ
(2) Modeling implicit knowledge
3가지 과정을 거쳐서 implicit representation을 계산합니다.
z를 벡터로 표현하고 이 z벡터를 neural network를 사용해 implicit representation Z 을 계산합니다. 이 Z와 계수 c로 최종 implicit representation을 형성합니다.
(3) Training
학습 초반에는 어떤 prior implicit knowledge를 갖고 있지 않아 explicit representation f(x)에 어떤 영향을 미치지 않습니다. 초기 z는 N(0,$\sigma$)에서 추출합니다. 시그마는 0에 가까운 매우 작은 값입니다. explicit와 implicit를 결합하는 별표 연산은 multiplication입니다. 이 z는 오차 역전파법으로 학습됩니다.
(4) inference
inference시에는 다음과 같은 식으로 계산됩니다.
Experiments
MSCOCO dataset으로 학습하여 여러 task에 적용합니다. 그리고 YOLOv4-CSP 모델을 선택하여 실험에 사용합니다.
위 그림에서 화살표가 가르키는 부분이 모델에서 implicit knowledge를 도입하는 위치입니다.
각 FPN의 feature map에 feature alignment를 사용합니다. 아래는 feature alignment를 사용했을 때의 성능 결과입니다.
prediction refinement에 대한 성능 실험입니다.
다양한 task를 결합한 학습에 대한 실험입니다.
Implicit modeling에 대한 실험입니다.
implicit knowledge를 사용하는 모델의 성능 실험입니다.
implicit knowledge의 benefit입니다.
state-of-the art와의 비교입니다.
논문을 읽었는데... Implicit knowledge를 어떻게 모델에 적용했는지 명확하게 이해를 못했습니다.
참고자료