레플리
글 수 293

일상대화 챗봇 레플리카(Replika)의 구현 방식

조회 수 2500 추천 수 0 2020.12.22 15:41:47


레플리카(Replika)는 대표적인 일상대화 챗봇입니다. 그 구조를 보면 크게 세 부분으로 이루어져 있습니다.

 

replika1.jpg

 

 

 

첫째, 스크립트입니다. 사람이 직접 작성한 시나리오에 따라 대화가 흘러갑니다. 둘째, 검색(retrieval)입니다. 사람이 입력한 문장 목록에서 질문에 적합한 대답을 찾습니다. 셋째, 생성모델입니다. 신경망으로 직접 대답 문장을 만들어냅니다.

 

replika2.jpg

 

replika8.jpg

 

 

 

아직은 검색 부분이 가장 중요합니다. QA-LSTM 모델을 사용했는데, 질문과 대답을 각각 별도의 LSTM으로 분리합니다. 그리고 각 출력을 어텐션으로 합치고, 두 벡터의 코사인 유사도를 구합니다. 이 유사도가 높으면 질문과 대답이 올바르다는 의미입니다.

 

replika3.jpg

 

replika4.jpg

 

 

 

이런 구조의 장점은 대답의 LSTM 출력 벡터를 사전에 계산해놓을 수 있다는 것입니다. 그래서 질문 문장만 결과를 얻어서 코사인 연산을 하면 빠르게 정답이 나옵니다. BERT 같은 경우 질문과 대답 문장을 하나의 입력에 넣어서 계산합니다. 만약 대답 목록이 1만개의 문장이라면 모두 1만번의 추론을 해야 합니다. 당연히 실시간으로 처리하기가 어렵습니다.

 

replika5.jpg

 

 

 

이렇게 20개의 후보 대답을 골라냅니다. 그다음 BERT로 두 번째 후보를 선택합니다. 후보 문장이 적기 때문에 BERT를 써도 충분히 속도가 빠릅니다. 이때 사용자가 좋아요/싫어요 했던 피드백 정보로 학습합니다. 덕분에 정확도를 상당히 높일 수 있었다고 합니다.

 

replika6.jpg

replika7.jpg

 

 

 

< 발표 자료 >

-> https://github.com/.../replika-research/tree/master/scai2019

 

List of Articles
제목 글쓴이 날짜sort 조회 수
딥러닝으로 동네생활 게시글 필터링하기 깊은바다 2020-10-06 1043
카카오미니의 명령어 분류 방법 깊은바다 2020-10-23 990
스캐터랩의 핑퐁팀, 새로운 생성 모델 챗봇 데모 공개 깊은바다 2020-11-02 1492
GPT-3를 헬스케어 서비스에 적용했을 때의 문제점들 깊은바다 2020-11-04 1396
좋은 응답을 골라내는 모델 만들기 - 핑퐁의 답변매칭 알고리즘 깊은바다 2020-12-10 1315
일상대화 챗봇 레플리카(Replika)의 구현 방식 file 깊은바다 2020-12-22 2500
스캐터랩의 오픈도메인 챗봇 루다 육아일기 - 모델의 구조 및 동작방식 file 깊은바다 2020-12-30 2222
딥러닝 자연어처리 라이브러리 - Pororo file 깊은바다 2021-02-03 3095
GPT-2를 사용한 텍스트 압축 기법 file 깊은바다 2021-02-19 1197
GPT-3로 NPC와 대화를 할 수 있는 게임 시뮬레이터 깊은바다 2021-02-22 2165
이성에게 말을 거는 작업멘트를 GPT-3로 생성 file 깊은바다 2021-03-24 1333
이루다 같은 챗봇은 어떤 원리로 작동하는 걸까? 깊은바다 2021-04-03 2518
KoGPT2 v2.0 공개 깊은바다 2021-05-03 2353
텍스트 스타일을 바꾸는 딥러닝 기술 깊은바다 2021-06-01 1140
GPT-3를 사용하여 코딩을 하는 MS의 파워FX 깊은바다 2021-06-01 1027