- 검색에 관한 기초 내용
- 검색 시에 당면할 수 있는 중요 문제
- 신경망이 검색 엔진에 더 효과적일 수 있는 이유
이 책은 딥러닝(deep learning, DL)이라는 머신러닝의 하위 분야 기법을 이용해 검색 엔진의 동작에 영향을 줄 수 있는 모델과 알고리즘을 더 효과적으로 구축하는 데 필요한 내용을 담고 있다.
딥러닝 알고리즘이 로비가 하는 일을 담당하게 하면 검색 엔진은 더 나은 검색 엔진을 제공할 수 있을 테고, 따라서 최종 사용자에게 더 정확한 답을 제공할 수 있을 것이다.
인공지능 > 머신러닝 > 딥러닝
1.1 신경망과 딥러닝
딥러닝이란 머신러닝의 한 분야이며, 심층 신경망을 이용해 컴퓨터가 사물을 점진적으로 표현하고 인식할 수 있도록 머신이 학습할 수 있는 분야.
인공신경망(artificial neural network): 뇌의 신경세포가 그래프 꼴로 조직되는 방식에서 영감을 얻어 만든 연산 패러다임
- 입력 계층(input layer, 또는 입력층): 입력 내용을 받아들이는 첫번째 계층
- 은닉 계층(hidden layer, 또는 은닉층): 입력 - 출력 사이의 계층
- 출력 계층(output layer, 또는 출력층): 마지막 계층으로서 신경망의 결과 출력
1.2 머신러닝이란?
이전까지 쌓아온 경험(이전에 관측한 내용과, 이러한 관측치로부터 알고리즘이 추정해야 할 내용이 서로 쌍을 이룬 형태)을 바탕으로 최적해를 학습해 낼 수 있는 알고리즘을 기반으로 문제를 해결하는 자동화된 접근법
딥러닝은 머신러닝을 수행하는 방법 중 한 가지에 불과하며, 심층 신경망을 사용한다는 점이 여타 머신러닝 알고리즘과 다름
머신 러닝
지도학습(supervised learning, 또는 감독학습): 각 입력에 따른 적합한 출력을 지정
- 훈련 단계(training phase) 동안 머신러닝 알고리즘은 훈련 집합을 쪽쪽 씹으며 입력 텍스트를 출력 범주에 대응(map)시키는 일과 같은 방식을 배움
- 훈련 단계를 마치면 머신러닝 모델(machine learning model, 또는 기계학습 모델)을 사용해 일을 마무리하며, 출력 예측 시 활용
비지도학습(unsupervised learning, 또는 자율학습)
- 예상되는 출력에 대한 정보가 없는 데이터를 가지고도 학습 단계(learning phase)에서 패턴과 데이터 표현을 추출
1.3 검색 시에 딥러닝으로 할 수 있는 일
딥러닝 알고리즘을 적용한 검색엔진의 이점
- 최종 사용자에게 연관도가 더 높은 결과 제공
- 텍스트를 검색할 때와 같은 방법으로 이진 형식으로 된 내용 검색 가능(이미지 검색)
- 검색 내용에 쓰인 언어와 다른 언어를 사용하는 사용자에게도 내용 제공
- 데이터를 더 정교하게 처리
1.5 유용한 정보 꺼내기
검색 엔진이란?
- 사람들이 정보를 끄집어 내는 데 사용할 수 있는 시스템. '데이터'를 '정보'로 만들어 제공하는 역할
- 수직 검색 엔진(vertical search engine): 특정한 문서 형식이나 특정 주제에 특화 (ex. 구글 스칼라)
검색 엔진의 역할
- 색인화(indexing): 데이터를 효율적으로 수집하고 저장해 둠으로써 빠르게 검색
- 쿼리 처리(querying, 즉 질의처리): 최종 사용자가 정보를 찾아볼 수 있게 검색 기능 제공
- 순위지정(ranking): 사용자의 정보 요구를 가장 잘 충족하기 위해 특정 지표에 맞춰 순위 지정해 결과 표시
1.5.1 텍스트, 토큰, 용어, 검색에 관한 기초 지식
텍스트 분석(text analysis): 용어(term)라고 부르는 텍스트 조각을 추출하고 저장 (텍스트를 그 구성 요소인 단어별로 분해)
용어(terms): 텍스트 분석 알고리즘에 의해 생성된 최종 단위(단어 외 문장 그룹이나 단어의 일부일 수 있음). 검색 엔진이 데이터를 저장해 결과적으로 데이터를 검색하기 위해 사용하는 기본 단위
키워드 검색(keyword search): 사용자가 단어 세트를 입력하면 검색 엔진이 단어의 일부 또는 모든 용어를 포함하는 문서 모두 반환
쿼리(query, 질의 또는 질의어): 사용자가 무언가를 검색하기 위해 입력하는 텍스트
검색 단계를 빨리 계산할 수 있는 방법?
역색인(inverted indexes, 또는 역인덱스): 용어가 원래 들어 있던 텍스트에 용어를 매핑하는 데이터 구조 (책의 뒤편에 나오는 색인 구조와 같음)
텍스트 분석 파이프라인 구성의 두가지 유형 빌딩 블록
- 토크나이저(tokenizer, 즉 토큰화기 또는 토큰 생성 함수): 텍스트의 스트림을 단어나 구 또는 기호나 토큰(token)이라고 부르는 그 밖의 단위에 맞춰 분할하는 컴포넌트
- ex. 화이트스페이스(whitespace) 문자를 만날 때마다 토큰 분할
- 토큰 필터(token filter): 토큰 스트림을 받아들여 새 토큰으로 수정, 삭제하거나 추가할 수 있는 컴포넌트
- ex. 불용어 목록(stopword list, '정지어 목록', '사용하지 않을 블룩)이라는 일종의 블랙리스트에 일치하는 토큰 제거
색인화(indexing, 인덱싱): 텍스트의 스트림을 분석한 결과로 나온 용어들을 검색 엔진에 저장하는 전체 과정
문서(document): 색인화할 텍스트 조각
색인화 예제
- 'the brown fox jumped over the lazy dog' (문서 1)
- 'a quick brown fox jumps over the lazy dog' (문서 2)
- 역색인 표
-
용어 |
문서 식별부호 |
brown |
1, 2 |
fox |
1, 2 |
jumped |
1 |
over |
1, 2 |
lazy |
1, 2 |
dog |
1, 2 |
quick |
2 |
jumps |
1 |
- 불용어 기반의 토큰 필터로 인해 'the' 용어 항목 없음
- 첫번째 열의 용어 사전과 각 행의 각 용어와 관련된 게시 목록(posting list), 즉 문서 식별자 집합 찾기 가능
- 역색인을 사용해 특정 용어가 포함된 문서 아주 빠르게 검색 가능
- ex. 'quick' 용어 검색 시 'quick'이라는 용어에 해당하는 게시 목록 살펴서 문서 2 반환
- 실무에서는 문서의 서로 다른 부분들에 대한 색인들을 동일한 검색 엔진에서 모두 처리할 수 있게 역색인을 중복해서 갖춰둠
검색(retrieval)
쿼리 파서(query parser, 쿼리 구문분석기): 사용자가 입력한 검색 쿼리 텍스트를 검색 엔진이 찾아야 할 용어와 역색인에서 일치 항목을 찾을 때 사용하는 방법을 나타내는 일련의 절(clause)로 변환
- ex. 'deep + learning for search' 쿼리 예제에서 기호 +와 '를 이해하는 역할 (deep, learning 반드시 포함)
- 지능형 쿼리 파서의 경우 단어의 의미를 반영하는 절들 생성 가능
색인 시간 텍스트 분석(index-time text analysis): 색인화 하는 동안 텍스트 분석 파이프라인은 입력 텍스트를 색인에 저장할 용어로 분할
찾기 시간 텍스트 분석(search0time text analysis): 쿼리가 검색을 하는 동안 쿼리 문자열을 용어별로 분리하기 위해 텍스트 분석 적용
역색인
- 시스템이 텍스트 분석(토큰화 및 필터링)을 통해 사용자가 쿼리 시간에 입력할 것으로 예상되는 용어에 맞춰 텍스트를 분류함으로써 역색인이라고 부르는 데이터 구조에 배치하는 기술
- 저장 공간 측면 - 효율적으로 색인 작업 가능
- 검색 소요 시간 측면 -효율적으로 검색 가능
1.5.2 연관도 우선
연관도: 문서가 특정 검색 쿼리와 관련해 얼마나 중요한지 측정하는 기준
- 검색 모델(retrieval model)은 연관도의 개념을 가능한 한 정확하게 포착해야 함
- 연관도가 높은 결과일수록 검색 결과의 순위지정(rank) 점수 높음
1.5.3 고전적인 검색 모델
벡터 공간 모델(vector space mode., VSM)
- 각 문서와 쿼리는 벡터로 표현되며 문서 벡터와 쿼리 벡터가 가까울 수록 유사
- 가중치(weights): 검색 엔진의 나머지 문서와 관련해 해당 용어가 문서/쿼리에서 얼마나 중요한지를 나타내는 실제 수
- 용어빈도-역문서빈도(term frequency-inverse document frequency, TF-IDF, 또는 용어빈도/역문헌빈도)
- 단일 문서에 용어가 자주 나타날수록(TF 클수록) 중요
- 모든 문서에 걸쳐 어떤 용어가 흔하게 나타날수록(IDF 클수록) 중요성 떨어짐
Okapid BM25: 확률론적 모델. 문서가 특정 쿼리와 연관될 확률을 추정해 검색 결과 순위로 매김
1.5.4 정밀도와 재현율
정밀도(precision): 검색된 문서들 중 연관성이 있는 문서들의 비율을 분수로 나타냄
- 정밀도 높을수록 사용자는 검색 결과 목록의 맨 위에서 원하는 결과 대부분 찾을 수 있음
재현율(recall): 연관성이 있는 문서들 중 검색된 문서들의 비율을 분수로 나타낸 것
- 재현율 높을수록 검색 결과에서 모든 관련 결과 찾을 수 있지만, 관련 결과라고 해서 다 상위 차지는 못할 수 있음(랭킹 낮을 수 있음)
검색 엔진의 효과 측정 옵션: 공개된 데이터셋 사용
1.6 미해결 문제들
필요한 모든 정보를 다 얻으려면 몇 번에 걸쳐 묻고 응답하는 과정이 반복될 수 있음
- 심층 신경망을 사용해 더 쉽게 사용 가능하고 더 발전한 검색 엔진을 만들고자 할 때 이러한 문제들 인식 필요
1.7 검색 엔진 블랙박스 열기
효과적인 검색 쿼리를 만들 때 중요한 문제 - 어떤 쿼리 언어를 사용하는가.
쿼리 언어에 따라 검색 결과가 많이 달라질 수 있으며, 실무에서 검색 결과의 순위를 수동으로 조정하는 것은 거의 불가능
- 딥러닝으로 그러한 문제를 해결하거나 최소한 완화시키는데 어떻게 도움이 될 수 있을까
1.8 구조의 손길을 펼치는 딥러닝
딥러닝: 심층 신경망을 사용해 일반적으로 텍스트나 이미지 또는 데이터의 깊은 표현을 배우는 데 초점을 맞춘, 머신 러닝의 하위 영역
- 적어도 두 개의 은닉 계층을 가지고 있을 때 심층(deep) 신경망으로 간주
- 심층 신경망은 특히 고도로 합성된 데이터(작지만 비슷한 성분들이 큰 물체 형성 시)에 사용할 때 큰 도움이 되며, 이미지와 텍스트가 이 경우에 해당
텍스트 문서 집함 내에서 단어 표현을 학습하기 위해 신경망 알고리즘 사용 시, 밀접하게 관련된 단어들은 벡터 공간에서 서로 인접
- word2vec신경망 알고리즘 사용해 단어 벡터(word vector) 학습
단어 매장(word embedding, 단어 임베딩)으로도 불리는 단어 벡터나 문서 매장(document embedding, 문서 임베딩)으로도 불리는 문서 벡터에 의존하는 검색 모델이 있으면 좋을 것이므로 이를 위해 최근접 이웃(nearest neighbor) 보며 문서 유사도나 단어 유사도를 효율적으로 계산하고 사용
단어나 문장이나 문서가 나타내는 맥락을 사용해 가장 적절한 표현을 추론함으로써 텍스트에 숨어 있는 의미를 잘 표현 가능하고, 검색엔진의 연관도 높일 수 있음
딥러닝 vs 심층 신경망
딥러닝은 주로 심층 신경망을 이용해 단어, 텍스트, 문서, 이미지의 표현을 배우는 일
심층 신경망: 더 넓게 응용. (ex. 언어 모델링, 기계 번역 등)
1.9 색인아, 뉴런을 만나 주지 않을래?
신경망과 검색 엔진을 통합하는 몇가지 방법
- 훈련 후 색인(train-then-index):
- 문서 모음(텍스트, 이미지)을 가지고 망을 훈련
- 훈련에 쓴 데이터와 동일한 데이터를 가지고 검색 엔진에서 색인
- 검색 시 검색 엔진과 신경망 사용
- 색인 후 훈련(index-then-train):
- 검색 엔진에서 문서 모음 색인화
- 색인화된 데이터로 신경망을 훈련(때때로 데이터 변경 시 다시 훈련)
- 검색 시 검색 엔진과 신경망 함께 사용
- 훈련으로 색인 추출(train-extact-index):
- 문서 모음을 가지고 망을 훈련
- 훈련된 망을 사용해 데이터와 색인화될 유용한 자원 함께 생성
- 검색 엔진만 있으면 검색 가능
1.10 신경망 훈련
신경망 학습 알고리즘은 기대 출력과 실제 출력간의 차이를 취해 이를 바탕으로 각 계층의 가중치를 조정함으로써 다음 차례에 나올 출력 오차를 줄임
데이터가 충분할 시 오차율을 크게 줄일 수 있으며, 활성 함수는 예측을 수행하는 신경망의 능력과 학습 속도에 영향 미침
역전파 알고리즘: 기대 출력과 실제 출력이 주어지면 알고리즘은 각 뉴런의 오차(error)를 역전파하고 결과적으로 출력에서 입력까지 한 번에 한 계층씩 각 뉴런의 연결부에 대한 내부 상태 조정
정적모델(static model, 또는 정태모형)의 경우 훈련 집합을 갱신하려면 전체 과정을 순서대로 반복해야 하는데, 끊임없이 흘러 들어오는 신규 데이터를 처리해야 하는 검색 엔진과 같은 시스템에는 적절하지 않음
- 신경망에 재훈련이 필요하지 않은 온라인 학습(online learning) 도입?
1.11 신경 검색의 약속들
신경 검색 활용
- 의미를 깊이 파악하는 딥러닝의 능력을 통해 기초 데이터에 잘 적응하는 관련 모델과 순위지정 함수 얻을 수 있음
- 이미지 검색에서 좋은 결과를 주는 이미지 표현 학습 가능
- 의미적으로 유사한 단어나 문장 또는 단락등을 파악하기 위해 딥러닝이 생성한 데이터 표현에 적용 가능
- 텍스트 생성, 번역, 검색 엔진 최적화 등..
검색 시스템에 신경망 활용
- 색인화 시 역색인에 진입하기 전 데이터 보강 위한 신경망 사용
- 검색 쿼리 범위 확대하거나 지정해 더 많은 수의 결과나 정환한 결과 제공하는 일에 신경망 사용
- 사용자가 검색 쿼리를 입력할 수 있도록 돕거나, 검색 쿼리를 번역하는 일에 신경망 사용
한계
요약
- 정보 검색에 대한 일반적인 접근 방식에는 한계점과 단점이 있음
- 텍스트 분석은 색인화와 검색 단계에서 모두 중요한 작업
- 연관도는 검색 엔진이 사용자의 정보 요구에 얼마나 잘 대응하는지 보여주는 기초 측도며, 사용자마다 맥락과 의견이 크게 다를 수 있으므로 연관도 측정 시 검색 엔지니어에게 지속적으로 초점 맞춰야 함
- 딥러닝은 심층 신경망을 이용해 의미적으로 목적에 적합한 유사성 측도를 포착할 수 있는 내용의 표현을 학습하는 머신러닝 분야
- 신경 검색은 딥러닝을 사용해 검색과 관련된 다양한 작업을 개선하는 것을 목표로함