코딩스토리/딥러닝

인공지능 / 머신러닝 / 딥러닝

Tech&Fin 2022. 5. 2. 17:13
반응형

개인적으로 최근에 머신러닝과 딥러닝에 관심을 가지게 된 계기가 생겨서 해당 부분을 공부하며 습득해가는 내용을 기록하고 참고하기 위해 머신러닝 및 딥러닝 카테고리를 신설하였습니다.

 

이 카테고리에서는 인공지능, 머신러닝 그리고 딥러닝에 대한 내용을 제가 이해한 내용을 기반으로 기록해 나갈 예정이며 단기적으로는 비트코인 자동매매 프로그램에 딥러닝을 적용시켜 보는것을 목표로 해 보려고 합니다.

 

블로그에 포스팅하는 내용은 주관적인 내용이 포함될 수 있기 때문에 읽는 사람에게 올바르지 않은 정보로 작용할 수 있는 점을 미리 양해 부탁 드리겠습니다.

 

그럼 이번 시간에는 간단히 인공지는, 머신러닝, 딥러닝이 무엇인지 간략히 살펴보고 비트코인 자동매매에는 어떻게 적용할 수 있을까에 대한 고민을 조금 해보려고 합니다.

 

 

목차 - 클릭하면 이동합니다.

     

    인공지능과 머신러닝 그리고 딥러닝

    영화에서 본 인공지능

    어린시절 열광하며 본 터미네이터 영화에서는 인공지능을 탑재한 로봇이 스스로 발전하여 생태계를 만들고 결국 인간을 지배하려고 하고 인간은 인공지능에 맞서 싸우게 되는데요.

     

    영화를 많이 봐서인지 인공지능하면 뭔가 살아있는 생명체처럼 스스로 발전해서 결국 인류를 위협할 것만 같은 생각이 들기도 하는데요. 일단은 그런 걱정은 접어 두셔도 될 거 같습니다. 왜냐하면 우리가 만들고자 하는 것은 그런 정도 수준의 인공지능이 아니기 때문입니다.

     

    그래서 우리가 만들고자 하는 인공지능은 뭔가 거창한 추상적인 개념 보다는 현존하는 검증되고 틀을 갖춘 프로그래밍 방법 중 하나라고 생각하고 접근하는 것이 더 좋을 것 같습니다.

     

    인공지능, 머신러닝, 딥러닝에 접근하는 방법

    출처 : Nvidia Blog

    인공지능과 머신러닝 그리고 딥러닝이란 단어는 요즘 여기 저기서 많이 사용되고 있어서 굉장히 익숙한 단어이지만 사실 해당 분야의 전문가나 관심을 가지고 있는 사람이 아니라면 세가지 용어에 대한 차이를 명확하게 알고 있는 사람이 아주 많지는 않을 것 같습니다.

     

    이런 내용을 인터넷에서 찾아보면 위와 같은 이미지와 설명들이 많이 나오는데요. 간단히 정리하자면 결국 인공지능 > 머신러닝 > 딥러닝의 개념으로 인공지능이 가장 포괄적인 의미를 가지고 있고 조금 더 세분화된 개념으로 머신러닝 그리고 머신러닝에서 더 세분화된 개념 중에 인공 신경망을 이용하는 딥러닝이 있다는 내용들이 대부분입니다.

     

    하지만 저런 내용들이 처음에는 마음에 잘 와 닿지를 않고 도대체 저런 것을 어떻게 내가 원하는 부분에 적용할 수 있을 지 고민이 될 수 있는데요. 

     

    우리는 학문으로서 인공지능, 머신러닝, 딥러닝을 공부하는 것이 아니라 실제로 사용하기 위한 프로덕트를 만들기 위해 알아가는 것이기 때문에 원론적인 개념을 공부하는 것 보다는 실질적인 차원에서 접근하는 것이 더 유용할 수 있습니다.

     

    실질적인 접근방법

    앞서 말씀드린 대로 우리는 개념을 공부하고 이해하기 보다는 이미 나와 있는 방법을 적용하는 방식으로 접근을 할 예정이며 비트코인 자동매매에 딥러닝을 적용해 보려고 하는데요.

     

    딥러닝은 머신러닝의 일종이며 또한 인공지능의 일부이기도 하기 때문에 결국 개념적으로는 우리가 만드는 프로덕트를 인공지능이나 머신러닝 혹은 딥러닝이라고 불러도 상관이 없을 것 같습니다.

     

    앞서 딥러닝이 현존하는 프로그래밍 형태 중 하나라고 말씀 드렸는데요. 조금만 더 구체적으로 이야기를 해보록 하겠습니다. 딥러닝은 말 그대로 기계가 학습을 하여 결과를 예측하는 방법이라고 할 수 있는데요. 예를들면 아래와 같은 방법으로 진행됩니다.

     

    먼저 학습을 위한 대량의 데이터를 확보하고 데이터의 80% 정도를 학습시키는데 사용하며 나머지 20%를 예측하는데 사용할 수 있습니다.

     

    이때 데이터는 텍스트, 이미지, 오디오등 여러가지 형태로 존재할 수 있는데요. 먼저 여러 종류의 데이터를 컴퓨터가 학습할 수 있도록 변경해 주는 작업을 진행합니다. 그 다음 데이터의 80% 정도를 사용하여 학습을 시키게 되는데요. 학습하는 방법에는 크게 지도, 비지도 그리고 강화학습이라는 방법이 존재합니다.

     

    다음으로는 구현하고자 하는 상황에 맞는 학습방법을 선택하면 되는데요. 각 학습 방법은 대략적으로 아래와 같은 상황에 사용할 수 있습니다.

     

    ① 지도학습 : 정답이 있고 정답을 알려주면서 학습시키는 방법입니다. 예를들어 신호등이 있는 사진을 판단하는 프로그램을 만든다고 한다면 여러개의 사진을 통해 신호등이 있는 사진에 대해서 정답으로 학습시키면서 컴퓨터가 신호등이 있는 사진의 특성을 파악하도록 하는 방법입니다.

     

    ② 비지도학습 : 정답이 있지 않고 여러개의 군집에서 비슷한 특성끼리 무리짓는 방식의 학습방법 입니다. 예를 들면 여러개의 사진을 입력받아 사람과 동물로 구분하는 프로그램을 만들고자 할 때 사용할 수 있습니다.

     

    ③ 강화학습 : 강화학습은 기계가 판단한 내용에 대해서 상과 벌을 주어 오차 범위를 줄여나가면서 결과를 예측하는 방식이라고 볼 수 있는데요. 예를들어 알파고처럼 게임을 하는 프로그램을 만들고 싶다면 기계가 수많은 시도를 하면서 시도했을 때 잘 한 경우 상을 주고 잘못한 경우 벌을 주면서 오차를 줄여나가 어떻게 하면 게임을 잘 할 수 있는지 습득하는 방법이라고 볼 수 있습니다.

     

    이를 비트코인 자동매매에 적용한다면 지도학습이나 비지도학습보다는 강화학습을 적용하는 것이 좋을 것 같은데요.

     

    방대한 양의 과거 데이터를 활용하여 여러가지 지표값, 예를 들면 MACD, RSI, MFI, Williams R 데이터들을 학습을 위한 데이터로 활용하고 강화학습 방식을 이용해 특정 시점에 매수한 경우 일정 기간 후 수익이 10% 났다면 +10점의 상을 주고 -5%의 손실이 났다면 -5점의 벌을 주는 방식으로 학습을 시킨 후 현재 시점에서 가장 좋은 방법을 예측하는 프로그램을 만들 수 있습니다.

     

    이제 방법은 대강 이해가 가는데 도대체 이런 프로그램을 어떻게 만들 수 있을까요? 의외로 어렵지 않을 수 있습니다. 왜냐하면 텐서플로우나 파이토치와 같은 현존하는 딥러닝 프로그램 도구를 이용하면 되기 때문입니다.

     

    앞서 말씀드린대로 우리는 딥러닝에 대한 이론을 배우고 수학이나 통계적인 개념을 배우는것이 아니라 실제 사용할 프로덕트를 만드는 것에 집중할 것이기 때문에 시중에 나와있는 프로그램을 배우고 그것을 사용하기만 하면 됩니다.

     

    즉 데이터만 확보하면 파이토치와 같은 도구의 함수를 이용해서 데이터를 전처리하고 원하는 방법으로 학습시킬수 있으며 예측할 수 있게 됩니다.

     

    앞으로의 진행 방향

    테크앤핀에서는 먼저 시중에서 어렵지 않게 찾아볼 수 있는 딥러닝 예제를 찾아 같이 구현해 보면서 동작 원리를 이해해 보려고 합니다.

     

    최종적으로는 이해한 방법을 통해 비트코인 자동매매에 적용할 딥러닝 프로그램을 구현해서 과거 데이터를 학습하여 현재의 매수/매도 타이밍을 결정하여 자동으로 매매하는 프로그램을 만들어 보려고 합니다.

     

    잘 되지 않을 수도 있고 시간이 오래 걸릴 수도 있지만 천천히 시간나는대로 진행해 보도록 하겠습니다. 많은 관심 부탁 드리겠습니다. 감사합니다.

    반응형

    '코딩스토리 > 딥러닝' 카테고리의 다른 글

    파이토치(Pytorch) 설치하기 - 딥러닝  (0) 2022.05.03