Keras와 Jax를 사용하여 10분 만에 추천자 시스템 개발 및 학습

2025년 5월 13일
Yufeng Guo Developer Advocate
Monica Song Product Manager

오늘, 최첨단 추천 기법을 손쉽게 사용할 수 있게 해주는 새로운 라이브러리 Keras Recommenders의 출시를 발표하게 되어 기쁩니다.


추천 시스템을 사용한 디지털 경험 강화

추천 시스템은 오늘날 기술과 관련된 수많은 상호작용을 지원합니다. 스마트폰에서 앱을 열면 자주 사용하는 소셜 미디어 플랫폼의 홈피드부터 YouTube의 추천 동영상이나 좋아하는 게임에 뜨는 팝업 광고까지, 추천 모델과 바로 상호작용하게 되는 경우가 많습니다. AI 세계가 계속 진화함에 따라 맞춤형 경험을 제공하는 것이 그 어느 때보다 중요해졌습니다. 대규모 언어 모델만으로는 모든 것을 할 수 없기에 추천 시스템이 오늘날의 다양한 최상급 디지털 경험을 제공하는 역할을 하고 있습니다.

개발자가 성능이 뛰어나고 정확한 추천 시스템을 만들 수 있도록, Keras Recommenders(KerasRS)에는 순위 지정 및 검색 등의 작업을 위해 설계된 빌딩 블록이 있는 API 세트가 포함되어 있습니다. 예를 들어, Google은 KerasRS를 사용하여 Google Play에서 피드를 강화합니다.


JAX, TensorFlow 또는 PyTorch로 KerasRS 설치

시작하려면 keras-rs 패키지를 pip로 설치하세요. 그런 다음 백엔드를 JAX(또는 TensorFlow나 PyTorch)로 설정하세요. 그러면 나만의 최첨단 추천 시스템을 만들 수 있습니다.

import os
os.environ["KERAS_BACKEND"] = "jax"
 
import keras
import keras_rs
 
class SequentialRetrievalModel(keras.Model):
    def __init__(self):
        self.query_model = keras.Sequential([
            keras.layers.Embedding(query_count, embed_dim),
            keras.layers.GRU(embed_dim),
        ])
        self.candidate_model = keras.layers.Embedding(candidate_count, embed_dim)
        self.retrieval = keras_rs.layers.BruteForceRetrieval(k=10)
        self.loss_fn = keras.losses.CategoricalCrossentropy(from_logits=True)
 
    def call(self, inputs):
        query_embeddings = self.query_model(inputs)
        predictions = self.retrieval(query_embeddings)
        return {"query_embeddings": query_embeddings, "predictions": predictions}
Python

이 예에서는 추천 후보군을 식별하는 인기 있는 검색 아키텍처를 보여줍니다. KerasRS는 이 아키텍처를 구현하는 데 필요한 모든 요소를 제공하며, 추천자 작업을 위해 특별히 설계된 특수 레이어와 손실 함수, 측정항목을 포함하고 있습니다. 이 colab 노트북을 따라 작업을 수행할 수 있습니다.

물론, 이러한 모든 빌딩 블록은 model.compile의 표준 Keras API와 함께 작동하여 모델 및 model.fit을 구축해 학습 루프를 쉽게 구성합니다.

model.compile(
    loss=keras_rs.losses.PairwiseHingeLoss(),
    metrics=[keras_rs.metrics.NDCG(k=8, name="ndcg")],
    optimizer=keras.optimizers.Adagrad(learning_rate=3e-4),
)
model.fit(train_ds, validation_data=val_ds, epochs=5)
Python

앞으로 몇 달 안에 TPU의 SparseCore 칩을 활용하여 여러 시스템에 분산된 대규모 임베딩 조회를 수행하는 keras_rs.layers.DistributedEmbedding 클래스를 출시할 계획입니다. 또한 라이브러리에 인기 있는 모델 구현을 지속적으로 추가하여 최첨단 추천자 시스템을 훨씬 더 쉽게 개발할 수 있도록 하겠습니다.


KerasRS 문서 및 예제 살펴보기

또한 최근에 새롭게 디자인된 keras.io 웹사이트에 Keras Recommenders에 대해 모든 설명서를 보유하고 있습니다. keras.io/keras_rs에서 고전적인 DCN(Deep and Cross Network)투 타워 임베딩 모델과 관련된 초보자용 예제를 찾을 수 있고 이를 활용해 첫 번째 추천자를 작성하고 학습시키기 위한 단계별 과정을 확인할 수 있습니다. 또한 SASRec와 같은 고급 튜토리얼은 예시를 통해 트랜스포머 모델을 학습시키는 전체 과정을 보여줍니다.

시작하기

나만의 추천 시스템을 개발하기 위한 예제, 설명서, 가이드를 더 보려면 지금 바로 웹사이트를 방문하세요. https://github.com/keras-team/keras-rs에서 코드를 찾아보고 자신이 작성한 코드를 공유할 수도 있습니다. (방문하신 김에 별점 ⭐도 남겨 주시면 감사하겠습니다!)

Keras Recommenders로 개발된 우수한 추천 시스템을 모두 빠짐없이 살펴볼 날을 고대하겠습니다.



감사의 말

Keras Recommenders를 개발한 Fabien Hertschuh와 Abheesht Sharma에게 감사의 말씀을 전합니다. 또한 이 문제를 해결하는 데 도움을 주신 Keras 및 ML Frameworks 팀과 모든 공동작업자 및 리더들에게도 감사드립니다.