본문 바로가기

머신러닝 & 딥러닝 공부/Tensorflow

[Tensorflow dev 자격증] Sequence models

반응형

안녕하세요

27년차 진로탐색꾼 조녁입니다!

 

오늘은 텐서플로우 자격증 과정 세번째 강좌인

' Natural Language Processing in TensorFlow 

3주차 강의(Sequence models) 및 자료를 공부했습니다.

 

지난 주차가 내용이

많아서 좀 힘들었는데 이번주는 지난주에 비해 적다.. 다행이다. 

 

첫번째 영상, 텐서플로우에서 sequence model 구축하는 방법 배운다. 왜냐하면 텍스트에서 순서는 중요하기 때문이다. 예를들어 "개가 모자를 썼다." 라는 문장을 "모자가 개를 썼다." 로 바꾸면 의미없는 우스꽝 스러운 문장이 되어 버린다.

이에 대해 RNN , GIO,LSTM 과 같은 것들을 배울 것이다.

 

두번째 영상, Introduction

 

아래 그림1 과 같이 통상적으로는 예제와 답을 넣고 규칙을 도출해내는게 머신러닝의 원리이다. 

이 때, 이 과정이 반복되는 것이 RNN에 기초가 되지만 우리는 RNN 의 작동원리에 대해서 공부하진 않을 것이다.

그림1. 통상적인 머신러닝 원리

 

세번째 읽기자료, sequence modeling course , 7일간 무료로 들을 수 있는 앤드류의 강의다. RNN 의 원리를 다룬다.

www.coursera.org/lecture/nlp-sequence-models/deep-rnns-ehs0S

 

Deep RNNs - Recurrent Neural Networks | Coursera

Video created by deeplearning.ai for the course "Sequence Models". Learn about recurrent neural networks. This type of model has been proven to perform extremely well on temporal data. It has several variants including LSTMs, GRUs and ...

www.coursera.org

 

네번째 영상, LSTMs

 

아래와 같이 우리는 blue 를 통해 힌트를 얻어 sky를 유추할 수 있습니다.

그림2. RNN 유추 원리

 

그리고 단어와 단어 사이가 멀더라도 유추할 수 있습니다. 아래 예시와 사진을 보십시오.

그림3. LSTMs

 

또한  Cell State를 통해 양방향 유추가 가능합니다. 이것은 RNN을 업그레이드 한 LSTMs 인데 이후 모델을 살펴볼 때, 양방향이 의미하는 바를 더 자세히 볼 수 있습니다.

 

다섯번째 읽기자료, LSTMs에 대해 더 공부하고 싶다면 아래 링크로 들어가세요.

www.coursera.org/lecture/nlp-sequence-models/long-short-term-memory-lstm-KXoay

 

Long Short Term Memory (LSTM) - Recurrent Neural Networks | Coursera

Video created by deeplearning.ai for the course "Sequence Models". Learn about recurrent neural networks. This type of model has been proven to perform extremely well on temporal data. It has several variants including LSTMs, GRUs and ...

www.coursera.org

여섯번째 영상,

아래 코드에서 2번째층에 LSTMs 코드가 추가되었습니다. 파라미터값(64)은 원하는 출력값을 입력합니다. 

여기서 LSTM 코드를 tf.keras.layers.Bidirectional() 로 감싸주는 건 양방향으로 만드는 것입니다.

 

그림4. LSTMs 층 추가된 모델 코드

 

모델 요약을 살펴보면 아래와 같다. 특별히 LSTMs의 출력을 64로 원했지만, 양방향으로 작용해서 128이 출력된 것을 볼 수 있다.

 

그림5. LSTMs  모델 요약

 

LSTMs 층을 두개로 쌓을 때는 첫번째 LSTMs 층에 return_sequences=True 파라미터를 넣어줘야한다.

이것은 LSTMs 의 출력을 다른 층에 먹이기 위해서 필요한 파라미터입니다. 

 

그림6. LSTMs 층이 두개인 모델 코드

일곱번째 읽기자료, 1개 층 LSTMs 와 2개층 LSTMs를 코드로 확인하십시오.

1개층 LSTMs : gist.github.com/jonhyuk0922/b04877033c3faac40d6858896665e213

 

Course 3 - Week 3 - LSTMs 층 1개

Course 3 - Week 3 - LSTMs 층 1개. GitHub Gist: instantly share code, notes, and snippets.

gist.github.com

 

2개층 LSTMs : gist.github.com/jonhyuk0922/91990843211cc790a490f2d6ca50c17c

 

Course 3 - Week 3 - LSTMs 층 2개

Course 3 - Week 3 - LSTMs 층 2개. GitHub Gist: instantly share code, notes, and snippets.

gist.github.com

 

여덟번째 영상,

아래 그림을 보면 1개층인 것과 2개층인 것 중에서 2개층인 것이 더 매끄러운 것을 확인할 수 있다. (매끄러울 수록 신뢰도 상승)

그림7. LSTM 층 갯수에 따른 정확도 비교

 

아홉번째 영상, 이제 컨볼루션이 포함된 RNN 인 Gated Recurrent Units(GRUs)를 배울 것이다.

 

열번째 영상, LSTM 없을 때와 LSTM을 사용했을 떄를 비교해보면, 정확도는 아래와 같이 LSTM을 사용했을 때 빠르고 꾸준하게 상승하는 것을 볼 수 있다. 그러나 검증 정확도는 LSTM을 사용했을 때 꾸준히 떨어진다. (하지만 가장 작은 값이 LSTM을 사용했을 때와 비슷함)

따라서, LSTM을 약간 조정하면 문제 해결에 도움이 될 것입니다.

 

그림8. LSTM 유무에 따른 정확도 비교

 

열한번째 영상, Using a convolutional network

 

임베딩한 이후 컨볼루션을 추가하면 아래와 같다. 아래 모델에 대한 효율은, 정확도는 증가하지만 에폭이 늘수록 검증 정확도에서 과대적합으로 다가가고 있음을 볼 수 있다.

 

그림9. 컨볼루션 추가한 모델

 

그림10. 모델 효율

 

 

열두번째 읽기자료, CNN 모델 코드 

gist.github.com/jonhyuk0922/c52fe74ff6aeb175ca7d8907e629cdc5

 

Course 3 - Week 3 - CNN

Course 3 - Week 3 - CNN. GitHub Gist: instantly share code, notes, and snippets.

gist.github.com

 

열세번째 영상, Going back to the IMDB dataset

 

IMDB 데이터셋에 대한 모델별 효율

*오버피팅 최하가 가장 오버피팅이 심한 것_ 손실 그래프 매끈할수록 좋게 평가

 모델 \ 효율 파라미터수 정확도/유효성 검증 에폭 당 소요시간 오버피팅 정도
DNN 171,533 1.00/0.85~0.8 5s
RNN(LSTM) 30,129 1.00/0.85~0.82 43s
RNN(GRU) 169,997 1.00/0.85~0.8 20s
CNN 171,149 1.00/0.85~0.825 6s 최하

 

 

열네번째 읽기자료, GRU 모델 코드

gist.github.com/jonhyuk0922/1a4b1bdcf3aff1abefcf875a339e17e0

 

Course 3 - Week 3 - GRU(and optional LSTM and Conv1D)

Course 3 - Week 3 - GRU(and optional LSTM and Conv1D) - course-3-week-3-gru-and-optional-lstm-and-conv1d.ipynb

gist.github.com

 

열다섯번째 영상, 유형별로 비교해보시오(위의 표 참고). 이미지보다 텍스트가 오버피팅이 많이 일어난다. 왜냐하면 유효성 검증 데이터에 있는 단어들 중에 학습되지 않은 것들이 많기 때문이다. 우리는 이런 문제를 어떻게 해결 할 수 있을까? (다음 강의에서 알려주겠지? ..)

 

열여섯번째 읽기자료,

Sarcasm with Bidirectional LSTM : gist.github.com/jonhyuk0922/89d4661e862f34b65cd2be1f07e08a4f

 

Course 3 - Week 3 - Sarcasm with Bidirectional LSTM

Course 3 - Week 3 - Sarcasm with Bidirectional LSTM - course-3-week-3-sarcasm-with-bidirectional-lstm.ipynb

gist.github.com

 

Sarcasm with 1D Convolutional Layer : gist.github.com/jonhyuk0922/29d4f4c1874d26e0cf4eb27b985b3b33

 

Course 3 - Week 3 - Sarcasm with 1D Convolutional Layer

Course 3 - Week 3 - Sarcasm with 1D Convolutional Layer - course-3-week-3-sarcasm-with-1d-convolutional-layer.ipynb

gist.github.com

퀴즈,

무난했다.

 

열여덟번째 읽기자료, 3주차 마무리(Wrap up)

이제 학습한 도구들을 사용하여 텍스트를 예측하는 방법을 배울 것이다. 이는 궁극적으로 텍스트를 만들 수 있음을 의미한다.

단어 시퀀스를 학습시키면 시퀀스에서 다음으로 오는 가장 일반적인 단어를 예측할 수 있다.

그러므로 새로운 단어 시퀀스에서 시작할때 단어를 기반으로하는 모델을 만들 수 있다. 

eg) 아일랜드 노래, 셰익스피어 시에서 임베딩을 사용하여 새로운 단어 세트를 만들 것이다.

 

과제 : Sentiment140 dataset with 1.6 million tweets

www.kaggle.com/kazanova/sentiment140

 

Sentiment140 dataset with 1.6 million tweets

Sentiment analysis with tweets

www.kaggle.com

 

 

반응형