Tag Archives: Amazon

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를 활용하는 것입니다.

인텔이 주장하는 데이터 센터 아키텍쳐의 미래는 Software-Defined Infrastructure(SDI)

조금 전 인텔의 클라우드 컴퓨팅 기술에 대해 잠시 리뷰를 하였습니다.

대다수의 기술 업체들이 그들의 제품에 이름을 붙이 듯 인텔에서도 이름을 붙였는데, 이를 Software-Defined Infrastructure(SDI)라고 명명했네요.

인텔이 주장하는 데이터 센터 아키텍쳐의 미래는 Software-Defined Infrastructure(SDI)

자세히 보면 VMWare나 Cetrix, 또는 Open Cloud Alliance 등이 하는 일들이 바로 이런 것 아닌가 싶은데요. 하여간 내용을 보면 기존에 노가다로 하던 인프라 관리를 소프트웨어적으로 스마트하게 할 수 있다는 것.

인텔이 주장하는 데이터 센터 아키텍쳐의 미래는 Software-Defined Infrastructure(SDI)

하지만 이를 위해서는 단순히 소프트웨어만 있어서는 불가능하겠죠.

인텔이 주장하는 데이터 센터 아키텍쳐의 미래는 Software-Defined Infrastructure(SDI)

인텔이 주장하는 데이터 센터 아키텍쳐의 미래는 Software-Defined Infrastructure(SDI)

현란하게 표현되어져 있지만, 결국 지가 알아서 서비스를 잘 되게 한다는 것인데요, 이로 인해 시간/비용 절약 및 효율성도 좋아진다고 주장하고 있습니다.

인텔이 주장하는 데이터 센터 아키텍쳐의 미래는 Software-Defined Infrastructure(SDI)

사실 이것은 아마존이나 마이크로소프트, 구글이 하고 있는 비즈니스와도 일치하는 것입니다.

인텔이 주장하는 데이터 센터 아키텍쳐의 미래는 Software-Defined Infrastructure(SDI)

인텔이 주장하는 데이터 센터 아키텍쳐의 미래는 Software-Defined Infrastructure(SDI)

인텔이 주장하는 데이터 센터 아키텍쳐의 미래는 Software-Defined Infrastructure(SDI)

인텔이 주장하는 데이터 센터 아키텍쳐의 미래는 Software-Defined Infrastructure(SDI)

인텔이 주장하는 데이터 센터 아키텍쳐의 미래는 Software-Defined Infrastructure(SDI)

인텔이 주장하는 데이터 센터 아키텍쳐의 미래는 Software-Defined Infrastructure(SDI)

인텔이 주장하는 데이터 센터 아키텍쳐의 미래는 Software-Defined Infrastructure(SDI)

인텔이 주장하는 데이터 센터 아키텍쳐의 미래는 Software-Defined Infrastructure(SDI)

아래의 API는 아마도 오픈스택의 영향을 받은것이 아닌가 싶은 생각이 잠깐 드네요.

인텔이 주장하는 데이터 센터 아키텍쳐의 미래는 Software-Defined Infrastructure(SDI)

API가 제공되면 또 다른 App 개발을 통해 개발/운영의 효율화를 꾀할 수 있다는 장점이 있을 것입니다.

인텔이 주장하는 데이터 센터 아키텍쳐의 미래는 Software-Defined Infrastructure(SDI)

인텔의 강점은 서버의 핵심인 CPU를 개발한다는 것인데요. 저전력 CPU와 SSD가 만나면 이 환상궁합을 제어해 줄 소프트웨어가 필요할텐데… 이를 인텔이 제공한다면, 이 비즈니스 모델은 통할 것 같습니다.

인텔이 주장하는 데이터 센터 아키텍쳐의 미래는 Software-Defined Infrastructure(SDI)

인텔이 주장하는 데이터 센터 아키텍쳐의 미래는 Software-Defined Infrastructure(SDI)

인텔이 주장하는 데이터 센터 아키텍쳐의 미래는 Software-Defined Infrastructure(SDI)

인텔이 주장하는 데이터 센터 아키텍쳐의 미래는 Software-Defined Infrastructure(SDI)

인텔이 주장하는 데이터 센터 아키텍쳐의 미래는 Software-Defined Infrastructure(SDI)

인텔이 주장하는 데이터 센터 아키텍쳐의 미래는 Software-Defined Infrastructure(SDI)

인텔이 주장하는 데이터 센터 아키텍쳐의 미래는 Software-Defined Infrastructure(SDI)

제가 보기엔 이러한 아키텍쳐의 장점은 결국, 한정된 자원을 기반으로 구축된 데이터 센터에서 자원을 효율적으로 관리하게 해준다는 것이 핵심 키워드인것 같습니다. 또한 이러한 SDI가 적용되기 위한 최소한의 조건이 무엇인지 궁금하네요.

또한 이러한 비즈니스를 위해서는 파트너십이 필요할텐데요, 인텔CPU를 이용하여 서버 장비를 만드는 업체들과의 얼라이언스(Alliance)가 중요하겠다는 생각이 듭니다.

집단지성을 활용하는 Collaborative Filtering(CF) 알고리즘 – 추천 알고리즘으로 많이 이용되고 있지만, 한계도 알아야 해

오늘은 Collaborative Filtering에 대해 간단히 정리해보려고 합니다. 업무상 이와 관련된 내용을 자주 접하지만, 어딘가 정리를 해서 놓을 필요가 있다는 생각이 들어 블로그에 올려봅니다. 참고로 이는 전혀 새로운 알고리즘이나 방법이 아니며, 이미 학술적으로도… 또한 업계에서도 널리 응용되고 있는 방법입니다.

본 포스트에서는 Collaborative Filtering에 대해 그 정의와 응용(Application)에 대해 간단히 소개하고자 합니다.

 

1. Collaborative filtering이란?

Collaborative filtering (CF; 이하는 CF로 줄여서 표기)은 추천 시스템에서 사용하는 기법 중 하나입니다.

 

CF는 여러 에이젼트, 뷰포인트, 데이터 소스와의 협업(콜레보레이션; Collaboration)을 포함하는 기술을 사용하여 정보 또는 패턴을 필터링하는 프로세스입니다. 뉴스나 드라마에서 콜라보(Collaboration의 줄임말)를 했다는 말을 종종 들으셨을 것입니다. 콜라보란 협업(Collaboration)을 했다는 의미인데, 이를 바탕으로 CF를 다시 정의하면, 사전적으로는 여러 소스를 참조하여 불필요한 정보를 차단한다는 의미인데, 다르게 해석하면 관심 있어할 정보만 찾아준다는 것으로 풀이할 수 있습니다.

 

CF 알고리즘은 빅데이터(Big-Data)를 기반으로 처리되는데, 다음과 같은 분야에 널리 이용되고 있습니다.

  • 다양한 센서를 이용한 광물 탐사
  • 신용카드사의 고객 행태분석
  • 사용자 데이터를 기반으로 한 서비스(쇼핑몰, VOD) 등

 

알고리즘 측면에서 CF를 다시 정의하면 CF는 다양한 사용자의 선호도를 수집하여 사용자의 관심 분야를 자동으로 예측하도록 하는 방법입니다. CF의 가장 흔한 접근 방법은 “당신이 구입한 제품을 구입한 다른 고객은 A라는 제품에도 관심을 보이셨습니다.”라는 방식의 접근입니다. 다른 사례로는 “명량”이라는 영화를 본 사람이 있다고 하면, 이 사람에게 “명량을 보신 고객분들 중 많은 분들이 해적도 보셨습니다”라고 추천을 해주는 것을 예로 들을 수 있습니다. 이는 서비스를 운영하는 사람의 관점에 있어서는 2차 구매를 유도하여 또 다른 수익을 내는 기회를 만들어낼 수 있다는 장점이 있습니다. 이러한 처리 기법은 아마존(Amazon)이나 알리바바(Alibaba) 같은 쇼핑몰은 물론 넷플릭스(Netflix)같은 VOD 서비스 업체에도 적용이 된 바 있습니다.

 

 

2. CF 방법론(Methodology)

1) User-based CF

: 일반적으로 가장 많이 이용되는 방법으로 Nearest Neighbor Algorithm이라고도 불리우며 그 처리 프로세스는 다음과 같습니다.

  • Step 1: 같은 패턴을 가지는 사용자를 찾는다. 예) A라는 아이템에 대해 별 5개를 준 고객이 있다고 할 경우, 이와 같은 등급을 부여한 B라는 고객을 찾는다.
  • Step 2: 같은 유형의 사람들이 했던 패턴을 예측(Prediction) 정보로 제공한다.

 

아래의 사례가 본 사례와 유사한 것 같습니다.

집단지성을 활용하는 Collaborative Filtering(CF) 알고리즘 - 추천 알고리즘으로 많이 이용되고 있지만, 한계도 알아야 해

 

2) Item-based CF

: 아마존(Amazon)이 이를 처음으로 사용한 것으로 알려져 있으며,  통상 “users who bought x also bought y”라는 형태로 많이 알려져 있습니다. 이 방식에 대한 처리 프로세스는 다음과 같습니다.

  • Step 1: 아이템에 대해 서로의 관계를 알 수 있는 매트릭스를 만든다.
    집단지성을 활용하는 Collaborative Filtering(CF) 알고리즘 - 추천 알고리즘으로 많이 이용되고 있지만, 한계도 알아야 해
  • Step 2: 사용자와 일치하는 데이터를 찾아 매트릭스에 대입하여 현재 사용자의 선호도를 예측한다.
    집단지성을 활용하는 Collaborative Filtering(CF) 알고리즘 - 추천 알고리즘으로 많이 이용되고 있지만, 한계도 알아야 해

 

하나 주시해야 할 점은 별점(등급) 방식은 모든 사용자를 만족시키는 것이 아니라 평균적인 대중의 의견을 반영하는 것이므로 선호도나 관심도가 다양한 분야에 적용 시, 그 결과가 만족스럽지 않을 수 있습니다. 이런 경우 검색(Search)이나 Data Clustering같은 방법을 이용하는 편이 좋은 결과로 이어지는 경우가 많습니다.

 

 

3. CF 구현 방식

CF 구현방식에는 Memory-based CF, Model-based CF, Hybrid CF의 3가지 방식이 있습니다. CF 알고리즘을 적용하려고 계획하고 있다면, 그 용도와 Data Source의 Size에 대해 충분히 고민한 후 구현 방식을 정하는 것이 적절하다 판단됩니다.

 

1) Memory-based CF

Memory-based CF는 사용자의 선호도(Rating) 기반으로 사용자(User) 또는 아이템(Item)의 유사도를 계산하는 방법을 이용하는 것으로, 추천 솔루션 개발에 널리 이용됩니다. 쇼핑몰이나 VOD 서비스에서 제공하는 대다수의 추천 기술은 이 방식으로 서비스 되고 있습니다. 위에 기술했습니다만, Nearest Neighbor Algorithm이 널리 이용되고 있으며 아이템(Item)/사용자(User) 기반 top-N 추천 알고리즘 또한 널리 이용되고 있습니다.

이 방식의 단점은 다음과 같습니다.

  • 사람의 선호도(Rating) 의존적
  • 표본데이터 모수가 적으면 성능도 떨어짐. 이 때문에 새로운 사용자나 아이템이 추가되는데 따르는 확장성(Scalability)이 떨어짐.

    집단지성을 활용하는 Collaborative Filtering(CF) 알고리즘 - 추천 알고리즘으로 많이 이용되고 있지만, 한계도 알아야 해

 

2) Model-based CF

이는 Usage 데이터를 기반으로 Training을 하여 패턴을 발견하는 과학적인 기법입니다. 이는 보통 실제 Data에 대한 예측을 하는데 이용되는데, 일기예보 등이 이에 해당합니다. 여기에는 베이지안, 클러스터링, 시맨틱 등 수학적 모델을 기반으로 추천을 하는 다양한 알고리즘이 존재합니다.

Model-based CF는 Memory-based에 비해 적은 소스 모수를 사용하고 데이터가 크면 클수록 예측 퍼포먼스가 좋아 진다는 장점이 있으며, 반대로 모델을 만드는데 비용이 많이 소요되고, 데이터가 크면 클수록 퍼포먼스가 떨어진다는 단점이 있습니다.

집단지성을 활용하는 Collaborative Filtering(CF) 알고리즘 - 추천 알고리즘으로 많이 이용되고 있지만, 한계도 알아야 해

3) Hybrid CF

당연한 예측 결과겠지만, Memory-based CF와 Model-based CF를 혼용하면 적은 모수의 소스에 대해서도 대응이 가능하다는 장점이 있으나, 이에 따라 비용이 증가하고 구현 복잡도도 높아진다는 단점이 있습니다.

예를 들어 Google의 뉴스 추천 서비스가 이에 해당합니다.

 

 

4. CF의 문제점

1) 정확도

추천 시스템을 만드는 많은 과학자들이 “그래서 추천 정확도가 높아졌어?”라는 질문을 받습니다. CF만 가지고 개인화 추천의 선호도를 모두 맞추는 것은 불가능합니다, 다만 대중의 의견을 반영하였으므로 대개는 맞아떨어진다고 하는 것이 맞습니다.

2) 콜드스타트(Cold Start)

CF는 수집된 패턴을 근간으로 움직이므로, 새로운 사용자나 새로운 아이템이 등장했을 경우 사용 데이터 부족으로 인하여, 적절하게 추천되지 않을 가능성이 높습니다. 이런 경우라면 새로운 사용자의 경우에는 좋아하는 영화, 좋아하는 음식, 장르 등… 선호도를 미리 기초 데이터로 받아야 할 것이고, 새로운 아이템이 등장했을 경우에는 이것이 필요한 사람들에게 의도적으로 노출되게 하는 UI(User Interface)적 접근이 필요 할 것입니다.

집단지성을 활용하는 Collaborative Filtering(CF) 알고리즘 - 추천 알고리즘으로 많이 이용되고 있지만, 한계도 알아야 해

 

 

5. CF 알고리즘 적용 시 고려 사항

CF를 구현함에 있어, CF의 성능에 방해가 되는 여러 요인들이 있습니다. 하여 CF 구현 시 아래의 항목에 대한 대응 전략이 있는지… 미리 검토/고민 할 필요가 있습니다.

1) 소스 데이터의 분량(Data Sparsity)

2) 확장성(Scalability)

3) 유사품(Synonyms)에 대한 처리 정책

4) 검색봇(bot) 등 추천에 방해되는 인자(Grey sheep)에 대한 예외 처리 정책

5) 일부러 남의 경쟁자의 아이템에 대해 부정적인 Voting을 하고, 자기 아이템에 대해 긍정적인 Voting을 하는 Shilling attacks에 대한 대응 방안

6) 오래된 아이템(Long Tail)에 대한 Rating이 높아 새로운 아이템이 추천되지 못할 가능성에 대한 대응 방안: 신규 아이템은 별도 노출을 해주는 UI 구성 등.

 

이상 CF(Collaborative Filtering)에 대해 알아보았습니다.