안녕하세요
27년차 진로탐색꾼 조녁입니다!
오늘은 텐서플로우 자격증 과정 세번째 강좌인
' Natural Language Processing in TensorFlow '
3주차 강의(Sequence models) 및 자료를 공부했습니다.
지난 주차가 내용이
많아서 좀 힘들었는데 이번주는 지난주에 비해 적다.. 다행이다.
첫번째 영상, 텐서플로우에서 sequence model 구축하는 방법 배운다. 왜냐하면 텍스트에서 순서는 중요하기 때문이다. 예를들어 "개가 모자를 썼다." 라는 문장을 "모자가 개를 썼다." 로 바꾸면 의미없는 우스꽝 스러운 문장이 되어 버린다.
이에 대해 RNN , GIO,LSTM 과 같은 것들을 배울 것이다.
두번째 영상, Introduction
아래 그림1 과 같이 통상적으로는 예제와 답을 넣고 규칙을 도출해내는게 머신러닝의 원리이다.
이 때, 이 과정이 반복되는 것이 RNN에 기초가 되지만 우리는 RNN 의 작동원리에 대해서 공부하진 않을 것이다.
세번째 읽기자료, sequence modeling course , 7일간 무료로 들을 수 있는 앤드류의 강의다. RNN 의 원리를 다룬다.
www.coursera.org/lecture/nlp-sequence-models/deep-rnns-ehs0S
네번째 영상, LSTMs
아래와 같이 우리는 blue 를 통해 힌트를 얻어 sky를 유추할 수 있습니다.
그리고 단어와 단어 사이가 멀더라도 유추할 수 있습니다. 아래 예시와 사진을 보십시오.
또한 Cell State를 통해 양방향 유추가 가능합니다. 이것은 RNN을 업그레이드 한 LSTMs 인데 이후 모델을 살펴볼 때, 양방향이 의미하는 바를 더 자세히 볼 수 있습니다.
다섯번째 읽기자료, LSTMs에 대해 더 공부하고 싶다면 아래 링크로 들어가세요.
www.coursera.org/lecture/nlp-sequence-models/long-short-term-memory-lstm-KXoay
여섯번째 영상,
아래 코드에서 2번째층에 LSTMs 코드가 추가되었습니다. 파라미터값(64)은 원하는 출력값을 입력합니다.
여기서 LSTM 코드를 tf.keras.layers.Bidirectional() 로 감싸주는 건 양방향으로 만드는 것입니다.
모델 요약을 살펴보면 아래와 같다. 특별히 LSTMs의 출력을 64로 원했지만, 양방향으로 작용해서 128이 출력된 것을 볼 수 있다.
LSTMs 층을 두개로 쌓을 때는 첫번째 LSTMs 층에 return_sequences=True 파라미터를 넣어줘야한다.
이것은 LSTMs 의 출력을 다른 층에 먹이기 위해서 필요한 파라미터입니다.
일곱번째 읽기자료, 1개 층 LSTMs 와 2개층 LSTMs를 코드로 확인하십시오.
1개층 LSTMs : gist.github.com/jonhyuk0922/b04877033c3faac40d6858896665e213
2개층 LSTMs : gist.github.com/jonhyuk0922/91990843211cc790a490f2d6ca50c17c
여덟번째 영상,
아래 그림을 보면 1개층인 것과 2개층인 것 중에서 2개층인 것이 더 매끄러운 것을 확인할 수 있다. (매끄러울 수록 신뢰도 상승)
아홉번째 영상, 이제 컨볼루션이 포함된 RNN 인 Gated Recurrent Units(GRUs)를 배울 것이다.
열번째 영상, LSTM 없을 때와 LSTM을 사용했을 떄를 비교해보면, 정확도는 아래와 같이 LSTM을 사용했을 때 빠르고 꾸준하게 상승하는 것을 볼 수 있다. 그러나 검증 정확도는 LSTM을 사용했을 때 꾸준히 떨어진다. (하지만 가장 작은 값이 LSTM을 사용했을 때와 비슷함)
따라서, LSTM을 약간 조정하면 문제 해결에 도움이 될 것입니다.
열한번째 영상, Using a convolutional network
임베딩한 이후 컨볼루션을 추가하면 아래와 같다. 아래 모델에 대한 효율은, 정확도는 증가하지만 에폭이 늘수록 검증 정확도에서 과대적합으로 다가가고 있음을 볼 수 있다.
열두번째 읽기자료, CNN 모델 코드
gist.github.com/jonhyuk0922/c52fe74ff6aeb175ca7d8907e629cdc5
열세번째 영상, 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
열다섯번째 영상, 유형별로 비교해보시오(위의 표 참고). 이미지보다 텍스트가 오버피팅이 많이 일어난다. 왜냐하면 유효성 검증 데이터에 있는 단어들 중에 학습되지 않은 것들이 많기 때문이다. 우리는 이런 문제를 어떻게 해결 할 수 있을까? (다음 강의에서 알려주겠지? ..)
열여섯번째 읽기자료,
Sarcasm with Bidirectional LSTM : gist.github.com/jonhyuk0922/89d4661e862f34b65cd2be1f07e08a4f
Sarcasm with 1D Convolutional Layer : gist.github.com/jonhyuk0922/29d4f4c1874d26e0cf4eb27b985b3b33
퀴즈,
무난했다.
열여덟번째 읽기자료, 3주차 마무리(Wrap up)
이제 학습한 도구들을 사용하여 텍스트를 예측하는 방법을 배울 것이다. 이는 궁극적으로 텍스트를 만들 수 있음을 의미한다.
단어 시퀀스를 학습시키면 시퀀스에서 다음으로 오는 가장 일반적인 단어를 예측할 수 있다.
그러므로 새로운 단어 시퀀스에서 시작할때 단어를 기반으로하는 모델을 만들 수 있다.
eg) 아일랜드 노래, 셰익스피어 시에서 임베딩을 사용하여 새로운 단어 세트를 만들 것이다.
과제 : Sentiment140 dataset with 1.6 million tweets
www.kaggle.com/kazanova/sentiment140
'머신러닝 & 딥러닝 공부 > Tensorflow' 카테고리의 다른 글
[Tensorflow dev 자격증] Sequences and Prediction (2) | 2021.03.01 |
---|---|
[Tensorflow dev 자격증] Sequence models and literature (0) | 2021.02.25 |
[Tensorflow dev 자격증] Word Embeddings (0) | 2021.02.17 |
[NLP 오류해결] Stopword(불용어) Tensorflow 2.0 에서 사용 시 import 오류 해결 방법 (0) | 2021.02.15 |
[Tensorflow dev 자격증] Sentiment in text (0) | 2021.02.15 |