51
김진호 NAVER Search 딥러닝을 이용한 지역 컨텍스트 검색 Local Context Search Utilizing Deep Learning

[221] 딥러닝을 이용한 지역 컨텍스트 검색 김진호

Embed Size (px)

Citation preview

김진호NAVER Search

딥러닝을 이용한지역 컨텍스트 검색

Local Context Search Utilizing Deep Learning

제목이 전부입니다

이용자의컨텍스트를고려한장소검색

OUR GOAL

장소별컨텍스트이해

HOW?

CONTENTS

1. What to Do?

2. CNN을 활용한 여행지별 지역 컨텍스트 추출

3. LSTM을 활용한 신규 지역 컨텍스트 어휘 발굴

4. POI Latent Vector를 이용한 Context 표현 랭킹

5. 개선 결과

6. What’s Next?

1. What to Do?

여행지를 선택하는 데는 테마가 있다

http://blog.naver.com/s1h25s/220203903449 http://blog.daum.net/suareu/4http://cfs15.tistory.com/image/20/tistory/2008/10/28/15/24/4906b0162c9a2

http://www.hkn24.com/news/articleView.html?idxno=18902

가족과함께휴양 친구들끼리놀기좋은곳 저렴하게놀만한곳

기존 DB 정보로는 불가능“가족과함께휴양하기좋은여행지”

관련 블로그 888개,카페, 웹문서, 지식in…

전주한옥마을(NAVER POI DB)

여행지별 테마가 필요

테마가 녹아있는 여행지 리뷰

여행지 리뷰

지역 컨텍스트(테마)

해외 학자들이 정의한 Local Context

Context relevance assessment and exploitation in mobile recommender systems (2012)

우리가 정의한 지역 컨텍스트

힐링 일출 태교여행찾는 목적

애인 부모님 아이동행자

POI Side Context

현위치

시간

GPS 위치

아침 점심 저녁 새벽

계절 봄 여름 가을 겨울

날씨 맑음 흐림 비 눈

요일 주중 주말

기념일 어린이날 크리스마스 새해

User Situation Context

이국적 신비로운 재밌는분위기

둘레길 전망대 카약토픽(즐길거리)

Our Problem

분석 대상 : UGC Goal : 여행지별 테마

아이와함께가족과함께

나들이촬영지체험

동행자

찾는목적

고구려대장간마을

http://blog.naver.com/5200l/220734006006

기존 방식

분석 대상 : UGC Goal : 여행지별 테마기존방식

Text Mining

테마별 키워드 사전 및 패턴 이용

동료들과

친구들이랑친구 모임

친구와

친구와함께

아이와함께가족과함께

나들이촬영지체험

동행자

찾는목적

고구려대장간마을

http://blog.naver.com/5200l/220734006006

Parsing, Feature Representation

Deep Learning을 활용해보자!

아이와함께

동행자

여행지 블로그 문장 여행지 테마

CNN

LSTM

http://blog.skhynix.com/1644

Why Deep Learning?

→ 학습할 수 있는 데이터가 정말 많다.→ 학습데이터가 많으면 딥러닝은 좋은 성능을 보장한다.

분석해야 할 리뷰는 정말 많다.

그래서 만들어야 할 사전과 패턴도 정말 많다.

→ 알아서 학습셋의 Latent feature를 찾아주는게딥러닝을 활용하는 이유

ConA 지역 컨텍스트 분석 모델

Local DB

전주한옥마을

Context-aware Analysis Model

S1: 아이들과 당일치기로 전주를 다녀왔어요S2: 아이들 교육에도 최적의 장소S3: 비오는날 운치있는 전주여행

S4: 운치있고 여유로운 곳이었어요S5: 야간에 산책하면서 다니는 재미S6: 날씨 즐기며 천천히 걸어다니는 것도

UGC

전주한옥마을

S1: 아이들과S2: 아이들S3: 운치있는

S4: 운치있고S5: 산책S6: 걸어다니는

1. 문장 입력 2. 문맥 이해 3. 컨텍스트 추출

아이들과아이들애들하고

운치있는운치있고운치돋는

산책걸어다니는걷기좋은

동행자

분위기

Topic

S1:아이들과(aideulgwa)

Temporal ConvNet

S1:

TextRepresentation

아이들과

당일치기로

전주를

Bidirectional LSTM동행자

X

Xword

embedding

2. CNN을 활용한 여행지별지역 컨텍스트 추출

CNN Overview

http://stats.stackexchange.com/questions/180850/how-are-filters-and-activation-maps-connected-in-convolutional-neural-networks

http://okky.kr/article/321087

Why CNN?

www.kdnuggets.com

Computer VisionSemantic parsing (Yih et al., 2014)QA Task에서 질문 원본문장과 질의 패턴을 CNN Latent Vector로변환하여 비교

Search query retrieval (Shen et al., 2014)IR Task에서 질의와 웹문서를 CNN Vector로 변환

Sentence modeling (Kalchbrenner et al., 2014)CNN을 통해 영화 리뷰와 트위터에서 긍/부정 문장 분류

이미지 인식으로 시작했지만, NLP Task에도 잘 먹힌다

Deep Learning 3대장Yann Lecun Andrew NgGeoffrey Hinton

https://arxiv.org/abs/1502.01710

Temporal ConvNet

• using temporal convolutional networks(LeCun et al., 1998)• without the knowledge of words, phrases, sentences and any other

syntactic or semantic structures• apply to various large-scale datasets: including ontology classification,

sentiment analysis and text categorization.• work for both English and Chinese (and 한글...)

An apply deep learning to text understanding from character level inputs all the way up to abstract text concepts.

Language Independent!!

Temporal ConvNet : Model Design

아이

a b c d e f g h i j k l m n o p q r s t u v w x y z

아이들과(aideulgwa)

INPUT Size : 69

Temporal ConvNet : Model Design

net = nn.Sequential()net:add(backend.TemporalConvolution(inputSize, 256, 7)) -- 1D Convolution, 256 Output size. 7 convolution kernel widthnet:add(nn.Threshold()) -- Activation Function : ReLu, Sigmoid, TanH…net:add(nn.TemporalMaxPooling(3,3)) -- 3 regions by step size 3 stepsnet:add(backend.TemporalConvolution(256, 256, 7)) -- 256 Input size, 256 hidden size. 7 convolution kernel widthnet:add(nn.Threshold()) net:add(nn.TemporalMaxPooling(3,3))……. net:add(nn.Reshape(4096))net:add(nn.Linear(4096, 1024))net:add(nn.Threshold())net:add(nn.Dropout(0.5))net:add(nn.Linear(1024, 1024))net:add(nn.Threshold())net:add(nn.Dropout(0.5))net:add(nn.Linear(1024, outputSize))net:add(backend.LogSoftMax()) -- converts the output to a log-probability. Useful fornet:cuda() classification problems

FrameWork :

Tutorial on Convolutions(Collobert, 2002)

5287

256

69

522

1

2

3~6

Layer

Fully-Connected

a i deu l

Module Design

TemporalConvNet

BuildingTraining

Data

기존 방법론을

학습데이터 구축에 활용

대량의 학습데이터로

모델을 학습하여

여행지별 컨텍스트를 추출한다

딥러닝 모델 학습을 위해 다량의 학습데이터가 필요하다

학습 데이터 구성(1)

Seed로 사용할 사전 구축은 필요하다800여 개의 컨텍스트 후보 키워드 생성 → Word2Vec으로 확장

컨텍스트 어휘와 유사한후보 키워드를 생성

블로그 컬렉션으로Word2Vec 학습

워드 임베딩

제주도 겨울에 아이랑 가볼만한 곳

아이랑

제주도

겨울에

가볼만한

'아이랑' 후보 유사도아이들하고 0.8542

애기랑 0.8086

아가들이랑 0.7694

어른들이랑 0.7578

애들하고 0.7515

애들이랑 0.7314

조카들이랑 0.7277

조카랑 0.7195

엄마아빠랑 0.7166

부모님하고 0.7152

학습 데이터 구성(2)

기존 방법론을 학습데이터 구성에 활용

S1 : 지난 주말, 정말 오랜만에 친구들과한옥마을을 갔어요.S2 : 날씨가 따뜻해서 걷기도 좋을거 같아제가 한옥마을로 모이자고 꼬셨죠. ㅎㅎㅎ…S9 : 아이들도 매우 신나게 돌아다니더라구요

전주한옥마을 UGC에서 추출한 문장

컨텍스트 동의어

아이와 함께아이들과

아이들도

친구와 함께친구끼리

친구들과

업체 컨텍스트

전주한옥마을

혼자 갈만한

친구와 함께

커플끼리

아이와 함께

S1 - 친구와 함께 : 지난 주말, 정말오랜만에 친구들과 한옥마을을 갔어요S2 - 날씨가 따뜻해서 걷기도 좋을거 같아제가 한옥마을로 모이자고 꼬셨죠. ㅎS9 - 아이와 함께 : 아이들도 매우 신나게돌아다니더라구요

컨텍스트 정답 문장

여행지별 UGC 문장

형태소 분석TF 기반 Candidate Context를 탐색

확장사전 및 패턴 기반으로

컨텍스트별 문장을 인식

𝑆𝑐𝑜𝑟𝑒 𝑡, 𝑃𝑙𝑎𝑐𝑒 =𝑓𝑟𝑒𝑞𝑡,𝑃𝑙𝑎𝑐𝑒

max 𝑓𝑟𝑒𝑞𝑡′,𝑃𝑙𝑎𝑐𝑒 ∶ 𝑡′ ∈ 𝑃𝑙𝑎𝑐𝑒

학습 데이터 구성(3)Character quantization(표음 기반 알파벳 치환)

S1 - 친구와 함께 : 지난 주말, 정말 오랜만에 친구들과한옥마을을 갔어요S9 - 아이와 함께 : 아이들도 매우 신나게돌아다니더라구요

컨텍스트 태그된 문장

S1 – “1”,”jinan jumar, jeongmar oraenmane chingudeulgwahanokmaeureur gasseoyo”S9 – “8”,”aideuldo maeu sinnage doradanideoraguyo”

컨텍스트 태그된 문장

gogulyeo daejanggan maeuleun aideulgwa sajin jjiggiedo joheun gos ineyo ~ ^^

http://blog.naver.com/5200l/220734006006

컨텍스트 유형별 데이터셋

동행자 컨텍스트 목적 컨텍스트 분위기 컨텍스트Class Total Train Test

이국적인분위기 25,715 10,000 5,000

모던한분위기 9,641 8,000 1,641

고풍스러운분위기 4,510 4,000 510

로맨틱한분위기 5,058 4,000 1,058

편안한분위기 38,306 10,000 5,000

이색적인분위기 20,818 10,000 5,000

프라이빗한분위기 7,161 5,000 2,161

깔끔한분위기 20,569 10,000 5,000

웅장한분위기 7,702 5,000 2,702

소박한분위기 17,760 10,000 5,000

아기자기한분위기 100,843 10,000 5,000

친절한분위기 35,530 10,000 5,000

세련된분위기 18,720 10,000 5,000

조용한 53,149 10,000 5,000

여유로운분위기 27,525 10,000 5,000

럭셔리한분위기 64,727 10,000 5,000

신비로운분위기 6,215 5,000 1,215

Class Total Train Test

친구와 함께 110,500 10,000 5,000

여자들끼리 13,184 10,000 3,184

어른과 함께 26,785 10,000 5,000

애완동물동반 11,609 10,000 1,609

가족과 함께 173,731 10,000 5,000

아기와 함께 31,638 10,000 5,000

부모님과 함께 23,518 10,000 5,000

아이와 함께 69,228 10,000 5,000

Class Total Train Test

푸짐한메뉴 57,148 10,000 5,000

저렴한 58,874 10,000 5,000

요즘뜨는 12,894 10,000 2,894

나들이 53,678 10,000 5,000

해장메뉴 17,665 10,000 5,000

신선한재료 96,777 10,000 5,000

실내 59,968 10,000 5,000

소개팅 18,513 10,000 5,000

회식장소 112,378 10,000 5,000

오래된맛집 25,690 10,000 5,000

힐링 54,524 10,000 5,000

등산 70,434 10,000 5,000

상견례 21,943 10,000 5,000

문화재 36,559 10,000 5,000

모델 학습

컨텍스트 유형별로 모델 생성

동행자컨텍스트

학습 데이터

동행자 컨텍스트분류 모델

분위기 컨텍스트분류 모델

• 친구와 함께• 아이와 함께• 부모님과 함께• …

• 운치 있는 분위기• 활기찬 분위기• 이국적인 분위기• …

분위기컨텍스트

학습 데이터

하나의 Big Model로 학습했더니 성능이 떨어짐

모델 학습 : Overfitting을 피하자!

Dropout (0.5)

+캠릿브지

그레이엄 롤린슨(Graham Rawlinson)

영어 기준 처음과 끝 2글자를 남기고 섞어도 이해가 가능함

→ 처음과 끝을 남기고 0.5 의 확률로 가운데 알파벳을 뒤섞어 입력

대학의 연결구과

더 많은 Training Data Feature 개수 줄이기 Regularization

Feature 개수 줄이기

더 많은 Training Data

CNN 지역 컨텍스트 추출 결과

모델 실험 결과 (여행지 + 맛집)‘가족과 함께’ 컨텍스트가 추출된 문장들

5인가족이 배불리 먹었다~★

가족과 여행을 다녀왔는데요.

가족, 연인, 친구 각자 자신들만의 추억을 담고 있다.

가족은 다들 들떠 있었는데 ㅋㅋㅋ

‘가족과 함께’ 컨텍스트가 추출되지 않은 문장들

가족들이 알면 난리가 날듯...

나중에 울 가족여행 여기로 와볼까..ㅎㅎ ㅋㅋ

친구들과 연인들과 가족들과 함께해도 참 좋은곳이네요~~

혼자 먹기에는 너무 큰 사이즈라 :) 동생들과 함께 냠냠.

‘TV방영’ 컨텍스트가 추출된 문장

백종원의 3대천왕에 방송된 유명한

맛집이다.

Model Test

동행자 모델 97.67%

목적 모델 96.65%

분위기 모델 92.35%

3. LSTM을 활용한 신규지역 컨텍스트 어휘 발굴

LSTM Overview

RNN으로부터 기반한 모델

시계열 데이터 처리에 특화

Bidirectional LSTMForward + Backward Layer

Why LSTM?

Sequential Tagging에 가장 최적화된 모델

신규 컨텍스트 키워드 발굴에 활용 가능

특정 컨텍스트 카테고리로 태깅된 새로운 키워드를 발굴 → 사전 강화 효과

문장의 특정 위치에 있는 단어가 어떤 컨텍스트 종류인지를 태깅

Module Design

LSTMBuildingTraining

Data

BIO 태깅된 학습데이터 대량의 학습데이터로

모델을 학습하여

여행지별 컨텍스트를 추출한다

학습 데이터 구성

- B : Target 시작 어휘

- I : Target 포함 어휘(이어짐)

- O : Target 어휘 아님 (공백 포함)

- U : No Information

여행지별 UGC 문장 형태소 분석 → BIO 태깅 → Word Embedding

모델 학습 예시 : Bidirectional LSTM

찍기에도

고구려대장간마을은

사진

아이들과

좋은

곳이네요

동행자

Word embedding

Bidirectional LSTM : Model Design

model = nn.Sequential()

model:add(nn.Sequencer(nn.Linear(inputSize, hiddenSize))) -- Input : Word2Vec Embedding 차원, 256 Hidden Size

model:add(nn.BiSequencer(nn.LSTM(hiddenSize, hiddenSize, seqLength))) - seqLength : 문장의 길이(형태소 단위)

model:add(nn.BiSequencer(nn.LSTM(hiddenSize * 2, hiddenSize, seqLength)))

model:add(nn.BiSequencer(nn.LSTM(hiddenSize * 2, hiddenSize, seqLength)))

model:add(nn.Sequencer(nn.Dropout(0.5)))

model:add(nn.Sequencer(nn.Linear(hiddenSize * 2, outputSize)))

model:add(nn.Sequencer(nn.LogSoftMax()))

FrameWork :

추출 결과

제주도 밤 에 가볼만한 곳 새연교

X 시간 ─ X X X

조금 은 여유 있게 한 걸음

X X 분위기 ─ X X

미라클 아이즈 콘서트 에 딸 과 함께 다녀오다

X X X X 동행자 ─ X X

경주 벚꽃 구경 의 필수 코스

X Topic ─ X X X

많은 스키다시 와 바다 가 보이는 횟집

X X X 목적 ─ ─ X

불맛 이 살아있는 담백한 물짜장

맛 X X 맛 X

오늘 점심 은 헤리 언냐 랑 강남 교자

X X X X 동행자 ─ X X

- 신규 컨텍스트 발굴 예제

컨텍스트 어휘 Tagging 실험 결과

- Target : Topic,분위기,동행자,목적,시간,기능

- Precision : 95.74% (Close Test)

4. POI Latent Vector를이용한 컨텍스트 표현 랭킹

지금까지의 흐름 : Remind!

Local DB

전주한옥마을

Context-aware Analysis Model

S1: 아이들과 당일치기로 전주를 다녀왔어요S2: 아이들 교육에도 최적의 장소S3: 비오는날 운치있는 전주여행

S4: 운치있고 여유로운 곳이었어요S5: 야간에 산책하면서 다니는 재미S6: 날씨 즐기며 천천히 걸어다니는 것도

UGC

전주한옥마을

S1: 아이들과S2: 아이들S3: 운치있는

S4: 운치있고S5: 산책S6: 걸어다니는

1. 문장 입력 2. 문맥 이해 3. 컨텍스트 추출

아이들과아이들애들하고

운치있는운치있고운치돋는

산책걸어다니는걷기좋은

동행자

분위기

Topic

S1:아이들과(aideulgwa)

Temporal ConvNet

S1:

TextRepresentation

아이들과

당일치기로

전주를

Bidirectional LSTM동행자

X

Xword

embedding

Problem in this Task

- 컨텍스트 랭킹 : 추출에 사용된 컨텍스트 표현 중 여행지 A에 더 적합한 컨텍스트 표현은?

장소별 더 생생하고 적절한 컨텍스트 표현을 찾는 문제

로맨틱한분위기

러블리한

낭만이 있는

몽환적인

Context 표현 Ranking Module Design

여행지 문장LatentVectors

(Test Data)

LatentVectors

from TrainingData

Average of Latent Vectors

for each Context

POI 별Context 통계 추출

Ranking by Context Frequency and Expected Value

컨텍스트빈도

실제빈도빈도기대값

Test Data Classification

컨텍스트별 평균 Latent Vector 계산

Ranking

1024차원의 CNN Latent Vector 활용

컨텍스트별Latent

Vector와거리 비교

컨텍스트와 문장의 연관도 비교 예시

대표 context: 아이와함께

애기들이

아이데리고

꼬맹이들

아기와

Test Sentence

Ranking Logic

0

0.2

0.4

0.6

0.8

1

Expected

Value

Actual

Value

기타

벽화마을

만두

문꼬치

초코파이

성당

전주한옥마을 (주제)

Ranking by Context Frequency and Expected Value

컨텍스트빈도

실제빈도빈도기대값

Ranking

Context 표현 추출 Result

5. 개선 결과

서비스 반영 결과

노출 대비 높은 CTR 유지

주말 노출량/클릭량주중의 배로 증가

Lesson

- 대규모의 학습데이터 획득이 쉽지 않다.

- 대량의 학습데이터 획득을 위해 기존 Text Mining 방법론을 활용해도 효과적

딥러닝은 학습데이터 획득/구축이 절대적

- 단, 데이터 전처리가 충분히 이루어진다는 전제

- 문제의 정의에 따라 딥러닝은 The Best Solution이 될 수 있다.

딥러닝은 충분히 현재의 해답이 될 수 있다

6. What’s Next?

What’s Next

- ‘목적’ ‘동행자’ ‘분위기’ ‘토픽’ 이외의 지역 컨텍스트 추출 및 확장 적용 실험

컨텍스트 지역검색 확장 실험

Semi-Supervised Deep Learning 연구 및 적용

- 성능에 가장 큰 영향을 미치는 학습데이터 구성의 문제 해결

- Unlabeled data + 딥러닝

Q&A

Thank You