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
16. Naver C-Rank
웹사이트의 랭킹 계산
C-Rank의 C는 Creator의 약자
Context : 주제별 관심사의 집중도
Content : 생산되는 정보의 품질
Chain : 생산된 콘텐츠는 어떤 연쇄
반응을 보이며 소비/생산되는지
17. Naver D.I.A구도
D.I.A는 Deep Intent Analysis의 약자
네이버의 데이터를 기반으로 키워드 별로 사용자들이
선호하는 문서들에 대한 점수를 랭킹에 반영한 모델
문서의 주제 적합도, 문서의 의도, 경험 정보, 독창성, 적시성,
정보의 충실성, 상대적인 어뷰징 척도 등의 여러오인들이
복합적으로 반영됨
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 조합을 이용했을 때 가장 성능이 좋다는 것을 알 수
있다.