Stanford CS330 Lecture | Lecture 2 - 1

감자·2023년 4월 17일
0

Stanford CS330

목록 보기
3/3
post-thumbnail

이 글은 Stanford CS330 수업을 정리한 글입니다.

2nd Lecture

→ 슬리드로 보기


2nd Lecture image

key point

  1. 멀티태스킹이란?

  2. 이러한 멀티태스킹 시스템을 구축하고 연습할 때 고려해야 할 key design

‏‏‎ ‎

Some Notation

2nd Lecture image

입력 : x, 출력 : y, 함수 : f(), theta : x가 주어졌을 때의 y 분포

과제 : 호랑이 / 그림 classification 혹은 기사 제목 예측

사용할 모델 : convolution network, LSTM 등

목표 : loss function이 최소화되는 값 찾기

‏‏‎ ‎

Single Task To Multi Task

"task"가 무엇인지 파악하는 것이 중요한데, 이 세 가지의 집합으로 이루어진 작업에 대해 생각해 볼 것

  1. X와 손실 함수에 대한 분포

  2. X에 대한 분포

  3. Y에 대한 분포

주의사항

  1. task를 잘하는 것과 data set을 잘 다루는 것은 다름

  2. 훈련 데이터 셋에서는 잘 수행되나, 실제 다른 데이터 셋에는 적용되지 않을 수 있음

\=> 해당 작업에 대한 해당 손실 함수로 정의하면 일반적으로 해당 작업에서 실제로 얼마나 잘 수행하는지에 대한 개념을 포착 가능

‏‏‎ ‎

Example of Task

2nd Lecture image

1. 손실함수가 모든 작업에서 동일함

  • 각 언어의 손글씨

    • 언어와 문자가가 다르기 때문에 서로 다른 P(x), P(x|y)를 가짐

    • 같은 분류 문제이기에 loss function은 같음

  • spam filter

    • 각각 다른 사람에게 각각 다른 스팸이 오기에 서로 다른 P(x), P(x|y)를 가짐

2. loss function, P(x)가 모든 작업에서 동일함

  • 얼굴 특성 인식

    • Multi-label Learning은 ImageNet와는 다르게 하나의 정답 라벨이 아니라 다른 라벨 집합을 가지는 것이 특징임

    • ImageNet는 하나의 정답 라벨을 가지기 때문에 단일 라벨 문제로 간주 (초기에 그렇게 설정해뒀기 때문이라고 함)

3. loss funtion이 달라질 때

  • 전체 레이블 중 일부가 연속적이거나 이산적인 특징을 가질 때

‏‏‎ ‎


‏‏‎ ‎

Multi-Task Problem

2nd Lecture image

‏‏‎ ‎

공식 설명

  • x: input / y: output

  • zi : task description

‏‏‎ ‎

논문을 리뷰해오라는 과제가 주어졌는데 시간이 얼마나 걸리고 싶은지 알을 때...

1. task

  • 논문의 제목만 보고 몇 장인지 예상

  • 논문 요약 내용 예측

  • 논문 리뷰

2. task description

  • one-hot encoding

  • 가지고 있는 meta-data

3. objective 기본 방법

해당 작업에 대해 설정된 훈련 데이터에 대한 네트워크의 손실 함수를 계산 후,모든 작업을 합산하고 신경망의 매개 변수를 최소화하여 손실 함수를 최소화

‏‏‎ ‎

* Di : x,y 쌍의 집합 / Li : 훈련 데이터 세트에서 네트워크의 손실 함수 계산

‏‏‎ ‎


2nd Lecture image

Task의 조건

질문1

2nd Lecture image

"zi가 각 작업에 대해 하나의 핫 벡터에 불과하다고 가정할 때 네트워크의 조건을 어떻게 설정할까"

‏‏‎ ‎

정답

2nd Lecture image

-> 서로 다른 t개의 신경망을 만들고, 예측에 사용할 신경망을 선택하는switch문을 이용하면 됨. 각 작업마다 별도의 신경망을 사용하기 때문에 각 작업이 다른 특징을 요구하는 겅우에도 독립적인 신경망을 가져 작업 간 공유를 최소화할 수 있음.

‏‏‎ ‎

질문2

2nd Lecture image

Z를 하나의 레이어와 합쳐서 넣고, 나머지는 보통대로 사용하면 됩니다. 이 경우, 모든 매개변수는 작업간에 공유되고, Z에 따라 조금씩 다른 매개변수만 따로 학습하는 경우, 실제로 어떻게 해야하는가?

‏‏‎ ‎

답변

2nd Lecture image

두 가지의 선택지가 있음.

  1. 각 작업마다 매개변수를 공유하는 방법

  2. 작업별로 모든 매개변수를 사용하는 방법

  3. 조건부 처리를 하여 매개변수를 공유할 것과 분리할 것을 나누는 방법

1,2번은 극단적인데 비해, 3번은 objective를 이전과 동일하게 유지하면서도, 매개변수를 공유 부분과 작업별 부분으로 나누어 관리함. 이러한 작업별 네트워크는 해당 작업에 대한 데이터만을 이용하여 매개변수를 최적화할 수 있음

‏‏‎ ‎


‏‏‎ ‎

일반적인 사례

2nd Lecture image

1. concatenation-based conditioning

  • 각 레이어의 출력과 이전 레이어의 출력을 concatenate하여 하나의 텐서로 만든 후, 다음 레이어의 입력으로 사용하는 방법.

‏‏‎ ‎

2. Additive conditioning

  • 각각 다른 가중치를 가진 linear layer를 통해 input data와 zi 처리 후, 그 결과를 더해서 모델의 input으로 사용하는 방법

‏‏‎ ‎

2nd Lecture image

‏‏‎ ‎

\=> 두 방식 모두 결과적으로 동일한 효과를 갖음. 둘 다 조건적인 정보를 입력 데이터에 결합하여 모델의 입력으로 사용하기 때문에 조건적인 정보를 모델이 고려하도록 만들고, 각 조건별로 다른 출력을 생성할 수 있도록 만들기 때문임

‏‏‎ ‎

2nd Lecture image

3. Multi-head architecture

  • 모든 작업을 여러 개의 동일한 하단 레이어로 전달한 후, 각 작업에 대해 서로 레이어 집합을 가짐

‏‏‎ ‎

4. Multiplicative conditioning

  • 기본 아키텍처는 Multi-head architecture와 유사하나, 벡터나 디스크립터를 활용하여 각 레이어에서의 활성화값과 element-wise 곱셈을 수행 -> 입력 데이터와 작업 조건을 보다 유연하게 고려 가능

‏‏‎ ‎
많이.... 어렵다......
갈 길이 멀지만 화이팅....!!!

profile
감자와 함께 떠나는 프로그래밍 여행

0개의 댓글