본문 바로가기

머신러닝/[논문으로 짚어보는 딥러닝의 맥]

RNN을 이용해 손글씨를 만드는 Handwriting generation

학습목표

기본적인 RNN에 대한 내용과 Sequence Generation 논문(Handwriting generation)에 대해 알아보도록 하겠습니다. Handwriting generation 논문은 굉장히 임팩트가 있는 논문입니다. 2014년에 나온 논문이지만 지금 시대에 이 논문이 나와도 AI분야에 큰 파장을 끼쳤을 것으로 생각되는, 굉장히 선구적인 연구라고 생각됩니다.

핵심 키워드

  • RNN(Recurrent Neural Network)
  • Sequence Generation

학습하기

 이번에는 기본적인 RNN에 대한 이야기와, Sequence Generation, 이하 SG에 대해 말해보겠습니다. 특히 SG에 대한 논문은 개인적으로 굉장히 멋진 논문이라고 생각됩니다. Attention, RNN 등의 내용이 포함되어있는데, 정말 배울 점이 많습니다. 

 아래 그림은, RNN을 통해 만들어진 Handwriting 문장입니다. 지금부터 설명할 논무을 기반으로 만들어진 모델인데, 내가 어떤 문자열을 입력하면 모델이 아래의 손글씨를 생성하는거죠.

 그래서, 일반적으로 저희가 봐왔던 대부분의 네트워크는 FFNN입니다. 그런데 지금부터 설명할 RNN이라는 구조는, 입력이 있고, 이전에 있던 어떤 값이 메모리에 저장이 되어있다가, 셀안으로 들어왔습니다. 아래 그림을 보면, X가 입력, H가 히든 레이어, Y가 출력이죠.

 이런 RNN을 한 층 더 쌓게 되면, 이런 구조가 되겠죠. 이런식으로 RNN을 스택시키면, Long-term dependency 문제가 조금 더 개선될 것이라고, 기대할 수 있겠죠.

 이런 RNN을 학습하는 것도 여태까지 봐왔던 다른 네트워크들과 다르지는 않습니다. X Sequence와 Y Sequence를 입력해주면, 동일하게 학습하겠죠. 다만 문제는, 이전 정보를 다음 셀로 계속해서 넘기는 과정에서, 아래와 같이 복잡한 계산이 필요로 하게 되는 겁니다. 그렇게 복잡한 연산을 거친 값들을 계속해서 다음 셀로 넘기다보면, Vanishing Gradient 문제가 발생되고, 이에따라, Long-Term dependency문제도 다시 고개를 들게됩니다.

 아래는 Gated Recurrent Unit, 이하 GRU의 구성입니다. 조경현 교수님이 만드신건데, LSTM은 기억나실지 모르겠지만, 3개의 게이트를 가지고 있었습니다. Input, Forget, Ouput gate. 그에 반해 GRU는 Reset, Dynamic gate 2개 밖에 없습니다. 1개의 게이트가 빠진 만큼, 네트워크를 구성하는 파라미터의 수가 적죠. 역활은 비슷합니다. Reset gate에서는 어떤 정보를 죽이고, 또 살릴지, Dynamic gate에서는 현재의 정보를 얼마나 반영할지. 를 결정합니다.

 자, 이제 본격적으로 "Generating Sequences With Recurrent Neural Networks"라는 논문을 살펴보도록 하겠습니다. 현재 이 논문의 저자는, 딥마인드사의 주요 인물입니다. 

 저희의 목표는, Char가 주어지면, 그 Char에 맞는 글씨를 컴퓨터가 손글씨로 써내기를 원합니다. 일단, 그냥 예측 NN은 당연히 이를 처리할 수 없겠죠. 둘째로, Char의 Sequence 길이와 이를 써내기 위한 Storke의 개수는 다를 수 있습니다. 때문에 단순히 어떤 매핑을 찾을 수 없습니다. 때문에 Soft window라는 기법을 사용합니다. 

 중간 과정에 대한 이해도가 굉장히 부족하다고 생각해 추후 재정립하도록하고, 결론만 보겠습니다. 첫재, LSTM이 굉장히 중요하게 사용되었습니다. 둘째, Stochastic model을 만들어야합니다. 본래 RNN은 Deterministic model이죠. 인풋이 정해지면 아웃풋도 고정되어야합니다. 그러나 여기서는, Gaussian mixture density layer를 넣음으로써, 어느정도 확률적인 출력을 내놓는 모델을 만들었습니다. 셋째로, Soft window를 통한 attention mechanism을 구성함으로써 Sequence generating을 가능케 했습니다. 넷째로, Heuristic한 방법을 사용해, 필기체로 만들거나 정자로 만들거나, 따위를 조정할 수 있었습니다.

 대충 그린 그림을 입력하면, 굉장히 멋진 화풍의 그림을 출력하는 앱들이 있는데, 이런 내용들의 근본이 되는 논문이 바로 이 논문입니다. 때문에 정말 무궁무진하게, 활용될 수 있겠죠. 이상입니다.