ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 21/08/11 논문 스터디
    Deep Learning 2021. 8. 11. 20:43
    728x90
    반응형

    <Recipes for building an open-domain chatbot>

    어떻게하면 질 좋은 데이터를 생성할 것인가?

    데이터셋: Reddit (Pre-training)

    - Toxic한 표현들 다수 포함

    - Group discussion

    ConvAI2

    - 사람과 같이 대화하는 것, 참여도: 화두를 계속 던질 수 있는 것

    Empathetic Dialogues

    - 공감을 할 수 있는 것

    Wizard of Wikipedia

    - 전문적인 대화(Wikipedia 기반)

     

    페르소나가 주어지고 세 가지 데이터 셋 각각으로 훈련된 모델은 세 가지 답변, 사람이 그 중에 하나를 선택하거나 아니면 새로운 답변을 생성

     

    여러 데이터 셋을 활용함으로써 multi task가 가능하게 함

    이 multi task를 어떻게 잘 섞을 것인가: Blended skill talk

     

    전처리 - 9개의 휴리스틱한 rule

     

    Retriver: Poly encoder 구조. 어떤 문장이 적절한지 찾는 모델

    Bi-encoder의 장점(각각 임베딩을 시켜놓을 수 있는 것)과 Cross Encoder의 장점(두 문장이 서로 인텐션을 줄 수 있는것)을 결합

    라벨에서 적절한 답변을 직접 뽑아옴 - 대답이 local해서 확장 가능성이 없다

     

    Generator: Seq2Seq 트랜스포머 모델

    대답을 짧게 하고 General한 문장을 생성함 (loss를 줄여야하니까) - 어느 대화에서도 일반적으로 이상하지 않은 문장

     

    성능 평가: PPL (낮을 수록 좋음)

    인코더보다 디코더의 레이어 수가 훨씬 많음 (문장을 생성해야하는 모델이니까)

     

    이 두 개를 합친게 Retriver & Refine 모델

    훈련 결과 Retriver의 decoder에서 context만 고려하고 Retrieved next urtterance는 무시하는 경향을 보임 - Alpha  blending으로 보완 (Retrieved next urtterance에 가중치 부여)

     

    Likelihood training - 그럴 듯한 단어에 대한 가능성을 높임

    Unlikelyhood - 나오지 않을 단어에 대한 가능성을 낮춤

    Likelyhood의 단점: 확률값을 너무 과하게 부여함 - Unlikelyhood로 보완

     

    너무 짧은 문장을 생성하는 것을 방지하기 위해 Minimum length를 제한함

     

    Beam training??? Beam search??

    Beam blocking

    Meena에서 사용한 Sample+Rank가 Beam search보다 성능이 좋음

     

    평가:

    ACUTE-Eval

    사람을 챗봇이랑 대화를 시켜서 어떤 챗봇이랑 더 대화하고 싶은지, 어떤 챗봇이 더 사람같은지에 대해 평가

    Self-Chat ACUTE-Eval

    챗봇과 챗봇끼리 대화를 시켜서 대화결과를 보고 사람이 평가

     

    Retrive & Refine 모델의 성능의 PPL이 더 높지만 Generative 모델만 쓴 결과와 유의미한 차이는 아니며 사람이 직접 봤을 때는 성능이 더 괜찮다고 평가됨.

     

    전문적인 대화 불가능, 일관성이 없음, 말을 이해하고 대답하지 못함(언어 유희 등 이해 못함)

     

    <Representation Learning with Contrastive Predictive Coding> - CPC

    Unsupervised learning - 현실 세게에서는 라벨이 없는 경우가 많고, 라벨링에 비용이 많이 들기 때문에 unsupervised learning에 많은 집중을 하는 동향

    self-supervised learning - 모델이 자체적으로 라벨을 형성할 수 있도록 함

     

    Supervised learning: 특정 목적으로 훈련된 모델들은 다른 task에서 성능을 발휘하기 힘듦

    Unsupervised learning은 각 데이터 간의 관계, 데이터의 특징을 파악하기 때문에 general하게 성능을 낼 수 있음 - fine tuning을 통해 여러 task로 확장 가능

     

    contextual information을 이용한 예측 방법론

    1. 고차원의 input data를 compact latent embedding space로 압축

    2. Autoregressive model을 통해 prediction

     

    Softmax를 통해 라벨을 생성하면 output라벨이 너무 커서 computation loss 발생 (computing 자원 과도하게 사용)

    이를 극복하기 위해 Shared information 추출방법을 생성 - target vector와 다른 input vector들의 latent vector를 무작위로 추출해서 latent vetors와 유사도는 최소로하면서 (Negative sample) Ct(Positive sample)와의 유사도는 최대로 하게 함

    유사도를 정하는 법 - 상호정보량(mutual information): 서로의 정보를 얼마나 공유하는 가

    word2vec도 이 방법 사용해서 학습

     

    중간에 놓침...

     

    음성, 이미지, 자연어에서 다음에 올 법한 문맥(?)을 예측함 ex)사진에 왼쪽 눈이 왔으니 그 다음 오른쪽 눈이 올 것이다..

     

     

     

     

     

     

     

     

     

    728x90
    반응형

    댓글