머신러닝

단 1 시간이면 가능한 머신 러닝 초보자를 위한 구글 Colab 노트북에의 초대

coding art 2019. 6. 26. 11:55
728x90

컴퓨터 코딩을 다루다 보면 흔하게 접하는 용어로서 Front end Back end 가 있다. 컴퓨터 코딩에서 Front end 란 코드를 작성 수정 빌드 업로딩 저장 및 라이브러리 설치를 지원하기 위한 편집 시스템을 뜻한다. 간단한 예로서는 아두이노 IDE를 들 수 있을 것이다. 마찬가지로 머신 러닝을 위한 코드 편집 작업을 위해서는 이미 잘 알려진 툴이 있다. 너무나 잘 알려진 아나콘다를 비롯하여 여러 가지 툴이 있을 수 있다. 특히 아나콘다에는 Spyder 편집기와 Jupyter Notebook 이 대표적이다. 반면에 Back end 는 일종의 Solver를 뜻한다. TensorFlow, Keras, PyTorch 와 같은 라이브러리들이 머신 러닝을 위해 Front end에 설치되는 대표적인 Back end 로서 머신 러닝 코드를 실행 시키는데 필수적으로 사용된다.

 

파이선 언어를 기반으로 하는 머신 러닝 편집 및 빌드 과정에서 다음과 같이 라이브러리 모듈을 불러들일 때

import tensorflow as tf

import torch

∙∙∙

Back end 라이브러리들이 설치되어 있지 많으면 항상 아래와 같은 에러 메시지를 받게 된다.

No module named ∙∙∙

    사실 아주 간단한 에러 메시지이지만 파이선 머신 러닝을 처음 시작해 보려는 초보자가 이런 메시지를 받게 되면 좌절하게 되는 첫 번째 단계에 들어선 것이다. 사실 머신 러닝이 그다지 복잡한 이론이나 컴퓨터 코딩을 요하는 것은 아니지만 그래도 시작하려면 Front end 설치 과정에 관해서 세세히 알아야 할 필요가 있는 것이다. 필자도 이런 과정을 당연히 겪었고 그 결과 경험을 공유하기 위해 작업일지를 책으로 출간하기도 했다. 이 책의 1장이 아나콘다 스파이더와 쥬피터 노트북 설치이다. 머신 러닝을 깊게 연구해 볼 요량이라면 이 책의 첫 장을 겪어 보는 것이 지름길이라 할 것이다.

 

하지만 그 보다 더 준비가 안 된 초보자라면 지금 당장 코드를 돌려볼 수 있는 다른 대안이 없는 것은 아니다. 물론 초보자들에게 간단히 소개 드리지만 사실 그 대안은최근에 GPU 사용을 계기로 시작하게 된 Google NDRIVE에서 사용 가능한 Colab 편집 시스템이다. 사용해 보니 놀랍게도 Jupyter Notebook 과 아주 유사하였다.

 

국내에서는 이미 상당히 많은 안드로이드 폰 사용자가 있기 때문에 구글 이메일 및 크롬 계정은 다 있으리라 본다. 로그인해서 보면 아래와 같이 본인이 사용하는 앱들이 즐비하게 나타나 있다. 구글에 로그인 되어 있는 상태에서 구글의 NDRIVE 속으로 들어가 보자.

 

 

NDIRIVE 속은 잡다한 메뉴들이 잔뜩 들어 있는데 + 연결할 앱 더보기를 선택 클릭하자.

 

 

드라이브 앱 연결이 뜨는데 엄청 많으므로 검색을 이용하도록 하자. “colaboatory”를 입력 검색한다.

 

 

 

Colaboratory 앱 아이콘이 뜨면 연결 버튼을 누르자.

 

 

연결 버튼 누른 후 기본 앱 설정 요구가 나오면 예스로 통과 후 평가하기 창이 뜨는데 끈 후     다시 앞으로 돌아가서 Colaboratory가 메뉴에 등록되었는지 살펴보고 있으면 클릭해서 시작하자.

 

 

 

 

대박! 클라우드형 쥬피터 노트북 유사품이 뜨는데 바로 코딩해서 실행시키면 될 것 같다.

 

 

 

아나콘다에서 실행되던 코드를 하나 복사하여 아래와 같이 셀 하나에 집어넣고 수정해서 실행해 보자. 오늘 시작했더라도 단 1시간이면 여기까지 도달 가능하할 것이다.

 

한편 아나콘다에서는 텐서플로우와 PyTorch를 함께 불러 쓸 수 없지만 구글 Colab 에서는 그런 문제도 없어진 듯하다. torch에 이어 tensorflow를 불러도 아무런 문제가 없으며 NumPy Matplotlib를 부를 수 있으면 웬만한 파이선 머신 러닝 코딩 작업은 무난하다. 그밖에 필요한 라이브러리가 있다면 그 라이브러리 이름을 import 하면 될 것이다.

 

 

첫번째 가장 간단한 예제로는 TensorFlow==1.15.0 버전을 사용한 MNIST 수기문자판독 예제로서 하나의 은닉층을 사용한 경우일 것이다.

 

현재 Colab 의 TensorFlow  Default 버전은 2.9 를 넘어가고 있으므로 구 버전 사용을 위해서는 리눅스 명령

!pip install tensorflow==1.15.0 을 사용하여 현재의 2.9버전을 자동으로 uninstall 후 다시 설치할 필요가 있다.

 

구버전 TensorFlow 를 설치하여 MNIST 예제 문제를 다루어 보는 다음과 같은 이유들이 있음을 이해하자.

  1. 사용법이 리눅스나 윈도우즈 상의 Jupyter 와 거의 동일하다.

  2. 모든 컴퓨터 코드의 기본적인 구성은 보이지 않는 그래프(graph) 구조에 기반하므로 그래프 구조로 출발한

       Tensorflow 1.15.0 버전을 사용해 볼 필요가 있다.

  3. 하이퍼 파라메터 설정에 따라학습을 위한  컴퓨팅 부담이 커지는 경우 Colab 의 GPU 유형 설정을 통해 ~7배 정도의

      연산 속도 향상을 기대 할 수 있다.

  4. Tensor Board 지원으로 Cost  함수를 비롯한 내부 그래프 연산 결과를 가시화 해 볼 수 있다.

  5. 최종적으로 최신 TensorFlow 버전으로 돌아가서 Keras에 의한 MNIST 처리 과정을 살펴보도롣 한다.