SlideShare a Scribd company logo
1 of 29
TensorFlow 2.0 Tutorial
RNN
김환희
2019.05.25
목차
• RNN 소개
• Tensorflow 2.0 - RNN
• Tensorflow 2.0 Sample code - RNN
RNN 소개
RNN
• Recurrent Neural Network
• Recurrent : 반복적인, 순환하는
입력
X
출력
Y
출력
Y
입력
X
DNN RNN
일반적인 딥러닝 구조 RNN 의 되먹임 구조
RNN
• Recurrent Neural Network
• 같은 네트워크로 변화하는 입력에 대한 출력을 얻어냄
• 모든 시간대에 동일한 매개변수를 사용
출력
Y
입력
X
RNN
출력
입력
RNN
출력
입력
RNN
출력
입력
RNN
X1 X2 X3
Y1 Y2 Y3
Y1 Y2
RNN
• 주로 순차적인 정보(Sequence)를 입력으로 받음
• 언어, 날씨, 주가 등
https://seanwes.com/book/
https://md2biz.tistory.com/148
RNN
• RNN 의 발전된 형태인 LSTM 으로 애플 주식 가격을 예측하는 사례
https://github.com/NourozR/Stock-Price-Prediction-LSTM
RNN
• 길이에 관계없이 입력과 출력을 받아들일 수 있는 유연한 네트워
크
http://cs231n.stanford.edu/slides/2019/cs231n_2019_lecture10.pdf
Image
Captioning
Sentiment
Classification
Machine
Translation
Video
Classification
(Frame level)
Image Captioning
• 이미지를 CNN 으로 분석 후 RNN 으로 caption 생성
https://www.analyticsvidhya.com/blog/2018/04/solving-an-image-captioning-task-using-deep-learning/
Sentiment Classification
• 문장의 긍정/부정 분류
https://openai.com/blog/unsupervised-sentiment-neuron/
Machine Translation
• Encoder 에 원본 문장을 넣고 Decoder 에서 번역
• 한계점 : Decoder 의 시작부터 끝까지 사용할 수 있는 정보량이 적음
• 현재는 Attention, Transformer, BERT 등 여러 개선기법이 개발됨
https://medium.com/@gautam.karmakar/attention-for-neural-connectionist-machine-translation-b833d1e085a3
Video Classification
• 비디오의 각 정지화상에서 무엇을 하고 있는지 판단
https://arxiv.org/abs/1411.4389
RNN의 구조
• 기본(Vanilla) RNN 은 비교적 단순한 구조
• 3개의 가중치(weights) 필요
https://aikorea.org/blog/rnn-tutorial-1/
https://ratsgo.github.io/natural%20language%20processing/2017/03/09/rnnlstm/
RNN의 구조
• 유닛 개수가 1개인 RNN은 파라미터 수가 3개인 것을 확인할 수 있
음
RNN의 구조
• 유닛 개수가 2개일 때, 3개일 때 파라미터의 개수 확인
RNN의 구조
• 기본적으로 Fully connected 구조
• 실선 화살표 개수 = 파라미터 개수
RNN units = 2
Param # = 8
RNN units = 3
Param # = 15
RNN units = 1
Param # = 3
bias bias bias
Tensorflow 2.0 - RNN
SimpleRNN
• tf.keras.layers 에서 import 할 수 있음
return_sequences
• RNN 계산 과정에 있는 hidden state 를 출력할 것인지에 대한 인수
• 다층 RNN 이나 one-to-many, many-to-many 출력을 위해 사용
출력
Y1
입력
X1
RNN
출력
Y2
입력
X2
RNN
출력
Y3
입력
X3
RNN
출력
Y1
입력
X1
RNN
출력
Y2
입력
X2
RNN
출력
Y3
입력
X3
RNN
return_sequences = False
(기본 설정값)
return_sequences = True
Y1 Y2 Y1 Y2
return_state
• RNN 의 발전된 형태인 LSTM 의 경우는 출력과 cell_state 가 다름
• 여기서 cell_state 를 출력할 것인지의 여부 결정
• 오늘은 신경쓰지 않으셔도 됩니다
https://excelsior-cjh.tistory.com/185
SimpleRNN LSTM
Embedding
• 단어나 문자(character)를 수치화
• 정수 인덱스를 길이 n의 실수 벡터로 맵핑
[[4], [20]] -> [[0.25, 0.1], [0.6, -0.2]]
Embedding
• tf.keras.layers 에서 import 할 수 있음
• input_dim : 단어 수
• output_dim : embedding 벡터 길이
Embedding
my
cat
is
smart
0
1
2
3
[0.76, -0.11, 0.36, …, -0.93]
[0.7, 0.42, -0.1, …, -0.34]
[0.83, 0.75, 0.64, …, -0.4]
[-0.33, 0.56, 0.82, …, 0.71]
단어 정수 인덱스 Embedding 실수 벡터
output_dim=64
input_dim
=1000
Dense(softmax)
• RNN 레이어의 출력을 받아서 softmax 로 확률 계산
https://www.dlology.com/blog/how-to-generate-realistic-yelp-restaurant-reviews-with-keras/
Tensorflow 2.0 sample code - RNN
Text generation
• RNN 을 사용한 Text generation 의 대표적인 예는 Andrej Karpathy 의
<The Unreasonable Effectiveness of Recurrent Neural Networks>
• 단어가 아닌 문자 기반 RNN 으로도 셰익스피어 희곡, 위키피디아
문서, LaTeX, 소스 코드 등의 문서 형식을 재현 성공
RNN with KoreanHiphop Dataset
• 한글 자소 단위 RNN – Google Colab 코드 링크
• 한글 단어 단위 RNN – Google Colab 코드 링크
Thank you!

More Related Content

What's hot

Gazebo, 9개의 파일로 간단히 시작하는 로봇 시뮬레이션
Gazebo, 9개의 파일로 간단히 시작하는 로봇 시뮬레이션Gazebo, 9개의 파일로 간단히 시작하는 로봇 시뮬레이션
Gazebo, 9개의 파일로 간단히 시작하는 로봇 시뮬레이션Seongjun Kim
 
[PR12] categorical reparameterization with gumbel softmax
[PR12] categorical reparameterization with gumbel softmax[PR12] categorical reparameterization with gumbel softmax
[PR12] categorical reparameterization with gumbel softmaxJaeJun Yoo
 
Wasserstein GAN 수학 이해하기 I
Wasserstein GAN 수학 이해하기 IWasserstein GAN 수학 이해하기 I
Wasserstein GAN 수학 이해하기 ISungbin Lim
 
Attention is all you need
Attention is all you needAttention is all you need
Attention is all you needHoon Heo
 
Brief intro : Invariance and Equivariance
Brief intro : Invariance and EquivarianceBrief intro : Invariance and Equivariance
Brief intro : Invariance and Equivariance홍배 김
 
Metric learning 세미나
Metric learning 세미나Metric learning 세미나
Metric learning 세미나ssuser198c901
 
1시간만에 GAN(Generative Adversarial Network) 완전 정복하기
1시간만에 GAN(Generative Adversarial Network) 완전 정복하기1시간만에 GAN(Generative Adversarial Network) 완전 정복하기
1시간만에 GAN(Generative Adversarial Network) 완전 정복하기NAVER Engineering
 
Show, Attend and Tell: Neural Image Caption Generation with Visual Attention
Show, Attend and Tell: Neural Image Caption Generation with Visual AttentionShow, Attend and Tell: Neural Image Caption Generation with Visual Attention
Show, Attend and Tell: Neural Image Caption Generation with Visual AttentionEun Ji Lee
 
오토인코더의 모든 것
오토인코더의 모든 것오토인코더의 모든 것
오토인코더의 모든 것NAVER Engineering
 
AtCoder Beginner Contest 034 解説
AtCoder Beginner Contest 034 解説AtCoder Beginner Contest 034 解説
AtCoder Beginner Contest 034 解説AtCoder Inc.
 
Attention mechanism 소개 자료
Attention mechanism 소개 자료Attention mechanism 소개 자료
Attention mechanism 소개 자료Whi Kwon
 
충돌 알고리즘(collision detection algorithms)
충돌 알고리즘(collision detection algorithms)충돌 알고리즘(collision detection algorithms)
충돌 알고리즘(collision detection algorithms)ssuserbe87d6
 
[DL輪読会]Few-Shot Unsupervised Image-to-Image Translation
[DL輪読会]Few-Shot Unsupervised Image-to-Image Translation[DL輪読会]Few-Shot Unsupervised Image-to-Image Translation
[DL輪読会]Few-Shot Unsupervised Image-to-Image TranslationDeep Learning JP
 
INTRODUCTION TO NLP, RNN, LSTM, GRU
INTRODUCTION TO NLP, RNN, LSTM, GRUINTRODUCTION TO NLP, RNN, LSTM, GRU
INTRODUCTION TO NLP, RNN, LSTM, GRUSri Geetha
 
물리 기반 셰이더의 허와 실:물리기반 셰이더를 가르쳐 봤습니다 공개용
물리 기반 셰이더의 허와 실:물리기반 셰이더를 가르쳐 봤습니다  공개용물리 기반 셰이더의 허와 실:물리기반 셰이더를 가르쳐 봤습니다  공개용
물리 기반 셰이더의 허와 실:물리기반 셰이더를 가르쳐 봤습니다 공개용JP Jung
 
Variational inference intro. (korean ver.)
Variational inference intro. (korean ver.)Variational inference intro. (korean ver.)
Variational inference intro. (korean ver.)Kiho Hong
 

What's hot (20)

Gazebo, 9개의 파일로 간단히 시작하는 로봇 시뮬레이션
Gazebo, 9개의 파일로 간단히 시작하는 로봇 시뮬레이션Gazebo, 9개의 파일로 간단히 시작하는 로봇 시뮬레이션
Gazebo, 9개의 파일로 간단히 시작하는 로봇 시뮬레이션
 
[PR12] categorical reparameterization with gumbel softmax
[PR12] categorical reparameterization with gumbel softmax[PR12] categorical reparameterization with gumbel softmax
[PR12] categorical reparameterization with gumbel softmax
 
Wasserstein GAN 수학 이해하기 I
Wasserstein GAN 수학 이해하기 IWasserstein GAN 수학 이해하기 I
Wasserstein GAN 수학 이해하기 I
 
Attention is all you need
Attention is all you needAttention is all you need
Attention is all you need
 
Brief intro : Invariance and Equivariance
Brief intro : Invariance and EquivarianceBrief intro : Invariance and Equivariance
Brief intro : Invariance and Equivariance
 
Metric learning 세미나
Metric learning 세미나Metric learning 세미나
Metric learning 세미나
 
1시간만에 GAN(Generative Adversarial Network) 완전 정복하기
1시간만에 GAN(Generative Adversarial Network) 완전 정복하기1시간만에 GAN(Generative Adversarial Network) 완전 정복하기
1시간만에 GAN(Generative Adversarial Network) 완전 정복하기
 
RNN-LSTM.pptx
RNN-LSTM.pptxRNN-LSTM.pptx
RNN-LSTM.pptx
 
Show, Attend and Tell: Neural Image Caption Generation with Visual Attention
Show, Attend and Tell: Neural Image Caption Generation with Visual AttentionShow, Attend and Tell: Neural Image Caption Generation with Visual Attention
Show, Attend and Tell: Neural Image Caption Generation with Visual Attention
 
오토인코더의 모든 것
오토인코더의 모든 것오토인코더의 모든 것
오토인코더의 모든 것
 
AtCoder Beginner Contest 034 解説
AtCoder Beginner Contest 034 解説AtCoder Beginner Contest 034 解説
AtCoder Beginner Contest 034 解説
 
Attention mechanism 소개 자료
Attention mechanism 소개 자료Attention mechanism 소개 자료
Attention mechanism 소개 자료
 
LSTM
LSTMLSTM
LSTM
 
충돌 알고리즘(collision detection algorithms)
충돌 알고리즘(collision detection algorithms)충돌 알고리즘(collision detection algorithms)
충돌 알고리즘(collision detection algorithms)
 
[DL輪読会]Few-Shot Unsupervised Image-to-Image Translation
[DL輪読会]Few-Shot Unsupervised Image-to-Image Translation[DL輪読会]Few-Shot Unsupervised Image-to-Image Translation
[DL輪読会]Few-Shot Unsupervised Image-to-Image Translation
 
INTRODUCTION TO NLP, RNN, LSTM, GRU
INTRODUCTION TO NLP, RNN, LSTM, GRUINTRODUCTION TO NLP, RNN, LSTM, GRU
INTRODUCTION TO NLP, RNN, LSTM, GRU
 
물리 기반 셰이더의 허와 실:물리기반 셰이더를 가르쳐 봤습니다 공개용
물리 기반 셰이더의 허와 실:물리기반 셰이더를 가르쳐 봤습니다  공개용물리 기반 셰이더의 허와 실:물리기반 셰이더를 가르쳐 봤습니다  공개용
물리 기반 셰이더의 허와 실:물리기반 셰이더를 가르쳐 봤습니다 공개용
 
Variational inference intro. (korean ver.)
Variational inference intro. (korean ver.)Variational inference intro. (korean ver.)
Variational inference intro. (korean ver.)
 
LSTM Basics
LSTM BasicsLSTM Basics
LSTM Basics
 
Introduction of VAE
Introduction of VAEIntroduction of VAE
Introduction of VAE
 

More from Hwanhee Kim

Automatic Generation of Game Content using a Graph-based Wave Function Collap...
Automatic Generation of Game Content using a Graph-based Wave Function Collap...Automatic Generation of Game Content using a Graph-based Wave Function Collap...
Automatic Generation of Game Content using a Graph-based Wave Function Collap...Hwanhee Kim
 
텐서플로우 2.0 튜토리얼 - CNN
텐서플로우 2.0 튜토리얼 - CNN텐서플로우 2.0 튜토리얼 - CNN
텐서플로우 2.0 튜토리얼 - CNNHwanhee Kim
 
구글 텐서플로우 첫걸음
구글 텐서플로우 첫걸음구글 텐서플로우 첫걸음
구글 텐서플로우 첫걸음Hwanhee Kim
 
Tensorflow 설치 가이드 for Windows10
Tensorflow 설치 가이드 for Windows10Tensorflow 설치 가이드 for Windows10
Tensorflow 설치 가이드 for Windows10Hwanhee Kim
 
[NDC2017] 딥러닝으로 게임 콘텐츠 제작하기 - VAE를 이용한 콘텐츠 생성 기법 연구 사례
[NDC2017] 딥러닝으로 게임 콘텐츠 제작하기 - VAE를 이용한 콘텐츠 생성 기법 연구 사례[NDC2017] 딥러닝으로 게임 콘텐츠 제작하기 - VAE를 이용한 콘텐츠 생성 기법 연구 사례
[NDC2017] 딥러닝으로 게임 콘텐츠 제작하기 - VAE를 이용한 콘텐츠 생성 기법 연구 사례Hwanhee Kim
 
[NDC2016] 신경망은컨텐츠자동생성의꿈을꾸는가
[NDC2016] 신경망은컨텐츠자동생성의꿈을꾸는가[NDC2016] 신경망은컨텐츠자동생성의꿈을꾸는가
[NDC2016] 신경망은컨텐츠자동생성의꿈을꾸는가Hwanhee Kim
 

More from Hwanhee Kim (6)

Automatic Generation of Game Content using a Graph-based Wave Function Collap...
Automatic Generation of Game Content using a Graph-based Wave Function Collap...Automatic Generation of Game Content using a Graph-based Wave Function Collap...
Automatic Generation of Game Content using a Graph-based Wave Function Collap...
 
텐서플로우 2.0 튜토리얼 - CNN
텐서플로우 2.0 튜토리얼 - CNN텐서플로우 2.0 튜토리얼 - CNN
텐서플로우 2.0 튜토리얼 - CNN
 
구글 텐서플로우 첫걸음
구글 텐서플로우 첫걸음구글 텐서플로우 첫걸음
구글 텐서플로우 첫걸음
 
Tensorflow 설치 가이드 for Windows10
Tensorflow 설치 가이드 for Windows10Tensorflow 설치 가이드 for Windows10
Tensorflow 설치 가이드 for Windows10
 
[NDC2017] 딥러닝으로 게임 콘텐츠 제작하기 - VAE를 이용한 콘텐츠 생성 기법 연구 사례
[NDC2017] 딥러닝으로 게임 콘텐츠 제작하기 - VAE를 이용한 콘텐츠 생성 기법 연구 사례[NDC2017] 딥러닝으로 게임 콘텐츠 제작하기 - VAE를 이용한 콘텐츠 생성 기법 연구 사례
[NDC2017] 딥러닝으로 게임 콘텐츠 제작하기 - VAE를 이용한 콘텐츠 생성 기법 연구 사례
 
[NDC2016] 신경망은컨텐츠자동생성의꿈을꾸는가
[NDC2016] 신경망은컨텐츠자동생성의꿈을꾸는가[NDC2016] 신경망은컨텐츠자동생성의꿈을꾸는가
[NDC2016] 신경망은컨텐츠자동생성의꿈을꾸는가
 

텐서플로우 2.0 튜토리얼 - RNN

  • 2. 목차 • RNN 소개 • Tensorflow 2.0 - RNN • Tensorflow 2.0 Sample code - RNN
  • 4. RNN • Recurrent Neural Network • Recurrent : 반복적인, 순환하는 입력 X 출력 Y 출력 Y 입력 X DNN RNN 일반적인 딥러닝 구조 RNN 의 되먹임 구조
  • 5. RNN • Recurrent Neural Network • 같은 네트워크로 변화하는 입력에 대한 출력을 얻어냄 • 모든 시간대에 동일한 매개변수를 사용 출력 Y 입력 X RNN 출력 입력 RNN 출력 입력 RNN 출력 입력 RNN X1 X2 X3 Y1 Y2 Y3 Y1 Y2
  • 6. RNN • 주로 순차적인 정보(Sequence)를 입력으로 받음 • 언어, 날씨, 주가 등 https://seanwes.com/book/ https://md2biz.tistory.com/148
  • 7. RNN • RNN 의 발전된 형태인 LSTM 으로 애플 주식 가격을 예측하는 사례 https://github.com/NourozR/Stock-Price-Prediction-LSTM
  • 8. RNN • 길이에 관계없이 입력과 출력을 받아들일 수 있는 유연한 네트워 크 http://cs231n.stanford.edu/slides/2019/cs231n_2019_lecture10.pdf Image Captioning Sentiment Classification Machine Translation Video Classification (Frame level)
  • 9. Image Captioning • 이미지를 CNN 으로 분석 후 RNN 으로 caption 생성 https://www.analyticsvidhya.com/blog/2018/04/solving-an-image-captioning-task-using-deep-learning/
  • 10. Sentiment Classification • 문장의 긍정/부정 분류 https://openai.com/blog/unsupervised-sentiment-neuron/
  • 11. Machine Translation • Encoder 에 원본 문장을 넣고 Decoder 에서 번역 • 한계점 : Decoder 의 시작부터 끝까지 사용할 수 있는 정보량이 적음 • 현재는 Attention, Transformer, BERT 등 여러 개선기법이 개발됨 https://medium.com/@gautam.karmakar/attention-for-neural-connectionist-machine-translation-b833d1e085a3
  • 12. Video Classification • 비디오의 각 정지화상에서 무엇을 하고 있는지 판단 https://arxiv.org/abs/1411.4389
  • 13. RNN의 구조 • 기본(Vanilla) RNN 은 비교적 단순한 구조 • 3개의 가중치(weights) 필요 https://aikorea.org/blog/rnn-tutorial-1/ https://ratsgo.github.io/natural%20language%20processing/2017/03/09/rnnlstm/
  • 14. RNN의 구조 • 유닛 개수가 1개인 RNN은 파라미터 수가 3개인 것을 확인할 수 있 음
  • 15. RNN의 구조 • 유닛 개수가 2개일 때, 3개일 때 파라미터의 개수 확인
  • 16. RNN의 구조 • 기본적으로 Fully connected 구조 • 실선 화살표 개수 = 파라미터 개수 RNN units = 2 Param # = 8 RNN units = 3 Param # = 15 RNN units = 1 Param # = 3 bias bias bias
  • 18. SimpleRNN • tf.keras.layers 에서 import 할 수 있음
  • 19. return_sequences • RNN 계산 과정에 있는 hidden state 를 출력할 것인지에 대한 인수 • 다층 RNN 이나 one-to-many, many-to-many 출력을 위해 사용 출력 Y1 입력 X1 RNN 출력 Y2 입력 X2 RNN 출력 Y3 입력 X3 RNN 출력 Y1 입력 X1 RNN 출력 Y2 입력 X2 RNN 출력 Y3 입력 X3 RNN return_sequences = False (기본 설정값) return_sequences = True Y1 Y2 Y1 Y2
  • 20. return_state • RNN 의 발전된 형태인 LSTM 의 경우는 출력과 cell_state 가 다름 • 여기서 cell_state 를 출력할 것인지의 여부 결정 • 오늘은 신경쓰지 않으셔도 됩니다 https://excelsior-cjh.tistory.com/185 SimpleRNN LSTM
  • 21. Embedding • 단어나 문자(character)를 수치화 • 정수 인덱스를 길이 n의 실수 벡터로 맵핑 [[4], [20]] -> [[0.25, 0.1], [0.6, -0.2]]
  • 22. Embedding • tf.keras.layers 에서 import 할 수 있음 • input_dim : 단어 수 • output_dim : embedding 벡터 길이
  • 23. Embedding my cat is smart 0 1 2 3 [0.76, -0.11, 0.36, …, -0.93] [0.7, 0.42, -0.1, …, -0.34] [0.83, 0.75, 0.64, …, -0.4] [-0.33, 0.56, 0.82, …, 0.71] 단어 정수 인덱스 Embedding 실수 벡터 output_dim=64 input_dim =1000
  • 24. Dense(softmax) • RNN 레이어의 출력을 받아서 softmax 로 확률 계산 https://www.dlology.com/blog/how-to-generate-realistic-yelp-restaurant-reviews-with-keras/
  • 25. Tensorflow 2.0 sample code - RNN
  • 26. Text generation • RNN 을 사용한 Text generation 의 대표적인 예는 Andrej Karpathy 의 <The Unreasonable Effectiveness of Recurrent Neural Networks> • 단어가 아닌 문자 기반 RNN 으로도 셰익스피어 희곡, 위키피디아 문서, LaTeX, 소스 코드 등의 문서 형식을 재현 성공
  • 27.
  • 28. RNN with KoreanHiphop Dataset • 한글 자소 단위 RNN – Google Colab 코드 링크 • 한글 단어 단위 RNN – Google Colab 코드 링크

Editor's Notes

  1. 안녕하세요. 저는 오늘 Tensorflow 2.0 Tutorial, RNN 이라는 주제로 발표를 맡은 엔씨소프트의 김환희라고 합니다.
  2. 목차는 다음과 같습니다. 먼저 RNN 에 대해 아시는 분도 많겠지만 복습 차원에서 중요한 점들을 같이 살펴보고, Tensorflow 2.0 에서 RNN 을 사용하는 간단한 방법을 아주 짧게 살펴본 다음에, Google Colab 으로 준비한 샘플 코드와 함께 한글 텍스트를 generation 하는 예제를 살펴보겠습니다.
  3. 먼저 RNN 소개입니다.
  4. RNN 은 Recurrent Neural Network 의 약어로, Recurrent 는 반복적인, 순환하는 이라는 뜻입니다. 일반적인 딥러닝 구조에 비해서 RNN 은 되먹임 구조를 가지고 있습니다.
  5. 앞에서 본 구조를 풀어보면, RNN 은 같은 네트워크가 변화하는 입력에 대해서 대응하는 구조입니다. 이러한 입력의 변화에 따라 출력이 달라지게 됩니다. 이런 구조의 결과로 기존에 주로 일직선으로 진행되던 딥러닝 네트워크의 학습 흐름에 수직 방향을 추가하게 됩니다.
  6. 변화하는 입력에는 어떤 것이 있을까요? 주로 순차적인 정보가 이에 해당됩니다. 언어, 날씨, 주가 등 순서와 시간에 따라 변하는 데이터에 대해서, 과거 데이터를 기반으로 미래에 어떤 데이터가 나타날 것인지 예측하는 용도로 쓰이게 됩니다.
  7. RNN 으로 애플 주식 가격을 예측하는 사례입니다. 붉은색의 데이터로 학습을 시킨 다음에 파란색 예측을 출력합니다.
  8. RNN 은 길이에 관계없이 입력과 출력을 받아들일 수 있는 유연한 구조를 가지고 있습니다. 가장 왼쪽은 기본적인 RNN 구조이지만, one-to-many, many-to-one 등 다양한 구조로 변형될 수도 있습니다.
  9. Image captioning 은 이미지를 cnn 으로 분석해서 feature 를 뽑아낸 후 이 정보를 이용해서 RNN 에서 자연어 caption 을 생성하는 알고리즘입니다.
  10. Sentiment classification 은 주어진 문장에 대해서 긍정/부정을 판단하는 문제입니다. Openai 의 이 데모에서 네트워크가 예문을 앞에서부터 입력받는 것에 따라 초록색의 긍정, 빨간색의 부정으로 주어진 예문에 대한 감정 인식이 바뀌는 것을 알 수 있습니다.
  11. Machine translation 은 말 그대로 기계 번역입니다. 구글에서 처음 공개한 encoder / decoder 구조는 encoder 라는 rnn 에 입력 문장의 단어를 순차적으로 입력한 다음에, decoder rnn 에서 해당 문장의 번역을 출력하는 방식이었습니다. 그런데 이 방식은 decoder 의 시작부터 끝까지 제한된 정보량을 사용해야 한다는 한계점이 있었습니다. 지금은 attention, transformer, bert 등 여러 개선 기법이 개발되었습니다.
  12. Video classification 은 주어진 시간의 정보를 즉시 판단하고 과거 시간의 정보를 이용해서 현재 예측에도 사용하는 구조입니다.
  13. Rnn 의 구조를 살펴보자면, 기본 RNN 은 비교적 단순한 구조로 되어있습니다. 왼쪽 그림의 구조를 풀면 오른쪽처럼 됩니다.
  14. RNN 구조에 대해서 조금 더 자세하게 설명드리겠습니다. 구글 colab 에서 가장 단순한 RNN 네트워크를 만들어서 실행해보면, 파라미터 수가 3개인 것을 알 수 있습니다.
  15. 그런데 여기서 유닛의 수를 2, 3 으로 바꾸면 파라미터 수는 각각 8 개, 15 개가 되는데요.
  16. 여기서 그 이유를 알 수 있습니다. RNN 은 Dense Layer 처럼 기본적으로 Fully Connected 구조이기 때문에 RNN 의 유닛 수가 늘어날 때 파라미터 수는 그림처럼 규칙성을 가지고 증가하게 됩니다. 여기서 실선 화살표 수가 파라미터 개수가 됩니다.
  17. 그럼 Tensorflow 2.0 에서 RNN 을 쓰는 방법을 간략하게 알아보겠습니다.
  18. 가장 기본적인 RNN 클래스의 이름은 SimpleRNN 입니다. 앞에서 보신 것처럼 기본적인 연결 구조를 하고 있습니다. Units 는 rnn 의 내부에 존재하는 뉴런 수입니다. Activation 은 sigmoid 와 비슷하지만 출력값이 -1 에서 1 사이인 tanh 함수를 사용합니다. 이 함수는 탄젠트의 역함수입니다. 주요 파라미터인 return_sequences 와 return_state 에 대해서는 따로 설명드리겠습니다.
  19. Return_sequences 는 rnn 계산 과정에서 hidden state 를 출력할 것인지를 결정하는 인수입니다. 이것이 왜 중요하냐면 여러 개의 출력을 원하는 one-to-many, many-to-many 구조나 rnn 층이 여러 개 쌓이는 다층 rnn 구조에서 rnn 자체가 여러 개의 출력을 내는 것을 기대하기 때문입니다. 나중에 보실 예제코드에도 return_sequences 가 True 로 되어 있습니다.
  20. Return_state 는 오늘은 신경쓰지 않으셔도 되지만 다음 시간에 설명드릴 LSTM 과 관련이 있기 때문에 간단히 설명드리겠습니다. 왼쪽이 simpleRNN 의 구조인데 h 로 표현된 hidden state 가 출력으로도 같이 흐르는 구조입니다. 그에 비해 lstm 은 c 라는 것이 같이 유지되는데 이것이 cell 내부에서만 유지되는 cell_state 입니다. 여기서 return_state 는 이 cell_state 를 출력할 것인지의 여부를 결정합니다.
  21. Rnn 과 밀접한 연관성이 있는 2개의 layer 에 대해서 더 설명을 드리겠습니다. Embedding layer 는 자연어 처리에서 범용적으로 쓰이는 layer 입니다. 구체적으로는 정수를 길이 n 개의 실수 벡터로 맵핑합니다.
  22. Embedding 레이어도 tf.keras.layers 에서 import 할 수 있습니다. Input dimension 과 output dimension 은 각각 입력하는 단어 수와 embedding 벡터 길이를 나타냅니다.
  23. 앞에서 본 embedding layer 는 이렇게 계산이 됩니다.
  24. Dense 의 softmax activation 은 rnn 뒤에 붙어서 출력의 확률을 계산하는 용도로 쓰입니다.
  25. 그럼 이제 실제 샘플 코드와 함께 Tensorflow 2.0 에서 CNN 을 사용하는 방법을 간단히 학습해보도록 하겠습니다.
  26. Rnn 을 사용한 분야 중에 효과적이었던 것으로 text generation 이 있습니다. 이 중 대표적인 예는 현재 테슬라의 ai 디렉터로 있는 Andrej karpathy 가 스탠포드 박사과정 시절에 블로그 글에서 소개한 rnn 구현입니다. 여기서 특이했던 점은 기존에 자주 사용되던 단어가 아닌 문자 기반 rnn 을 시도했다는 점입니다. 이 구현에서는 희곡, 위키 문서, latex 등 여러 문서 형식을 재현하는 데에 성공했습니다.
  27. 위의 방법으로 생성된 LaTex 문서 파일입니다. 자세히 보면 내용은 알아보기 힘들지만 문서 형식이 그럴듯하게 재생됩니다. 오른쪽의 다이어그램도 생성되는 것을 확인할 수 있습니다.
  28. 오늘의 샘플 코드로는 방금 소개드린 text generation 의 한글 버전을 준비해 보았습니다. 준비한 데이터는 벅스뮤직에서 11,000 여 곡의 한국 힙합 노래 가사를 모은 Korean hiphop 데이터입니다. 이 데이터는 연구용으로 수집되었습니다. 이 중 자소 단위 rnn 을 먼저 살펴보고, 단어 단위 rnn 을 실행한 결과도 같이 살펴보겠습니다.