6 분 소요

image



Structuring Machine Learning Projects

Learning from Multiple Tasks

Multi-task learning

전이 학습에서는 A작업을 배우고 B작업으로 넘어가는 순차적 절차가 있었던 반면 다중작업학습에서는 일을 동시에 시작합니다. 신경망이 여러가지 일을 동시에 할 수 있게 만드는 것이죠. 그리고 그 각각의 작업이 다른 작업들을 도울 수 있게요.


image

예시를 한번 보겠습니다 자율주행차를 만든다고 해 보겠습니다. 그러면 자율주행차는 보행자와 같은 다양한 것들을 감지할 필요가 있습니다. 다른 자동차, 정지 신호, 또한 신호나 기타 요소도 파악해야 할 것입니다.

예를 들어 여기 왼쪽을 보시면 정지 신호가 있습니다. 그리고 이 사진에는 챠량이 있지만 보행자나 신호등은 따로 없죠. 이 이미지가 예를 들어 입력값 x(i)라고 하면 y(i) 라벨 하나가 아니라 네 개의 라벨이 필요할 것입니다.

이 예시에서는 보행자는 없고 차량은 있고 정지 신호가 있고 신호등은 없습니다. 그리고 다른 요소를 감지하려 할 경우 y(i)는 더 많은 차원을 가질 수 있겠죠. 하지만 현재로써는 네 개로 유지하도록 하겠습니다. 그러면 y(i)는 4 x 1 벡터입니다.

훈련 시험 라벨 전체를 보시면 이전과 비슷하게 훈련 데이터를 가로로 쌓을 것입니다 이렇게 y(1)에서 y(m)까지요. 하지만 이제 y(i)는 4 x 1 벡터이므로 이 각각은 긴 세로줄 벡터가 됩니다. 그래서 여기 Y 매트릭스는 이제 4 x m 매트릭스입니다.

한편 전에는 y가 단일 실수였는데요. 그럼 여기가 1 x m 매트릭스가 됐겠지요. 그럼 이제 여기 y값을 예측하기 위해 신경망을 훈련할 수 있습니다.


image

신경망 입력 x와 4차원의 값을 갖는 출력 y를 가질 수 있습니다. 보시듯 결과값으로 4개의 노드를 그렸습니다. 첫번째 노드를 통해 예측하려고 하는 것은 여기 사진에 있는 보행자입니다. 두번째 결과값은 차량에 대한 예측을 할 것입니다. 이것은 정비 신호가 있는지 이것은 신호등이 있는지 예측할 것입니다. 그러므로 여기 y-hat은 4차원입니다.

이 신경망을 훈련하기 위해서는 신경망 네트워크의 손실을 정의해야 합니다. 그러므로 예측 결과값 y-hat은 4 x 1차원인데요. 전체 훈련 세트에 대한 평균 손실은 1/m, i = 1에서 m까지의 합 j = 1에서 4까지의 합 x 개별 예측 손실입니다. 즉, 보행자, 자동차, 정지 신호, 신호등이라는 네 가지 요소의 값을 더하는 것입니다.

그리고 여기 L값은 보통 transfer 손실을 나타냅니다. 적어 보면

$-y_j^{(i)} * \log{(\hat{y}_j^{(i)})} -(1 - y_j^{(i)}) * \log{(1 - \hat{y}_j^{(i)})}$

이전에 다루었던 이진분류법과 비교시 가장 큰 차이점은 이제 j = 1 ~ 4 값을 합한다는 것입니다. 그리고 이것과 소프트맥스 회귀의 주요 차이점은 소프트맥스 회귀는 단일 예시에 대해 단일 라벨을 부여하는 반면 여기 이 이미지는 복수 라벨을 가질 수 있습니다.

따라서 각각의 이미지가 보행자, 또는 차량, 정지 신호, 신호등이라고 말할 수 없습니다. 한 사진에 보행자나 차량 정지 신호, 신호등 등 여러 요소가 존재할 수 있습니다.

이전 이미지에서 다룬 예시를 보면 사진에 차량과 정지 신호가 있었지만 보행자나 신호등은 없었습니다. 그러므로 이미지에 라벨 한 개를 부여하는 것이 아닙니다. 복수의 클래스를 다루면서 각각의 클래스에 속하는 물체가 사진에 나오는지 확인하는 것입니다.

따라서 이것이 이런 세팅에서 하나의 이미지가 여러 라벨을 갖을 수 있는 이유입니다. 비용 함수를 최소화시키기 위해 신경망을 훈련한다면 이는 다중작업학습입니다. 왜냐하면 이는 한 이미지를 보고 네 개의 문제를 푸는 하나의 신경망을 만드는 것이기 때문이죠. 이것은 하나의 이미지가 네 개의 객체를 포함하고 있는지 알려줍니다.

또 다른 방법은 개별 신경망 네 개를 훈련하는 것입니다. 하나의 네트워크가 네 개를 실행하도록 하는 대신 말이죠. 하지만 신경망의 초반 특성 일부가 다양한 물체들 간에 공유될 수 있는 경우 한개의 신경망을 훈련시켜 네 개의 일을 할 수 있도록 하는 편이 네 개의 신경망을 완전히 따로 훈련시키는 것보다 보통 성능면에서 더 낫습니다. 이것이 바로 다중작업학습의 힘입니다.

또 다른 세부 내용을 보면 이제까지는 알고리즘을 설명할 때 각 이미지에 단일 라벨이 항상 있는 것처럼 얘기했지만 다중작업학습의 경우 일부 이미지에서 일부 객체만 표기하더라도 잘 구현됩니다.

첫번째 훈련 예시에서 한 라벨 작업자가 보행자는 있고 차는 없다고 알려줬지만 정지 신호와 신호등 유무는 라벨링하지 않았다고 해 보겠습니다. 두번째 예시에서는 보행자와 차가 모두 있는데 라벨 작업자가 정지신호나 신호등 등의 정보에 대한 라벨을 붙이지 않았은 경우입니다. 또 모든 요소가 라벨 처리된 경우의 예시와 차량 유무만 라벨 처리되어 의문이 남는 예시도 있을 수 있습니다.

이런 데이터의 경우, 어떤 이미지에는 일부 라벨밖에 없고 나머지 라벨은 알 수 없거나 신경쓰지 않는 경우에도 알고리즘을 훈련할 수 있습니다. 몇몇 라벨이 물음표이거나 라벨을 붙이지 않은 경우에 알고리즘을 훈련시키는 방식은 j = 1 ~ 4의 총합을 구할 때 라벨이 0이나 1인 j의 값만 더해주면 됩니다.

그러므로 의문스러운 경우 총합에서 해당 조건만 빼고 라벨 작업이 된 값만 더합니다. 그러면 이런 데이터 세트도 사용할 수 있습니다.


image

그럼 언제 다중작업학습이 효과적일까요? 다음 세 가지 경우가 성립할 때입니다.

첫째, 공유된 저수준 특성으로 도움을 받을 수 있는 작업을 훈련시킬 때입니다. 자율주행차 같은 경우 신호등, 보행자, 차량 인식 특성이 정지 신호 인식에 도움을 주는 특성과 비슷할 것입니다. 모두 도로 특성을 가지고 있기 때문입니다.

둘째, 이건 정해진 건 아니라 항상 옳지는 않습니다. 하지만 성공적인 여러 다중작업학습 환경을 보면 각 작업이 보유한 데이터 양은 거의 비슷합니다. 전이 학습에서 봤듯 A작업을 기반으로 학습하고 이를 B작업으로 넘기는데요. 100만 개의 A작업 예시와 천 개의 B작업 예시가 있다면 100만 개의 예시로부터 학습한 모든 지식은 B작업의 비교적 작은 데이터 세트에 매우 도움이 될 수 있습니다.

그러면 다중작업학습은 어떨까요? 다중작업학습의 경우 보통 작업이 2개 이상입니다. 전에는 작업이 4개 있었는데 이제 백 개가 되었다고 해 보겠습니다. 이제 다중작업학습으로 백 개의 다른 물체를 한번에 인식하려고 합니다. 작업당 천 개의 예시가 있고 하나의 작업 성능에 집중한다면,

한번 100번째 작업에 집중해 보겠습니다. 이걸 A100이라고 부를께요. 이 마지막 작업을 단독으로 수행하려고 한다면 이 작업 하나를 훈련시킬 수 있는 예시가 천 개에 불과할 것입니다.

이 작업은 100개 작업 중 하나로 다른 99개 작업은 모두 더해서 99,000 개의 매우 큰 훈련 예시가 있고 이는 상대적으로 적은 예시 천 개에 많은 지식을 제공할 수 있습니다. 그리고 대칭적으로 나머지 99개 작업은 모두 백 개 작업목록에 있는 다른 작업에 도움이 되는 데이터나 지식을 제공할 수 있습니다.

두 번째 규칙은 항상 적용되는 것은 아닙니다만 한 작업에 집중해 이것이 다중작업학습에 큰 도움을 주도록 하기 위해서는 다른 작업들이 한 가지 작업보다 훨씬 더 많은 데이터를 가지고 있어야 한다는 것입니다. 이를 만족하는 경우 하나는 오른쪽에 있는 이 예시처럼 작업이 많고 각 작업에 있는 데이터 양이 상당히 비슷한 경우입니다.

하지만 핵심은 한 작업에 대한 예시가 이미 천 개라면 다른 작업에 대한 예시가 천 개보다 훨씬 많아야 한다는 것입니다. 다른 작업이 최종 작업을 더 잘 수행할 수 있도록 돕기 위해서라면요.

그리고 마지막으로 다중작업학습은 모든 작업을 잘 수행할 수 있을 정도로 큰 신경망을 훈련시킬 수 있을 때 더 효과적입니다. 따라서 다중작업학습의 대안은 각각의 과제에 대해 별도의 신경망을 훈련시키는 것이 됩니다. 그래서 보행자, 자동차 정지 신호, 신호등 감지를 위한 신경망 하나를 훈련시키지 않고 보행자, 자동차 정지 신호, 신호등 감지를 위한 신경망 네 개를 각각 훈련시킬 수도 있습니다.

리치 카로나라는 연구원이 수년 전에 밝혔듯 다중작업학습이 별도의 신경망 훈련 대비 저조한 성능을 보이는 유일한 경우는 신경망이 충분히 크지 않을 때입니다. 하지만 만약 충분히 큰 신경망을 훈련시킬 수 있는 경우 다중작업학습이 성능을 저하시키는 경우가 거의 없을 것입니다. 신경망에서 각 작업에 대한 훈련을 따로 할 때보다 성능 개선에 도움이 될 것입니다.

이것으로 다중작업학습에 대한 내용을 마치겠습니다. 실제로는 다중작업학습이 전이 학습보다는 훨씬 더 적게 쓰입니다. 저는 데이터량이 적은 경우 문제 해결을 위해 전이 학습이 응용 프로그램에서 사용되는 경우를 자주 봅니다.

그러므로 관련된 문제에 학습할 수 있는 데이터가 많은 경우 이를 배우고 새로운 문제에 이전합니다. 그러나 다중작업학습의 경우 잘 진행하고자 하는 작업의 양이 크고 이 모든 작업을 한번에 훈련시킬 수 있는 경우가 더 드뭅니다 컴퓨터 비전이 그 예가 될 수 있겠죠.

객체 탐지의 많은 다중작업학습 응용 프로그램에서는 신경망이 객체를 따로따로 탐지하는 것보다. 모든 객체를 한번에 탐지하는 것이 더 좋습니다. 오늘날에는 평균적으로 전이 학습이 다중작업학습보다 훨씬 많이 쓰이지만 이는 모두 유용한 도구입니다.

요약하자면 다중작업학습은 한 개의 신경망이 여러 작업을 처리할 수 있도록 해 줍니다. 이는 작업들을 따로 진행하는 것보다 더 나은 성능을 냅니다. 주의하실 점이 있는데요.

실제로 전이 학습이 다중작업학습보다 더 자주 쓰이는 모습이 보입니다. 머신러닝 문제를 해결하려고 하는데 데이터 세트 크기가 비교적 작은 경우 전이 학습이 큰 도움을 줄 수 있습니다. 해당 문제와 관련이 있으면서 데이터 세트가 훨씬 더 큰 문제를 찾으면 이를 신경망에서 훈련할 수 있습니다. 그리고 이를 데이터가 적은 문제로 이전할 수 있죠.

결론적으로 전이 학습은 오늘날 매우 자주 쓰입니다. 전이 다중작업학습이 사용되는 응용 프로그램도 있지만 다중작업학습이 전이 학습보다는 훨씬 적게 사용되는 것 같습니다.

예외적인 분야는 컴퓨터 비전 객체 탐지인데요. 서로 다른 많은 객체를 감지하기 위해 신경망을 훈련하는 경우입니다. 이 경우 개별 신경망 훈련보다 더 잘 작동합니다. 하지만 전이 학습과 다중작업학습이 비슷하게 보이는 경우가 많다고 해도 실제로는 다중작업학습보다 전이 학습의 적용사례를 훨씬 더 많이 봤습니다.

제 생각에는 각각의 다른 작업들을 일일히 세팅하거나 찾는 일이 굉장히 어렵기 때문에 그런 것 같습니다. 다시 말씀드리지만 컴퓨터 비전을 가미한 객체 탐지 예시가 가장 눈에 띄는 예외 사례입니다.

이것으로 다중작업학습에 대한 내용을 마치겠습니다. 다중작업학습과 전이 학습은 모두 중요한 도구입니다.

댓글남기기