본문 바로가기

분류 전체보기194

Microsoft Research Learning to Rank 알고리즘 - [1] RankNet 지난 포스팅에서는 Learning to Rank에 대한 intuitive한 내용들을 다루었다. 이에 대한 내용을 다시 한 번 상기하자면, 검색과 추천같은 '랭킹'이 중요한 서비스의 경우, 아이템의 순위를 어떻게 정하느냐가 서비스의 품질을 결정한다고 할 수 있다. 그리고 이를 평가하기 위한 가장 정교한 방법은 list-wise 방법으로, nDCG를 대표적인 예로 들 수 있다. 그렇다면 이제 pair-wise ~ list-wise 정렬을 잘 하는 방법, 즉 "순서 정보를 이용하여 모델을 학습하는 방법"에 대해 알아보자. 이를 가장 잘 대표하는 방식이 바로 RankNet 계열의 알고리즘이다. 이는 Microsoft Research에서 연구한 내용으로, 순서 정보를 이용하여 뉴럴넷을 학습하는 랭킹 알고리즘의 기.. 2019. 10. 31.
Learning to Rank와 nDCG 최근 검색 모델에도 관심을 가지게 되면서, 랭킹모델과 IR에 대해 다시 공부중이다. 기존에 관심있었던 커머스 분야의 추천 랭킹 시스템에서는, ‘유저가 실제로 살 것 같은 하나의 아이템’을 잘 추천해주는 것이 중요했기 때문에, MRR이나 nDCG 같은 순위 기준의 랭킹 평가 방법을 굳이 사용하지는 않았었다. cost function도 단순히 binary classification 문제를 해결하는 형태로 구성된다. 상품단위의 구매 AUC를 줄세우기만 해도 구매에 대한 측정은 충분히 가능했기 때문. 어떤 순위로 등장했는지를 평가하는 것은 중요하지 않았다. 하지만 일반적인 서비스에서의 검색, 추천 시스템은 노출되는 아이템의 Ranking을 얼마나 리스트 단위로 잘 정리하는지가 중요하다. 물론 “도메인에 따라”,.. 2019. 8. 13.
MNIST로 알아보는 비지도 학습 - [클러스터링과 차원 축소의 적용] 최근 클러스터링을 사용할 작업이 여기저기 많았다. 그래서 생각난김에 맨땅에 헤딩했던 관련 내용을 정리하고자 한다. 클러스터링 문제를 풀 때 마주치는 보통의 애로사항은 다음과 같다. 첫 번째, real-world 에서의 데이터 대부분은 극단적으로 skewed 하다는 것이다. 이는 모델이 군집을 잘 구분해내는 피처를 사용할 수 없다는 것을 의미한다. 이처럼 skewed한 분포의 데이터에서 군집을 발라내봤자, 기형적인 군집이 형성될 것이 뻔하기 때문이다. 만약 유클리드 거리로 데이터 포인트간의 거리를 계산하기라도 한다면, 사실상 군집 분석의 의미가 없어진다. 두 번째, 모델의 분류가 잘 되었는지를 평가할 방법이 불분명하다. 군집 분석을 하는 상황은 대부분 비지도 학습을 해야 하는 상황이다. 이 경우, 모델의 .. 2019. 8. 6.
[Recommender System] - 개인화 추천 시스템의 최신 동향 [Recommender System] - 추천 시스템의 전반적인 내용 (1) [Recommender System] - 추천 시스템의 전반적인 내용 (2) [Recommender System] - 추천 시스템에 사용되는 알고리즘들 추천 시스템의 전반적인 내용을 정리한 기존 블로깅에서는 최신 동향과 시스템에 대해서는 아주 간략한 정도로만 소개했었다. 이번 포스팅에서는 추천 시스템의 최신 기술적 동향을 살펴보도록 하자. 본 포스팅에서 기술하는 내용은 완전히 'general'한 추천시스템에 대한 내용이라기보다는, e-commerce에 어느정도는 초점이 맞춰져 있다고 볼 수 있다. 또한 최근 추천 시스템의 거의 절대적인 트렌드인 '개인화 추천'에도 초점이 맞춰져 있다. Recent Personalized Reco.. 2019. 6. 17.
[Recommender System] - Autoencoder를 이용한 차원 축소 기법 차원축소에 흔히 사용되는 방법은 SVD와 같은 Matrix Factorization, Eigen value 등의 개념을 활용한 것이다. 특히나 추천시스템에서는 유저나 아이템 단위의 profile에 이러한 차원축소를 유용하게 사용하곤 한다. 유저의 행동정보를 flat하게 펼쳐놓은 vector라던지, 비정형 정보의 embedding을 예로 들 수 있다. 기본적인 차원축소는 원래의 고차원 데이터를 중간 단계의 vector로 표현하고, 이를 다시 원래의 모형대로 완성하는 학습을 거치면 중간 단계의 vector가 축소된 정보를 잘 담고있다는 아이디어에서 출발한다. 가장 널리 알려진 PCA는 원래의 모형대로 학습하는 과정 없이, 선형적인 성질만을 이용하여 데이터의 분산을 최대화하는 차원으로 데이터를 투영시킨다. P.. 2019. 5. 20.
[Recommender System] - 3D CNN for Session-based Recommendation 번역 & 리뷰 업무 차 해외출장을 갔던 도중, 운이 좋게도 논문의 저자를 만날 기회가 있었다. 그래서 급하게 질문거리를 만들기 위해 논문 리뷰를 했는데, 워낙에 글쓰기적으로 잘 쓴 논문이라 반나절만에 빠른 논문 리뷰가 가능했다. 그래서 이번 포스팅은 번갯불에 콩 구워먹듯 읽어본 논문을 다시 한 번 소화시키기 위해 정리하는 포스팅이다. 이 논문은 Recommender System 관련 paper에서 꽤나 인지도가 있었던 논문이다. criteo, RecSys 등의 영향력 있는 추천 미디어에 선정된 논문이기도 하며, 아이디어 자체가 굉장히 재미있어서 주목받았던 아티클이다. 보통 추천 시스템에 적용되는 알고리즘은 feature 관점에서 cross-feature 를 찾아내거나, implicit feedback을 활용하는 방법에.. 2019. 3. 25.
[Image Object Detection] Faster R-CNN 리뷰 이전 포스팅 [Image Object Detection] R-CNN 리뷰 에 이어서, Faster R-CNN 까지 리뷰해 보았다. 그리고 중간 단계인 Fast R-CNN에 대한 리뷰도 포함되어 있다. 사실 논문은 겉핥기 정도로 중요한 부분만 들여다봤다. 아직 봐야할 next work가 산더미이기 때문에, 직관적인 이해와 loss function 정도를 이해한 내용을 바탕으로 작성하였다. 직관적인 이해는 쉽지만, 내부 구조를 자세히 들여다보면 꽤나 복잡한 모델임을 알 수 있다. Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks Fast R-CNN R-CNN의 메인 아이디어는 기존의 descriptor를 이용한 Ima.. 2019. 2. 14.
시계열 분석 이론의 기초 시계열 분석은 크게 규칙적 시계열 분석과 불규칙적 시계열 분석으로 나뉜다. 여기서 규칙적 시계열이란 트렌드와 분산이 불변하는 시계열 데이터를 말하고, 불규칙적 시계열이란 트렌드 혹은 분산이 변화하는 시계열 데이터를 말하는 것이다. 시계열 데이터를 잘 분석한다는 것은, 불규칙성을 가지는 시계열 데이터에 특정한 기법이나 모델을 적용하여 규칙적 패턴을 적용하거나, 혹은 예측할 수 있도록 하는 것을 의미한다. 아래의 이미지를 보면 직관적으로 이해할 수 있다. (출처 : https://www.analyticsvidhya.com/) 불규칙성을 띠는 시계열 데이터에 규칙성을 부여하는 방법으로는 AR, MA, ARMA, ARIMA 모델 등의 분석 방법을 적용하는 것이 가장 널리 알려져 있다. 이러한 모델을 기반으로 도.. 2019. 1. 12.
[Image Object Detection] R-CNN 리뷰 Contents based한 추천 알고리즘 설계 방법에는 크게 정형 데이터와 비정형 데이터를 이용하는 방법이 있다. 최근 관심있게 보고 있는 것이 비정형 데이터인데, 비정형 데이터의 대표격인 Image feature를 이용한 CB 방식을 공부중이다. 이미지 쪽은 학생 시절 Image Search를 가라(?)로 구현해 본 이후 한번도 들여다 본 적이 없기에 이번 기회에 제대로 공부해야 할 필요성을 느꼈다. 그 중에서도 Object detection에 대해 천천히 논문 리뷰를 진행하면서 이미지에 대한 공부를 진행할 요량이다. 개인적으로 빠른 공부에 가장 좋은 것은 SOTA 방식의 접근법을 역추적하며 히스토리에 대해 공부하는 방법이라고 생각한다. 그래서 첫 번째 리뷰할 논문은 R-CNN에 관한 논문으로 선정하.. 2018. 12. 12.
Python으로 Custom Sparse Matrix 생성하기 파이썬은 sparse-matrix를 만들기 위한 훌륭한 라이브러리들을 가지고 있다. one-hot encoding 역시 코드 1~2줄이면 간단하게 사용이 가능하다. 하지만 추천 시스템과 같이 대용량의 sparse-matrix를 처리하거나, Factorization Machine 같은 알고리즘을 사용하는 경우, scikit-learn이나 pandas가 제공하는 dummy encoder 만으로는 부족한 경우가 많다. 모델의 Input 타입이 idx:value 와 같은 text file로 구성되어 있는 경우에 해당한다. 추천 시스템의 경우는 대부분 extreme-sparse matrix를 생성하기 때문에, 학습의 batch시에 hashing으로 idx:value를 지정해 주는 것이 일반적이다. 이렇게 구조를 .. 2018. 12. 8.