Autoregressive Model

Chain rule을 기반으로 데이터의 결합 확률 분포를 조건부 확률로 분해하여, 각 변수의 값이 이전 변수들의 값에 의존하도록 모델링하는 확률 모델을 의미한다

Neural Models for classification

  • Setting: 인풋 가 주어졌을 때 을 구분하는 것
  • 분류를 위해 을 구해야 해서 다음을 가정
    • 여기서 를 어떻게 가정하는가가 모델을 구분하는 핵심적인 요소
  • Logistic regression
  • Non-linear dependence

Motivating Example: MNIST

  • 각 이미지는 784 픽셀로 구성되어, 0(블랙)이거나 1(화이트)임
  • 목표: 이미지의 확률분포를 구하는 것
    • 를 구하는 것
    • 를 했을 때 가 digit처럼 보여야 한다
  • 두 단계로 이뤄짐
    1. Model family 파라미터화 하는 것
    2. 학습 데이터셋에 기반해 모델 파라미터를 찾는 것

Fully Visible Sigmoid Belief Network (FVBSN)

Parameterization

  • 베이지안 네트워크를 만들기 위해, random variable의 어떤 한 ordering을 골라 Chain rule을 적용해 보자
  • 너무 복잡하니 다음과 같이 가정하자
    • 즉,
    • 여기서 각 항이 나타내는 바
    • ,
      • 학습 대상은 (1개)
      • 학습 대상은 (2개)
      • 학습 대상은 (3개)
    • Model assumption일 뿐 꼭 이렇게 해야 하는 것은 아니다. FVBSN의 핵심 아이디어!
  • 다시 정리하자면 이렇다
    • 여기서 의 근사값
    • 파라미터의 갯수는 개가 필요. 약

학습

  • CPT 테이블에서 값을 배정해 학습
  • 데이터를 가지고 학습
  • 데이터를 가지고 학습
  • 데이터를 가지고 학습

Evaluation

  • 를 evaluate하는 방법 : 모든 factor를 곱셈

Sampling

  • 순차적으로 샘플링

Performance

  • 개 별로다
  • 복잡한 분포를 나타내기에 적합하지 않다
  • 학습해야 하는 파라미터가

NADE: Neural Autoregressive Density Estimation

  • 아이디어 1: 로지스틱 회귀 대신 One layer neural network를 사용하자
  • 아이디어 2: weight를 바인딩하자
  • , , 에 재활용
    • 이렇게 하는 이유 : 파라미터 수를 줄일 수 있다.
      • 라면, 전체 파라미터는
        • Weights
        • biases
        • vector
      • 개로 줄일 수 있음
        • 새로운 은닉층 가 학습해야 하는 파라미터의 개수 :
    • 파라미터 수를 줄여서 확률 evaluation도 만에 가능

Performance

  • FVSBN 보다는 낫다
  • 개 파라미터만 학습하면 된다
  • 픽셀 수(n)에 linear

General discrete distributions

  • 픽셀이 0과 1이 아닌 랜덤 변수일 경우에는 어떻게 해야 할까?
    • 즉,
    • e.g. 픽셀이 0에서 255 사이 값을 가질 수 있음
  • 한가지 솔루션: 를 카테고리 분포로 파라미터화하자
    • (여기까지는 동일함)
      • 는 카테고리 분포
        • 0, 1의 값을 갖는 베르누이 분포와 달리 여러 값을 가질 수 있음
        • 일반적으로 K개 베르누이 분포 벡터를 가지는 다변수 확률 분포로 가정해 사용
      • 는 K개 카테고리 중 하나를 선택하는 분포로 해석 가능
      • 따라서 번째 범주를 선택할 확률
      • Softmax는 를 일반화하여 K 개 숫자의 백터를 K개 possibility로 변환하는 함수

RNADE

  • 연속확률변수는 어떻게 모델링 해야 할까?
  • Idea: 를 연속 분포로 파라미터화하자
  • e.g. K gaussian의 uniform mixture

Autoregressive model vs Autoencoder

Autoencoder

  • Encoder
    • e.g.
  • Decoder
    • e.g.
  • 데이터를 압축 및 복원하는 과정을 통해 데이터의 특징을 학습하는 비지도학습 알고리즘
    • 의미있는 압축을 했는가? == 제대로 된 특징을 학습했는가?
  • Vanilla autoencoder는 생성형 모델으로 사용하기 어렵다
    • Autoencoder는 샘플의 대상이 되는 distribution over x 를 정의하지 않기 때문임

Autoregressive autoencoders

  • Autoencoder를 베이지안 네트워크에 대응하게 만들 수 있다.
    • Ordering(for DAG)을 만들면 된다!
    • e.g.
      • 은 어디에도 의존하지 않음
      • 에 의존
      • 에 의존
  1. 출력층이 조건부확률 를 학습하게 한다
  2. 마스킹을 통해 예측 시점 이후의 데이터의 영향을 제거하고 DAG처럼 만든다

MADE: Masked Autoencoder for Distribution Estimation

  • 마스킹을 통해 일부 path를 불가능하게 만듬

Masking 과정

  • Ordering이 , , 이라고 가정하자 (는 아무데도 의존안하고, 에, , 에 의존)
  1. 은닉층 각각의 노드에 1부터 n-1까지 랜덤한 숫자 배정
  2. 부모 노드의 숫자가 자식 노드의 숫자보다 작거나 같으면 가만히 있어
  3. 부모 노드의 숫자가 자식 노드의 숫자보다 크면(의존 안함) 마스킹으로 연결 제거
    • 위 그림에서는 까맣게 칠해서 연결을 제거하고 있음

RNN: Recurrent Neural Nets

  • Seqeuntial data를 받아 그 다음 데이터를 예측하는 모델
  • Challenge: Model 에서 history에 해당하는 부분이 계속 길어진다
    • NADE에서 hidden vector 구하려고 A 백터랑 곱해지는 그 대상이 너무 길어진다는 뜻
  • Idea: Summary를 유지하고 재귀적으로 update하자
    1. 첫번째 은닉층 을 초기화한다
    2. 시퀀스의 첫번째 데이터 을 입력합니다
    3. 두번째 은닉층 을 이전 시점의 은닉층 으로 업데이트
    4. 다음 은닉층을 다음과 같이 업데이트
    5. 시퀀스의 길이 에 대해 반복
  • 출력층은 과 같이 계산

Example: Character RNN

  • 예측을 softmax(o) 로 계산한 결과임

Pros and Cons

Pros

  • 임의 길이의 모든 시퀀스에 적용 가능
  • General

Cons

  • 마찬가지로 Ordering을 필요로 함 (이게 왜 문제지?)
  • Sequential하게 우도를 평가하기 때문에 학습이 너무 느려
  • Sequential generation (autoregressive model에서는 어쩔 수 없다)
  • 학습하기 어려운 케이스들이 생김 (시퀀스 길이가 길어짐에 따른 기울기 소실/폭주 문제)