본문 바로가기

rnn3

[TENSORFLOW] seq2seq 기반 챗봇 만들기 2017/07/12 - [machine learning] - [TENSORFLOW] LSTM Dual encoder 기반 챗봇 만들기 지난 포스팅에 검색 기반 챗봇을 구현했다면 이번에는 generative model의 대표격인 seq2seq를 활용해서 챗봇을 만들어 보자. seq2seq의 대표적인 구조이다. encoder 부분에서는 입력 응답을 받아 하나의 hidden code 값으로 표현을 해주고 decoder 영역에서는 hidden code 값과 start tag를 받아 가장 적합한 결과 단어들을 추출해 준다. 여기서 train과 test의 모델이 각각 다르게 나타나는데, train의 경우에는 decoder의 output과는 별개로 훈련 셋이 input으로 들어가는데 반해 test 모델의 경우에는 d.. 2017. 7. 14.
[TENSORFLOW] LSTM Dual encoder 기반 챗봇 만들기 해당 포스팅은 아래의 wildml 블로그에서 소개한 코드를 참조로 작성하였다. http://www.wildml.com/2016/04/deep-learning-for-chatbots-part-1-introduction/ 챗봇을 크게 검색 기반형 챗봇과 generative 챗봇으로 나눌 수 있다. 검색 기반은 일반적으로 후보 응답 셋들과 모델을 통해 예측된 결과 벡터와의 유사도를 구해 가장 유사도가 높은 결과 응답을 정답으로 나타내며, generative의 경우 기존 응답 셋을 활용하는게 아니라 유사도 높은 단어의 조합으로 새로운 응답 결과를 나타내는 방식을 말한다. 우리는 여기서 검색 기반형 챗봇에 대해 알아볼 것이며, 기본적인 모델의 구조는 아래와 같다. 위쪽의 c1,c2,ct에 질문 문장이 구성된 단어.. 2017. 7. 12.
[TENSORFLOW]RNN 어떤 특징에 대한 답을 학습시키는 것이 아니라 특징의 문맥도 학습시키자라는 개념에서 나온 것이 RNN이라고 할 수 있다. 예를 들어 노래를 부를 때 처음부터 부르면 노래를 부르기가 쉽지만 갑자기 중간부터 부르라고 하면 어떤 가사인지 생각나지 않는 경우가 있다. 이런 식으로 sequence 자체를 기억시키자는 개념에서 나온 것이 바로 RNN이다. 간단한 encoder - decoder diagram을 살펴보자.X(t)는 t시간에 들어온 입력 값, Win은 인코딩하기 위한 vector, Z(t)는 인코딩된 결과, Wout은 디코딩 하기 위한 vector, Y(t)는 t시간에서의 디코딩 결과 값이다. 이번에는 여기다가 시간 정보를 추가해 보자.t시간 뿐만 아니라 ...,t-2,t-1,....,t+1,t+2.... 2017. 5. 12.