[3.2.] Learning from Multiple Tasks
Transfer Learning
새로운 데이터셋으로 교체, 마지막 한두 개 레이어의 가중치를 initialize한 후 재학습
데이터양이 크면 전체 레이어를 다시 학습해도 괜찮음
"pretraining" -> "fine-tuning"
새로운 레이어를 더 붙일 수도 있음
데이터가 적을 때 사용할 수 있다
전이학습이 필요 없는 경우? 반대의 경우
[When transfer learning makes sense]
transfer from A -> B
- task A and B have the same input X (이미지면 이미지, 오디오면 오디오 ...)
- have a lot more data for task A than task B (task B의 가치가 더 valuable)
- low level features from A could be helpful for learning B
Multi-task Learning
한 신경망이 여러개를 한번에 수행하도록 함
자동주행 자동차를 개발한다고 해보자- 보행자, 자동차, 멈춤신호, 교통등 등등을 탐지해야 함
라벨 $y^{(i)}$이 1차원이 아니게 됨 (보행자, 자동차, 멈춤신호, 교통등이라면 $(4, 1)$ 차원)
$$Y = [y^{(1)}, y^{(2)}, y^{(3)}, \ldots, y^{(m)}]$$
$(4, 1)$ 차원의 칼럼 벡터를 일렬로 늘어놓은 셈 --> $Y$는 $(4, m)$ 차원
여기서 $\hat{y} \in R^{4}$
$(4, 1)$차원의 $\hat{y}^{(i)}$의 Loss 함수는
$$\frac{1}{m} \sum_{i=1}^{m} \sum_{j=1}^{4} L(\hat{y}_{j}^{(i)}, y_{j}^{(i)})$$
이때 $L$은 일반적인 logistic loss: $-y_{j}^{(i)} \log \hat{y}_{j}^{(i)} - (1-y_{j}^{(i)})\log (1-\hat{y}_{j}^{(i)})$
Softmax와 다름: 한 이미지 안의 여러 오브젝트들을 대상으로 함 --> 한 개의 이미지가 multiple label들을 가짐
하나의 신경망이 네 개의 다른 문제를 해결하고 있는 것이기 때문
네 개의 신경망을 학습해 각 문제를 해결하게 할 수도 있지만,
초기 feature들을 공유함으로써 더 조은 성능을 낼 수 있음
게다가 학습에 사용하는 데이터셋이 하나하나 모두 완전히 라벨링되어 있지 않아도 됨
$\sum_{j=1}^{4}$는 $0$과 $1$로 구성된 $j$에 대해서 합계를 구하는 것이므로, $?$로 처리된 것은 없는 term으로 치면 됨
[when multi-task learning makes sense]
- training on a set of tasks that could benefit from having shared lower-level features
- Usually: Amount of data you have for each task is quite similar
100개의 task가 있고 각 데이터셋이 1000개라고 한다면, 하나의 task만 훈련할 때 겨우 1000개 데이터밖에 없지만 전체를 함께 학습한다고 하면 99000개의 데이터셋으로 augment되는 효과가 있음
- can train a big enough neural network to do well on all the tasks
multi-tasking 이 잘 되지 않는 경우: 신경망이 충분히 크지 않을 때
object detection에서 잘 됨 // transfer learning보다는 덜 쓰임