본문 바로가기
Programming/Deep learning

시간이 변하는 것을 예측해봅니다.

by OKOK 2018. 1. 18.

오픈때 가장 높을때 가장 낮을때 볼륨 닫힐떄, 날마다 이것을 타임 시리즈라고 할수가 있습니다. 이것을 가지고 예측을 하고 싶습니다. 이런 형태가 되겠습니다. 하루 전에 어떤 데이터 7일이전의 데이터를 넣고 내일의 가격은 어떻게 될 것인가 예측해보는 것입니다. 매니 투 원이 될 수 있습니다. 이런 형태의 예측., 오케이 하루전의 데이터르 가지고 하는 것보다 이전의 데이터가 어떻게 영향을 미친다 타임 시리즈의 가설입니다. 매니 투 원의 아이디어 입니다. 구체적으로 어떻게 넣을 것인가요. 자 이것을 알고 피은 것이 이것이다. 이전 데이터가 되겠습니다. 데이원 데이2가 되겠습니다. 여기서 하나씩 넣는 것입니다. 이렇게 이런식으로 넣어줍니다. 오케이요. 이렇게 한다음에 정작 알고싶은 값을 예측해봐라 이것입니다. 학습할 때는 데이터를 학습하겠습니다. 생각해볼것이 있습니다. 입력의 디멘션이 얼마일까요? 시퀀스의 길이는 얼마일까요 히든 사이즈는 얼마일까 계산해야 합니다. 일단 입력 디멘션은 5개를 넣습니다. 인풋 디면센은 이렇게 5개 넣습니다. 시퀀스는 7이 될 것입니다. 아웃풋 디멘션은 1 이렇게 줄수 있습니다. 시퀀스는 7일이므로 이렇게 됩니다. 소프트 맥스를 사용할수도 있고 플리커넥티드도 이용할 수 있습니다. 오케이요. 이제 한번 정리를 해보겠습니다. 시퀀스 렝스는 7이 되고 아웃풋은 5,1, 이됩니다. 그런다음에 이것을 시간 순으로 만들기 위해서 거꾸로 뒺ㅂ고 그것을 사용해서 노멀라이즈랄 하게 됩니다. 오케이 엑스는 전체, 오아인ㄴ 클로스 된 레이블만 가지도록 합니다. 시리즈를 데이터를 가지게 됩니다. 여러개 있다면 여러개 된다면, 와이로 가지게 도비니다. 윈도우를 옮겨가면서 옮겨가게 됩니다. 이 엑스를 이런식으로 읽어고게 되고, 오아리르 가져오게 됩니다. 이것을 출력하면 이런식으로 나타나게 됩니다. 엑스값이 됩니다 와이값이 됩니다. 시퀀스가 7이니까 각각의 시퀀스는 5개의 디멘션을 가지고 있고 와이는 예측하려는 값 이런게 됩니다. 이것을 각각의 데이터 엑스 데이터 오아데이터를 쏟아줍니다. 트레이닝과 0.7을 사용하고 나머지를 테스트로 사용하게 됩니다. 이만큼을 트레인 만큼 트레인ㅇ 테스트로 갖여고 데괴고요, 나눠가지게 됩니다. 그런다음에 플레이스 홀더를 가지고 다음 데이터 다음 시퀀스 다음ㅇ 배치 사이즈 오아이는 값이 하나이겠습니다. 배치 사이즈 이렇게 됩니다. 글ㄴ다음에 엘에스티엠에 그대로 넣어서 실행르 시키면 됩니다. 엑스 와이 셀을 이렇게 만듭니다. 그런다음에 바로 여기에 있는 값을 아웃풋은 1이여야 합니다. 배라ㅗ 쓰지 않고 풀리커넥티느들 넣습니다. 그런다음에 실제로 와이를 예측하게 될텐데, 몇개를 출력하게 도리까요. 히든 사이즐르 정해주고, 다이나믹 알ㅇ엔엔 마찬가질 셀 그리고 엑스를 넣어줌으로써 아웃풋을 만들어낼 수 있습니다. 이 아웃풋을 레이어스를 풀리 커넥티드 만들어서 이 아숲수 중에 이 아웃풋 중에 마지막 하나만 씁니다. 이것이 바로 슬라이드를 이용하면 아웃풋 하고 이렇게 해서 마지막 것만 쓰겟다. 이것입니다. 그리고 이것의 최종 출력은 1이 되곘습ㄴ디ㅏ. 와이의 예측값이 됩니다. 로스가 시퀀스 로스가 아니라 한의 리니어 로스가 됩니다. 간단한 로스가 정해지면 바로 옵디마이즈를 정의하고 미니마이즈를 전체 모델 셋팅이 끝났습니다. 이 부분에 풀리 커넥티느드를 너었습니다. 풀리 넣었습니다. 와이 최종의 디멘션은 1이 될 것 입니다. 이 사이의 값은 우리가 정해주면 됩니다. 인풋이 10 정해주며 ㄴ됩니다. 핵심입니다. 그런 다음에 트렐이닝 해보겠습니다. 이렇게 트레이닝 하면 되비다. 트레인이 엑스와 와이를 주어서 학습하면 됩니다. 그러면 학습을 통해서 출력이 됩니다. 학습이 다 끝났다. 이제통해서 오아기밧ㅇ 미웟일지 예측을 해봅니다. 예측을 해보록 바니다. 이것을 화면에다 플롯을 해보도록 합니다. 트루입니다. 트루라는 값을 화면에 출력하고 예측한 값을 화면에 출력합니다. 간단한 모델이지만 타임 시리즈를 잘 예측한다 결론을 내릴 수 있겠습니다. 


스톡 마켓은 리니어 레그레션 엘에스티엠이 어떤 차이가 있는지 보는 것도 굉장히 중요합니다. 실제로 써보겠다 임프로브 할 수 있습니다. 관련 기사를 추가로 이용할 수 있습니다. 오케이요. 랭귀지 모델링 사용할 수 있습니다. 잘 학습하면 재미있습니다. 오케이요.  


 학습이 된 모델을 빠르게 사용할 수 있습니다. 이것을 학습학 위해서는 많은 양이 필요합니다. 상당히 많으 양의 메트릭스 연산을 필요로 하고, 상당히 오랜시간이 걸리게 됩니다. 이것을 해결하기 위한 방법이 지피유 입니다. 속도를 높여줄 수 있습니다. 텐서 플로어도 배포를 할대 지피유 버젼을 새롭게 따로 있습니다. 지피유가 있다면 실행을 하면 더 빠르게 학습을 시킬 수 있습니다. 문제는 지피유가 없거나, 또는 컴퓨터 성능이 조금 떨어질떄는 지피유를 가진 클라우드 서비스를 사용하면 됩니다. 프로그램을 간단하게 개발한다음에, 이 프로그램을 클라우드에 올려서 빠르게 실행시키는 이런 형태의 모델이 많이 사용됩니다. 또 그 중에서는 많은 클라우드 중에서 아마존 웹서비스를 가지고 텐서플로우를 돌려볼 텐데요. 이이쥬우에 하나가 지피유 2개의 종류의 인스턴스를 종류합니다. 지역에 따라 가격이 다르니다 효율적으로 이것을 사용해야 비용을 줄일 수 있습니다. 나만의 서버를 만들고 구동을 시키는지, 많은 자료들이 있습니다. 구글로 윤석찬 강의가 있습니다. 


텐서플로우를 AWS 에서 GPU와 함꼐 돌려보도록 하겠습니다. AW  에서 실행을 하면 됩니다. 편의를 위해서 쿠다버전이 설치되어 있는 이미지를  각각 에이엠 런치하면 이미지를 인스턴스를 만들수 있기 때문에 쿠다를 설치하지 않고 싶다 하면 이미지를 사용하면 됩니다. 그런 다음에 텐서플로우를 실행시키면 많은 것들이 생깁니다 지피유 활성화가 되었다. 메시지를 볼 수 있습니다. 이 메시지가 정상적으로 보이지 않는다면 어쩌고 저쩌고 있습니다. 오케이요. 그럼 이것이 얼마나 빠른 속도인가 보면 


스파잇 인스턴스 가격이 저렴한데스 인스턴스가 항상 보장이 되지 않기 때문에, 오케이. 학습 데이터를 잃어버리지 않게 됩니다. 100불을 받아서 설명하도로고 하겠습니다. 차니, 도현님에게 배워서 사용하고 있습니다. 지피유는 사용도 하고 특히, 벡타 계산을 할 때 유용합니다. 지피유 있고 없고의 차이 10~30배 차이의 속도 증가가 있습니다. 지피유가 있으면 하루만에 학습이 끝난다 이렇게 볼 수 있습니다. 지피2 새로운 것을 도입하였습니다. 기존의 4기가 메모리 였는데 피2로 가는데 12기가 까지 더 많은 배치를 학습시킬 수 있고, 더 많이 시킬 수 있기에 유용합니다. 가급적 피투를 사용하면 좋습니다. 가격이 만만치 않습니다. 피투에 시피유 지피유 하나밖에 없습니다.  


고성능 컴퓨터를 사용해서 학습할 수 있습니다. 소스코드는 깃허브에 있으니 사용가능합니다. 클라우드의 기본 개념이 무엇인가 보겠습니다. 텐서플로우를 실행시킨다. 이야기는 주어진 테스크를 로컬 디스크에 세이브 한다 이것입니다. 어떤 데이터를 가지고 와서 트레이닝을 한다 이것입니다. 텐서 플로우의 딥러닝 모델을 만들어서 실행할때, 가장 큰 문제가 가장 큰 시간이 걸린다는 것입니다. 고성능의 지피유가 필요합니다. 구글 클라우드 엠엘 서비스를 사용하게 되면, 그 결과 실행 결과 학습의 결과는 스토리지에 저장되는 구글 클라우드 엠엘이 되겠습니다. 기본적인 설정을 살펴보돌고 합니다.