R TensorFlow 코드 깃헙 공개

딥러닝을 공부하는 가장 좋은 방법은 몇몇 대표적인 모형을 직접 코드로 작성해보고 모델링을 해보는 것이다. 최근에 많은 책들이 책을 출간하기 전에 코드를 깃헙에 공개하고 있는데, 이들 책 중에서 하나를 골라서 R로 코드를 구현하는 작업을 틈틈이 해왔다. 이 작업이 다소 번거로운건 Python코드와 R코드를 모두 잘 이해하고 구현해야 된다는 것이다. 다행히 Python에 대한 구현 경험이 있어서 큰 문제가 되지는 않았으나, 배열 인덱스 차이와 매트릭스 형태에 대한 기본 사고 방식이 달라서 다소 어려움이 있었다. 그러나 이런 코드 구현이 재밋는 점은 하나의 코드를 완벽히 이해하고 구현을 해야 정확히 동작한다는 것이여서 꽤 많은 공부가 되고 있다.

이 작업을 한 두번째 이유는 R기반 텐서플로 모델링이 Python이 하는 그것만큼 가능할 것인가?라는 질문에 스스로 답을 얻고 싶어서였다. 이 부분에 대한 개인적인 해답은 YES이다. Python이 하는 것 모두 가능하다! 게다가 R의 모델링 패키지와 데이터 전처리 패키지들의 잇점을 그대로 텐서플로에 활용할 수 있다. 물론 코드 구현시 최근에 나온 reticulate패키지를 활용하면 전처리 코드까지 쉽게 구현이 가능한데, 필자가 구현할때는 CNN예제에서 이미지 형태가 Python Pickle 형태로 제공되는 데이터를 핸들링 하는것 이외에는 사용하지 않았다. reticulate를 사용하는건 텐서플로 R way를 찾는걸 포기하는것과 같다고 생각했다.

텐서플로를 R로 모델링 한다는건 몇가지 장점과 더불어 단점도 존재한다.

결국 텐서플로 코드는 R이나 Python이나 큰 차이가 없다. 거의 99% 같다고 보면 된다. 그렇다면 차이가 나는 부분은 결국 데이터 전처리나 결과 시각화 부분 뿐이다. 데이터 전처리 부분은 이미지를 핸들링 한다면 3차원 이상의 array를 핸들링하는 연습이 충분히 되어 있어야 되는데, 신기하게도 이 부분에 대한 자료가 R에서는 그렇게 많지않아서 필자도 애로사항이 많다. 그래서 3차원 이상의 데이터를 핸들링 하는 코드가 Python보다 길어지는 경우가 많아 필자 역시 이 부분에 대한 경험이 부족함을 통감하고 있는 상황이다. 그러나 만일 2차원 테이블 형태의 데이터를 기반으로 텐서플로를 한다면 전처리 부분이 Python에 대비해 많은 잇점을 가져갈 수 있는데, data.table, caret과 같은 패키지를 적절히 활용하면 좋은 퍼포먼스로 다양한 데이터 전처리/피딩 방식을 적용하면서 모델링의 묘미를 만끽할 수 있다.

필자가 R 코드를 구현하고 있는 책은 Machine Learning with TensorFlow이며, 코드가 상당히 잘 정리되어 있고 책 자체도 아주 적절한 수준으로 코드 정리가 잘 되어있어 텐서플로를 처음 시작하는 사람들에게 좋은 시작점을 제공하고 있다. 아쉽지만 책은 아직 출간전이다.

책에 나온 전체 코드를 구현하는것 뿐만 아니라 개인적인 모델링 관련 코드도 올려 두었는데, 예를 들어 CNN 학습된 모형에 대한 시각화 코드가 그것이다. 이런 방식으로 다른 모형들에 대한 정리도 비슷한 방식으로 정리할 예정이다. 구현상 텐서플로 코드는 일반적인 나열 형태의 R코드로 구현하게 되면 나중에 텐서객체들이 꼬여서 큰 문제가 생길 수 있어 Python과 같이 클래스 형태로 구현하는게 가장 좋다. R에서는 많은 객체지향 코딩 방식이 존재하는데, 가장 기존 언어와 유사한 Reference Class로 구현했다. AutoEncoder 클래스가 대표적인 예이다.

필자가 코드 정리중인 github의 README를 붙이며 글을 마친다.


Machine Learning with TensorFlow(R version)

This is the unofficial code repository for Machine Learning with TensorFlow with R.

This repository is for practicing R tensorflow modeling exercises. I'm personally writing this code for me to know that there are some areas where you can get the benefits of R, and that the code in the book may contain partially improved or experimented code. (example: CNN model view )

TODO

  • make full book example code with R.
  • make use of R Reference Class for code reusablilty.
  • adding GAN code.

Requirement

Summary

Chapter 2 – TensorFlow Basics

Chapter 3 – Regression

Chapter 4 – Classification

Chapter 5 – Clustering (working)

  • Concept 1: Clustering
  • Concept 2: Segmentation
  • Concept 3: Self-organizing map

Chapter 6 – Hidden markov models

Chapter 7 – Autoencoders

Chapter 8 – Reinforcement learning (working)

  • Concept 1: Reinforcement learning

Chapter 9 – Convolutional Neural Networks

Chapter 10 – Recurrent Neural Network(working)

  • Concept 1: Loading timeseries data
  • Concept 2: Recurrent neural networks
  • Concept 3: Applying RNN to real-world data for timeseries prediction

CC BY-NC 4.0 R TensorFlow 코드 깃헙 공개 by from __future__ import dream is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.