SlideShare a Scribd company logo
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

[0119 박민근] 기술 면접시 자주 나오는 문제들(ver 2013)
[0119 박민근] 기술 면접시 자주 나오는 문제들(ver 2013)[0119 박민근] 기술 면접시 자주 나오는 문제들(ver 2013)
[0119 박민근] 기술 면접시 자주 나오는 문제들(ver 2013)MinGeun Park
 
08_게임 물리 프로그래밍 가이드
08_게임 물리 프로그래밍 가이드08_게임 물리 프로그래밍 가이드
08_게임 물리 프로그래밍 가이드noerror
 
Rnn개념정리
Rnn개념정리Rnn개념정리
Rnn개념정리종현 최
 
[0410 박민근] 기술 면접시 자주 나오는 문제들
[0410 박민근] 기술 면접시 자주 나오는 문제들[0410 박민근] 기술 면접시 자주 나오는 문제들
[0410 박민근] 기술 면접시 자주 나오는 문제들MinGeun Park
 
Gazebo, 9개의 파일로 간단히 시작하는 로봇 시뮬레이션
Gazebo, 9개의 파일로 간단히 시작하는 로봇 시뮬레이션Gazebo, 9개의 파일로 간단히 시작하는 로봇 시뮬레이션
Gazebo, 9개의 파일로 간단히 시작하는 로봇 시뮬레이션Seongjun Kim
 
임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012devCAT Studio, NEXON
 
텐서플로우 설치도 했고 튜토리얼도 봤고 기초 예제도 짜봤다면 TensorFlow KR Meetup 2016
텐서플로우 설치도 했고 튜토리얼도 봤고 기초 예제도 짜봤다면 TensorFlow KR Meetup 2016텐서플로우 설치도 했고 튜토리얼도 봤고 기초 예제도 짜봤다면 TensorFlow KR Meetup 2016
텐서플로우 설치도 했고 튜토리얼도 봤고 기초 예제도 짜봤다면 TensorFlow KR Meetup 2016Taehoon Kim
 
Jupyter notebook 이해하기
Jupyter notebook 이해하기 Jupyter notebook 이해하기
Jupyter notebook 이해하기 Yong Joon Moon
 
[Unite2015 박민근] 유니티 최적화 테크닉 총정리
[Unite2015 박민근] 유니티 최적화 테크닉 총정리[Unite2015 박민근] 유니티 최적화 테크닉 총정리
[Unite2015 박민근] 유니티 최적화 테크닉 총정리MinGeun Park
 
Windows Registered I/O (RIO) vs IOCP
Windows Registered I/O (RIO) vs IOCPWindows Registered I/O (RIO) vs IOCP
Windows Registered I/O (RIO) vs IOCPSeungmo Koo
 
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019devCAT Studio, NEXON
 
지적 대화를 위한 깊고 넓은 딥러닝 PyCon APAC 2016
지적 대화를 위한 깊고 넓은 딥러닝 PyCon APAC 2016지적 대화를 위한 깊고 넓은 딥러닝 PyCon APAC 2016
지적 대화를 위한 깊고 넓은 딥러닝 PyCon APAC 2016Taehoon Kim
 
언리얼4 플레이어 컨트롤러의 이해.
언리얼4 플레이어 컨트롤러의 이해.언리얼4 플레이어 컨트롤러의 이해.
언리얼4 플레이어 컨트롤러의 이해.Wuwon Yu
 
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019devCAT Studio, NEXON
 
[0903 구경원] recast 네비메쉬
[0903 구경원] recast 네비메쉬[0903 구경원] recast 네비메쉬
[0903 구경원] recast 네비메쉬KyeongWon Koo
 
[부스트캠프 Tech Talk] 진명훈_datasets로 협업하기
[부스트캠프 Tech Talk] 진명훈_datasets로 협업하기[부스트캠프 Tech Talk] 진명훈_datasets로 협업하기
[부스트캠프 Tech Talk] 진명훈_datasets로 협업하기CONNECT FOUNDATION
 
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리MinGeun Park
 
[NDC 2018] 신입 개발자가 알아야 할 윈도우 메모리릭 디버깅
[NDC 2018] 신입 개발자가 알아야 할 윈도우 메모리릭 디버깅[NDC 2018] 신입 개발자가 알아야 할 윈도우 메모리릭 디버깅
[NDC 2018] 신입 개발자가 알아야 할 윈도우 메모리릭 디버깅DongMin Choi
 
이펙트 쉐이더 2강 - 알파 / 블랜딩
이펙트 쉐이더 2강 - 알파 / 블랜딩이펙트 쉐이더 2강 - 알파 / 블랜딩
이펙트 쉐이더 2강 - 알파 / 블랜딩Jihoo Oh
 
GameInstance에 대해서 알아보자
GameInstance에 대해서 알아보자GameInstance에 대해서 알아보자
GameInstance에 대해서 알아보자TonyCms
 

What's hot (20)

[0119 박민근] 기술 면접시 자주 나오는 문제들(ver 2013)
[0119 박민근] 기술 면접시 자주 나오는 문제들(ver 2013)[0119 박민근] 기술 면접시 자주 나오는 문제들(ver 2013)
[0119 박민근] 기술 면접시 자주 나오는 문제들(ver 2013)
 
08_게임 물리 프로그래밍 가이드
08_게임 물리 프로그래밍 가이드08_게임 물리 프로그래밍 가이드
08_게임 물리 프로그래밍 가이드
 
Rnn개념정리
Rnn개념정리Rnn개념정리
Rnn개념정리
 
[0410 박민근] 기술 면접시 자주 나오는 문제들
[0410 박민근] 기술 면접시 자주 나오는 문제들[0410 박민근] 기술 면접시 자주 나오는 문제들
[0410 박민근] 기술 면접시 자주 나오는 문제들
 
Gazebo, 9개의 파일로 간단히 시작하는 로봇 시뮬레이션
Gazebo, 9개의 파일로 간단히 시작하는 로봇 시뮬레이션Gazebo, 9개의 파일로 간단히 시작하는 로봇 시뮬레이션
Gazebo, 9개의 파일로 간단히 시작하는 로봇 시뮬레이션
 
임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012
 
텐서플로우 설치도 했고 튜토리얼도 봤고 기초 예제도 짜봤다면 TensorFlow KR Meetup 2016
텐서플로우 설치도 했고 튜토리얼도 봤고 기초 예제도 짜봤다면 TensorFlow KR Meetup 2016텐서플로우 설치도 했고 튜토리얼도 봤고 기초 예제도 짜봤다면 TensorFlow KR Meetup 2016
텐서플로우 설치도 했고 튜토리얼도 봤고 기초 예제도 짜봤다면 TensorFlow KR Meetup 2016
 
Jupyter notebook 이해하기
Jupyter notebook 이해하기 Jupyter notebook 이해하기
Jupyter notebook 이해하기
 
[Unite2015 박민근] 유니티 최적화 테크닉 총정리
[Unite2015 박민근] 유니티 최적화 테크닉 총정리[Unite2015 박민근] 유니티 최적화 테크닉 총정리
[Unite2015 박민근] 유니티 최적화 테크닉 총정리
 
Windows Registered I/O (RIO) vs IOCP
Windows Registered I/O (RIO) vs IOCPWindows Registered I/O (RIO) vs IOCP
Windows Registered I/O (RIO) vs IOCP
 
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
 
지적 대화를 위한 깊고 넓은 딥러닝 PyCon APAC 2016
지적 대화를 위한 깊고 넓은 딥러닝 PyCon APAC 2016지적 대화를 위한 깊고 넓은 딥러닝 PyCon APAC 2016
지적 대화를 위한 깊고 넓은 딥러닝 PyCon APAC 2016
 
언리얼4 플레이어 컨트롤러의 이해.
언리얼4 플레이어 컨트롤러의 이해.언리얼4 플레이어 컨트롤러의 이해.
언리얼4 플레이어 컨트롤러의 이해.
 
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
 
[0903 구경원] recast 네비메쉬
[0903 구경원] recast 네비메쉬[0903 구경원] recast 네비메쉬
[0903 구경원] recast 네비메쉬
 
[부스트캠프 Tech Talk] 진명훈_datasets로 협업하기
[부스트캠프 Tech Talk] 진명훈_datasets로 협업하기[부스트캠프 Tech Talk] 진명훈_datasets로 협업하기
[부스트캠프 Tech Talk] 진명훈_datasets로 협업하기
 
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
 
[NDC 2018] 신입 개발자가 알아야 할 윈도우 메모리릭 디버깅
[NDC 2018] 신입 개발자가 알아야 할 윈도우 메모리릭 디버깅[NDC 2018] 신입 개발자가 알아야 할 윈도우 메모리릭 디버깅
[NDC 2018] 신입 개발자가 알아야 할 윈도우 메모리릭 디버깅
 
이펙트 쉐이더 2강 - 알파 / 블랜딩
이펙트 쉐이더 2강 - 알파 / 블랜딩이펙트 쉐이더 2강 - 알파 / 블랜딩
이펙트 쉐이더 2강 - 알파 / 블랜딩
 
GameInstance에 대해서 알아보자
GameInstance에 대해서 알아보자GameInstance에 대해서 알아보자
GameInstance에 대해서 알아보자
 

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

파이콘 한국 2019 튜토리얼 - LRP (Part 2)
파이콘 한국 2019 튜토리얼 - LRP (Part 2)파이콘 한국 2019 튜토리얼 - LRP (Part 2)
파이콘 한국 2019 튜토리얼 - LRP (Part 2)XAIC
 
Normalization 방법
Normalization 방법 Normalization 방법
Normalization 방법 홍배 김
 
Deep Learning for Chatbot (2/4)
Deep Learning for Chatbot (2/4)Deep Learning for Chatbot (2/4)
Deep Learning for Chatbot (2/4)Jaemin Cho
 
Recurrent Neural Net의 이론과 설명
Recurrent Neural Net의 이론과 설명Recurrent Neural Net의 이론과 설명
Recurrent Neural Net의 이론과 설명홍배 김
 
Final project v0.84
Final project v0.84Final project v0.84
Final project v0.84Soukwon Jun
 

Similar to 텐서플로우 2.0 튜토리얼 - RNN (6)

파이콘 한국 2019 튜토리얼 - LRP (Part 2)
파이콘 한국 2019 튜토리얼 - LRP (Part 2)파이콘 한국 2019 튜토리얼 - LRP (Part 2)
파이콘 한국 2019 튜토리얼 - LRP (Part 2)
 
R.T.Bach
R.T.BachR.T.Bach
R.T.Bach
 
Normalization 방법
Normalization 방법 Normalization 방법
Normalization 방법
 
Deep Learning for Chatbot (2/4)
Deep Learning for Chatbot (2/4)Deep Learning for Chatbot (2/4)
Deep Learning for Chatbot (2/4)
 
Recurrent Neural Net의 이론과 설명
Recurrent Neural Net의 이론과 설명Recurrent Neural Net의 이론과 설명
Recurrent Neural Net의 이론과 설명
 
Final project v0.84
Final project v0.84Final project v0.84
Final project v0.84
 

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] 신경망은컨텐츠자동생성의꿈을꾸는가
 

Recently uploaded

인천대학교 컴퓨터공학과 아틀란티스 졸업작품 commINUty PPT
인천대학교 컴퓨터공학과 아틀란티스 졸업작품 commINUty PPT인천대학교 컴퓨터공학과 아틀란티스 졸업작품 commINUty PPT
인천대학교 컴퓨터공학과 아틀란티스 졸업작품 commINUty PPTpcupcu20831004
 
INU Graduation Powerpoint-Rabbit FootPrint
INU Graduation Powerpoint-Rabbit FootPrintINU Graduation Powerpoint-Rabbit FootPrint
INU Graduation Powerpoint-Rabbit FootPrintahghwo99
 
암호화 보안USB & 외장하드 중앙관리 솔루션 ‘DataLocker SafeConsole’_DATASHEET
암호화 보안USB & 외장하드 중앙관리 솔루션 ‘DataLocker SafeConsole’_DATASHEET암호화 보안USB & 외장하드 중앙관리 솔루션 ‘DataLocker SafeConsole’_DATASHEET
암호화 보안USB & 외장하드 중앙관리 솔루션 ‘DataLocker SafeConsole’_DATASHEETSoftwide Security
 
(독서광) 대격변 AI 시대, 데이터로 사고하고 데이터로 리드하라
(독서광) 대격변 AI 시대,   데이터로 사고하고   데이터로 리드하라(독서광) 대격변 AI 시대,   데이터로 사고하고   데이터로 리드하라
(독서광) 대격변 AI 시대, 데이터로 사고하고 데이터로 리드하라Jay Park
 
2024년 5월 27일 개발자 이야기 - AWS 람다의 내부 동작 방식 외
2024년 5월 27일 개발자 이야기 - AWS 람다의 내부 동작 방식 외2024년 5월 27일 개발자 이야기 - AWS 람다의 내부 동작 방식 외
2024년 5월 27일 개발자 이야기 - AWS 람다의 내부 동작 방식 외Jay Park
 
JSI LAB의 X-Chat for SOC 보안관제센터 시큐리티 코파일럿 제품과 사례 소개
JSI LAB의 X-Chat for SOC 보안관제센터 시큐리티 코파일럿 제품과 사례 소개JSI LAB의 X-Chat for SOC 보안관제센터 시큐리티 코파일럿 제품과 사례 소개
JSI LAB의 X-Chat for SOC 보안관제센터 시큐리티 코파일럿 제품과 사례 소개jsilabai
 

Recently uploaded (6)

인천대학교 컴퓨터공학과 아틀란티스 졸업작품 commINUty PPT
인천대학교 컴퓨터공학과 아틀란티스 졸업작품 commINUty PPT인천대학교 컴퓨터공학과 아틀란티스 졸업작품 commINUty PPT
인천대학교 컴퓨터공학과 아틀란티스 졸업작품 commINUty PPT
 
INU Graduation Powerpoint-Rabbit FootPrint
INU Graduation Powerpoint-Rabbit FootPrintINU Graduation Powerpoint-Rabbit FootPrint
INU Graduation Powerpoint-Rabbit FootPrint
 
암호화 보안USB & 외장하드 중앙관리 솔루션 ‘DataLocker SafeConsole’_DATASHEET
암호화 보안USB & 외장하드 중앙관리 솔루션 ‘DataLocker SafeConsole’_DATASHEET암호화 보안USB & 외장하드 중앙관리 솔루션 ‘DataLocker SafeConsole’_DATASHEET
암호화 보안USB & 외장하드 중앙관리 솔루션 ‘DataLocker SafeConsole’_DATASHEET
 
(독서광) 대격변 AI 시대, 데이터로 사고하고 데이터로 리드하라
(독서광) 대격변 AI 시대,   데이터로 사고하고   데이터로 리드하라(독서광) 대격변 AI 시대,   데이터로 사고하고   데이터로 리드하라
(독서광) 대격변 AI 시대, 데이터로 사고하고 데이터로 리드하라
 
2024년 5월 27일 개발자 이야기 - AWS 람다의 내부 동작 방식 외
2024년 5월 27일 개발자 이야기 - AWS 람다의 내부 동작 방식 외2024년 5월 27일 개발자 이야기 - AWS 람다의 내부 동작 방식 외
2024년 5월 27일 개발자 이야기 - AWS 람다의 내부 동작 방식 외
 
JSI LAB의 X-Chat for SOC 보안관제센터 시큐리티 코파일럿 제품과 사례 소개
JSI LAB의 X-Chat for SOC 보안관제센터 시큐리티 코파일럿 제품과 사례 소개JSI LAB의 X-Chat for SOC 보안관제센터 시큐리티 코파일럿 제품과 사례 소개
JSI LAB의 X-Chat for SOC 보안관제센터 시큐리티 코파일럿 제품과 사례 소개
 

텐서플로우 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 을 실행한 결과도 같이 살펴보겠습니다.