본문 바로가기

AI/TensorFlow 학습

(27)
19. TensorFlow 2.x - GRU 주가예측 예제 참고: https://youtu.be/Rxqp_sLSKAE?si=jK98vGOwI_UlWWFB 앞에서 LSTM으로 삼성전자의 주가예측을 하였다.https://firstmove.tistory.com/35 17. TensorFlow 2.x - LSTM 예제참고: https://youtu.be/LLLVYkXJw30?si=mssvpdtHH41FN1Xm 이번 글에서는 LSTM 모델을 이용하여 삼성전자 주가 예측하는 예제를 진행한다.데이터는 야후 파이낸스에서 csv 형식으로 다운 받아 사용한다.받아온firstmove.tistory.com 이번 글에서는 지난 글에서 다룬 GRU를 이용하여 주가를 예측해보고, LSTM과 비교해 보자. 이를 위해서는 일단 삼성전자의 주가 데이터를 받아야하는데 위의 LSTM에서 이 과정을..
18. TensorFlow 2.x - GRU 소개 참고: https://youtu.be/KLtMNGjICrk?si=8n_426hpLM-9Hrpv  지난 글에서 살펴보았던 LSTM과 비교되는 모델로 다음으로 넘겨주는 변수와 연산량이 적어서 빠르다는 장점이 있다.위 슬라이드에서 보면 LSTM에 있었던 cell state가 없고 이를 출력 Ht가 대신하고,연산자인 sigmoid, tanh 함수의 개수가 적다. GRU를 세부적으로 조금 더 살펴보자.Reset Gate에서는 과거의 출력(Ht-1)을 현재에 얼마나 반영할 지를 결정한다.  Update Gate에서는 과거의 출력과 현재의 입력중에 어떤 것을 더 중요할게 여길지를 결정한다. Candidate 단계는 조금 더 복잡해 보인다.출력 값(Ht)를 계산하기 전에 ~Ht를 만들어야 하는데, 그 의미는과거 출력값..
17. TensorFlow 2.x - LSTM 예제 참고: https://youtu.be/LLLVYkXJw30?si=mssvpdtHH41FN1Xm 이번 글에서는 LSTM 모델을 이용하여 삼성전자 주가 예측하는 예제를 진행한다.데이터는 야후 파이낸스에서 csv 형식으로 다운 받아 사용한다.받아온 데이터의 무결성을 가지게 하기위해서 빠진 부분 등을 처리하고 정규화하여 데이터를 정리한다.모델이 잘 인식하기 위해서 데이터의 형태를 조금 바꿔서 학습시키도록 해보자. 먼저, 야후 파이낸스에서 데이터를 받아오는 방법이다.1. 브라우저에서 finance.yahoo.com으로 들어가서 "005930.KS"를 검색하고,2. 왼쪽 메뉴에서 "Historical Data"를 클릭,3. 가격 아래에 기간을 설정한 뒤,4. 오른쪽 "Download"를 클릭하면 csv 파일을 받을..
16. TensorFlow 2.x - LSTM 소개 참조: https://youtu.be/ObqWwNmj7ig?si=31aUr4_4_a3HXJux 앞에서 배운 SimpleRNN의 단점중의 하나가 장기 의존성 문제인데, 이것은 RNN을 사용하는 이유인 과거를 기억해서 현재를 더 정확하게 추론하고자 하는 것에 반하는 것이다.이는 tanh 함수에서 원인을 찾을 수 있는데, SimpleRNN의 구조를 보면 과거의 값이 전달되는 경로는 다음 차례의 입력으로 쓰이는 tanh 함수의 결과(Ht-1)가 -1 ~ 1 사이 값이 되고,이 값은 다른 값과 곱해질 때 크기를 작게 만들게 된다. (Ht-1 x Whh 따라서, 다음 단계로 넘어갈 수록 과거의 값이 희미해 지게 되는 것이다. 이러한 문제를 해결하기 위해서 LSTM 모델이 개발되었다.LSTM 모델에서는 Cell St..
15. TensorFlow 2.x - SimpleRNN 소개 참고: https://youtu.be/kn21-Z3fuH0?si=DRuXy3QE_iFOc6At  SimpleRNN은 RNN중에서 제일 간단한 형태로 이해를 돕기에 좋다.위의 슬라이드는 시간순으로 나열해서 그렇지 지난 글에서 설명한 구조와 동일한 것으로,과거의 activation함수의 결과값을 현재의 입력에 추가해 준다. 즉, 현재의 입력에 과거의 결과를 포함시켜주므로 이력이 필요한 추론에 적합한 모델이 되는 것이다. 위 슬라이드에서 보듯이, 과거의 데이터를 몇개까지 사용할 것인지 (window size, w), 얼마나 먼 미래를 예측할 지(horizon factor, h)를 결정해야 한다. SimpleRNN 모델을 만들때 keras에서 지원하는 api는 SimpleRNN이다. 아래 슬라이드를 보자.입력은..
14. TensorFlow 2.x - RNN(Recurrent Neural Network) 소개 참고:https://youtu.be/h9T9HlVvsDo?si=YYgpS2j15FPDMKH6 위 슬라이드는 일반 신경망과 RNN의 차이점을 보여준다.두 개의 차이점은 모두 은닉층에서 나타나는데, 첫번째, activation 함수가 tanh 를 사용한다는 것과 두번째는 activation 함수의 출력을 다시 feedback해서 linear regression의 결과와 합해서 activation 함수의 입력이 된다는 것이다. 그러면, 이런 차이를 어디에 써먹을려고 하는 것인가? 하는 의문이 생긴다.위 슬라이드에서 말하는대로 순서가 있는 데이터를 처리하는데 뛰어나다고 하는데 이게 무슨 뜻일까? 영상에서 좋은 예시를 들었다고 생각한다. 순서가 있는 데이터는 그 순서의 의해서 의미가 변형되기 때문에 그 순서가 중..
13. TensorFlow 2.x - 개선된 CNN모델에 대한 CIFAR10 예제 참고: https://youtu.be/pKZmmO32Fpc?si=IZ3BHgUCGZroazue  이전 글에서 CNN을 이용한 CIFAR10 예제의 결과는 그렇게 좋지 않았다. 이를 개선하기 위한 방법으로 image data augmentation을 이용해 학습 데이터를 늘리고, CNN 모듈에 layer를 추가해보려고 한다.당연하게도 이는 시간과 자원이 더 필요하게 된다. 그렇지만 이렇게 함으로써 더 높은 정확도를 얻을 수 있다고 할 때, 이런 모델의 사용 유무는 선택사항이 될 것이다. 즉, 그만한 가치가 있다면 사용할 것이고, 그렇지 않다면 ... 중요한 것은 해결책이 있느냐는 것이라 생각된다. 위의 슬라이드는 이 예제의 순서도이다. 이를 코드로 구현해보자. CIFAR 10 데이터를 가지고 와서 정규화하..
12. TensorFlow 2.x - Image Data Augmentation 소개 참조: https://youtu.be/RuZ7SI-Yfec?si=-UtPWHupcOi5FuFw 이번 글에서는 이미지 데이터 어그멘테이션에 대해서 설명한다. Image Data Augmentation은 하나의 이미지를 약간 변형하여 학습용 데이터의 개수를 늘려 모델이 더 많은 데이터를 학습할 수 있도록 하는 것이다. 따라서 학습에 사용할 이미지 수가 적을 수록 효과적이다. 위에서 보듯이 Keras에서는 이를 위한 함수들을 아래와 같이 제공하고 있다.  위 함수들에서 고려할 사항은, image를 그대로 사용하지 못하고 array로 변형해야 한다는 것이다.코드로 확인해 보자.  위에서 언급한 것처럼 jpg 이미지를 불러온 뒤에 array로 변환하고 정규화까지 끝내고 사용하도록 한다.원본이미지는 첨부한다. 이 ..