Ubermensch
Using Machine Learning to Predict the Weather 1 본문
1. Python
Python은 아래와 같은 이유로 머신러닝 기술을 배울 수 있는 최고의 언어 중 하나이다.
- 간단하다 : Python은 간단한 문장과 방대한 커뮤니티가 존재해, 프로그래머가 접근하기에 좋은 언어이다.
- 강력하다 : Python은 데이터 사이언티스트 및 웹 프로그래머에게 가장 인기있는 언어 중 하나이다. 그들이 이루는 커뮤니티는 머신러닝을 포함해, 당신이 필요로 하는 모든 라이브러리를 만들어내고 있다.
- 많은 머신러닝 라이브러리 : 이미 Python으로 쓰여진 머신러닝 관련 라이브러리가 어마어마하다.
2. TensorFlow
TensorFlow는 기계학습과 딥러닝을 위해 구글에서 만든 오픈소스 라이브러리이다.
API에 대한 러닝커브가 낮아, API랑 씨름하기 보다 네트워크 디자인에 좀 더 신경을 쓸 수 있도록 도와주는 착한놈이다.
<데이터 플로우 그래프>
TensorFlow의 계산은 데이터 플로우 그래프(Data Flow Graph) 방식을 사용한다.
데이터 플로우 그래프는 수학 계산과 데이터의 흐름을 노드(Node)와 엣지(Edge)를 사용한 방향그래프로 표현한다.
- Tensor : 기본 자료구조이며, 딥러닝에서 텐서는 다차원 배열로 나타내는 데이터이다. (array , list)
- Flow : 데이터의 흐름을 의미한다.
- Node : 수식(Operation)을 의미
- Edge : 시스템을 따라 흘러가는 Tensor(Data)를 나타낸다.
☞Python은 절차적으로 처리가 되지만, TensorFlow는 작성과 실행 영역이 분리되어있다.
<TensorFlow의 장점>
- 데이터 플로우 그래프를 통한 풍부한 표현력
- 코드 수정 없이 CPU/GPU모드로 동작
- 아이디어 테스트에서 서비스 단계까지 이용 가능
- 계산 구조와 목표 함수만 정의하면 자동으로 미분계산을 처리
- Python/C++ 을 지원하며, SWIG를 통해 다양한 언어지원 가능
- 윈도우,맥,리눅스 뿐 아니라 안드로이드, iOS,라즈베리 파이 등 다양한 시스템에서 쉽게 사용 가능
<TensorFlow 소스구조 분석>
☞ http://airpage.org/meta/go/927
3. Neural Networks(인공신경망) 이론
선형회귀분석 등, 종속변수와 독립변수 간의 선형관계로만 계산 할 수 없는 문제들이 있다.
이러한 선형성을 해결하기 위한 알고리즘은 엄청나게 많지만, 최근 몇 년간 가장 인기있는 분야 중 하나인 인공신경망 이론은 다양한 기계학습 문제에 적용할 수 있다.
인공신경망은 선형 및 비선형 동작을 기반으로 하는 강력한 학습기술방법을 제공한다.
인공신경망은 복잡한 상호작용을 하며 정보를 전송, 수집 및 학습하는 뇌의 뉴런에서 영감을 받았다.
네트워크를 통과하는 수치처리는 선형관계에 국한되지 않는다는 매우 강력한 특징을 갖는다.
지도학습
데이터에 대한 레이블(Label)-명시적인 정답-이 주어진 상태에서 컴퓨터를 학습시키는 방법이다.
즉, (데이터(data), 레이블(label)) 형태로 학습을 진행하는 방법이다.
아래와 같은 28×28 크기의 이미지인 MNIST 데이터셋이 있으면, 이를 이용해 학습을 진행할때, 트레이닝 데이터셋(training set)은 아래와 같이 구성된다.
(0을 나타내는 28×28 이미지, 0), (7을 나타내는 28×28 이미지, 7), (6을 나타내는 28×28 이미지, 6), (0을 나타내는 28×28 이미지, 0), …
이렇게 구성된 트레이닝 데이터셋으로 학습이 끝나면, 레이블(label)이 지정되지 않은 테스트 데이터셋(test set)을 이용해서, 학습된 알고리즘이 얼마나 정확히 예측(Prediction)하는지를 측정할 수 있다.
예를 들어서,
(4을 나타내는 28×28 이미지) 를 학습된 분류기에 집어 넣으면, 올바르게 4를 예측 하는지(True Prediction) 아니면 3이나 5와 같은 잘못된 레이블을 예측하는지 (False Prediction) 측정할 수 있다.
이때, 예측하는 결과값이 discrete value(이산값)면 classification(분류) 문제-이 이미지에 해당하는 숫자는 1인가 2인가?-,
예측하는 결과값이 continuous value(연속값)면 regression(회귀) 문제-3개월뒤 이 아파트 가격은 2억1천만원 일 것인가? 2억2천만원 일 것인가?-라고 한다.
딥러닝에서 Supervised Learning 방법론으로 주로 사용되는 구조는 Convolutional Neural Network(CNNs), Recurrent Neural Networks(RNNs)이다.
https://stackabuse.com/the-best-machine-learning-libraries-in-python/#scikitlearn
https://stackabuse.com/using-machine-learning-to-predict-the-weather-part-2/
http://solarisailab.com/archives/1785
http://infosec.pusan.ac.kr/wp-content/uploads/2017/09/2-tensorflow-%E1%84%80%E1%85%B5%E1%84%8E%E1%85%A9.pdf
을 참고하여 의역/보충하여 작성.
'ML&DL' 카테고리의 다른 글
Web API로 데이터 추출하기 - OpenWeatherMap (0) | 2018.11.20 |
---|