SlideShare une entreprise Scribd logo
1  sur  50
Télécharger pour lire hors ligne
IRECIPE BOT
워드임베딩과 인공신경망을 이용한
개인 맞춤형 레시피 추천
숭실대 경영
김성동
연세대 응용통계
박소현
동덕여대 정보통계
김수연
한양대 응용수학
노우영
건국대 응용통계
박소영
고려대 통계
이지원
Contents 01. Introduction
03. IRECIPE
- Data
- Architecture
- Feature Extraction
- Recommendation
- Some Issues
02. Cold Start
- Offline Model
- Online Model
04. Conclusion
- Evaluation
- Challenges
- Conclusion
01. Introduction
Main Idea
하루에 적어도 한번은 하는 고민.. 뭐 먹지?
내 취향과 요리실력 등을 아주 잘 알고 있는 전문가가 요리를 추천해준다면 ?
01. Introduction
Hypothesis
하지만 개인의 특정 음식에 대한 선호를 예측하는 하는 것은 매우 어렵다!
+ 입맛은 미묘한데다 그날 그날 땡기는 음식도 다 다르다!
+ 웬만해서는 싫어할 수 없는 음식들.. 치킨, 삼겹살 등
그럼에도 불구하고! 우리의 가정
개인마다 각자의 선호하는 음식의 맛, 향, 색감, 분위기, 목적 등이 있을 것이다.
이러한 요인들을 추출하고 학습하여 개인별 추천을 한다!
01. Introduction
IRECIPEBOT
Related Services
Recipe Monster
01. Introduction
CJ The Kitchen
Related Services
Recipe Monster
01. Introduction
CJ The Kitchen
IRECIPE
02. Cold Start
Offline Model
추천! 하면 떠오르는 대표적 알고리즘 '협업 필터링'
메인 아이디어 :
유저 A와 유저 B의 유사도가 높을 때
유저 A에게 유저 B가 구매한 물건을 추천하면 유저 A도 좋아할 것이다!
유사도 계산을 하기 위해서는 Rating Matrix 가 필요
02. Cold Start
추천! 하면 떠오르는 대표적 알고리즘 '협업 필터링'
메인 아이디어 :
유저 A와 유저 B의 유사도가 높을 때
유저 A에게 유저 B가 구매한 물건을 추천하면 유저 A도 좋아할 것이다!
유사도 계산을 하기 위해서는 Rating Matrix 가 필요
허허허
우리가 가진거라곤… 오직 레시피뿐…
Offline Model
02. Cold Start
Online Model
Cold Start Problem을 해결하는 방법
Rating matrix? 필요없어!! 실시간으로 배운다. Online Model
ICML'11 Tutorial on Machine Learning for Large Scale Recommender Systems
Deepak Agarwal and Bee-Chung Chen
02. Cold Start
Online Model
가장 ‘인간스러운’ 방법!
나를 정말 잘 알고 있는 가족, 친구, 애인 모두 처음부터 나를 잘 알았던 것은
아니다!! 나와 오랜 시간 함께 하다 보니 자연스레 학습!
서서히 알아간다 (봇 인터페이스를 채택한 이유가 여기에..)
[Realtime Data Mining] chap1.2 Realtime Analytics System
유저 선호도의 변화를
자연스럽게 적용
데이터 저장 비용 감소
03. IRECIPE
Architecture
Recommendations using Deep learning
Deep Neural Networks for Youtube Recommendations (Paul Covington et al, 2016)
03. IRECIPE
Architecture
레시피에 대한 쿼리 (요청)
Feature Extractor
(Word2Vec)
Scoring
(Neural Network)
Information
Retrieval
Bot
Interface
𝑖 recipes
쿼리를 만족하는 i개의 레시피
𝒌 번째 레시피의 특징 추출(𝒌 ∈ 𝒊) 유저 j가 레시피 k를 좋아할지 판단
유저의 피드백을 분류기에 반영
User j
𝑝 𝑘𝑗 = 𝑝 𝑥𝑗 𝑐 𝑘
j개의 레시피의 점수로
랭킹을 매겨 추천
유저 j가 레시피 k를 좋아할지 판단
03. IRECIPE
Architecture
레시피에 대한 쿼리 (요청)
Feature Extractor
(Word2Vec)
Scoring
(Neural Network)
Information
Retrieval
Bot
Interface
𝑖 recipes
쿼리를 만족하는 i개의 레시피
𝒌 번째 레시피의 특징 추출(𝒌 ∈ 𝒊)
User j
𝑝 𝑘𝑗 = 𝑝 𝑥𝑗 𝑐 𝑘
유저의 피드백을 분류기에 반영
j개의 레시피의 점수로
랭킹을 매겨 추천
유저 j가 레시피 k를 좋아할지 판단
03. IRECIPE
Architecture
레시피에 대한 쿼리 (요청)
Feature Extractor
(Word2Vec)
Scoring
(Neural Network)
Information
Retrieval
Bot
Interface
𝑖 recipes
쿼리를 만족하는 i개의 레시피
𝒌 번째 레시피의 특징 추출(𝒌 ∈ 𝒊)
User j
𝑝 𝑘𝑗 = 𝑝 𝑥𝑗 𝑐 𝑘
유저의 피드백을 분류기에 반영
j개의 레시피의 점수로
랭킹을 매겨 추천
03. IRECIPE
Data
그 전에! 데이터 소개부터..
`만개의 레시피` 로부터
* 약 2만 개의 레시피 크롤링
* 숫자와 문장부호 등 필터링 24.6M
3919317 개의 토큰
24142 개의 토큰셋
파이썬 + 셀레니움으로 한땀한땀 (약 20일 걸림..)
03. IRECIPE
Data
레시피라는 텍스트 데이터의 특징
제목 : 등갈비찜
주재료 : 등갈비 1kg, 청양고추 2개, 떡 2줌, 물 7컵, 청주 ½컵
부재료 : 양파 ½개, 대파 ½뿌리, 후추
양 : 2인분
칼로리 : 250
난이도 : 중
다진마늘이 듬뿍 들어간 매콤한 등갈비찜입니다. 우선 등갈비는 찬물에 담가 반나절 정
도 핏물을 제거합니다. 그리고 핏물을 뺀 등갈비와 육수재료를 넣고 물 1컵, 청주 1컵을
부어 센불로 끓입니다. 그 동안 넣을 떡 1줌도 준비하고 매콤한 청양고추 2개는 어슷 썰
어 고춧가루, 간장, 다진마늘, 매실액, 참기름, 맛술, 과일즙, 소금, 후춧가루 위 재료대로
섞어 양념장을 만들고……
요리에 대한 메타 데이터가 주어지고 요리 만드
는 과정이 텍스트로 주어짐. 이 과정 속엔
메타 데이터로 주어진 주재료와 부재료 간의 쓰
임새, 맛, 식감에 대한 표현, 목적 등이 녹아있음
이러한 의미들의 차이를 학습할 수 있다면?
03. IRECIPE
Feature Extraction
컴퓨터에게 단어의 의미적 차이를 어떻게 가르치면 좋을까?
이건 사과고 이건 바나나야
이 둘은 과일이라는 공통점이 있지만 색깔
도 다르고 맛도 달라. 블라블라…….
u'uc0acuacfc'
u'ubc14ub098ub098
‘
?!
컴퓨터는 단지 유니코드의 조합으로서 문
자를 인식할 뿐, 두 단어의 의미적 차이를
알지 못한다!!
03. IRECIPE
Feature Extraction
컴퓨터에게 단어의 의미적 차이를 어떻게 가르치면 좋을까?
많은 방법들이 있었지만..!
• …
• A neural probabilistic language model ( Bengio et al, 2003)
• NLP (almost) from scratch(Collobert & Weston, 2008)
• Efficient Estimation of Word Representation in Vector space(Mikolov et al, 2013)
특정 단어 주변에 같이 나타날 주변 단어들을 예측하는 방식으로 고정된 차원의 벡터로 만들자!
Word2Vec( Simpler and faster model )
03. IRECIPE
Feature Extraction
Word2Vec Models
Skip-gram
현재 단어로부터 주변 단어들 예측
u – outside vector
v – center vector
03. IRECIPE
Feature Extraction
Word2Vec Models
tensorflow.org/tutorial/word2vec
03. IRECIPE
Feature Extraction
우리가 가진 것은 텍스트뿐... 해본다!!
이름 하여 Ingredient2Vec!!
레시피 2만개로 구축한
레시피 코퍼스
Tokenize,
POS Tagging
Ingredient2Vec
Model 훈련
Konlpy gensim
Skip-gram
Dimension : 100
Window : 5
min_count : 5
03. IRECIPE
Feature Extraction
레시피 재료들의 벡터들을 다 더해서 레시피의 벡터를 만든 후
그 벡터 상에서 가까운 레시피들을 잘 찾는지 본다!
Word2Vec 모델의 성능 검증
그래서 만든 함수 Similar_Recipe
03. IRECIPE
Feature Extraction
오오오.. 잘 찾는다.
즉, 레시피들의 특징을 구분한다!
Word2Vec 모델의 성능 검증
그래서 만든 함수 Similar_Recipe
03. IRECIPE
Feature Extraction
레시피의 Feature만을 이용해도
Item-Item based 추천이 가능
이 레시피와
유사한 Top 5
유저 j가 레시피 k를 좋아할지 판단
03. IRECIPE
Architecture
레시피에 대한 쿼리 (요청)
Feature Extractor
(Word2Vec)
Scoring
(Neural Network)
Information
Retrieval
Bot
Interface
𝑖 recipes
쿼리를 만족하는 i개의 레시피
𝒌 번째 레시피의 특징 추출(𝒌 ∈ 𝒊)
User j
𝑝 𝑘𝑗 = 𝑝 𝑥𝑗 𝑐 𝑘
유저의 피드백을 분류기에 반영
j개의 레시피의 점수로
랭킹을 매겨 추천
이제 특징 추출은 했고 추천을 해야 하는데 Online model..? 뭐였더라..
03. IRECIPE
레시피의 특징들을 살펴보고 특정 유저 j가 좋아할지 말지
병아리 감별사 마냥 가려내는 분류기를 훈련시킨다!
+ 유저와 실시간으로 상호작용하며
Recommendation
쉽게 말해서
03. IRECIPE
레시피의 특징들을 살펴보고 특정 유저 j가 좋아할지 말지
병아리 감별사 마냥 가려내는 분류기를 훈련시킨다!
+ 유저와 실시간으로 상호작용하며
Recommendation
쉽게 말해서
1. 레시피의 특징을 보고 선호 유무를 판별할 수 있어야 한다.
2. 유저로부터 피드백을 받을 수 있어야 한다.
3. 피드백을 훈련에 반영할 수 있어야 한다.
4. +a
그러려면..
03. IRECIPE
Recommendation
1. 레시피의 특징을 보고 선호 유무를 판별할 수 있어야 한다.
2. 유저로부터 피드백을 받을 수 있어야 한다.
3. 피드백을 훈련에 반영할 수 있어야 한다.
4. +a
레시피 특징 벡터(100차원)
(Sum of Ingredient vectors)
복잡 미묘한 입맛을 비선형으로 선호유무와
맵핑하기 위해 인공신경망 사용!
마지막 Output Layer에
Sigmoid Unit 사용 -> Score(Prob)
히든 레이어 1개
히든 노드 400개
활성화 함수 ReLu
떡볶이 어때요?!
03. IRECIPE
Recommendation
1. 레시피의 특징을 보고 선호 유무를 판별할 수 있어야 한다.
2. 유저로부터 피드백을 받을 수 있어야 한다.
3. 피드백을 훈련에 반영할 수 있어야 한다.
4. +a
떡볶이 어때요?!
노노.. 별로
다른거 없어?
아.. (유저 j는
떡볶이를 안
좋아하는구나..)
챗봇 인터페이스를 이용해 피드백을 받는다.
ℎ 𝑥 = 0.76(𝑝떡볶이 𝑗
)
𝑨𝒄𝒕𝒖𝒂𝒍 = 𝟎
Cost 발생!
03. IRECIPE
Recommendation
1. 레시피의 특징을 보고 선호 유무를 판별할 수 있어야 한다.
2. 유저로부터 피드백을 받을 수 있어야 한다.
3. 피드백을 훈련에 반영할 수 있어야 한다.
4. +a
Backpropagation에 필요한 정보를 따로 저장해뒀다
피드백이 들어오면 Gradient Descent로 파라미터 업데이트
ℎ 𝑥 = 0.76(𝑝떡볶이 𝑗
)
𝐴𝑐𝑡𝑢𝑎𝑙 = 0
Cost 발생!Recommendation
Log DB
03. IRECIPE
Recommendation
1. 레시피의 특징을 보고 선호 유무를 판별할 수 있어야 한다.
2. 유저로부터 피드백을 받을 수 있어야 한다.
3. 피드백을 훈련에 반영할 수 있어야 한다.
4. +a
Backpropagation에 필요한 정보를 따로 저장해뒀다
피드백이 들어오면 Gradient Descent로 파라미터 업데이트
ℎ 𝑥 = 0.76(𝑝떡볶이 𝑗
)
𝐴𝑐𝑡𝑢𝑎𝑙 = 0
Cost 발생!Recommendation
Log DB
N
Log_pk user_fk recipe_fk prob hidden actual
… … … … … …
… … … … … …
03. IRECIPE
Recommendation
1. 레시피의 특징을 보고 선호 유무를 판별할 수 있어야 한다.
2. 유저로부터 피드백을 받을 수 있어야 한다.
3. 피드백을 훈련에 반영할 수 있어야 한다.
4. +a
Backpropagation에 필요한 정보를 따로 저장해뒀다
피드백이 들어오면 Gradient Descent로 파라미터 업데이트
ℎ 𝑥 = 0.76(𝑝떡볶이 𝑗
)
𝐴𝑐𝑡𝑢𝑎𝑙 = 0
Cost 발생!Recommendation
Log DB
N
Log_pk user_fk recipe_fk prob hidden actual
0 J k (떡볶이) 0.76 Binary None
… … … … … …
Forward Propagation
Forward propagation
03. IRECIPE
Recommendation
1. 레시피의 특징을 보고 선호 유무를 판별할 수 있어야 한다.
2. 유저로부터 피드백을 받을 수 있어야 한다.
3. 피드백을 훈련에 반영할 수 있어야 한다.
4. +a
Backpropagation에 필요한 정보를 따로 저장해뒀다
피드백이 들어오면 Gradient Descent로 파라미터 업데이트
ℎ 𝑥 = 0.76(𝑝떡볶이 𝑗
)
𝐴𝑐𝑡𝑢𝑎𝑙 = 0
Cost 발생!Recommendation
Log DB
N
Log_pk user_fk recipe_fk prob hidden actual
0 J k (떡볶이) 0.76 Binary 0
… … … … … …
Forward Propagation
Feedback(label)
03. IRECIPE
Recommendation
1. 레시피의 특징을 보고 선호 유무를 판별할 수 있어야 한다.
2. 유저로부터 피드백을 받을 수 있어야 한다.
3. 피드백을 훈련에 반영할 수 있어야 한다.
4. +a
Backpropagation에 필요한 정보를 따로 저장해뒀다
피드백이 들어오면 Gradient Descent로 파라미터 업데이트
ℎ 𝑥 = 0.76(𝑝떡볶이 𝑗
)
𝐴𝑐𝑡𝑢𝑎𝑙 = 0
Cost 발생!Recommendation
Log DB
N
Log_pk user_fk recipe_fk prob hidden actual
0 J k (떡볶이) 0.76 Binary 0
… … … … … …
Forward Propagation
Feedback(label)
Backpropagation
Gradient Descent를
이용한 Parameter Update
03. IRECIPE
Recommendation
1. 레시피의 특징을 보고 선호 유무를 판별할 수 있어야 한다.
2. 유저로부터 피드백을 받을 수 있어야 한다.
3. 피드백을 훈련에 반영할 수 있어야 한다.
4. +a
Underfitting
하지만 실제 추천 서비스를 하기 위해 고민해봐야 할 두 가지 문제
Overfitting
햄버거
어때요?
별로
자장면은요?
아 싫어;;
치킨이요!!
ㅡㅡ
김치찜
어때요?
다른거 없어?
김치찌개는
요?
장난하니
김치전이요!!
ㅡㅡ
03. IRECIPE
Recommendation
1. 레시피의 특징을 보고 선호 유무를 판별할 수 있어야 한다.
2. 유저로부터 피드백을 받을 수 있어야 한다.
3. 피드백을 훈련에 반영할 수 있어야 한다.
4. +a
Underfitting
하지만 실제 추천 서비스를 하기 위해 고민해봐야 할 두 가지 문제
Overfitting
햄버거
어때요?
별로
자장면은요?
아 싫어;
치킨이요!!
ㅡㅡ
김치찜
어때요?
별로
김치찌개는
요?
아 싫어;
김치전이요!!
ㅡㅡ
N
서비스 초기에 겪을 수 있는 문제로
충분한 훈련을 받지 못해서 발생
Pre-training을 통한
Parameter Initialization!
=> 초기 추천의 적중률이 올라가며
더 빠르게 수렴한다.
03. IRECIPE
Recommendation
1. 레시피의 특징을 보고 선호 유무를 판별할 수 있어야 한다.
2. 유저로부터 피드백을 받을 수 있어야 한다.
3. 피드백을 훈련에 반영할 수 있어야 한다.
4. +a
Underfitting
하지만 실제 추천 서비스를 하기 위해 고민해봐야 할 두 가지 문제
Overfitting
떡볶이
어때요?
별로
자장면은요?
아 싫어;
치킨이요!!
ㅡㅡ
김치찜
어때요?
별로
김치찌개는
요?
아 싫어;
김치전이요!!
ㅡㅡ
N
인공신경망이 유저의 선호를 과적합 될
정도로 학습했을 경우 발생
일정 확률로 유저의 선호를
탐색(탐색과 활용)
=> 과적합을 피해 유저의 또 다른
선호를 학습할 수 있음
(일종의 Serendipity)
03. IRECIPE
Pre-training
초기 적중률을 높이기 위한 Pre-Training
1. 태그의 조합에 따라 다른 트레이닝 셋을 구성하여
미리 Scoring Network를 훈련
2. 회원가입 시 기초적인 태그 정보 입력
3. 해당 모델로 초기화
But, 트레이닝셋을 어떻게 구성하느냐에 따라 그 결과가 천차만별..
얼마나 훈련을 시켜둬야 하는지도 애매한 문제가 있음.
03. IRECIPE
Randomness
과적합을 줄이고 Serendipity를 제공하기 위한 Randomness
같은 쿼리가 들어와도 어느 정도의 Randomness가 작용하여
유저의 취향을 탐색(Exploration)한다.
04. Conclusion
Evaluation
Offline Metrics : MSE, RMSE, Precision, Recall, F1 Score, ROC, AUC, MAP, Ranking loss 등
Online Metrics : CTR based A/B test
Our model...?! (threshold가 없고.. Negative를 제시하지 않음)
=> Precision : 유저 당 추천해준 아이템 중 양의 피드백을 받은 아이템의 비율
32명의 인원을 상대로 약 5일 간의 베타 테스트 결과
약 42%....
04. Conclusion
Challenges 베타 테스트 후 피드백 中...
04. Conclusion
Challenges
레시피에 대한 쿼리 (요청)
Feature Extractor
(Word2Vec)
Scoring
(Neural Network)
Information
Retrieval
Bot
Interface
𝑖 recipes
쿼리를 만족하는 i개의 레시피
𝒌 번째 레시피의 특징 추출(𝒌 ∈ 𝒊) 유저 j가 레시피 k를 좋아할지 판단
유저의 피드백을 분류기에 반영
User j
j개의 레시피의 점수로
랭킹을 매겨 추천
N
우리가 간과한 몇 가지...
1. 추천과 검색은 쌍둥이다.
(검색이 후보군을 적절하게 생성하지 못하면 추
천의 적중률이 매우 떨어지게 된다.)
2. 허술한 Bot Engine
(유저와 유연하게 상호작용하기엔 역부족)
Rule-basedKeyword matching
04. Conclusion
Challenges
크리스피 치킨
후라이드 치킨
치킨 볶음밥
04. Conclusion
Challenges
크리스피 치킨
후라이드 치킨
치킨 볶음밥
04. Conclusion
Challenges
Wide and Deep learning for
Search Engine(also Recom)
https://research.googleblog.com/2016/06/wide-deep-learning-better-together-with.html
Wide Model(Memorization) Deep Model(Generalization)
04. Conclusion
Challenges
Wide and Deep learning for
Search Engine(also Recom)
Wide and Deep model (Generalization & Memorization)
https://research.googleblog.com/2016/06/wide-deep-learning-better-together-with.html
04. Conclusion
Conclusion
추천 시스템의 Cold Start Problem을
해결하기 위해, 인공신경망을 이용해 아이
템의 특징을 추출한 후, 함수 근사를 통해
유저의 선호를 예측하고 실시간으로 학습
하는 방식의 Online Model을 제시함.
Django를 이용해 실제 모델이 동작하는
프로토타입 구현
추후 지속적인 개선과 서비스 런칭 상의
이슈를 보완하여 실제 서비스에 투입하여
사용할 수 있을 것으로 기대 됨.
1.
2.
3.
Some issues
References
[1] Tomas Mikolov, Kai Chen, Greg Corrado, Jeffrey Dean
Efficient Estimation of Word Representations in Vector Space, 2013
[2] Tomas Mikolov, Ilya Sutskever, Kai Chen, Greg Corrado, Jeffrey Dean
Distributed Representations of Words and Phrases and their Compositionality,
2013
[3] Deep Neural Networks for Youtube Recommendations (Paul Covington et
al, 2016)
[4] Heng-Tze Cheng, Levent Koc, Jeremiah Harmsen, Tal Shaked, Tushar
Chandra, et al. Wide & Deep Learning for Recommender Systems, 2016
[5] Gabriel Dulac-Arnold, Richard Evans, Hado van Hasselt, Peter Sunehag,
el al. Deep Reinforcement Learning in Large Discrete Action Spaces, 2015
Some issues
Thank you

Contenu connexe

Tendances

미등록단어 문제 해결을 위한 비지도학습 기반 한국어자연어처리 방법론 및 응용
미등록단어 문제 해결을 위한 비지도학습 기반 한국어자연어처리 방법론 및 응용미등록단어 문제 해결을 위한 비지도학습 기반 한국어자연어처리 방법론 및 응용
미등록단어 문제 해결을 위한 비지도학습 기반 한국어자연어처리 방법론 및 응용NAVER Engineering
 
Python을 활용한 챗봇 서비스 개발 2일차
Python을 활용한 챗봇 서비스 개발 2일차Python을 활용한 챗봇 서비스 개발 2일차
Python을 활용한 챗봇 서비스 개발 2일차Taekyung Han
 
제11회공개sw개발자대회 금상 TensorMSA(소개)
제11회공개sw개발자대회 금상 TensorMSA(소개)제11회공개sw개발자대회 금상 TensorMSA(소개)
제11회공개sw개발자대회 금상 TensorMSA(소개)Susang Kim
 
왕초보, 코딩없이 챗봇 만들기
왕초보, 코딩없이 챗봇 만들기왕초보, 코딩없이 챗봇 만들기
왕초보, 코딩없이 챗봇 만들기deepseaswjh
 
자바, 미안하다! 파이썬 한국어 NLP
자바, 미안하다! 파이썬 한국어 NLP자바, 미안하다! 파이썬 한국어 NLP
자바, 미안하다! 파이썬 한국어 NLPEunjeong (Lucy) Park
 
[222]딥러닝을 활용한 이미지 검색 포토요약과 타임라인 최종 20161024
[222]딥러닝을 활용한 이미지 검색 포토요약과 타임라인 최종 20161024[222]딥러닝을 활용한 이미지 검색 포토요약과 타임라인 최종 20161024
[222]딥러닝을 활용한 이미지 검색 포토요약과 타임라인 최종 20161024NAVER D2
 
게임밸런싱과 머신러닝, 활용사례 & Tensorflow
게임밸런싱과 머신러닝, 활용사례 & Tensorflow게임밸런싱과 머신러닝, 활용사례 & Tensorflow
게임밸런싱과 머신러닝, 활용사례 & Tensorflow현철 허
 
리소스 중심의 서든어택2 실시간 메모리 프로파일링 시스템 개발기
리소스 중심의 서든어택2 실시간 메모리 프로파일링 시스템 개발기리소스 중심의 서든어택2 실시간 메모리 프로파일링 시스템 개발기
리소스 중심의 서든어택2 실시간 메모리 프로파일링 시스템 개발기Wonha Ryu
 
[224] backend 개발자의 neural machine translation 개발기 김상경
[224] backend 개발자의 neural machine translation 개발기 김상경[224] backend 개발자의 neural machine translation 개발기 김상경
[224] backend 개발자의 neural machine translation 개발기 김상경NAVER D2
 
Tensorflow service & Machine Learning
Tensorflow service & Machine LearningTensorflow service & Machine Learning
Tensorflow service & Machine LearningJEEHYUN PAIK
 
[222]대화 시스템 서비스 동향 및 개발 방법
[222]대화 시스템 서비스 동향 및 개발 방법[222]대화 시스템 서비스 동향 및 개발 방법
[222]대화 시스템 서비스 동향 및 개발 방법NAVER D2
 
Senti prompt sentiment knowledge enhanced prompt tuning for aspect-based sent...
Senti prompt sentiment knowledge enhanced prompt tuning for aspect-based sent...Senti prompt sentiment knowledge enhanced prompt tuning for aspect-based sent...
Senti prompt sentiment knowledge enhanced prompt tuning for aspect-based sent...taeseon ryu
 
200819 NAVER TECH CONCERT 04_NDK로 안드로이드에 C++ 끼얹기
200819 NAVER TECH CONCERT 04_NDK로 안드로이드에 C++ 끼얹기200819 NAVER TECH CONCERT 04_NDK로 안드로이드에 C++ 끼얹기
200819 NAVER TECH CONCERT 04_NDK로 안드로이드에 C++ 끼얹기NAVER Engineering
 
책 읽어주는 딥러닝: 배우 유인나가 해리포터를 읽어준다면 DEVIEW 2017
책 읽어주는 딥러닝: 배우 유인나가 해리포터를 읽어준다면 DEVIEW 2017책 읽어주는 딥러닝: 배우 유인나가 해리포터를 읽어준다면 DEVIEW 2017
책 읽어주는 딥러닝: 배우 유인나가 해리포터를 읽어준다면 DEVIEW 2017Taehoon Kim
 

Tendances (20)

미등록단어 문제 해결을 위한 비지도학습 기반 한국어자연어처리 방법론 및 응용
미등록단어 문제 해결을 위한 비지도학습 기반 한국어자연어처리 방법론 및 응용미등록단어 문제 해결을 위한 비지도학습 기반 한국어자연어처리 방법론 및 응용
미등록단어 문제 해결을 위한 비지도학습 기반 한국어자연어처리 방법론 및 응용
 
Python을 활용한 챗봇 서비스 개발 2일차
Python을 활용한 챗봇 서비스 개발 2일차Python을 활용한 챗봇 서비스 개발 2일차
Python을 활용한 챗봇 서비스 개발 2일차
 
제11회공개sw개발자대회 금상 TensorMSA(소개)
제11회공개sw개발자대회 금상 TensorMSA(소개)제11회공개sw개발자대회 금상 TensorMSA(소개)
제11회공개sw개발자대회 금상 TensorMSA(소개)
 
메이크챗봇 자연어기초
메이크챗봇 자연어기초메이크챗봇 자연어기초
메이크챗봇 자연어기초
 
왕초보, 코딩없이 챗봇 만들기
왕초보, 코딩없이 챗봇 만들기왕초보, 코딩없이 챗봇 만들기
왕초보, 코딩없이 챗봇 만들기
 
자바, 미안하다! 파이썬 한국어 NLP
자바, 미안하다! 파이썬 한국어 NLP자바, 미안하다! 파이썬 한국어 NLP
자바, 미안하다! 파이썬 한국어 NLP
 
파이썬으로 익히는 딥러닝
파이썬으로 익히는 딥러닝파이썬으로 익히는 딥러닝
파이썬으로 익히는 딥러닝
 
[222]딥러닝을 활용한 이미지 검색 포토요약과 타임라인 최종 20161024
[222]딥러닝을 활용한 이미지 검색 포토요약과 타임라인 최종 20161024[222]딥러닝을 활용한 이미지 검색 포토요약과 타임라인 최종 20161024
[222]딥러닝을 활용한 이미지 검색 포토요약과 타임라인 최종 20161024
 
게임밸런싱과 머신러닝, 활용사례 & Tensorflow
게임밸런싱과 머신러닝, 활용사례 & Tensorflow게임밸런싱과 머신러닝, 활용사례 & Tensorflow
게임밸런싱과 머신러닝, 활용사례 & Tensorflow
 
리소스 중심의 서든어택2 실시간 메모리 프로파일링 시스템 개발기
리소스 중심의 서든어택2 실시간 메모리 프로파일링 시스템 개발기리소스 중심의 서든어택2 실시간 메모리 프로파일링 시스템 개발기
리소스 중심의 서든어택2 실시간 메모리 프로파일링 시스템 개발기
 
[224] backend 개발자의 neural machine translation 개발기 김상경
[224] backend 개발자의 neural machine translation 개발기 김상경[224] backend 개발자의 neural machine translation 개발기 김상경
[224] backend 개발자의 neural machine translation 개발기 김상경
 
파이썬을 활용한 자연어 분석
파이썬을 활용한 자연어 분석파이썬을 활용한 자연어 분석
파이썬을 활용한 자연어 분석
 
Tensorflow service & Machine Learning
Tensorflow service & Machine LearningTensorflow service & Machine Learning
Tensorflow service & Machine Learning
 
파이썬과 자연어 3 | 문장구조
파이썬과 자연어 3 | 문장구조파이썬과 자연어 3 | 문장구조
파이썬과 자연어 3 | 문장구조
 
[222]대화 시스템 서비스 동향 및 개발 방법
[222]대화 시스템 서비스 동향 및 개발 방법[222]대화 시스템 서비스 동향 및 개발 방법
[222]대화 시스템 서비스 동향 및 개발 방법
 
Senti prompt sentiment knowledge enhanced prompt tuning for aspect-based sent...
Senti prompt sentiment knowledge enhanced prompt tuning for aspect-based sent...Senti prompt sentiment knowledge enhanced prompt tuning for aspect-based sent...
Senti prompt sentiment knowledge enhanced prompt tuning for aspect-based sent...
 
200819 NAVER TECH CONCERT 04_NDK로 안드로이드에 C++ 끼얹기
200819 NAVER TECH CONCERT 04_NDK로 안드로이드에 C++ 끼얹기200819 NAVER TECH CONCERT 04_NDK로 안드로이드에 C++ 끼얹기
200819 NAVER TECH CONCERT 04_NDK로 안드로이드에 C++ 끼얹기
 
파이썬을 활용한 자연어 분석 - 2차
파이썬을 활용한 자연어 분석 - 2차파이썬을 활용한 자연어 분석 - 2차
파이썬을 활용한 자연어 분석 - 2차
 
Mt
MtMt
Mt
 
책 읽어주는 딥러닝: 배우 유인나가 해리포터를 읽어준다면 DEVIEW 2017
책 읽어주는 딥러닝: 배우 유인나가 해리포터를 읽어준다면 DEVIEW 2017책 읽어주는 딥러닝: 배우 유인나가 해리포터를 읽어준다면 DEVIEW 2017
책 읽어주는 딥러닝: 배우 유인나가 해리포터를 읽어준다면 DEVIEW 2017
 

Similaire à IRECIPE BOT

[2014-07-04] 세계 정복의 첫걸음
[2014-07-04] 세계 정복의 첫걸음[2014-07-04] 세계 정복의 첫걸음
[2014-07-04] 세계 정복의 첫걸음Ashal aka JOKER
 
요리 어플 리서치
요리 어플 리서치요리 어플 리서치
요리 어플 리서치Eun Ju Chang
 
가격비교 사이트에서의 사용자 경험(USER EXPERIENCE DESIGN)에 대한 이야기
가격비교 사이트에서의 사용자 경험(USER EXPERIENCE DESIGN)에 대한 이야기가격비교 사이트에서의 사용자 경험(USER EXPERIENCE DESIGN)에 대한 이야기
가격비교 사이트에서의 사용자 경험(USER EXPERIENCE DESIGN)에 대한 이야기Taeyong Kim
 
가격비교 사이트에서의 사용자 경험(USER EXPERIENCE DESIGN)에 대한 이야기
가격비교 사이트에서의 사용자 경험(USER EXPERIENCE DESIGN)에 대한 이야기가격비교 사이트에서의 사용자 경험(USER EXPERIENCE DESIGN)에 대한 이야기
가격비교 사이트에서의 사용자 경험(USER EXPERIENCE DESIGN)에 대한 이야기Taeyong Kim
 
[140510]plux5.0 4조 피트니스 시설용 웨어러블 기기(임소연,배은지,서동민,정인혜)
[140510]plux5.0 4조 피트니스 시설용 웨어러블 기기(임소연,배은지,서동민,정인혜)[140510]plux5.0 4조 피트니스 시설용 웨어러블 기기(임소연,배은지,서동민,정인혜)
[140510]plux5.0 4조 피트니스 시설용 웨어러블 기기(임소연,배은지,서동민,정인혜)Chisung Song
 
[140510]plux5.0 4조 피트니스 시설용 웨어러블 기기(임소연,배은지,서동민,정인혜)
[140510]plux5.0 4조 피트니스 시설용 웨어러블 기기(임소연,배은지,서동민,정인혜)[140510]plux5.0 4조 피트니스 시설용 웨어러블 기기(임소연,배은지,서동민,정인혜)
[140510]plux5.0 4조 피트니스 시설용 웨어러블 기기(임소연,배은지,서동민,정인혜)Chisung Song
 
Recommendatioin system basic
Recommendatioin system basicRecommendatioin system basic
Recommendatioin system basicSoo-Kyung Choi
 
Naver Campus Hackday Winter 2017 참가 후기
Naver Campus Hackday Winter 2017 참가 후기Naver Campus Hackday Winter 2017 참가 후기
Naver Campus Hackday Winter 2017 참가 후기Youngbin Han
 
스타트업 인턴 개발자 3달간의 고군분투기 김은향
스타트업 인턴 개발자 3달간의 고군분투기 김은향스타트업 인턴 개발자 3달간의 고군분투기 김은향
스타트업 인턴 개발자 3달간의 고군분투기 김은향Eunhyang Kim
 
Chapter 11 Practical Methodology
Chapter 11 Practical MethodologyChapter 11 Practical Methodology
Chapter 11 Practical MethodologyKyeongUkJang
 
testing for agile?, agile for testing
testing for agile?, agile for testingtesting for agile?, agile for testing
testing for agile?, agile for testingSangIn Choung
 
패스트푸드점 키오스크 GUI 개선 프로젝트.pptx
패스트푸드점 키오스크 GUI 개선 프로젝트.pptx패스트푸드점 키오스크 GUI 개선 프로젝트.pptx
패스트푸드점 키오스크 GUI 개선 프로젝트.pptxYunSeul Lee
 
designDIVE eyeCan 최종발표 교육1팀_은교
designDIVE eyeCan 최종발표 교육1팀_은교designDIVE eyeCan 최종발표 교육1팀_은교
designDIVE eyeCan 최종발표 교육1팀_은교주성 이
 
[공개SW개발자대회][최종발표][S코치][발표자료][ver.02]
[공개SW개발자대회][최종발표][S코치][발표자료][ver.02][공개SW개발자대회][최종발표][S코치][발표자료][ver.02]
[공개SW개발자대회][최종발표][S코치][발표자료][ver.02]Suhyun Cho
 
딥러닝 세계에 입문하기 위반 분투
딥러닝 세계에 입문하기 위반 분투딥러닝 세계에 입문하기 위반 분투
딥러닝 세계에 입문하기 위반 분투Ubuntu Korea Community
 
사이드 프로젝트로 알아보는 검색 서비스 개발 - 이주경
사이드 프로젝트로 알아보는 검색 서비스 개발 - 이주경사이드 프로젝트로 알아보는 검색 서비스 개발 - 이주경
사이드 프로젝트로 알아보는 검색 서비스 개발 - 이주경Yan So
 
Hci기말발표제출!!
Hci기말발표제출!!Hci기말발표제출!!
Hci기말발표제출!!A-ryang Oh
 
Deep learning 기반TmapPOI 추천기술개발사례
Deep learning 기반TmapPOI 추천기술개발사례Deep learning 기반TmapPOI 추천기술개발사례
Deep learning 기반TmapPOI 추천기술개발사례Lee Ji Eun
 
주니어가 회사에서 기회를 얻는 방법 by 1호
주니어가 회사에서 기회를 얻는 방법 by 1호주니어가 회사에서 기회를 얻는 방법 by 1호
주니어가 회사에서 기회를 얻는 방법 by 1호Excelcon
 

Similaire à IRECIPE BOT (20)

[2014-07-04] 세계 정복의 첫걸음
[2014-07-04] 세계 정복의 첫걸음[2014-07-04] 세계 정복의 첫걸음
[2014-07-04] 세계 정복의 첫걸음
 
요리 어플 리서치
요리 어플 리서치요리 어플 리서치
요리 어플 리서치
 
가격비교 사이트에서의 사용자 경험(USER EXPERIENCE DESIGN)에 대한 이야기
가격비교 사이트에서의 사용자 경험(USER EXPERIENCE DESIGN)에 대한 이야기가격비교 사이트에서의 사용자 경험(USER EXPERIENCE DESIGN)에 대한 이야기
가격비교 사이트에서의 사용자 경험(USER EXPERIENCE DESIGN)에 대한 이야기
 
가격비교 사이트에서의 사용자 경험(USER EXPERIENCE DESIGN)에 대한 이야기
가격비교 사이트에서의 사용자 경험(USER EXPERIENCE DESIGN)에 대한 이야기가격비교 사이트에서의 사용자 경험(USER EXPERIENCE DESIGN)에 대한 이야기
가격비교 사이트에서의 사용자 경험(USER EXPERIENCE DESIGN)에 대한 이야기
 
[140510]plux5.0 4조 피트니스 시설용 웨어러블 기기(임소연,배은지,서동민,정인혜)
[140510]plux5.0 4조 피트니스 시설용 웨어러블 기기(임소연,배은지,서동민,정인혜)[140510]plux5.0 4조 피트니스 시설용 웨어러블 기기(임소연,배은지,서동민,정인혜)
[140510]plux5.0 4조 피트니스 시설용 웨어러블 기기(임소연,배은지,서동민,정인혜)
 
[140510]plux5.0 4조 피트니스 시설용 웨어러블 기기(임소연,배은지,서동민,정인혜)
[140510]plux5.0 4조 피트니스 시설용 웨어러블 기기(임소연,배은지,서동민,정인혜)[140510]plux5.0 4조 피트니스 시설용 웨어러블 기기(임소연,배은지,서동민,정인혜)
[140510]plux5.0 4조 피트니스 시설용 웨어러블 기기(임소연,배은지,서동민,정인혜)
 
Recommendatioin system basic
Recommendatioin system basicRecommendatioin system basic
Recommendatioin system basic
 
Naver Campus Hackday Winter 2017 참가 후기
Naver Campus Hackday Winter 2017 참가 후기Naver Campus Hackday Winter 2017 참가 후기
Naver Campus Hackday Winter 2017 참가 후기
 
스타트업 인턴 개발자 3달간의 고군분투기 김은향
스타트업 인턴 개발자 3달간의 고군분투기 김은향스타트업 인턴 개발자 3달간의 고군분투기 김은향
스타트업 인턴 개발자 3달간의 고군분투기 김은향
 
Chapter 11 Practical Methodology
Chapter 11 Practical MethodologyChapter 11 Practical Methodology
Chapter 11 Practical Methodology
 
testing for agile?, agile for testing
testing for agile?, agile for testingtesting for agile?, agile for testing
testing for agile?, agile for testing
 
패스트푸드점 키오스크 GUI 개선 프로젝트.pptx
패스트푸드점 키오스크 GUI 개선 프로젝트.pptx패스트푸드점 키오스크 GUI 개선 프로젝트.pptx
패스트푸드점 키오스크 GUI 개선 프로젝트.pptx
 
designDIVE eyeCan 최종발표 교육1팀_은교
designDIVE eyeCan 최종발표 교육1팀_은교designDIVE eyeCan 최종발표 교육1팀_은교
designDIVE eyeCan 최종발표 교육1팀_은교
 
[공개SW개발자대회][최종발표][S코치][발표자료][ver.02]
[공개SW개발자대회][최종발표][S코치][발표자료][ver.02][공개SW개발자대회][최종발표][S코치][발표자료][ver.02]
[공개SW개발자대회][최종발표][S코치][발표자료][ver.02]
 
딥러닝 세계에 입문하기 위반 분투
딥러닝 세계에 입문하기 위반 분투딥러닝 세계에 입문하기 위반 분투
딥러닝 세계에 입문하기 위반 분투
 
사이드 프로젝트로 알아보는 검색 서비스 개발 - 이주경
사이드 프로젝트로 알아보는 검색 서비스 개발 - 이주경사이드 프로젝트로 알아보는 검색 서비스 개발 - 이주경
사이드 프로젝트로 알아보는 검색 서비스 개발 - 이주경
 
Hci기말발표제출!!
Hci기말발표제출!!Hci기말발표제출!!
Hci기말발표제출!!
 
Deep learning 기반TmapPOI 추천기술개발사례
Deep learning 기반TmapPOI 추천기술개발사례Deep learning 기반TmapPOI 추천기술개발사례
Deep learning 기반TmapPOI 추천기술개발사례
 
주니어가 회사에서 기회를 얻는 방법 by 1호
주니어가 회사에서 기회를 얻는 방법 by 1호주니어가 회사에서 기회를 얻는 방법 by 1호
주니어가 회사에서 기회를 얻는 방법 by 1호
 
엔핏
엔핏엔핏
엔핏
 

IRECIPE BOT

  • 1. IRECIPE BOT 워드임베딩과 인공신경망을 이용한 개인 맞춤형 레시피 추천 숭실대 경영 김성동 연세대 응용통계 박소현 동덕여대 정보통계 김수연 한양대 응용수학 노우영 건국대 응용통계 박소영 고려대 통계 이지원
  • 2. Contents 01. Introduction 03. IRECIPE - Data - Architecture - Feature Extraction - Recommendation - Some Issues 02. Cold Start - Offline Model - Online Model 04. Conclusion - Evaluation - Challenges - Conclusion
  • 3. 01. Introduction Main Idea 하루에 적어도 한번은 하는 고민.. 뭐 먹지? 내 취향과 요리실력 등을 아주 잘 알고 있는 전문가가 요리를 추천해준다면 ?
  • 4. 01. Introduction Hypothesis 하지만 개인의 특정 음식에 대한 선호를 예측하는 하는 것은 매우 어렵다! + 입맛은 미묘한데다 그날 그날 땡기는 음식도 다 다르다! + 웬만해서는 싫어할 수 없는 음식들.. 치킨, 삼겹살 등 그럼에도 불구하고! 우리의 가정 개인마다 각자의 선호하는 음식의 맛, 향, 색감, 분위기, 목적 등이 있을 것이다. 이러한 요인들을 추출하고 학습하여 개인별 추천을 한다!
  • 6. Related Services Recipe Monster 01. Introduction CJ The Kitchen
  • 7. Related Services Recipe Monster 01. Introduction CJ The Kitchen IRECIPE
  • 8. 02. Cold Start Offline Model 추천! 하면 떠오르는 대표적 알고리즘 '협업 필터링' 메인 아이디어 : 유저 A와 유저 B의 유사도가 높을 때 유저 A에게 유저 B가 구매한 물건을 추천하면 유저 A도 좋아할 것이다! 유사도 계산을 하기 위해서는 Rating Matrix 가 필요
  • 9. 02. Cold Start 추천! 하면 떠오르는 대표적 알고리즘 '협업 필터링' 메인 아이디어 : 유저 A와 유저 B의 유사도가 높을 때 유저 A에게 유저 B가 구매한 물건을 추천하면 유저 A도 좋아할 것이다! 유사도 계산을 하기 위해서는 Rating Matrix 가 필요 허허허 우리가 가진거라곤… 오직 레시피뿐… Offline Model
  • 10. 02. Cold Start Online Model Cold Start Problem을 해결하는 방법 Rating matrix? 필요없어!! 실시간으로 배운다. Online Model ICML'11 Tutorial on Machine Learning for Large Scale Recommender Systems Deepak Agarwal and Bee-Chung Chen
  • 11. 02. Cold Start Online Model 가장 ‘인간스러운’ 방법! 나를 정말 잘 알고 있는 가족, 친구, 애인 모두 처음부터 나를 잘 알았던 것은 아니다!! 나와 오랜 시간 함께 하다 보니 자연스레 학습! 서서히 알아간다 (봇 인터페이스를 채택한 이유가 여기에..) [Realtime Data Mining] chap1.2 Realtime Analytics System 유저 선호도의 변화를 자연스럽게 적용 데이터 저장 비용 감소
  • 12. 03. IRECIPE Architecture Recommendations using Deep learning Deep Neural Networks for Youtube Recommendations (Paul Covington et al, 2016)
  • 13. 03. IRECIPE Architecture 레시피에 대한 쿼리 (요청) Feature Extractor (Word2Vec) Scoring (Neural Network) Information Retrieval Bot Interface 𝑖 recipes 쿼리를 만족하는 i개의 레시피 𝒌 번째 레시피의 특징 추출(𝒌 ∈ 𝒊) 유저 j가 레시피 k를 좋아할지 판단 유저의 피드백을 분류기에 반영 User j 𝑝 𝑘𝑗 = 𝑝 𝑥𝑗 𝑐 𝑘 j개의 레시피의 점수로 랭킹을 매겨 추천
  • 14. 유저 j가 레시피 k를 좋아할지 판단 03. IRECIPE Architecture 레시피에 대한 쿼리 (요청) Feature Extractor (Word2Vec) Scoring (Neural Network) Information Retrieval Bot Interface 𝑖 recipes 쿼리를 만족하는 i개의 레시피 𝒌 번째 레시피의 특징 추출(𝒌 ∈ 𝒊) User j 𝑝 𝑘𝑗 = 𝑝 𝑥𝑗 𝑐 𝑘 유저의 피드백을 분류기에 반영 j개의 레시피의 점수로 랭킹을 매겨 추천
  • 15. 유저 j가 레시피 k를 좋아할지 판단 03. IRECIPE Architecture 레시피에 대한 쿼리 (요청) Feature Extractor (Word2Vec) Scoring (Neural Network) Information Retrieval Bot Interface 𝑖 recipes 쿼리를 만족하는 i개의 레시피 𝒌 번째 레시피의 특징 추출(𝒌 ∈ 𝒊) User j 𝑝 𝑘𝑗 = 𝑝 𝑥𝑗 𝑐 𝑘 유저의 피드백을 분류기에 반영 j개의 레시피의 점수로 랭킹을 매겨 추천
  • 16. 03. IRECIPE Data 그 전에! 데이터 소개부터.. `만개의 레시피` 로부터 * 약 2만 개의 레시피 크롤링 * 숫자와 문장부호 등 필터링 24.6M 3919317 개의 토큰 24142 개의 토큰셋 파이썬 + 셀레니움으로 한땀한땀 (약 20일 걸림..)
  • 17. 03. IRECIPE Data 레시피라는 텍스트 데이터의 특징 제목 : 등갈비찜 주재료 : 등갈비 1kg, 청양고추 2개, 떡 2줌, 물 7컵, 청주 ½컵 부재료 : 양파 ½개, 대파 ½뿌리, 후추 양 : 2인분 칼로리 : 250 난이도 : 중 다진마늘이 듬뿍 들어간 매콤한 등갈비찜입니다. 우선 등갈비는 찬물에 담가 반나절 정 도 핏물을 제거합니다. 그리고 핏물을 뺀 등갈비와 육수재료를 넣고 물 1컵, 청주 1컵을 부어 센불로 끓입니다. 그 동안 넣을 떡 1줌도 준비하고 매콤한 청양고추 2개는 어슷 썰 어 고춧가루, 간장, 다진마늘, 매실액, 참기름, 맛술, 과일즙, 소금, 후춧가루 위 재료대로 섞어 양념장을 만들고…… 요리에 대한 메타 데이터가 주어지고 요리 만드 는 과정이 텍스트로 주어짐. 이 과정 속엔 메타 데이터로 주어진 주재료와 부재료 간의 쓰 임새, 맛, 식감에 대한 표현, 목적 등이 녹아있음 이러한 의미들의 차이를 학습할 수 있다면?
  • 18. 03. IRECIPE Feature Extraction 컴퓨터에게 단어의 의미적 차이를 어떻게 가르치면 좋을까? 이건 사과고 이건 바나나야 이 둘은 과일이라는 공통점이 있지만 색깔 도 다르고 맛도 달라. 블라블라……. u'uc0acuacfc' u'ubc14ub098ub098 ‘ ?! 컴퓨터는 단지 유니코드의 조합으로서 문 자를 인식할 뿐, 두 단어의 의미적 차이를 알지 못한다!!
  • 19. 03. IRECIPE Feature Extraction 컴퓨터에게 단어의 의미적 차이를 어떻게 가르치면 좋을까? 많은 방법들이 있었지만..! • … • A neural probabilistic language model ( Bengio et al, 2003) • NLP (almost) from scratch(Collobert & Weston, 2008) • Efficient Estimation of Word Representation in Vector space(Mikolov et al, 2013) 특정 단어 주변에 같이 나타날 주변 단어들을 예측하는 방식으로 고정된 차원의 벡터로 만들자! Word2Vec( Simpler and faster model )
  • 20. 03. IRECIPE Feature Extraction Word2Vec Models Skip-gram 현재 단어로부터 주변 단어들 예측 u – outside vector v – center vector
  • 21. 03. IRECIPE Feature Extraction Word2Vec Models tensorflow.org/tutorial/word2vec
  • 22. 03. IRECIPE Feature Extraction 우리가 가진 것은 텍스트뿐... 해본다!! 이름 하여 Ingredient2Vec!! 레시피 2만개로 구축한 레시피 코퍼스 Tokenize, POS Tagging Ingredient2Vec Model 훈련 Konlpy gensim Skip-gram Dimension : 100 Window : 5 min_count : 5
  • 23. 03. IRECIPE Feature Extraction 레시피 재료들의 벡터들을 다 더해서 레시피의 벡터를 만든 후 그 벡터 상에서 가까운 레시피들을 잘 찾는지 본다! Word2Vec 모델의 성능 검증 그래서 만든 함수 Similar_Recipe
  • 24. 03. IRECIPE Feature Extraction 오오오.. 잘 찾는다. 즉, 레시피들의 특징을 구분한다! Word2Vec 모델의 성능 검증 그래서 만든 함수 Similar_Recipe
  • 25. 03. IRECIPE Feature Extraction 레시피의 Feature만을 이용해도 Item-Item based 추천이 가능 이 레시피와 유사한 Top 5
  • 26. 유저 j가 레시피 k를 좋아할지 판단 03. IRECIPE Architecture 레시피에 대한 쿼리 (요청) Feature Extractor (Word2Vec) Scoring (Neural Network) Information Retrieval Bot Interface 𝑖 recipes 쿼리를 만족하는 i개의 레시피 𝒌 번째 레시피의 특징 추출(𝒌 ∈ 𝒊) User j 𝑝 𝑘𝑗 = 𝑝 𝑥𝑗 𝑐 𝑘 유저의 피드백을 분류기에 반영 j개의 레시피의 점수로 랭킹을 매겨 추천 이제 특징 추출은 했고 추천을 해야 하는데 Online model..? 뭐였더라..
  • 27. 03. IRECIPE 레시피의 특징들을 살펴보고 특정 유저 j가 좋아할지 말지 병아리 감별사 마냥 가려내는 분류기를 훈련시킨다! + 유저와 실시간으로 상호작용하며 Recommendation 쉽게 말해서
  • 28. 03. IRECIPE 레시피의 특징들을 살펴보고 특정 유저 j가 좋아할지 말지 병아리 감별사 마냥 가려내는 분류기를 훈련시킨다! + 유저와 실시간으로 상호작용하며 Recommendation 쉽게 말해서 1. 레시피의 특징을 보고 선호 유무를 판별할 수 있어야 한다. 2. 유저로부터 피드백을 받을 수 있어야 한다. 3. 피드백을 훈련에 반영할 수 있어야 한다. 4. +a 그러려면..
  • 29. 03. IRECIPE Recommendation 1. 레시피의 특징을 보고 선호 유무를 판별할 수 있어야 한다. 2. 유저로부터 피드백을 받을 수 있어야 한다. 3. 피드백을 훈련에 반영할 수 있어야 한다. 4. +a 레시피 특징 벡터(100차원) (Sum of Ingredient vectors) 복잡 미묘한 입맛을 비선형으로 선호유무와 맵핑하기 위해 인공신경망 사용! 마지막 Output Layer에 Sigmoid Unit 사용 -> Score(Prob) 히든 레이어 1개 히든 노드 400개 활성화 함수 ReLu 떡볶이 어때요?!
  • 30. 03. IRECIPE Recommendation 1. 레시피의 특징을 보고 선호 유무를 판별할 수 있어야 한다. 2. 유저로부터 피드백을 받을 수 있어야 한다. 3. 피드백을 훈련에 반영할 수 있어야 한다. 4. +a 떡볶이 어때요?! 노노.. 별로 다른거 없어? 아.. (유저 j는 떡볶이를 안 좋아하는구나..) 챗봇 인터페이스를 이용해 피드백을 받는다. ℎ 𝑥 = 0.76(𝑝떡볶이 𝑗 ) 𝑨𝒄𝒕𝒖𝒂𝒍 = 𝟎 Cost 발생!
  • 31. 03. IRECIPE Recommendation 1. 레시피의 특징을 보고 선호 유무를 판별할 수 있어야 한다. 2. 유저로부터 피드백을 받을 수 있어야 한다. 3. 피드백을 훈련에 반영할 수 있어야 한다. 4. +a Backpropagation에 필요한 정보를 따로 저장해뒀다 피드백이 들어오면 Gradient Descent로 파라미터 업데이트 ℎ 𝑥 = 0.76(𝑝떡볶이 𝑗 ) 𝐴𝑐𝑡𝑢𝑎𝑙 = 0 Cost 발생!Recommendation Log DB
  • 32. 03. IRECIPE Recommendation 1. 레시피의 특징을 보고 선호 유무를 판별할 수 있어야 한다. 2. 유저로부터 피드백을 받을 수 있어야 한다. 3. 피드백을 훈련에 반영할 수 있어야 한다. 4. +a Backpropagation에 필요한 정보를 따로 저장해뒀다 피드백이 들어오면 Gradient Descent로 파라미터 업데이트 ℎ 𝑥 = 0.76(𝑝떡볶이 𝑗 ) 𝐴𝑐𝑡𝑢𝑎𝑙 = 0 Cost 발생!Recommendation Log DB N Log_pk user_fk recipe_fk prob hidden actual … … … … … … … … … … … …
  • 33. 03. IRECIPE Recommendation 1. 레시피의 특징을 보고 선호 유무를 판별할 수 있어야 한다. 2. 유저로부터 피드백을 받을 수 있어야 한다. 3. 피드백을 훈련에 반영할 수 있어야 한다. 4. +a Backpropagation에 필요한 정보를 따로 저장해뒀다 피드백이 들어오면 Gradient Descent로 파라미터 업데이트 ℎ 𝑥 = 0.76(𝑝떡볶이 𝑗 ) 𝐴𝑐𝑡𝑢𝑎𝑙 = 0 Cost 발생!Recommendation Log DB N Log_pk user_fk recipe_fk prob hidden actual 0 J k (떡볶이) 0.76 Binary None … … … … … … Forward Propagation Forward propagation
  • 34. 03. IRECIPE Recommendation 1. 레시피의 특징을 보고 선호 유무를 판별할 수 있어야 한다. 2. 유저로부터 피드백을 받을 수 있어야 한다. 3. 피드백을 훈련에 반영할 수 있어야 한다. 4. +a Backpropagation에 필요한 정보를 따로 저장해뒀다 피드백이 들어오면 Gradient Descent로 파라미터 업데이트 ℎ 𝑥 = 0.76(𝑝떡볶이 𝑗 ) 𝐴𝑐𝑡𝑢𝑎𝑙 = 0 Cost 발생!Recommendation Log DB N Log_pk user_fk recipe_fk prob hidden actual 0 J k (떡볶이) 0.76 Binary 0 … … … … … … Forward Propagation Feedback(label)
  • 35. 03. IRECIPE Recommendation 1. 레시피의 특징을 보고 선호 유무를 판별할 수 있어야 한다. 2. 유저로부터 피드백을 받을 수 있어야 한다. 3. 피드백을 훈련에 반영할 수 있어야 한다. 4. +a Backpropagation에 필요한 정보를 따로 저장해뒀다 피드백이 들어오면 Gradient Descent로 파라미터 업데이트 ℎ 𝑥 = 0.76(𝑝떡볶이 𝑗 ) 𝐴𝑐𝑡𝑢𝑎𝑙 = 0 Cost 발생!Recommendation Log DB N Log_pk user_fk recipe_fk prob hidden actual 0 J k (떡볶이) 0.76 Binary 0 … … … … … … Forward Propagation Feedback(label) Backpropagation Gradient Descent를 이용한 Parameter Update
  • 36. 03. IRECIPE Recommendation 1. 레시피의 특징을 보고 선호 유무를 판별할 수 있어야 한다. 2. 유저로부터 피드백을 받을 수 있어야 한다. 3. 피드백을 훈련에 반영할 수 있어야 한다. 4. +a Underfitting 하지만 실제 추천 서비스를 하기 위해 고민해봐야 할 두 가지 문제 Overfitting 햄버거 어때요? 별로 자장면은요? 아 싫어;; 치킨이요!! ㅡㅡ 김치찜 어때요? 다른거 없어? 김치찌개는 요? 장난하니 김치전이요!! ㅡㅡ
  • 37. 03. IRECIPE Recommendation 1. 레시피의 특징을 보고 선호 유무를 판별할 수 있어야 한다. 2. 유저로부터 피드백을 받을 수 있어야 한다. 3. 피드백을 훈련에 반영할 수 있어야 한다. 4. +a Underfitting 하지만 실제 추천 서비스를 하기 위해 고민해봐야 할 두 가지 문제 Overfitting 햄버거 어때요? 별로 자장면은요? 아 싫어; 치킨이요!! ㅡㅡ 김치찜 어때요? 별로 김치찌개는 요? 아 싫어; 김치전이요!! ㅡㅡ N 서비스 초기에 겪을 수 있는 문제로 충분한 훈련을 받지 못해서 발생 Pre-training을 통한 Parameter Initialization! => 초기 추천의 적중률이 올라가며 더 빠르게 수렴한다.
  • 38. 03. IRECIPE Recommendation 1. 레시피의 특징을 보고 선호 유무를 판별할 수 있어야 한다. 2. 유저로부터 피드백을 받을 수 있어야 한다. 3. 피드백을 훈련에 반영할 수 있어야 한다. 4. +a Underfitting 하지만 실제 추천 서비스를 하기 위해 고민해봐야 할 두 가지 문제 Overfitting 떡볶이 어때요? 별로 자장면은요? 아 싫어; 치킨이요!! ㅡㅡ 김치찜 어때요? 별로 김치찌개는 요? 아 싫어; 김치전이요!! ㅡㅡ N 인공신경망이 유저의 선호를 과적합 될 정도로 학습했을 경우 발생 일정 확률로 유저의 선호를 탐색(탐색과 활용) => 과적합을 피해 유저의 또 다른 선호를 학습할 수 있음 (일종의 Serendipity)
  • 39. 03. IRECIPE Pre-training 초기 적중률을 높이기 위한 Pre-Training 1. 태그의 조합에 따라 다른 트레이닝 셋을 구성하여 미리 Scoring Network를 훈련 2. 회원가입 시 기초적인 태그 정보 입력 3. 해당 모델로 초기화 But, 트레이닝셋을 어떻게 구성하느냐에 따라 그 결과가 천차만별.. 얼마나 훈련을 시켜둬야 하는지도 애매한 문제가 있음.
  • 40. 03. IRECIPE Randomness 과적합을 줄이고 Serendipity를 제공하기 위한 Randomness 같은 쿼리가 들어와도 어느 정도의 Randomness가 작용하여 유저의 취향을 탐색(Exploration)한다.
  • 41. 04. Conclusion Evaluation Offline Metrics : MSE, RMSE, Precision, Recall, F1 Score, ROC, AUC, MAP, Ranking loss 등 Online Metrics : CTR based A/B test Our model...?! (threshold가 없고.. Negative를 제시하지 않음) => Precision : 유저 당 추천해준 아이템 중 양의 피드백을 받은 아이템의 비율 32명의 인원을 상대로 약 5일 간의 베타 테스트 결과 약 42%....
  • 42. 04. Conclusion Challenges 베타 테스트 후 피드백 中...
  • 43. 04. Conclusion Challenges 레시피에 대한 쿼리 (요청) Feature Extractor (Word2Vec) Scoring (Neural Network) Information Retrieval Bot Interface 𝑖 recipes 쿼리를 만족하는 i개의 레시피 𝒌 번째 레시피의 특징 추출(𝒌 ∈ 𝒊) 유저 j가 레시피 k를 좋아할지 판단 유저의 피드백을 분류기에 반영 User j j개의 레시피의 점수로 랭킹을 매겨 추천 N 우리가 간과한 몇 가지... 1. 추천과 검색은 쌍둥이다. (검색이 후보군을 적절하게 생성하지 못하면 추 천의 적중률이 매우 떨어지게 된다.) 2. 허술한 Bot Engine (유저와 유연하게 상호작용하기엔 역부족) Rule-basedKeyword matching
  • 46. 04. Conclusion Challenges Wide and Deep learning for Search Engine(also Recom) https://research.googleblog.com/2016/06/wide-deep-learning-better-together-with.html Wide Model(Memorization) Deep Model(Generalization)
  • 47. 04. Conclusion Challenges Wide and Deep learning for Search Engine(also Recom) Wide and Deep model (Generalization & Memorization) https://research.googleblog.com/2016/06/wide-deep-learning-better-together-with.html
  • 48. 04. Conclusion Conclusion 추천 시스템의 Cold Start Problem을 해결하기 위해, 인공신경망을 이용해 아이 템의 특징을 추출한 후, 함수 근사를 통해 유저의 선호를 예측하고 실시간으로 학습 하는 방식의 Online Model을 제시함. Django를 이용해 실제 모델이 동작하는 프로토타입 구현 추후 지속적인 개선과 서비스 런칭 상의 이슈를 보완하여 실제 서비스에 투입하여 사용할 수 있을 것으로 기대 됨. 1. 2. 3.
  • 49. Some issues References [1] Tomas Mikolov, Kai Chen, Greg Corrado, Jeffrey Dean Efficient Estimation of Word Representations in Vector Space, 2013 [2] Tomas Mikolov, Ilya Sutskever, Kai Chen, Greg Corrado, Jeffrey Dean Distributed Representations of Words and Phrases and their Compositionality, 2013 [3] Deep Neural Networks for Youtube Recommendations (Paul Covington et al, 2016) [4] Heng-Tze Cheng, Levent Koc, Jeremiah Harmsen, Tal Shaked, Tushar Chandra, et al. Wide & Deep Learning for Recommender Systems, 2016 [5] Gabriel Dulac-Arnold, Richard Evans, Hado van Hasselt, Peter Sunehag, el al. Deep Reinforcement Learning in Large Discrete Action Spaces, 2015