ML Strategy(3)

ML Strategy(3)

  1. Learning from Multiple Tasks
  2. End-to-End Deep Learning

1.Learning from Multiple Tasks


Transfer Learning

Deep learning의 강점 중 한가지는 어떠한 task에서 모델을 만들었던 지식이 다른 곳으로도 전가 될 수 있다는 것이다.

예를 들어 모델이 Cat Classifier를 만들며 터득한 지식을 X-ray Classifier를 만드는데에도 사용할 수 있을 것이다. 그리고 이것을 Transfer Learning 이라고 한다.

transfer

Cat classifier 모델이 있다면, 마지막의 Layer의 결과 노드를 제거한 뒤 Random W,b값을 가지는 새로운 노드를 만든다.(새로운 노드들은 꼭 1-layer가 아니어도 됨.)

그 뒤, 새로 학습할 데이터가 많다면 마지막 레이어 노드의 W,b값만, 그렇지 않다면 처음부터 모델 전체를 다시 학습시킬 수도 있다.

이 때, 새로운 X,y값에 대해서 Training 하는 것을 Fine tuning 이라고 하고, 이전에 학습되어 있던 것을 Pre-training이라고 부른다.

왜 이러한 Transfer 방법이 잘 작동할까? 그 이유는 Low-level feature들이 상당한 공통점을 갖기 때문이다.

위의 예처럼 이미지를 인식하는 경우에는 low-level의 feature들은 그저 테두리, 선, 점 , 모서리 등을 인식하는 단순한 feature들일 것이다. 따라서 새로운 데이터에 맞춰 다시 학습하지 않아도 그대로 적용될 수 있다.

이러한 Transfer Learning은, 어떠한 Task에서 Input type이 같고 Feature가 다소 공유되는 새로운 Task의 Data가 더 적을 경우 유용하게 쓰일 수 있다.


Multitask Learning

한장의 사진을 받고, 그 사진에 보행자, 표지판, 차량,신호등 유무를 판단하는 신경망을 만든다고 생각해보자.

신경망의 전체적인 구조는 아래와 같이 생겼을 것이다.

multitask

m개의 input에 대하여 y_hat의 dimension은 (4,m)이 될 것이다.

언뜻 보면 이전의 Softmax와 비슷해 보이지만, 이것은 여러개의 Class중 하나를 고르는 것이 아니다.

따라서 Loss function을 구할 때, Binary classification에서 했던 것 처럼 logistic loss를 쓰고 거기에 추가적으로 class의 개수 j 번만큼 더해준다.

multiloss

각각의 물체를 구분하는 4개의 신경망을 별도로 만들 수 있지만, 이미지를 인식한다는 low-level feature를 공유하는 만큼 하나의 신경망이 여러가지의 일을 동시에 수행하게 만들 수 있다.

심지어 Data example에서 모든 class에 labeling이 되어 있지 않은 경우도, Loss function의 특성 상 오류 없이 처리될 수 있다.

이러한 강점이 있는 Multi task Learning은 다음 조건이 충족될 때 구현할 수 있다.

  • Low-level feature들을 공유하여 그 이점을 사용해 Training할 수 있어야 한다.
  • (보통) 각각의 Class에 대한 Data의 양이 비슷해야한다.
  • 충분히 큰 Neural network에서 train 되어야 한다.

2.End-to-End Deep Learning


End-to-End Deep Learning

End-to-End learning이란 무엇일까?

음성 인식은 전통적으로 아래와 같은 여러개의 pipeline 과정을 통해서 이루어 졌다.

audio -> features -> phonemes -> words -> transcript

End-to-End learning은 이러한 중간 단계를 건너 뛰는 것이다.

audio ----------------------------------------------------> transcript

이를 통해 시스템을 매우 단순화 시킬 수 있고, 뛰어난 성능 또한 얻을 수 있다.

이러한 방식은 기존의 오랜 연구로 이루어진 pipeline들을 무시하는 격이지만,

실제로 Big data에 기반한 Deep learning에서는 실제로 End-to-End learning이 가능하고, 더 뛰어난 성능을 발휘하기도 한다.

하지만 이러한 End-to-End learning을 하려면 그에 관련된 X->y로 라벨링된 데이터가 매우 많이 필요하다.

아직까지 복잡한 문제에 대해서 X->y로 라벨링된 데이터는 그다지 많이 존재하지 않기 때문에, 중간 규모의 데이터를 보유하고 있을 때의 접근법이 있다.

baidu

예를들어 회사 출입구에 사람이 다가오는것을 인식하고, 직원으로 등록된 사람인지 대조하는 시스템이 있다고 하자.

이 모델을 학습시키는 과정에서 End-to-End Learning을 대입하려면 전체의 사진에서 사람의 위치를 특정하고, 그 사람을 직원의 얼굴들과 대조하는 과정을 해야한다.

하지만 그러한 상황에서 X->y로 라벨링 되어있는 데이터는 많지 않으므로 적용에 무리가 있다.

이럴 때 사용하는 것이 앞서 말한 중간적인 접근법이다.

우리는 전체적인 사진에서 사람의 위치를 특정하는 것에 대한 데이터가 충분히 많다. 그리고 사람의 얼굴을 대조하기 위한 얼굴 데이터도 충분히 많다.

이러한 점을 이용해서 Task를 두개의 subtask로 나누어 실행하는것이다. 우선 사람의 위치를 특정하는 작업을 한 뒤, 사람의 얼굴이 있는 부분을 crop해서 대조하는 순차적인 작업을 하면 된다.

이처럼 End-to-End Learning을 하기엔 mapping된 Data가 부족하지만, 하위 문제를 해결하기에 충분한 데이터가 있는 경우 문제를 단순화 할 수 있다.


Whether to use End-to-End Deep Learning

End-to-End Deep Learning 의 장점은 크게 다음과 같이 말할 수 있다.

  • Data 그 자체로도 말을 할수있게 해준다. (중간에 다른 작업을 거치지 않아도 답을 도출 가능)
  • 인간이 직접 설계한(hand-designed) 요소들을 덜거쳐도 된다.

단점은 크게 다음과 같이 말할 수 있다.

  • 매우 큰 양의 Data가 학습에 필요하다.
  • 매우 잘 설계된 hand-designed 요소들을 배제해버릴 수 있다.

이러한 관점에서, End-to-End learning의 적용 여부를 판단할 수 있는 질문은

"X->y를 도출할 수 있는 복잡한 함수를 학습할 수 있을 만큼 충분한 데이터가 있느냐" 이다.

위의 예처럼 어떠한 이미지에서 얼굴을 찾아내고 그사람의 얼굴을 다른 얼굴과 대조하는 과정을 End-to-End Learning으로 학습하기위한 X->y 데이터는 별로 없다.

하지만 이미지에서 얼굴의 위치를 나타내는 X->y로 mapping된 Data와 얼굴의 특징이 mapping된 Data 충분히 존재하므로 Subtask로 나누어 해결하는 것이 더 효과적일 것이다.

연관글