Tag Archives: Machine Learning

Machine Learning Tool의 종류와 용도

Machine Learning Tool의 종류는 어떤 것이 있고, 그 용도는 어떤 것으로 설계되었는지 살펴봅니다.

1. Tensorflow
Google Brain Team에서 개발했고, Neural Network 및 Machine Learning에 대한 연구에 사용되고 있습니다.
Gmail, 음성 인식, Google 포토 및 Google 검색과 같이 일상적으로 사용하는 인기있는 Google 서비스에는 Tensorflow가 탑재되어 있다고 합니다.
Tensorflow는 Data Flow Graph를 사용하여 복잡한 수치 작업을 수행하는데, 수학적 계산은 엣지와 노드가 포함된 그래프를 사용하여 정교화됩니다. 이 노드는 조작을 구현하는 데 사용되며 데이터가 공급되는 엔드 포인트로 작동 할 수도 있습니다. 엣지는 또한 다른 노드 간의 입/출력 연관을 나타냅니다.

2. Caffe
Machine Learning Framework로 CNN (Convolutional Neural Networks)을 활용하여 컴퓨터 비전/이미지 분류용으로 개발되었습니다.
텍스트, 사운드 또는 시계열 데이터가있는 응용 프로그램을 다루는 경우 Caffe는 컴퓨터 비전 이외의 용도로 사용되지 않습니다.
그러나 여러 호스트에서 동적으로 실행될 수 있으며 단일 플래그를 사용하여 CPU와 GPU간에 전환하는 작업을 잘 수행합니다.

3. Amazon Machine Learning
Amazon은 AML이라는 자체 머신러닝 서비스를 개발했습니다. AML을 사용하면 사용하기 쉬운 API를 통해 응용 프로그램에 필요한 예측을 파생시킬 수 있습니다. AML은 Amazon S3, RDS 또는 Redshift에 저장된 데이터에 연결하여 바이너리 분류, 회귀 또는 다중 클래스 분류와 같은 작업을 수행하여 새 모델을 생성 할 수 있습니다.

4. Apache Singa
Apache Singa는 주로 모델 파티셔닝을 사용하여 분산된 딥러닝과 학습 프로세스의 병렬화에 중점을 두는데 주로 이미지 인식 및 자연어 처리(NLP)를 하는데 사용됩니다.
Singa의 기술 스택은 IO, Model 및 Core라는 세가지 중요한 구성 요소로 이루어져 있는데, IO 구성 요소에는 네트워크 및 디스크에 데이터를 읽거나 쓰는 데 사용되는 클래스가 들어 있으며, Core에서는 텐서 연산과 메모리 관리 함수를 처리하고, Model은 기머신러닝 모델에 사용되는 알고리즘 및 데이터 구조를 포함합니다.

5. Microsoft CNTK
CNTK (Cognitive Toolkit)는 Microsoft의 오픈소스 Machine Learning Framework입니다. CNTK는 음성인식 영역에서 더 많이 사용되지만 텍스트 및 이미지 Training에도 사용할 수 있습니다.
AS CNN, LSTM, RNN, Sequence-to-Sequence 및 Feed Forward와 같은 다양한 머신러닝 알고리즘을 지원하며, 다양한 CPU 및 GPU를 포함한 여러 하드웨어 유형을 지원합니다.
CNTK에서 C ++ 및 Python과 같은 언어로 작업하고 내장된 교육 모델을 사용하거나 직접 빌드 할 수 있습니다.

6. Torch
2002년 NYU에서 개발된 Torch는 Twitter 및 Facebook과 같은 글로벌 서비스 업체에서 주로 쓰며, Torch는 루아(Lua)라는 언어로 코딩되어 있는 것이 특징입니다. Torch의 장점은 역시 참고문헌(?)이 많다는 것입니다.

7. Accord.NET
.NET을 기반으로하는 오픈소스 시스템 학습 Framework이며, 패턴 인식, 인공 신경망, 통계 데이터 처리, 선형 대수, 이미지 처리 등과 같은 응용 프로그램에 사용할 수있는 다양한 라이브러리로 구성됩니다.
Framework는 설치 프로그램, NuGet 패키지 및 소스 코드로 사용할 수 있는 라이브러리로 구성됩니다.
Accord.NET에는 코드 재사용과 점진적인 알고리즘 변경을 용이하게하는 매트릭스 라이브러리가 있습니다.

8. Apache Mahout
Apache Software Foundation의 무료 오픈소스 프로젝트인 Apache Mahout은 클러스터링, 분류 및 협업 필터링과 같은 애플리케이션을 위해 무료 분산 또는 확장 가능한 ML 프레임 워크를 개발하려는 목표로 구축되었습니다. Apache Mahout은 MapReduce 패러다임을 사용하여 Hadoop 위에 배포되는데, Hadoop에 저장된 Big Data 가 연결되면 Mahout은 의미있는 패턴을 찾는 데 도움을 줄 수 있습니다.

9. Theano
Theano는 2007 년 몬트리올 대학에서 개발한 것으로 저가형 머신러닝 프레임워크로 알려졌습니다.  Theano는 API 래퍼를 보낼 하이엔드 추상화 시스템을 위한 기본 플랫폼으로 주로 사용되고 있는데,  몇가지 인기있는 라이브러리의 예로는 Lasagne, Blocks 및 Keras가 있습니다. Theano를 사용하는 한가지 단점은 다중 GPU를 지원하기 위해 몇 가지 해결 방법을 모색해야한다는 것입니다.

10. Brainstorm
Python으로 작성된 Brainstorm은 여러 백엔드 시스템에서 원활하게 실행되도록 제작되었습니다. Brainstorm은 Python을 사용하여 두개의 Data API를 제공합니다. 하나는 Numpy 라이브러리의 CPU 용이고 다른 하나는 CUDA를 사용하여 GPU를 활용하는 것입니다.

Big Data Landscape 2016 – 빅데이터로 먹고 사는 업체들과 그 기술들을 분야별로 총망라하여 정리한 바이블

빅데이터(Big-Data)는 사용 성향을 분석하여 여기서 인사이트를 발굴하여 이익증가 내지는 사용성 개선을 하는데 많은 도움을 주었습니다.

실제로 이를 개발하는 사람은 이렇게 멋들어지는 일을 노가다성 업무로 하는 것이 사실입니다. 간단해 보이는 이 업무를 하기 위해 대량의 데이터를 다룰 수 있는 시스템을 구축해야 하고, 이를 분석해야 하고, 모델을 만들어야 하고, 여기서 인사이트를 도출해야 하고, 때로는 여기서 추천 내지는 대안까지도 제시해야 합니다. 심지어 요즘은 빅데이터를 통해 머신러닝(Machine Learning)까지 하죠. 이 외에도 연관 업무가 수를 셀 수 없이 많습니다.

이런 빅데이터(Big-Data)를 발판으로하여 성장한 회사가 바로 구글, 페이스북, 트위터, 넷플릭스, 아마존 같은 공룡들입니다.

2006년 하둡(Hadoop)이 소개된 이래로 빅데이터(Big-Data)는 그야말로 이 바닥의 핫한 키워드로 자리매김 했습니다. 또한, 빅데이터(Big-Data)라는 이름을 빌어 먹고 사는 업체들이 늘어나고 있고, 또한 이와 연관된 기술들도 마치 벌집처럼 복잡도가 늘어가고 있습니다.

First Mark Capital에서 일하고 있는 Matt Turck은 이 바닥의 핫한 리더들을 하나의 그림으로 그리는 귀염을 토했습니다.

Matt은 Enterprise Technology를 Hard work이라 정의했는데요, 저 또한 이 정의에 동의합니다. 복잡도가 높아지고 기술이 좋아질수록 개발 환경이 좋아져야 하는데, 왠지 소프트웨어 개발자가 해야 할 일 또한 비례해서 늘어나네요. 누군가는 이를 단순화하여 제공하는 틈새시장을 공략하는 일 또한 벌어지리라 생각하지만, 지금은 그 몫이 SI(System Integration)하는 사람들의 몫으로 보입니다. 참고로 SI는 System Integration: 즉, 한국어로 시스템 통합을 의미합니다. 다른 말로 개발을 대신 해주는 외주 용역업체들 몫이라는 의미입니다. 그런데, 아이러니 하게도 한국의 경우 소위 빅데이터 전문 업체라고 하는 국내 중소업체들이 생기기도 했지만, 거꾸로 많이 도산하기도 했습니다. 이들이 자신들의 제품을 만들었으나, 시장의 호응을 얻는데는 실패 했고, SI를 했으나 주 계약자가 개발된 소프트웨어/서비스의 가치를 느끼지 못해 계약이 지속적으로 유지 되지 못하여 기업의 생명이 지속되지 못했기 때문으로 이해 됩니다.

아래는 Matt이 만든 Big Data Landscape 2016입니다.

Big Data Landscape 2016 - 빅데이터로 먹고 사는 업체들과 그 기술들을 분야별로 총망라하여 정리한 바이블

참고: 본 이미지를 별도로 저장하시거나, 이미지만 새로운 윈도우에서 오픈하시면 자세한 내용을 보실 수 있습니다.

왠지 빅데이터(Big-Data)를 하려면 위의 업체들을 모두 알아야 할것 같지만, 사실은 이 중 일부는 용도에 따라 불필요할 수도 있는 것 같습니다. 너도나도 빅데이터 시장에서 한껀 건지려는 노력으로 이런 저런 기술들을 내놓고 있으니… 그야말로 이 분야는 풍년입니다.

2016년 이후 빅데이터(Big-Data) 업계의 현란한 전쟁은 순탄해 보이지 않습니다. 신나게 제품은 만들었지만, 써주는 사람을 찾기 어려운… 또 그 제품에 비용을 기꺼이 지불할 고객님을 찾기 어려운 현실. 누가 이 시장을 선도할지… 누가 이 기술을선도할지… 같은 업계에 종사하는 사람의 한사람으로써…. 피부로 느껴보렵니다.

구글 머신러닝 솔루션 텐서플로(Google Machine Learning – TensorFlow) 오픈소스 공개에 따른 현재와 미래의 비젼

2015년 11월, 구글은 머신러닝(Machine Learning)이라는 기술을 공개했습니다.

사실 머신러닝은 구글이 최초로 만든 기술은 아닙니다, 구글이 그들의 소프트웨어를 공개하면서, 그들의 제품 이름이 아닌 대중이 알아듣기 좋은 적절한 이름으로 이미 업계에서 통용되고 있는 단어(머신러닝;Machine Learning)를 사용했습니다.

구글 머신러닝은 텐서플로(TensorFlow)라는 이름으로 오픈소스로 공개되었습니다.

구글 머신러닝 솔루션 텐서플로(Google Machine Learning - TensorFlow) 오픈소스 공개에 따른 현재와 미래의 비젼

구글의 머신러닝은 공부한 시간을 데이터로 인풋(input)하면 컴퓨터는 성적이라는 결과를 아웃풋(output)으로 도출하게 되는데, 이 과정의 상관관계를 학습시키는 것이라고 합니다.

구글 머신러닝 솔루션 텐서플로(Google Machine Learning - TensorFlow) 오픈소스 공개에 따른 현재와 미래의 비젼

구글은 머신러닝을 쉽게 이해시키기 위해 로켓도 동원했는데, “머신러닝은 로켓엔진과 비슷하다”면서 “로켓엔진의 중간 부분이 머신러닝이며 로켓의 연료가 데이터, 뿜어져 나오는 연기는 그 결과물”이라고 설명했는데, 아래의 로켓 엔진은 위에 그려진 머신 러닝 컨셉 다이어그램과 유사합니다.

구글 머신러닝 솔루션 텐서플로(Google Machine Learning - TensorFlow) 오픈소스 공개에 따른 현재와 미래의 비젼

또한 구글은 인공지능 소프트웨어 시스템인 ‘텐서플로(TensorFlow)’를 무상으로 공개한다고 발표했는데, “이를 통해 개발자들은 CPU, GPU, 모바일 등 실제 제품에 접목할 수 있다”면서 “머신러닝의 표준화를 통해 미래제품 출시에도 도움이 된다”고 강조하면서 머신러닝의 보급에 최우선 순위를 두고 있다는 뜻을 내비쳤습니다.

구글 머신러닝 솔루션 텐서플로(Google Machine Learning - TensorFlow) 오픈소스 공개에 따른 현재와 미래의 비젼

이 머신러닝 적용 사례로는 구글검색, 구글포토, 구글번역, 지메일(Gmail) 등 자사 제품이 있습니다. 구글앱을 통해 음성검색을 이용하면 그 음성을 인식한 뒤 분석한 내용을 바탕으로 검색어를 생성한다고 합니다. 또 구글 포토를 이용하면 스마트폰으로 찍은 사진을 인물, 장소, 사물별로 분류해 저장하고, 클라우드에 보관된 위치 정보가 없는 사진도 촬영 장소의 특징을 분석해 그 위치를 찾아낸다고 합니다.

구글 머신러닝 솔루션 텐서플로(Google Machine Learning - TensorFlow) 오픈소스 공개에 따른 현재와 미래의 비젼

슈미트 회장은 “내가 볼 때 구글은 이 분야(머신러닝)에서 월드 리더다”라고 강조하면서 “구글은 머신러닝을 통해 더욱 스마트해질 것”이라고 언급했다고 합니다.

구글 머신러닝 솔루션 텐서플로(Google Machine Learning - TensorFlow) 오픈소스 공개에 따른 현재와 미래의 비젼

텐서플로(TensorFlow)는 오픈소스로 공개되어졌으며, 다음의 URL에서 관련 정보를 얻으실 수 있습니다.

http://tensorflow.org/

 

참고로 텐서플로(TensorFlow) 외에도 아파치 머하웃(Apache Mahout)이라는 Scalable Machine Learning기술이 예전부터 공개되어져 있었고, 이 기술은 글로벌한 소프트웨어/서비스 기업에서 사용 중인데요, 관련정보는 http://mahout.apache.org/ 에서 얻으실 수 있습니다.

구글 머신러닝 솔루션 텐서플로(Google Machine Learning - TensorFlow) 오픈소스 공개에 따른 현재와 미래의 비젼

 

마지막으로 머신러닝의 응용 사례에 대해 언급해보고자 합니다.

1) 넷플릭스는 머신러닝을 활용하여 개인화된 페이지를 구성하였습니다. (출처: 넷플릭스 블로그)

이를 통해 고객의 선호를 만족시키고 동시에 다양한 콘텐츠를 구매할 수 있도록 유도하는 전략을 펼쳤습니다.

구글 머신러닝 솔루션 텐서플로(Google Machine Learning - TensorFlow) 오픈소스 공개에 따른 현재와 미래의 비젼

구글 머신러닝 솔루션 텐서플로(Google Machine Learning - TensorFlow) 오픈소스 공개에 따른 현재와 미래의 비젼

참고로 CF 알고리즘이 적용되었습니다.

 

2) 페이스북은 머신러닝을 활용하여 이미지 분석 진행

98%의 정확성을 가지고 있고, 8억건의 사진을 5초 이내에 확인할 수 있었다고 합니다.

구글 머신러닝 솔루션 텐서플로(Google Machine Learning - TensorFlow) 오픈소스 공개에 따른 현재와 미래의 비젼

참고로 구글포토에서도 비슷한 기술이 적용되어져 있다고 합니다.

 

3) 구글은 스팸메일 필터시 메일의 패턴을 학습시켜 스팸메일을 거르는 확률을 높였다고.

 

이제 서비스를 전제로 하는 소프트웨어는 보다 많은 빅 데이터를 쌓아 이를 응용하여 미래를 예측하는 기술을 전보다 더 많이 활용하게 될 것으로 보입니다. 보다 편리하고 살기 좋은 미래… 어떻게 다가 올지 궁금합니다.