이 글은 Stanford CS330 수업을 정리한 글입니다.
멀티태스킹이란?
이러한 멀티태스킹 시스템을 구축하고 연습할 때 고려해야 할 key design
입력 : x, 출력 : y, 함수 : f(), theta : x가 주어졌을 때의 y 분포
과제 : 호랑이 / 그림 classification 혹은 기사 제목 예측
사용할 모델 : convolution network, LSTM 등
목표 : loss function이 최소화되는 값 찾기
"task"가 무엇인지 파악하는 것이 중요한데, 이 세 가지의 집합으로 이루어진 작업에 대해 생각해 볼 것
X와 손실 함수에 대한 분포
X에 대한 분포
Y에 대한 분포
task를 잘하는 것과 data set을 잘 다루는 것은 다름
훈련 데이터 셋에서는 잘 수행되나, 실제 다른 데이터 셋에는 적용되지 않을 수 있음
\=> 해당 작업에 대한 해당 손실 함수로 정의하면 일반적으로 해당 작업에서 실제로 얼마나 잘 수행하는지에 대한 개념을 포착 가능
각 언어의 손글씨
언어와 문자가가 다르기 때문에 서로 다른 P(x), P(x|y)를 가짐
같은 분류 문제이기에 loss function은 같음
spam filter
얼굴 특성 인식
Multi-label Learning은 ImageNet와는 다르게 하나의 정답 라벨이 아니라 다른 라벨 집합을 가지는 것이 특징임
ImageNet는 하나의 정답 라벨을 가지기 때문에 단일 라벨 문제로 간주 (초기에 그렇게 설정해뒀기 때문이라고 함)
x: input / y: output
zi : task description
논문을 리뷰해오라는 과제가 주어졌는데 시간이 얼마나 걸리고 싶은지 알을 때...
논문의 제목만 보고 몇 장인지 예상
논문 요약 내용 예측
논문 리뷰
one-hot encoding
가지고 있는 meta-data
해당 작업에 대해 설정된 훈련 데이터에 대한 네트워크의 손실 함수를 계산 후,모든 작업을 합산하고 신경망의 매개 변수를 최소화하여 손실 함수를 최소화
* Di : x,y 쌍의 집합 / Li : 훈련 데이터 세트에서 네트워크의 손실 함수 계산
"zi가 각 작업에 대해 하나의 핫 벡터에 불과하다고 가정할 때 네트워크의 조건을 어떻게 설정할까"
-> 서로 다른 t개의 신경망을 만들고, 예측에 사용할 신경망을 선택하는switch문을 이용하면 됨. 각 작업마다 별도의 신경망을 사용하기 때문에 각 작업이 다른 특징을 요구하는 겅우에도 독립적인 신경망을 가져 작업 간 공유를 최소화할 수 있음.
Z를 하나의 레이어와 합쳐서 넣고, 나머지는 보통대로 사용하면 됩니다. 이 경우, 모든 매개변수는 작업간에 공유되고, Z에 따라 조금씩 다른 매개변수만 따로 학습하는 경우, 실제로 어떻게 해야하는가?
두 가지의 선택지가 있음.
각 작업마다 매개변수를 공유하는 방법
작업별로 모든 매개변수를 사용하는 방법
조건부 처리를 하여 매개변수를 공유할 것과 분리할 것을 나누는 방법
1,2번은 극단적인데 비해, 3번은 objective를 이전과 동일하게 유지하면서도, 매개변수를 공유 부분과 작업별 부분으로 나누어 관리함. 이러한 작업별 네트워크는 해당 작업에 대한 데이터만을 이용하여 매개변수를 최적화할 수 있음
\=> 두 방식 모두 결과적으로 동일한 효과를 갖음. 둘 다 조건적인 정보를 입력 데이터에 결합하여 모델의 입력으로 사용하기 때문에 조건적인 정보를 모델이 고려하도록 만들고, 각 조건별로 다른 출력을 생성할 수 있도록 만들기 때문임
많이.... 어렵다......
갈 길이 멀지만 화이팅....!!!