https://cloud.google.com/solutions/machine-learning/overview-extracting-and-serving-feature-embeddings-for-machine-learning?hl=ko
개요: 머신러닝을 위한 특성 임베딩 추출 및 제공
이 문서는 ML(머신러닝)을 위한 특성 임베딩 추출 및 제공 과정을 살펴보는 시리즈 중 하나입니다. 이 문서에서는 특성 임베딩의 개념과 특성 임베딩이 중요한 이유를 설명합니다. 또한 텍스트 및 이미지의 의미적 유사성에 집중하여 특성 임베딩과 관련된 도메인과 사용 사례를 살펴봅니다. 또한 이 문서에서는 Google Cloud에서 특성 임베딩 추출 및 제공을 대규모로 사용 설정할 수 있는 TensorFlow Hub(tf.Hub
)와 같은 아키텍처 및 기술을 설명합니다.
이 시리즈의 두 번째 문서인 TensorFlow Hub 및 Cloud Dataflow를 사용한 텍스트 시맨틱스 유사성 분석에서는 텍스트 임베딩을 사용하여 문서의 시맨틱스 유사성을 수행하는 방법을 설명합니다.
소개
머신러닝의 목적은 데이터에서 패턴을 추출하고 이러한 패턴을 이용해서 예측을 수행하는 것입니다. 이러한 예측적인 패턴은 입력 데이터 특성과 예측할 결과 대상 사이의 관계를 나타냅니다. 일반적으로 비슷한 특성 값을 지닌 인스턴스는 비슷한 예측 결과로 이어집니다. 따라서 이러한 입력 특성의 표현은 학습된 패턴의 본질 및 품질에 직접적으로 영향을 줍니다.
예를 들어 주택 상태 데이터를 기준으로 주택 임대료를 산정하기 위한 가격 견적기를 작성한다고 가정해보세요. 이를 위해서는 각 주택을 실제(숫자) 값의 특성 벡터로 표현해야 합니다. 그리고 이러한 벡터의 각 요소는 주택의 한 특성이 지닌 가치를 나타냅니다. 이 경우에 유용한 특성에는 주택 크기, 연식, 방 개수, 위치, 방향(주택이 바라보는 방향)과 같은 것들이 포함될 수 있습니다. 특성이 비슷한 주택들은 비슷한 가격이 도출될 것입니다.
주택 가격 책정 예시의 특성에 지정된 값은 이미 숫자일 수도 있고, 원-핫 인코딩을 통해 숫자 특성으로 변환될 수도 있습니다. 하지만 다른 사례들에 사용되는 특성 표현은 더 복잡합니다. 다음 사례들을 고려해보세요.
- 문서 제목 또는 내용으로 문서의 주제 식별
- 특정 잡지 표지를 보고 비슷한 잡지 찾기
- 텍스트 기반 리뷰를 통해 특정 제품과 관련된 고객의 정서 이해
- 사용자가 지난 주에 들었던 음악에 따라 새로운 음악 목록 생성
- 사용자가 현재 보고 있는 것과 비슷한 패션 아이템이나 예술품 제안
- 자연어 쿼리에 따라 FAQ 목록에서 가장 관련 있는 답변 검색
이러한 예에서 볼 수 있듯이, 입력 데이터는 구조화되어 있지 않거나, 구조화되지 않은 콘텐츠가 포함된 특성을 갖습니다. 이러한 유형의 특성에는 문서 제목 및 내용 또는 고객 제품 리뷰와 같은 텍스트, 잡지 표지, 패션 아이템 또는 예술품과 같은 이미지, 노래와 같은 오디오가 포함됩니다. 머신러닝 작업을 위해 이러한 유형의 데이터를 사용하기 위해서는 이러한 유형의 데이터가 실제 값으로 표현된 간결한 특성 벡터 표현이 필요합니다. 이러한 벡터를 임베딩이라고 부릅니다.
임베딩이란 무엇인가요?
임베딩은 고차원 벡터를 저차원 공간으로 변환하는 것입니다. 이상적으로, 임베딩은 임베딩 공간에서 의미적으로 비슷한 입력 사항들을 가깝게 배치함으로써 입력에 포함된 의미 중 일부를 포착합니다.
텍스트 임베딩
텍스트 표현 예를 고려해보세요. 문서의 제목과 같이 영어 문장에 포함된 단어들을 다음 방법 중 하나로 표현할 수 있습니다.
각 셀이 별개의 영어 단어를 나타내는 매우 크고(고차원) 희박한 벡터 방법을 사용합니다. 이 방법에서는 백만 개의 개별 단어를 나타내기 위해 백만 개의 요소가 사용될 수 있습니다 한 셀의 값은 해당 단어가 문장에서 나타나는 횟수를 나타냅니다. 하나의 영어 문장은 단어가 50개 이상 사용될 가능성이 높지 않으므로, 벡터에 포함된 거의 모든 셀에는 0이 포함될 것입니다.
비교적 작지만 밀도가 높은 벡터(일반적으로 수백 개 정도의 요소만 포함) 방법을 사용합니다. 이 방법에서 각 요소는 단어의 서로 다른 특성을 나타내며, 각 요소에는 단어가 관련 특성을 대표하는 정도를 나타내는 0과 1 사이의 값이 포함됩니다. 실제로 단어는 벡터에 있는 것 만큼 많은 속성을 사용해서 의미적으로 인코딩됩니다. 이 벡터가 임베딩이고, 문서 제목의 의미를 포착하려고 시도합니다.
임베딩 벡터 공간에서 특정 제목에 대한 임베딩은 제목 단어 나열이 다르더라도 비슷한 제목의 임베딩에 가까이 배치됩니다. 예를 들어 'The squad is ready to win the football match'와 'The team is prepared to achieve victory in the soccer game'는 의미가 같지만, 비슷한 어휘가 거의 없습니다. 하지만 이러한 임베딩 표현에서는 시맨틱스 인코딩이 매우 유사하기 때문에 임베딩 공간에서 서로 가까이 놓여야 합니다.
NNLM(Neural-Net Language Model), GloVe(Global Vectors for Word Representation), ELMo(Deep Contextualized Word Representations), Word2vec 등의 여러 모델은 각 단어마다 실제 값 특징 벡터인 단어 임베딩을 학습하도록 설계되었습니다.
예를 들어 영문 위키백과 자료와 같은 대규모 텍스트 자료를 사용하여 Word2vec 모델을 학습하면 남성-여성, 동사 시제, 국가-수도 관계와 같은 시맨틱스 관계가 있는 단어들 간의 의미적 거리와 방향을 캡처하는 임베딩이 생성됩니다. 그림 1은 일부 예제 벡터의 임베딩 공간을 보여줍니다. 자세한 내용은 연속 공간 단어 표현의 언어적 일반성 문서를 참조하세요.
Universal Sentence Encoder는 단어 길이보다 큰 텍스트를 실제 값 특징 벡터(예: 문장, 구 또는 짧은 단락)로 인코딩합니다. 의미적 유사성이 있는 문장들은 임베딩 공간에서 밀접한 거리의 벡터로 인코딩됩니다.
이미지 임베딩
텍스트 시스템과 달리, 이미지 처리 시스템은 개별적인 원시 픽셀 강도를 지닌 이미지를 나타내는 풍부하고 고차원적인 데이터세트로 작동합니다. 하지만 원래의 밀도가 높은 형태의 이미지는 일부 작업에 그리 유용하지 않을 수 있습니다. 예를 들어 잡지 표지 이미지를 보고 비슷한 잡지를 찾거나 참조 사진과 비슷한 사진을 찾아야 한다고 가정해보세요. 입력 사진의 원시 픽셀(2,048 ✕ 2,048)을 다른 사진과 비교하여 비슷한지 여부를 찾는 것은 효율적이거나 효과적이지 않습니다. 하지만 이미지의 저차원 특징 벡터(임베딩)를 추출하면 이미지에 포함된 내용이 무엇인지 알 수 있으므로 더 효과적으로 비교할 수 있습니다.
핵심은 대규모 이미지 데이터 세트(예: ImageNet)에서 Inception, ResNet(Deep Residual Learning) 또는 NASNet(Network Architecture Search)과 같은 이미지 분류 모델을 학습시키는 것입니다. 그런 다음 마지막 softmax 분류 기준이 없는 모델을 사용하여 입력 테스트에 따라 특징 벡터를 추출합니다. 이 유형의 특징 벡터로 검색 작업 또는 유사성 일치 작업에서 이미지를 효과적으로 표현할 수 있습니다. 특징 벡터는 다른 특성과 함께 ML 작업용 추가 입력 특성(벡터)으로 작동할 수 있습니다. 예를 들어 의류를 쇼핑 중인 고객에게 패션 아이템을 추천하는 시스템에서는 색상, 치수, 가격, 유형, 하위유형을 비롯한 개별 항목을 기술하는 속성이 사용될 수 있습니다. 패션 아이템 이미지에서 추출된 특성과 함께 이러한 모든 특성을 추천자 모델에서 사용할 수 있습니다.
그림 2에서 보여주는 t-SNE Map 실험은 임베딩을 사용하여 비슷한 예술작품을 찾는 예시 중 하나입니다. 다음 이미지는 Google Arts & Culture 컬렉션에 있는 콘텐츠 중 일부에서 에서 가져온 것입니다.
이와 마찬가지로 오디오 데이터의 경우에는 고차원 파워 스펙트럼 밀도 계수로부터 저차원 특징 벡터를 추출할 수 있습니다. 그런 다음 다양한 검색 태스크, 추천 앱, 기타 ML 기반 애플리케이션에서 이러한 특징 벡터를 효율적으로 사용할 수 있습니다.
협업 필터링 및 임베딩
임베딩은 협업 필터링(CF) 작업에서 비롯되었습니다. CF는 다른 여러 사용자의 관심사를 기준으로 특정 사용자의 관심 항목을 예측해야 하는 추천 시스템에서 사용되는 기술입니다. 예를 들어 영화를 추천한다고 가정해보세요. 사용자 수가 1,000,000명이고, 영화가 500,000개 있고, 각 사용자가 시청한 영화 목록이 있습니다. 이 예시에서는 영화 또는 사용자에 대한 다른 어떠한 정보도 사용하지 않고 사용자 ID, 영화 ID, watched
플래그만 사용합니다. 이러한 정보를 하나로 합하면 데이터 세트가 거의 생성되지 않습니다.
사용자의 시청 기록을 기준으로 서로 유사한 영화를 확인하려고 합니다. 이를 위해서는 특정 사용자가 시청한 영화는 '영화 선호도' 공간(임베딩)에서 가까이 배치되는 저차원적인 공간으로 영화를 임베딩하면 됩니다. 또한 사용자가 시청한 영화를 기준으로 동일한 공간에서 사용자에 대한 임베딩을 만들 수도 있습니다. 그에 따른 공간에서 사용자 임베딩은 사용자가 시청한 영화의 임베딩과 가깝게 배치됩니다. 이러한 방법에서는 인접한 사용자와 영화는 선호도를 공유하므로 사용자 임베딩에 대한 영화 근접성을 기준으로 다른 영화를 추천할 수 있습니다.
사용자 및 영화와 같은 임베딩은 행렬 분해, 단일 값 분해, 신경 협업 필터링, 신경 분해 머신과 같은 기법을 사용하여 학습시킬 수 있습니다. 그림 3은 2차원 공간의 영화 임베딩 예를 보여줍니다. 첫 번째 차원은 어린이(음수 값) 또는 성인(양수 값) 영화인지 여부를 기술합니다. 두 번째 차원은 각 영화가 블록버스터(양수 값) 또는 저예산 영화(음수 값)에 가까운 지를 나타냅니다. 이 설명에서 음수 값 및 양수 값의 할당은 임의적이며, 좌표 확인을 위해서만 사용됩니다. 이 예시에서 '슈렉' 및 '인크레더블'과 같은 영화는 모두 어린이 영화이자 블록버스터 영화로 간주되므로 임베딩 공간에서 서로 가깝게 배치됩니다.
ML 알고리즘은 이러한 값이 성인 대 어린이 또는 블록버스터 대 저예산 영화와 관련된 요소라는 것을 알지 못하면서도 각 영화의 이러한 차원 값을 학습합니다. 이와 같은 시스템을 빌드하는 방법에 대한 자세한 내용은 TensorFlow로 추천 시스템 빌드를 참조하세요.
기타 임베딩 유형
임베딩 기반 학습은 그래프 연결과 관련하여 그래프에 있는 노드나 전체 그래프 구조와 같은 복잡한 데이터 구조를 나타내기 위한 용도로 사용할 수도 있습니다. 임베딩은 약품 설계, 소셜 네트워크의 친구 추천, 단백질 간 상호작용 감지와 같은 연결 중심의 도메인에서 유용합니다. 이러한 유형의 작업 기술에는 그래프 컨볼루셔널 신경망과 그래프 행렬 완성이 포함됩니다.
또 다른 임베딩 적용 분야는 하나의 모달리티에서 다른 모달리티로 정보를 변환하는 것을 목표로 하는 다중 모달 학습입니다. 예를 들어 자동 이미지 캡션(그림 4 참조)에서는 이미지에 대해 캡션이 자동으로 생성됩니다. (이미지에 표시된 것처럼 완벽하게 변환되지 않는 경우도 있습니다. 예를 들어 아래의 한 캡션에 'fruit stand'와 같은 단어 대신 'fruit salad'가 생성된 것을 볼 수 있습니다.) 또한 사용자는 자연어 설명과 일치하는 이미지를 검색할 수 있습니다. 또는 제공된 비디오 영상에 대해 음악을 생성할 수 있습니다. 이러한 유형의 매칭을 사용 설정하기 위해 동일한 임베딩 공간에서 다중 모달 항목을 인코딩할 수 있습니다.
제공된 컨텍스트로부터 도메인 항목을 나타내는 임베딩 기반 학습의 개념(예: Word2vec 사용)은 다른 도메인에도 적용될 수 있으므로, 비슷한 컨텍스트의 항목은 비슷한 임베딩을 가질 수 있습니다. 여기에는 문서(Doc2vec), 고객 데이터(Customer2vec), 동영상 파일(Movie2vec), 그래프(Graph2vec), 유전자 지도(Gene2vec), 단백질 구조(Protein2vec) 등으로부터의 임베딩 생성이 포함될 수 있습니다.
요약하자면, 임베딩을 추출하여 다음을 나타낼 수 있습니다.
- 텍스트(단어, 문장, 전체 문서), 이미지, 오디오 등과 같은 구조화되지 않은 데이터
- 사용자가 시청한 영화 목록 및 사용자 ID와 같이 상호 작용 컨텍스트만 있고 입력 특성이 없는 항목
- 그래프 및 네트워크와 같은 복잡한 구조 데이터. 예: 소셜 네트워크 및 생화학 화합물
- 텍스트 설명을 사용한 이미지 검색 및 이미지 캡션 작성과 같은 다중 모달 변환
- 위치 및 점유와 같은 희소 특성(이를 밀집 특성으로 변환)
- 인구통계, 사회, 금융, 행동 속성이 300개 이상 포함된 고객 레코드와 같은 고차원 항목(이러한 항목을 보다 간결한 표현으로 변환)
임베딩 사용 사례
패션 아이템, 영화, 휴양지, 뉴스 기사와 같은 항목을 주요 특성이 인코딩된 간결하고 실제 값으로 표현된 특징 벡터(임베딩)로 나타내면 흥미로운 사용 시나리오를 다양하게 지원할 수 있습니다. 이 섹션에서는 이러한 항목 임베딩의 몇 가지 사용 사례를 설명합니다.
유사성 분석
항목이 저차원의 실제 값으로 표현된 특징 벡터로 인코딩된 후에는 탐색 분석 및 시각화를 수행하여 흥미로운 정보와 패턴을 탐색할 수 있습니다. 여기에는 다음이 포함될 수 있습니다.
- 특정 항목에 가장 가까운 항목을 찾을 수 있습니다. 예를 들어 앞에서 설명한 것처럼 뉴스 기사 또는 연구 논문 저장소가 있으면 특정 항목과 가장 비슷한 문서를 찾을 수 있습니다. 이 기술을 사용하면 문서에 다른 이웃 문서 제목을 표시할 수도 있습니다.
- 시판 제품, 영화 또는 자산 목록과 같은 임베딩 공간에서 유사한 항목 그룹을 식별할 수 있습니다. 그런 후 마케팅 캠페인 조정을 위해 각 그룹의 일반적인 고객 특성을 연구할 수 있습니다.
- 특정 항목의 이웃 범위에서 항목의 밀도를 찾을 수 있습니다. 이렇게 하면 인기 있는 주제, 패션 아이템 종류, 음악 장르 등을 찾아낼 수 있습니다.
- 예외 또는 이상 항목 뿐만 아니라 경계 또는 그룹 간 항목을 식별할 수 있습니다. 이 기능은 사기 탐지에 유용할 수 있습니다.
검색
임베딩에서 가장 중요하고, 널리 사용되는 시나리오 중 하나는 비슷한 또는 관련이 있는 항목을 검색하는 것입니다. 이러한 사용 사례는 두 가지 서로 다른 방식인 수동 및 능동으로 구현될 수 있습니다.
수동 검색에서는 사용자가 검색할 항목을 제공하고, 데이터 저장소에서 이것과 유사한 항목을 검색합니다. 예를 들어 사용자의 애완동물 사진과 비슷한 애완동물 사진을 찾거나, 사용자가 제공하는 문서와 비슷한 연구 논문을 검색할 수 있습니다. 이 경우, 시스템은 사용자 항목의 임베딩을 온라인으로 추출합니다. 그런 후 시스템이 유사도 측정항목을 기준으로 입력 임베딩과 가장 비슷한 임베딩 항목을 데이터 저장소에서 검색합니다.
능동 검색에서는 시스템이 컨텍스트를 자동으로 식별하고 이를 검색 쿼리로 변환하여 가장 비슷한 항목을 검색합니다. 예를 들어 다큐멘터리 비디오 라이브러리가 있고 애플리케이션에서 사용자가 비디오를 검색하고 업로드하도록 허용할 수 있습니다. 사용자가 로그인할 때, 여기에서의 컨텍스트는 단지 사용자 ID 뿐입니다(날짜/시간 및 위치와 같은 다른 선택적인 속성도 일부 포함될 수 있음). 이 정보는 사용자 임베딩과 비디오 임베딩 사이의 유사성을 기준으로 해당 사용자에 대해 가장 관련이 있는 동영상을 검색하기 위해 검색 쿼리로 사용됩니다.
수동 및 능동 검색 모두, 시스템이 암시적 또는 명시적 쿼리를 임베딩으로 전환하고, 이러한 임베딩을 저장된 항목의 임베딩과 비교하고, 가장 비슷한 항목을 검색할 수 있어야 합니다.
검색에 임베딩을 사용하는 방법에 대한 추가 예는 다음과 같습니다.
- 제공된 검색 쿼리에 대해 가장 관련 있는 뉴스 기사를 검색합니다.
- 사용자가 제공한 사진과 가장 비슷한 사진을 검색합니다.
- 사용자가 제공한 음악 트랙과 가장 비슷한 음악 트랙을 찾습니다.
- 사용자가 최근에 설치한 것과 관련이 있는 게임 또는 앱 목록을 찾습니다.
- 자연어 쿼리에 따라 FAQ 목록에서 가장 관련 있는 답변을 검색합니다.
- 특정 사용자를 위해 새롭고 흥미로운 영화 또는 노래를 찾습니다.
기계 전이 학습
ML 모델 학습을 위해 희소 데이터, 복잡한 데이터, 고차원 데이터, 구조화되지 않은 데이터를 임베딩으로 인코딩하는 많은 사용 사례가 있습니다.
텍스트, 이미지 또는 다른 유형의 입력 데이터를 특징 벡터로 인코딩하기 위해 선행 학습된 임베딩을 사용하는 것을 전이 학습이라고 부릅니다. 본질적으로 전이 학습은 하나의 머신러닝 작업에서 다른 작업으로 정보를 전달합니다. 일반적인 사용 사례는 데이터가 적은 작업을 위해 대량의 데이터로 학습된 모델을 사용하는 것입니다. 예를 들어 제품 고객 리뷰가 10,000건 뿐인 정서 분류 모델을 학습시키기 위해 수십억 개의 단어 및 문장이 포함된 대규모 텍스트 언어 자료에서 사전 학습된 텍스트 임베딩을 사용할 수 있습니다.
전이 학습을 사용할 경우, 대량의 데이터로부터 추출된 지식(임베딩)을 재사용할 수 있을 뿐만 아니라, 이러한 임베딩 학습을 위해 필요한 수천 시간의 CPU 및 GPU 가동 시간도 절약할 수 있습니다.
특성 임베딩은 머신러닝 모델 학습을 위한 다른 기능들과 함께 사용할 수 있습니다. 앞에서 살펴본 한 가지 사용 사례는 다음을 기준으로 휴양지의 임대 가격을 예상하는 것입니다.
- 크기, 방 수, 방향(예: 해변 조망), 위치, 해당 지역의 평균 가격, 임대 날짜, 계절 등과 같은 속성에 대한 기본 특성
- 속성의 자연어 설명 및 속성 이미지와 같은 임베딩된 특성
임베딩은 두 가지 방법으로 모델에 사용할 수 있습니다. 첫 번째 방법은 임베딩을 추출하여 이를 입력 특성 벡터로 사용하는 것입니다. 기본 입력 특성을 사전 학습된 임베딩(이전에 오프라인 전처리 단계에서 추출한 임베딩)에 연결하여 하나의 입력 특성 벡터를 형성합니다. 핵심은 이러한 임베딩이 학습 불가능한 상태라는 것입니다. 이러한 임베딩은 이 모델을 학습하는 중에 조정되지 않으며, 대신 입력 항목으로 취급됩니다. 그림 5는 이러한 접근 방식을 보여줍니다.
또는 모델에서 학습 가능한 레이어로 임베딩을 포함할 수 있습니다. 이 접근 방식에서는 해당 양상을 위해 사전 학습된 임베딩 계층을 모델 아키텍처에 포함합니다. 이렇게 하면 모델 작업을 위해 학습 과정 중 임베딩 가중치를 미세 조정할 수 있습니다. 그림 6에 표시된 것처럼 텍스트 및 이미지 특성은 임베딩되지 않고 원시 형식으로 모델에 공급됩니다. 모델의 내부 아키텍처에 대한 하나의 입력 특징 벡터를 형성하기 위해 기본 입력 특성과 결합되기 전, 선행 학습된 임베딩이 학습 가능한 레이어로 연결됩니다.
두 번째 접근 방법을 사용하면 더 효율적인 모델을 생성하기 위해 모델 작업과 관련하여 임베딩을 조정할 수 있습니다. 하지만 임베딩 가중치가 포함되기 때문에 모델 크기는 일반적으로 첫 번째 접근 방식보다 훨씬 큽니다.
TensorFlow Hub의 임베딩 모듈
TensorFlow Hub(tf.Hub
)는 재사용 가능한 ML 모듈의 라이브러리입니다. 이러한 모듈은 선행 학습된 모듈이거나 텍스트, 이미지 등에서 추출한 임베딩일 수 있습니다.
더 정확히 말해 모듈은 여러 작업 간에 재사용될 수 있는 TensorFlow 그래프에서 가중치 및 자산과 함께 독립 실행이 가능한 부분입니다. 모듈을 재사용하면, 비슷한 데이터세트를 사용하여 모델을 학습시키거나, 일반화를 향상시키거나, 단순히 학습 속도를 높일 수 있습니다. 각 모듈에는 해당 내부 구조에 대한 지식이 거의 없더라도 교체 가능한 방식으로 사용할 수 있게 해주는 인터페이스가 포함되어 있습니다. 모듈은 TensorFlow 그래프의 일부를 작성하기 위한 일반 Python 함수처럼 적용되거나 TensorFlow 에스티메이터에서 특성 열로 사용될 수 있습니다.
다음 코드 스니펫은 지정된 입력 텍스트의 임베딩을 가져오는 함수로 Universal Sentence Encoder(버전 2) 모듈을 사용하는 방법을 보여줍니다. 유사성 분석 또는 검색용 임베딩에 대해 또는 ML 모델을 학습시키기 전 텍스트 사전 처리를 수행할 때 이 코드를 사용할 수 있습니다(앞의 그림 5 참조).
다음 코드 스니펫은 Universal Sentence Encoder(버전 2) 모듈을 text_embedding_column
으로 사용하여 입력 특성을 인코딩하고(검토) DNNClassifier 에스티메이터에서 이를 사용하는 방법을 보여줍니다. 이 코드를 사용하면 ML 모델에서 임베딩을 학습 가능한 레이어로 지정할 수 있습니다(그림 6 참조).
여기서 볼 수 있듯이 모듈 URL은 게시자, 모듈 이름, 버전을 지정합니다. 모듈이 디스크에 다운로드되면 독립 실행이 가능하며 모듈 생성 및 학습에 사용된 코드와 데이터에 대한 액세스 권한이 없는 개발자가 모듈을 사용할 수 있습니다. 또한 학습 가능한 매개변수를 True
로 설정하면 임베딩 가중치가 모델 학습에 따라 조정됩니다.
그림 7은 텍스트 임베딩 및 이미지 특징 벡터 모듈(tf.Hub
에서 제공됨)의 목록을 보여줍니다. 이러한 모듈은 Google에서 개발, 학습, 게시됩니다.
상위 수준 아키텍처
이 섹션에서는 유사성 일치를 구현하고 Google Cloud에서 대규모로 ML을 사용하도록 임베딩 추출을 효율적으로 사용 설정할 수 있는 아키텍처를 설명합니다.
문서 또는 이미지에서 임베딩 추출
텍스트 문서 또는 이미지 데이터 세트가 있고 유사성 분석을 수행하거나 실시간 검색 시스템을 빌드하려는 경우 구조화되지 않은 항목(문서 또는 이미지)을 실제 값 특징 벡터로 변환해야 합니다. 선행 학습된 tf.Hub
모듈을 사용하여 이러한 작업을 수행할 수 있습니다. tf.Hub
모듈은 ML 모델의 학습 가능한 부분으로 사용되지 않습니다. 대신 입력 데이터(텍스트 또는 이미지)를 출력 특징 벡터(임베딩)로 변환하기 위해 ETL(추출, 변환, 로드) 프로세스에서 사용됩니다.
큰 입력 데이터 세트(수백만 개의 문서 또는 이미지가 포함된 자료)가 있으면 이러한 임베딩을 대규모로 추출해야 합니다. 이를 위해 Google Cloud에서 데이터 처리 파이프라인을 대규모로 실행하기 위한 완전 관리형의 안정적인 서버리스 서비스인 Cloud Dataflow를 사용할 수 있습니다. 스트리밍 및 일괄 데이터 처리 작업을 모두 실행하는 오픈소스 통합 프로그래밍 모델인 Apache Beam을 사용하여 파이프라인을 구현합니다. 자세한 예시는 TensorFlow Hub 및 Cloud Dataflow를 사용한 텍스트 시맨틱스 유사성 분석을 참조하세요.
그림 8은 Apache Beam을 사용하여 ETL 파이프라인을 구현하여 임베딩을 추출하는 방법을 보여줍니다.
그림은 다음과 같은 흐름을 보여줍니다.
- Cloud Storage에서 원시 데이터를 읽습니다.
tf.Hub
모듈을 호출하여 각 항목을 처리합니다. 이 모듈은 각 항목을 나타내는 특징 벡터를 반환합니다. 예를 들어 뉴스 기사를 처리하는 경우 Universal Sentence Encoder를 사용하여 제목을 실제 값 특징 벡터로 변환할 수 있습니다.- Cloud Storage에 인코딩된 데이터를 기록합니다.
머신 전이 학습의 첫 번째 접근 방식에서 설명한 대로 임베딩을 사용하여 TensorFlow ML 모델을 학습시키려는 경우 데이터를 .tfrecords
파일로 기록할 수 있습니다. 또한 탐색적 유사성 분석을 위해 BigQuery에서 추출된 임베딩을 사용할 수 있습니다.
비슷한 임베딩 매칭 및 검색
사용자가 제공한 이미지를 수용하고 저장소에서 가장 비슷한 이미지를 검색하는 이미지 검색 앱을 작성하는 경우, 전체 아키텍처의 여러 부분에서 수행되는 특정 작업들을 수행해야 합니다.
- 프런트엔드 앱에서 사용자가 제공한 이미지를 사용합니다.
tf.Hub
이미지 모듈(예:inception_v3/feature_vector
)을 사용하여 백엔드 앱에서 입력 이미지를 특징 벡터로 변환합니다.- 데이터베이스에 저장된 이미지 임베딩에 대해 입력 이미지의 추출된 특징 벡터와 일치하는 항목을 찾아 검색합니다. 이 작업도 백엔드 앱에서 수행됩니다.
문제는 매칭 및 검색 시간을 최소화하는 방식으로 특징 벡터를 구성하고 저장하는 것입니다. 가장 비슷한 항목을 찾기 위해 저장소에 있는 모든 벡터에 대해 입력 쿼리 특성 벡터를 비교하지는 않아야 합니다. 최상의 일치 항목의 검색 및 순위 지정 속도가 빨라야 하는 애플리케이션의 경우, 비교 횟수를 줄이기 위해 일종의 인덱싱 메커니즘을 사용해서 특성 벡터를 정리해야 합니다. 로컬 구분 해싱, k-d 트리, vantage-point 트리, 계층적 군집화와 같은 적절한 최근접 이웃 탐색 기법을 통해 검색 성능을 향상시킬 수 있습니다.
특성 벡터 인덱스는 메모리에서 유지 관리되며, 실제 콘텐츠(참조)는 키/값 저장소로 유지 관리됩니다. 여기서 키는 특성 벡터의 해시이며, 값은 문서 또는 이미지의 Cloud Storage URL입니다. 이 접근 방식은 낮은 대기 시간 검색을 제공합니다. 그림 9에서 이 접근 방식의 흐름을 보여줍니다.
ML 모델 학습 및 제공
임베딩 사용 시나리오 섹션의 설명대로 선행 학습된 임베딩은 특히 소규모 학습 데이터 세트가 있거나 대규모 데이터 세트에서 학습 속도를 높이려는 경우에 ML 모델을 학습하고 일반화 가능성을 향상시키는 데 유용할 수 있습니다. tf.Hub
모듈은 수천 시간 동안 GPU를 사용한 대규모 데이터 세트에서 학습되었습니다. 또한 tf.Hub
모듈을 모델의 일부로 사용하여 필요한 경우에 가중치를 학습하도록 할 수 있습니다.
tf.Hub
모듈을 대규모로 포함하는 모델을 관리하려면 AI Platform을 사용하면 됩니다. AI Platform은 DevOps에 필요한 관리를 최소화하여 대규모로 TensorFlow 모델을 학습, 조정(초매개변수 조정 기능 사용), 제공할 수 있는 서버리스 플랫폼입니다. AI Platform은 온라인 예측용으로 학습된 모델을 REST API로 배포하고 일괄 예측 작업을 제출할 수 있도록 지원합니다. 그림 10에서는 이러한 프로세스를 보여줍니다.
다음 단계
- TensorFlow Hub 및 Dataflow를 사용한 텍스트 시맨틱스 유사성 분석 알아보기
- 서버리스 머신러닝 모델의 아키텍처 알아보기
- Dataflow 파이프라인에서 예측용 머신러닝 모델 비교 알아보기
- Google Cloud에서 TensorFlow를 사용한 ML에 대한 5개 코스 Coursera 전문 과정 이수하기
- 머신러닝 규칙에서 ML 엔지니어링의 권장사항 알아보기
- 다른 Google Cloud 기능을 직접 사용해보세요. 가이드 살펴보기.
댓글 없음:
댓글 쓰기