본문 바로가기
  • 기술을 이야기하지만 사람을 생각합니다.
카테고리 없음

Deep Learning Cookbook :: Chp 5 특정 문체를 흉내 내는 문장 생성하기

by WE DONE IT. 2019. 4. 13.

05 특정 문체를 흉내 내는 문장 생성하기

 

 

 

 

[그림] Deep Learning Cookbook

 

이 책은 (주)느린생각에서 'Deep Learning Cookbook' 책을 지원 받아 이 책을 교재로 스터디를 진행하였습니다. 이 글은 Deep Learning Cookbook의 5장 <특정 문체를 흉내 내는 문장 생성하기>를 실습을 목적으로 공부한 내용을 정리한 글입니다.


이번 장은 RNN(Recurrent Netural Network, 순환신경망)을 사용하여 원본 문장의 문체를 흉내 내는 문장을 생성하는 방법을 다룬다. 시간이나 순서를 고려하기 위해 RNN을 활용하며, 그 중에서도 DensNet을 이용한다. 

들어가기에 앞서

1. DensNet 특징

DensNet의 개념을 간단하게 살펴보기 위해, ResNet과의 가장 큰 차이점을 살펴보면 다음과 같다.

 

  • ResNet의 Skip connection: xl=Hl(xl−1)+xl−1
  • DensNet의 Dense connectivity: xl=Hl([x0,x1,...,xl])
ResNet은 레이어가 깊어질 수록 정보가 희미해지는 반면, DenseNet은 일부 레이어를 하나의 Block으로 취급한다. 
[x0,x1,...,xl1] 로 표현된 부분은 l번째 레이어 이전의 피처 맵(feature map)을 Concatenation한 것이며, HI()는 것으로 보면 되며 Hl() 은 Batch Normalization + Relu + 3x3 Conv으로 표현된 함수입니다.
또한, convolution과 pooling을 통해 다운 샘플링(down sampling) 과정을 거치도록 설계되어 있다. 

정보를 차곡 차곡 쌓아 블럭 형태로 밀도(dense) 높은 정보를 다음 레이어에 전달하기 때문에, 레이어가 깊어져도 정보의 손실(wash out)을 해결할 수 있다. 

 

이러한 특징으로 인해 정보의 시간이나 순서, 이전 정보를 레퍼런스해야하는 데이터의 경우에는 DenseNet이 적합할 수 있다.

 

2. Gutenberg Project (구텐베르크 프로젝트)

구텐베르크 프로젝트는 저작권이 없거나 만료된 50,000권 이상의 책을 포함하고 있다. 책의 ID를 검색

 

댓글