SlideShare a Scribd company logo
검색엔진에 적용된
딥러닝 모델 방법론
Tae Young Lee
검색엔진 용어 정리
검색 엔진 구조
3parts : software components, interfaces, relationships
2개의 필요조건
effectiveness(효과성) : 검색 결과의 품질, most relevants set of document
efficiency(효율성) : response time, throught
Indexing Process(색인 처리)
Test acquisition(텍스트 획득) : 문서를 저장, 크롤링하여 구축
Text transformation(텍스트 변환) : 문서를 index terms of features로 변환
Index Creation(색인 구축) : create data structures to support fast searching
efficiently updated/inverted indexes(역색인)
Query process(질의 처리)
User interaction(사용자 상호작용) : creation and refinement of query/display of results
Ranking(순위 부여) : uses query and indexes to generate ranked list of documents based on retrieval model
Evaluation(평가) : effectiveness and efficiency
effectiveness depends on retrieval model
efficiency depends on indexes
offline activity
검색엔진의 기본 구조
구성요소 역할 설명
문서수집기 (Crawler) 위치정보 수집 새로 생성, 업데이트 문서, 파일 등 수집
색인기 (Indexer) 위치정보 저장 , 색인데이터베이스 수집 위치 정보 저장, 수집된 정보 위치 DB
검색기 (Searcher) 색인데이터베이스, 검색 검색한 키워드에 대한 색인 DB 검색 모듈
질의관리기 (Query Manager) 검색결과, 전달 Client와 검색기 사이 정보 전달
Indexer
색인어 추출 방법
구분 설명
N-gram 방법 글자를 겹쳐서 색인어 추출 방법
ex) 정보검색을 “정보",”보검",”검색” 등
N-gram 장점 빠지는 정보 없이 모두 검색 가능
신조어 검색 가능, 색인어 리스트 구성
N-gram 단점 틀린 내용 다수 포함, 검색품질 저하
색인어 리스트 크기가 커짐
N-gram 적용 형태소 분석 오류 시 사용
문서의 건수가 적고, 재현율 우선 시
텍스트 추출 → Document Data Store →
텍스트 변환(Parser, Stopwords 제거, Stemming,
링크 추출 및 분석, 정보 추출, 분류기) → 색인
생성
Query Manager
일반 검색에서 텍스트 생성
검색 엔진 + 텍스트 생성 = 적응형 검색 엔진
사용자 Query → 대안(생성) Query 추가 → 검색 범위 확장
사용자 입력 query를 받음
query time-analysis 파이프라인에 query를 넘긴다.
토크나이저와 여러개의 필터를 거쳐 처리된 퀴리를 반환
변경된 query를 RNN 모델에 입력.
출력 값으로 alternative queries 들을 받음
original fitered query + alternative query = parsed query
역색인을 통해 쿼리에 맞는 정보를 찾음
Automatic Query Expansion
결과가 없는 쿼리를 최소화 한다.
- 비슷한 검색 결과를 갖는 쿼리끼리 연결 짓기
- 동일한 사용자가 특정 시간(time windows)동안 보낸 쿼리
연결 짓기
- 비슷한 검색 용어(search terms)를 포함한 쿼리 연결 짓기
- 색인된 데이터에서 출력 sequence 선택하기
- 비지도 학습으로 텍스트 얻기
재현률(recall)을 높힌다.
정확도(precision)을 높힌다.
Unsupervised query expansion
사용자 쿼리를 one-hot encoding된 character vector로 변환
RNN(LSTM,GRU) 모델에 입력 → Transformer 모델에 입력
첫번째 character vector 출력을 다시 모델에 입력
마지막 character가 나올 때까지 계속 반복 (“rn”등 delimeter)
→ 공통 term이 들어간 쿼리를 사용자가 입력하면, RNN이
관련있는 term을 추가해 “완성"해 줌
→ 완성된 쿼리를 입력하면, RNN이 검색 기록에서 비슷한
쿼리를 찾아서 생성해 줌
Neural Network으로 질의 Query를 생성하여 검색 결과 향상
그럴듯한 쿼리들 제안하기
Ternary Search Tree
https://www.cs.usfca.edu/~galles/visualization/TST.html
Autocomplete
Related Searched
Personalization
Trending topics
n-gram 활용 (bi-gram, tri-gram)
https://m.blog.naver.com/olpaemi/222003279473
웹사이트별 랭킹 계산
word embedding을 사용해 검색 결과의 순위 지정하기
기존의 검색랭킹 모델?
Slope one (Collaborative Filtering)
- 다른 사람들과 다른 아이템에 대한 정보를
이용하여 특정인의 특정아이
템에 대한 정보를 추정
- 아마존의 상품 추천시스템에서 사용
랭킹 모델의 2가지 과정
Information Retrieval
사용자의 질의와 검색 대상인 컨텐츠 사이의
언어적 통계정보를 이용하여 Relevance를 측정
예) Boolean, TF*IDF Model, Contents based
Rank model
Information Filtering
컨텐츠 및 도메인의 특성을 이용하여 컨텐츠의
quality 측정하고 이를 이용
해 컨텐츠를 순위화
예) PageRank, Snowrank 등
• ad-hoc based Rank model
두가지 모델이 혼용되어 Ranking Model
순위 지정 및 추천을 위한 document embedding
Naver 검색엔진
Naver C-Rank
웹사이트의 랭킹 계산
C-Rank의 C는 Creator의 약자
Context : 주제별 관심사의 집중도
Content : 생산되는 정보의 품질
Chain : 생산된 콘텐츠는 어떤 연쇄
반응을 보이며 소비/생산되는지
Naver D.I.A구도
D.I.A는 Deep Intent Analysis의 약자
네이버의 데이터를 기반으로 키워드 별로 사용자들이
선호하는 문서들에 대한 점수를 랭킹에 반영한 모델
문서의 주제 적합도, 문서의 의도, 경험 정보, 독창성, 적시성,
정보의 충실성, 상대적인 어뷰징 척도 등의 여러오인들이
복합적으로 반영됨
SKT 검색엔진
SKT 검색 엔진 구조
Open AI Paper Trend 분석
CLIP
Introduction
Learning Transferable Visual Models
From Natural Language Supervision
방대한 text 데이터셋을 학습한 내역을
기반으로 이를 이미지와 연결시켜주는
연결고리 역할을 통해 vision task에서
여러 SOTA 모델들의 기반이 되고
있다.
Method
CLIP는 처음에 Contrastive Learning을 수행함
Contrastive Learning이라는 것은 SSL(Self-Supervised
Learning)의 한 종류를 의미함(SimCLR 논문 참고)
결국, Contrastive learning이라는 것은 두 개의 input에
대해서 각각 encoder를 적용해서 나온 2개의
embedding의 유사도를 계산하는 방식
diagonal term이 유사도가 가장 커야되고, 나머지
off-diagonal 부분은 유사도가 거의 없어지도록 loss
function을 설정해서 학습이 진행됨
두 번째는, text에 대한 encoder값을 만들어낸다.
여러 label에 대한 text embedding을 각각 만들어내는 과정
마지막으로, 임의의 image를 넣어서, 그 image를
embedding으로 만들어준 후, text embeddings과의 유사도
비교를 통해서 가장 유사도가 높은 항목을 text label로
선정한다.
이 경우, 학습에 이용되지 않는 image가 들어와도, label
prediction이 이루어질 수 있기 때문에 zero-shot learning이
가능
총 5개의 ResNet, 3개의 ViT를 downstream model로
선정하여 training을 하였다.
모든 model은 32 epochs를 반복했으며, Adam을 이용함
Contrastive learning에서 image_encoder는 ResNet-50,
text_encoder는 Transformer를 이용함
SimCLR
SimCLR Paper Review
A Simple Framework for Contrastive Learning of Visual Representations
https://kyujinpy.tistory.com/39
초반에 제안된 SSL의 방법은 Generative Learning과 Proxy
task임
Autoencoder와 같이 Encoder와 Decoder로 구성되어 있는 모델로
SSL을 하는 것이 Generative Learning이다.
Generative Learning은 Encoder와 Decoder 둘 다 학습해야 하기
때문에 Computational cost가 크다는 것이 단점
또한 SSL 모델을 Image Classification과 같은 학습에 활용 시
Decoder의 의미가 퇴색함
Proxy task는 Generative learning과 다르게 Decoder의 구조가
없고, 미리 사용자가 label을 만들어서 작업을 수행하는 것
여기서 파생되는 대표적인 문제는 “사용자가 만든 label이
기존보다 과연 고차원적인 정보를 만드는데 도움이 될까?”라는 점
Proxy task의 대표적인 모델인 Exemplar와 Jigsaw Puzzle이다.
Exemplar
이미지가 50만장이 있다면, 각각의 이미지를 하나의 label로 생각해서 총 50만개의 label을 사용자가 만든다.
그 각각의 이미지마다 Random Augmentation을 만들어서, 하나의 집단을 original image의 label에 전부 할당한다.
위의 과정을 모델이 학습시킨다.
Jigsaw Puzzle
Jigsaw Puzzle는 총 9개의 Patch들을 서로 섞어서 그 순서를 맞추는 문제이다. 이때 9!=362,880개의 엄청난 가짓수가 있기
때문에 각 이미지ekd 69개만 활용해서 이용함. 즉, 각 이미지 patch들이 몇번째 이미지인지 해결하는 Pretext task인데,
이러한 puzzle을 풀면서 학습된 모델이 Image classification이나 Object Detection에 좋다고 논문의 저자들이 얘기함
Contrastive learning
Proxy task의 경우 사람이 직접 labeling을 만들어야 한다는 것이 가장 큰
문제점이다.
Proxy task를 통해서 학습된 모델이 과연 기존의 이미지보다 고차원적인
information을 갖는다고 말할 수 있을지 의문이 있었기 때문에 Contrastive
learning이 나오게 되었다.
Back ground Knowledge : Self-Supervised-Learning, Contrastive Learning
Pretext task : Self-Supervised-Learning을 학습하기 위해서, 사용자가 만든
문제
Downstream task : Self-Supervised-Learning을 적용해서 풀 문제
1. SSL은 처음에 label이 없는 데이터셋을 가지고, 학습을 진행 (Pretext
task)
- output은 보통 embedding형태로, 실제 이미지와 output간의 similarity를
계산해서 판단함
2. SSL을 통해 학습한 모델을 기존의 모델에 적용해서 평가 (Downstream
task)
- Linear evaluation, Semi Supervised Learning, Transfer Learning
예시) ImageNet을 활용해서 Image Classification을 진행한다
- Linear evaluation : Pretext task를 통해서 학습했던 모델의 weights를
freeze 시키고 난 후, 뒤에 FC layer를 붙여서 fine-tunning을 진행함
- Semi Supervised Learning : 데이터셋의 label을 1%~10% 사이만
이용해서 학습시키는 것
- Transfer Learning : ImageNet으로 학습한 모델을 transfer-learning
시켜서 다른 dataset(CIFAR 등등)을 평가
SimCLR의 구조
1. X라는 데이터셋을 각각 2번 aumentation시켜서, Xi, Xj를
얻는다.
2. 각각 Xi와 Xj에 f(x)를 적용한다. f(x)는 보통 ResNet-50이다.
3. 그 다음 Projection head라고 불리는 g(x)를 적용한다.
4. Projection head에서 나온 embedding 값을
InfoNCE(Contrastive loss)를 이용해서 서로의 유사도를 계산해서
loss function을 계산한다.
- 여기서 보면 분자는 positive sample에 대한 서로의 유사도이고,
분모는 전체 데이터 셋(positive sample+negative sample)에 대한
유사도의 총합을 이용해서 probability를 계산
- 실제 코드에서는 Cross Entropy loss를 이용
(Cross Entropy의 x에 similarity를 대입한 것과 같음)
Linear Evaluation에 대한 성능평가 인데, 단일 augmentation을
이용했을 때 성능이 가장 좋지 않았다.
Color + Crop 조합을 이용했을 때 가장 성능이 좋다는 것을 알 수
있다.
참고 링크
https://naver-career.gitbook.io/kr/service/search/engine-and-solution/search-engine
https://devocean.sk.com/blog/techBoardDetail.do?ID=163214
https://www.next-t.co.kr/seo/%EC%BD%98%ED%85%90%EC%B8%A0seo/%EC%BD%98%ED%85%90%EC%B8%A0-se
o-%EA%B8%80-%EC%9E%91%EC%84%B1%EB%B2%95-%EA%B2%80%EC%83%89%EC%97%94%EC%A7%84%EC
%9D%B4-%EC%A2%8B%EC%95%84%ED%95%98%EB%8A%94-%EA%B8%80%EC%9D%80-%EC%96%B4%EB%96
%A4-%EA%B8%80/
http://blog.skby.net/%EA%B2%80%EC%83%89%EC%97%94%EC%A7%84-search-engine/
https://deview.kr/2023/sessions/574
https://kyujinpy.tistory.com/47

More Related Content

What's hot

[222]딥러닝을 활용한 이미지 검색 포토요약과 타임라인 최종 20161024
[222]딥러닝을 활용한 이미지 검색 포토요약과 타임라인 최종 20161024[222]딥러닝을 활용한 이미지 검색 포토요약과 타임라인 최종 20161024
[222]딥러닝을 활용한 이미지 검색 포토요약과 타임라인 최종 20161024
NAVER D2
 
Learn REST API with Python
Learn REST API with PythonLearn REST API with Python
Learn REST API with Python
Larry Cai
 

What's hot (20)

오토인코더의 모든 것
오토인코더의 모든 것오토인코더의 모든 것
오토인코더의 모든 것
 
제 16회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [코끼리책방 팀] : 사용자 스크랩 내용 기반 도서 추천
제 16회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [코끼리책방 팀] : 사용자 스크랩 내용 기반 도서 추천 제 16회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [코끼리책방 팀] : 사용자 스크랩 내용 기반 도서 추천
제 16회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [코끼리책방 팀] : 사용자 스크랩 내용 기반 도서 추천
 
Deep learning based object detection basics
Deep learning based object detection basicsDeep learning based object detection basics
Deep learning based object detection basics
 
“An Introduction to Data Augmentation Techniques in ML Frameworks,” a Present...
“An Introduction to Data Augmentation Techniques in ML Frameworks,” a Present...“An Introduction to Data Augmentation Techniques in ML Frameworks,” a Present...
“An Introduction to Data Augmentation Techniques in ML Frameworks,” a Present...
 
Deep Learning in Recommender Systems - RecSys Summer School 2017
Deep Learning in Recommender Systems - RecSys Summer School 2017Deep Learning in Recommender Systems - RecSys Summer School 2017
Deep Learning in Recommender Systems - RecSys Summer School 2017
 
제 13회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [스포 적발 강력 1팀] : 네 리뷰가 스포라는 것을 스포한다.
제 13회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [스포 적발 강력 1팀] : 네 리뷰가 스포라는 것을 스포한다.제 13회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [스포 적발 강력 1팀] : 네 리뷰가 스포라는 것을 스포한다.
제 13회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [스포 적발 강력 1팀] : 네 리뷰가 스포라는 것을 스포한다.
 
[222]딥러닝을 활용한 이미지 검색 포토요약과 타임라인 최종 20161024
[222]딥러닝을 활용한 이미지 검색 포토요약과 타임라인 최종 20161024[222]딥러닝을 활용한 이미지 검색 포토요약과 타임라인 최종 20161024
[222]딥러닝을 활용한 이미지 검색 포토요약과 타임라인 최종 20161024
 
[224]네이버 검색과 개인화
[224]네이버 검색과 개인화[224]네이버 검색과 개인화
[224]네이버 검색과 개인화
 
화자인식 기술 및 관련 연구 소개
화자인식 기술 및 관련 연구 소개화자인식 기술 및 관련 연구 소개
화자인식 기술 및 관련 연구 소개
 
정말 딥러닝은 사람처럼 세상을 인식하고 있을까?
정말 딥러닝은 사람처럼 세상을 인식하고 있을까?정말 딥러닝은 사람처럼 세상을 인식하고 있을까?
정말 딥러닝은 사람처럼 세상을 인식하고 있을까?
 
Event handling
Event handlingEvent handling
Event handling
 
Natural Language Toolkit (NLTK), Basics
Natural Language Toolkit (NLTK), Basics Natural Language Toolkit (NLTK), Basics
Natural Language Toolkit (NLTK), Basics
 
[MLOps KR 행사] MLOps 춘추 전국 시대 정리(210605)
[MLOps KR 행사] MLOps 춘추 전국 시대 정리(210605)[MLOps KR 행사] MLOps 춘추 전국 시대 정리(210605)
[MLOps KR 행사] MLOps 춘추 전국 시대 정리(210605)
 
Deep Learning for Natural Language Processing
Deep Learning for Natural Language ProcessingDeep Learning for Natural Language Processing
Deep Learning for Natural Language Processing
 
Learn REST API with Python
Learn REST API with PythonLearn REST API with Python
Learn REST API with Python
 
Text Classification
Text ClassificationText Classification
Text Classification
 
제 17회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [6시내고양포CAT몬] : Cat Anti-aging Project based Style...
제 17회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [6시내고양포CAT몬] : Cat Anti-aging Project based Style...제 17회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [6시내고양포CAT몬] : Cat Anti-aging Project based Style...
제 17회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [6시내고양포CAT몬] : Cat Anti-aging Project based Style...
 
Deep Learning for Recommender Systems RecSys2017 Tutorial
Deep Learning for Recommender Systems RecSys2017 Tutorial Deep Learning for Recommender Systems RecSys2017 Tutorial
Deep Learning for Recommender Systems RecSys2017 Tutorial
 
Word Embeddings - Introduction
Word Embeddings - IntroductionWord Embeddings - Introduction
Word Embeddings - Introduction
 
제 17회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [시켜줘, 보아즈 명예경찰관] : 보이스피싱 탐지 알고리즘
제 17회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [시켜줘, 보아즈 명예경찰관] : 보이스피싱 탐지 알고리즘제 17회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [시켜줘, 보아즈 명예경찰관] : 보이스피싱 탐지 알고리즘
제 17회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [시켜줘, 보아즈 명예경찰관] : 보이스피싱 탐지 알고리즘
 

Similar to 검색엔진에 적용된 딥러닝 모델 방법론

Recommendation System History
Recommendation System HistoryRecommendation System History
Recommendation System History
Tae Young Lee
 
B6 문맥인식기술활용
B6 문맥인식기술활용B6 문맥인식기술활용
B6 문맥인식기술활용
NAVER D2
 
JIGSAW: Interactive Mobile Visual Search with Multimodal Queries

JIGSAW: Interactive Mobile Visual Search with Multimodal Queries
JIGSAW: Interactive Mobile Visual Search with Multimodal Queries

JIGSAW: Interactive Mobile Visual Search with Multimodal Queries

Sumi Kim
 
AWS CLOUD 2018- AWS의 새로운 통합 머신러닝 플랫폼 서비스, Amazon SageMaker (김무현 솔루션즈 아키텍트)
AWS CLOUD 2018- AWS의 새로운 통합 머신러닝 플랫폼 서비스, Amazon SageMaker (김무현 솔루션즈 아키텍트)AWS CLOUD 2018- AWS의 새로운 통합 머신러닝 플랫폼 서비스, Amazon SageMaker (김무현 솔루션즈 아키텍트)
AWS CLOUD 2018- AWS의 새로운 통합 머신러닝 플랫폼 서비스, Amazon SageMaker (김무현 솔루션즈 아키텍트)
Amazon Web Services Korea
 
메타웍스3 워크숍 - 개념소개 및 예제, 그리고 간단한 API문서포함
메타웍스3 워크숍 - 개념소개 및 예제, 그리고 간단한 API문서포함 메타웍스3 워크숍 - 개념소개 및 예제, 그리고 간단한 API문서포함
메타웍스3 워크숍 - 개념소개 및 예제, 그리고 간단한 API문서포함
uEngine Solutions
 

Similar to 검색엔진에 적용된 딥러닝 모델 방법론 (20)

파이썬으로 익히는 딥러닝 기본 (18년)
파이썬으로 익히는 딥러닝 기본 (18년)파이썬으로 익히는 딥러닝 기본 (18년)
파이썬으로 익히는 딥러닝 기본 (18년)
 
Deep neural networks for You-Tube recommendations
Deep neural networks for You-Tube recommendationsDeep neural networks for You-Tube recommendations
Deep neural networks for You-Tube recommendations
 
Recommendation System History
Recommendation System HistoryRecommendation System History
Recommendation System History
 
Create a solution including deep learning models
Create a solution including deep learning modelsCreate a solution including deep learning models
Create a solution including deep learning models
 
B6 문맥인식기술활용
B6 문맥인식기술활용B6 문맥인식기술활용
B6 문맥인식기술활용
 
JIGSAW: Interactive Mobile Visual Search with Multimodal Queries

JIGSAW: Interactive Mobile Visual Search with Multimodal Queries
JIGSAW: Interactive Mobile Visual Search with Multimodal Queries

JIGSAW: Interactive Mobile Visual Search with Multimodal Queries

 
딥러닝 세계에 입문하기 위반 분투
딥러닝 세계에 입문하기 위반 분투딥러닝 세계에 입문하기 위반 분투
딥러닝 세계에 입문하기 위반 분투
 
20170216 conv mf_hyu_dake
20170216 conv mf_hyu_dake20170216 conv mf_hyu_dake
20170216 conv mf_hyu_dake
 
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
 
[HaU] 신입 기술 면접 준비 java
[HaU] 신입 기술 면접 준비 java[HaU] 신입 기술 면접 준비 java
[HaU] 신입 기술 면접 준비 java
 
검색엔진에 적용된 ChatGPT
검색엔진에 적용된 ChatGPT검색엔진에 적용된 ChatGPT
검색엔진에 적용된 ChatGPT
 
링크드인의 Big Data Recommendation Products - 어제의 데이터를 통해 내일을 예측한다
링크드인의 Big Data Recommendation Products - 어제의 데이터를 통해 내일을 예측한다링크드인의 Big Data Recommendation Products - 어제의 데이터를 통해 내일을 예측한다
링크드인의 Big Data Recommendation Products - 어제의 데이터를 통해 내일을 예측한다
 
Ruby on Rails와 함께 하는 애자일 웹 개발
Ruby on Rails와 함께 하는 애자일 웹 개발Ruby on Rails와 함께 하는 애자일 웹 개발
Ruby on Rails와 함께 하는 애자일 웹 개발
 
AWS CLOUD 2018- AWS의 새로운 통합 머신러닝 플랫폼 서비스, Amazon SageMaker (김무현 솔루션즈 아키텍트)
AWS CLOUD 2018- AWS의 새로운 통합 머신러닝 플랫폼 서비스, Amazon SageMaker (김무현 솔루션즈 아키텍트)AWS CLOUD 2018- AWS의 새로운 통합 머신러닝 플랫폼 서비스, Amazon SageMaker (김무현 솔루션즈 아키텍트)
AWS CLOUD 2018- AWS의 새로운 통합 머신러닝 플랫폼 서비스, Amazon SageMaker (김무현 솔루션즈 아키텍트)
 
인공지능추천시스템 airs개발기_모델링과시스템
인공지능추천시스템 airs개발기_모델링과시스템인공지능추천시스템 airs개발기_모델링과시스템
인공지능추천시스템 airs개발기_모델링과시스템
 
[강의] OOP 개요
[강의] OOP 개요[강의] OOP 개요
[강의] OOP 개요
 
추천 시스템 개요 (1)-draft
추천 시스템 개요 (1)-draft추천 시스템 개요 (1)-draft
추천 시스템 개요 (1)-draft
 
Elastic Stack & Data pipeline
Elastic Stack & Data pipelineElastic Stack & Data pipeline
Elastic Stack & Data pipeline
 
TDD - Test Driven Development
TDD - Test Driven DevelopmentTDD - Test Driven Development
TDD - Test Driven Development
 
메타웍스3 워크숍 - 개념소개 및 예제, 그리고 간단한 API문서포함
메타웍스3 워크숍 - 개념소개 및 예제, 그리고 간단한 API문서포함 메타웍스3 워크숍 - 개념소개 및 예제, 그리고 간단한 API문서포함
메타웍스3 워크숍 - 개념소개 및 예제, 그리고 간단한 API문서포함
 

More from Tae Young Lee

More from Tae Young Lee (20)

Review of the Paper on Capabilities of Gemini Models in Medicine
Review of the Paper on Capabilities of Gemini Models in MedicineReview of the Paper on Capabilities of Gemini Models in Medicine
Review of the Paper on Capabilities of Gemini Models in Medicine
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)
 
LLMs Service that provides what users want to know
LLMs Service that provides what users want to knowLLMs Service that provides what users want to know
LLMs Service that provides what users want to know
 
Exploring Deep Learning Acceleration Technology Embedded in LLMs
Exploring Deep Learning Acceleration Technology Embedded in LLMsExploring Deep Learning Acceleration Technology Embedded in LLMs
Exploring Deep Learning Acceleration Technology Embedded in LLMs
 
LLM 모델 기반 서비스 실전 가이드
LLM 모델 기반 서비스 실전 가이드LLM 모델 기반 서비스 실전 가이드
LLM 모델 기반 서비스 실전 가이드
 
PaLM Paper Review
PaLM Paper ReviewPaLM Paper Review
PaLM Paper Review
 
The Deep Learning Compiler
The Deep Learning CompilerThe Deep Learning Compiler
The Deep Learning Compiler
 
History of Vision AI
History of Vision AIHistory of Vision AI
History of Vision AI
 
Aws architecture
Aws architectureAws architecture
Aws architecture
 
Enhanced ai platform
Enhanced ai platformEnhanced ai platform
Enhanced ai platform
 
Nvidia architecture
Nvidia architectureNvidia architecture
Nvidia architecture
 
Ai based on gpu
Ai based on gpuAi based on gpu
Ai based on gpu
 
Real estate trust solution
Real estate trust solutionReal estate trust solution
Real estate trust solution
 
Transfer learning usage
Transfer learning usageTransfer learning usage
Transfer learning usage
 
Infra as a model service
Infra as a model serviceInfra as a model service
Infra as a model service
 
Bayesian learning
Bayesian learningBayesian learning
Bayesian learning
 
Deep learning financial product recommendation model
Deep learning financial product recommendation modelDeep learning financial product recommendation model
Deep learning financial product recommendation model
 
Deep Learning Through Various Processes
Deep Learning Through Various ProcessesDeep Learning Through Various Processes
Deep Learning Through Various Processes
 
Reinforcement learning
Reinforcement learningReinforcement learning
Reinforcement learning
 
Jenkins in finance
Jenkins in financeJenkins in finance
Jenkins in finance
 

검색엔진에 적용된 딥러닝 모델 방법론

  • 2. 검색엔진 용어 정리 검색 엔진 구조 3parts : software components, interfaces, relationships 2개의 필요조건 effectiveness(효과성) : 검색 결과의 품질, most relevants set of document efficiency(효율성) : response time, throught Indexing Process(색인 처리) Test acquisition(텍스트 획득) : 문서를 저장, 크롤링하여 구축 Text transformation(텍스트 변환) : 문서를 index terms of features로 변환 Index Creation(색인 구축) : create data structures to support fast searching efficiently updated/inverted indexes(역색인) Query process(질의 처리) User interaction(사용자 상호작용) : creation and refinement of query/display of results Ranking(순위 부여) : uses query and indexes to generate ranked list of documents based on retrieval model Evaluation(평가) : effectiveness and efficiency effectiveness depends on retrieval model efficiency depends on indexes offline activity
  • 3. 검색엔진의 기본 구조 구성요소 역할 설명 문서수집기 (Crawler) 위치정보 수집 새로 생성, 업데이트 문서, 파일 등 수집 색인기 (Indexer) 위치정보 저장 , 색인데이터베이스 수집 위치 정보 저장, 수집된 정보 위치 DB 검색기 (Searcher) 색인데이터베이스, 검색 검색한 키워드에 대한 색인 DB 검색 모듈 질의관리기 (Query Manager) 검색결과, 전달 Client와 검색기 사이 정보 전달
  • 5. 색인어 추출 방법 구분 설명 N-gram 방법 글자를 겹쳐서 색인어 추출 방법 ex) 정보검색을 “정보",”보검",”검색” 등 N-gram 장점 빠지는 정보 없이 모두 검색 가능 신조어 검색 가능, 색인어 리스트 구성 N-gram 단점 틀린 내용 다수 포함, 검색품질 저하 색인어 리스트 크기가 커짐 N-gram 적용 형태소 분석 오류 시 사용 문서의 건수가 적고, 재현율 우선 시 텍스트 추출 → Document Data Store → 텍스트 변환(Parser, Stopwords 제거, Stemming, 링크 추출 및 분석, 정보 추출, 분류기) → 색인 생성
  • 7. 일반 검색에서 텍스트 생성 검색 엔진 + 텍스트 생성 = 적응형 검색 엔진 사용자 Query → 대안(생성) Query 추가 → 검색 범위 확장 사용자 입력 query를 받음 query time-analysis 파이프라인에 query를 넘긴다. 토크나이저와 여러개의 필터를 거쳐 처리된 퀴리를 반환 변경된 query를 RNN 모델에 입력. 출력 값으로 alternative queries 들을 받음 original fitered query + alternative query = parsed query 역색인을 통해 쿼리에 맞는 정보를 찾음
  • 8. Automatic Query Expansion 결과가 없는 쿼리를 최소화 한다. - 비슷한 검색 결과를 갖는 쿼리끼리 연결 짓기 - 동일한 사용자가 특정 시간(time windows)동안 보낸 쿼리 연결 짓기 - 비슷한 검색 용어(search terms)를 포함한 쿼리 연결 짓기 - 색인된 데이터에서 출력 sequence 선택하기 - 비지도 학습으로 텍스트 얻기 재현률(recall)을 높힌다. 정확도(precision)을 높힌다.
  • 9. Unsupervised query expansion 사용자 쿼리를 one-hot encoding된 character vector로 변환 RNN(LSTM,GRU) 모델에 입력 → Transformer 모델에 입력 첫번째 character vector 출력을 다시 모델에 입력 마지막 character가 나올 때까지 계속 반복 (“rn”등 delimeter) → 공통 term이 들어간 쿼리를 사용자가 입력하면, RNN이 관련있는 term을 추가해 “완성"해 줌 → 완성된 쿼리를 입력하면, RNN이 검색 기록에서 비슷한 쿼리를 찾아서 생성해 줌 Neural Network으로 질의 Query를 생성하여 검색 결과 향상
  • 10. 그럴듯한 쿼리들 제안하기 Ternary Search Tree https://www.cs.usfca.edu/~galles/visualization/TST.html Autocomplete Related Searched Personalization Trending topics n-gram 활용 (bi-gram, tri-gram) https://m.blog.naver.com/olpaemi/222003279473
  • 12. word embedding을 사용해 검색 결과의 순위 지정하기 기존의 검색랭킹 모델? Slope one (Collaborative Filtering) - 다른 사람들과 다른 아이템에 대한 정보를 이용하여 특정인의 특정아이 템에 대한 정보를 추정 - 아마존의 상품 추천시스템에서 사용 랭킹 모델의 2가지 과정 Information Retrieval 사용자의 질의와 검색 대상인 컨텐츠 사이의 언어적 통계정보를 이용하여 Relevance를 측정 예) Boolean, TF*IDF Model, Contents based Rank model Information Filtering 컨텐츠 및 도메인의 특성을 이용하여 컨텐츠의 quality 측정하고 이를 이용 해 컨텐츠를 순위화 예) PageRank, Snowrank 등 • ad-hoc based Rank model 두가지 모델이 혼용되어 Ranking Model
  • 13. 순위 지정 및 추천을 위한 document embedding
  • 15.
  • 16. Naver C-Rank 웹사이트의 랭킹 계산 C-Rank의 C는 Creator의 약자 Context : 주제별 관심사의 집중도 Content : 생산되는 정보의 품질 Chain : 생산된 콘텐츠는 어떤 연쇄 반응을 보이며 소비/생산되는지
  • 17. Naver D.I.A구도 D.I.A는 Deep Intent Analysis의 약자 네이버의 데이터를 기반으로 키워드 별로 사용자들이 선호하는 문서들에 대한 점수를 랭킹에 반영한 모델 문서의 주제 적합도, 문서의 의도, 경험 정보, 독창성, 적시성, 정보의 충실성, 상대적인 어뷰징 척도 등의 여러오인들이 복합적으로 반영됨
  • 20. Open AI Paper Trend 분석
  • 21. CLIP
  • 22. Introduction Learning Transferable Visual Models From Natural Language Supervision 방대한 text 데이터셋을 학습한 내역을 기반으로 이를 이미지와 연결시켜주는 연결고리 역할을 통해 vision task에서 여러 SOTA 모델들의 기반이 되고 있다.
  • 23. Method CLIP는 처음에 Contrastive Learning을 수행함 Contrastive Learning이라는 것은 SSL(Self-Supervised Learning)의 한 종류를 의미함(SimCLR 논문 참고) 결국, Contrastive learning이라는 것은 두 개의 input에 대해서 각각 encoder를 적용해서 나온 2개의 embedding의 유사도를 계산하는 방식 diagonal term이 유사도가 가장 커야되고, 나머지 off-diagonal 부분은 유사도가 거의 없어지도록 loss function을 설정해서 학습이 진행됨
  • 24. 두 번째는, text에 대한 encoder값을 만들어낸다. 여러 label에 대한 text embedding을 각각 만들어내는 과정 마지막으로, 임의의 image를 넣어서, 그 image를 embedding으로 만들어준 후, text embeddings과의 유사도 비교를 통해서 가장 유사도가 높은 항목을 text label로 선정한다. 이 경우, 학습에 이용되지 않는 image가 들어와도, label prediction이 이루어질 수 있기 때문에 zero-shot learning이 가능 총 5개의 ResNet, 3개의 ViT를 downstream model로 선정하여 training을 하였다. 모든 model은 32 epochs를 반복했으며, Adam을 이용함 Contrastive learning에서 image_encoder는 ResNet-50, text_encoder는 Transformer를 이용함
  • 26. SimCLR Paper Review A Simple Framework for Contrastive Learning of Visual Representations https://kyujinpy.tistory.com/39 초반에 제안된 SSL의 방법은 Generative Learning과 Proxy task임 Autoencoder와 같이 Encoder와 Decoder로 구성되어 있는 모델로 SSL을 하는 것이 Generative Learning이다. Generative Learning은 Encoder와 Decoder 둘 다 학습해야 하기 때문에 Computational cost가 크다는 것이 단점 또한 SSL 모델을 Image Classification과 같은 학습에 활용 시 Decoder의 의미가 퇴색함 Proxy task는 Generative learning과 다르게 Decoder의 구조가 없고, 미리 사용자가 label을 만들어서 작업을 수행하는 것 여기서 파생되는 대표적인 문제는 “사용자가 만든 label이 기존보다 과연 고차원적인 정보를 만드는데 도움이 될까?”라는 점 Proxy task의 대표적인 모델인 Exemplar와 Jigsaw Puzzle이다.
  • 27. Exemplar 이미지가 50만장이 있다면, 각각의 이미지를 하나의 label로 생각해서 총 50만개의 label을 사용자가 만든다. 그 각각의 이미지마다 Random Augmentation을 만들어서, 하나의 집단을 original image의 label에 전부 할당한다. 위의 과정을 모델이 학습시킨다.
  • 28. Jigsaw Puzzle Jigsaw Puzzle는 총 9개의 Patch들을 서로 섞어서 그 순서를 맞추는 문제이다. 이때 9!=362,880개의 엄청난 가짓수가 있기 때문에 각 이미지ekd 69개만 활용해서 이용함. 즉, 각 이미지 patch들이 몇번째 이미지인지 해결하는 Pretext task인데, 이러한 puzzle을 풀면서 학습된 모델이 Image classification이나 Object Detection에 좋다고 논문의 저자들이 얘기함
  • 29. Contrastive learning Proxy task의 경우 사람이 직접 labeling을 만들어야 한다는 것이 가장 큰 문제점이다. Proxy task를 통해서 학습된 모델이 과연 기존의 이미지보다 고차원적인 information을 갖는다고 말할 수 있을지 의문이 있었기 때문에 Contrastive learning이 나오게 되었다. Back ground Knowledge : Self-Supervised-Learning, Contrastive Learning Pretext task : Self-Supervised-Learning을 학습하기 위해서, 사용자가 만든 문제 Downstream task : Self-Supervised-Learning을 적용해서 풀 문제 1. SSL은 처음에 label이 없는 데이터셋을 가지고, 학습을 진행 (Pretext task) - output은 보통 embedding형태로, 실제 이미지와 output간의 similarity를 계산해서 판단함 2. SSL을 통해 학습한 모델을 기존의 모델에 적용해서 평가 (Downstream task) - Linear evaluation, Semi Supervised Learning, Transfer Learning 예시) ImageNet을 활용해서 Image Classification을 진행한다 - Linear evaluation : Pretext task를 통해서 학습했던 모델의 weights를 freeze 시키고 난 후, 뒤에 FC layer를 붙여서 fine-tunning을 진행함 - Semi Supervised Learning : 데이터셋의 label을 1%~10% 사이만 이용해서 학습시키는 것 - Transfer Learning : ImageNet으로 학습한 모델을 transfer-learning 시켜서 다른 dataset(CIFAR 등등)을 평가
  • 30. SimCLR의 구조 1. X라는 데이터셋을 각각 2번 aumentation시켜서, Xi, Xj를 얻는다. 2. 각각 Xi와 Xj에 f(x)를 적용한다. f(x)는 보통 ResNet-50이다. 3. 그 다음 Projection head라고 불리는 g(x)를 적용한다. 4. Projection head에서 나온 embedding 값을 InfoNCE(Contrastive loss)를 이용해서 서로의 유사도를 계산해서 loss function을 계산한다. - 여기서 보면 분자는 positive sample에 대한 서로의 유사도이고, 분모는 전체 데이터 셋(positive sample+negative sample)에 대한 유사도의 총합을 이용해서 probability를 계산 - 실제 코드에서는 Cross Entropy loss를 이용 (Cross Entropy의 x에 similarity를 대입한 것과 같음) Linear Evaluation에 대한 성능평가 인데, 단일 augmentation을 이용했을 때 성능이 가장 좋지 않았다. Color + Crop 조합을 이용했을 때 가장 성능이 좋다는 것을 알 수 있다.