728x90

오토인코더

신경망의 한 종류로서 입력데이터를 코드라고 부르는 은닉층으로 인코딩하는 인코더와
인코딩된 code를 다시 디코딩하는 디코더로 구성
인코딩은 원래 데이터를 차원 축소하는 것, 디코딩은 차원 축소된 데이터를 다시 원래 데이터로 복원하는 것

AutoEncoder 구조

은닉층

  • 은 은닉층에서의 활성화함수
  • 가중치 행렬 W1, 편향 벡터 b1은 랜덤하게 초기화하고 역전파법으로 학습

출력층

  • code 데이터에서 출력층으로 변환할 때 사용하는 가중치 행렬 W2, 편향 벡터 b2

AutoEncoder의 손실

AutoEncoder와 Gan의 차이

  1. GAN으로 생성한 사람 얼굴은 실제 같아 보이지만 세상에 존재하지 않는 사람의 얼굴 이미지를 생성
  2. AutoEncoder로 생성한 얼굴 이미지는 기존 데이터에서 존재하는 사람의 특징을 잘 살린 이미지

자연어 처리

자연어처리란 컴퓨터가 인간의 언어를 이해, 생성, 조작할 수 있도록 해주는 인공 지능(AI)의 한 분야
토큰: 문법적으로 가장 작은 단위
토큰화(tokenize): 전체 글을 토큰으로 나누는 것
워드카운트: 토큰화하여 어떤 토큰이 자주 사용되는지 세는 것

원핫 인코딩은 글이 길어질 수록 벡터의 길이가 함께 커지는 문제점이 있기 때문에
단어 임베딩 기법을 활용하면 인덱스 길이 상관없이 사용자가 지정한 벡터의 길이로 모든 단어 표현 가능

임베딩 원리

  • 임베딩을 위한 행렬(weight)은 랜덤값으로 정함
  • 행 row 개수는 임베딩할 단어의 개수
  • 열 column 개수는 임베딩 벡터의 크기만큼 정하기(hyperparameter)

1x5(단어) 짜리 문장 * 5(단어) x 3(임베딩 벡터) = 1 x 3

seq2seq 모형
입력값으로 시퀀스를 받고 출력값도 시퀀스를 출력하는 모형

  1. 인풋 시퀀스와 아웃풋 시퀀스가 같은 경우 (인풋 시퀀스 길이 정보가 필수적)
  2. 인풋 시퀀스와 아웃풋 시퀀스의 길이가 다른 케이스 (타겟 예측을 위해 인풋 시퀀스 전체가 필요)

seq2seq는 개념적으로는 RNN + AutoEncoder
구조적으로는 두개의 RNN 모형을 합친 형태 (LSTM, GRU 자주 사용)

인코더

  • 인코더는 입력 시퀀스를 읽는 역할
  • 인코더 내부에는 1개의 타임 스텝마다 한 개의 LSTM 모형이 존재
  • -> 여러개의 LSTM 모형 존재, 큰 차원의 벡터 입력 가능
  • 인코더는 입력 시퀀스를 처리하고 은닉 state만 return (output X) : 는 context
  • 하나의 압축된 벡터는 Context Vector가 됨

디코더

  • 디코더는 은닉 벡터(context vector)를 초기벡터로 입력받아 출력 시퀀스를 출력
  • 타깃 시퀀스의 한 시점 이전 문자가 주어질 때, 타깃 시퀀스의 바로 다음 문자를 예측하도록 학습
  • teacher forcing: 디코더는 타깃 시퀀스를 같은 시퀀스로 변하게 학습되지만 1시점 미래로 offset함

seq2seq은 단어 기반 분석 방법과, 문자 단위로 분석하는 방법이 있음

반응형