머신 러닝에서 임베딩이란?

임베딩은 단어, 이미지, 동영상 등의 실제 개체를 컴퓨터가 처리할 수 있는 형태로 표현합니다. 임베딩은 유사성 검색을 가능하게 하며 AI의 기반이 됩니다.

학습 목표

이 글을 읽은 후에 다음을 할 수 있습니다:

  • 벡터 및 임베딩의 정의
  • 벡터로 유사도 검색을 가능하게 하는 방법 설명
  • 임베딩이 어떻게 생성되는지 설명

관련 콘텐츠


계속 알아보시겠어요?

인터넷에서 가장 인기 있는 인사이트를 한 달에 한 번 정리하는 Cloudflare의 월간 요약본 theNET를 구독하세요!

Cloudflare가 개인 데이터를 수집하고 처리하는 방법은 Cloudflare의 개인정보 취급방침을 참조하세요.

글 링크 복사

임베딩이란?

임베딩은 머신 러닝 모델과 시맨틱 검색 알고리즘에서 사용하도록 설계된 텍스트, 이미지, 오디오와 같은 값 또는 개체의 표현입니다. 임베딩은 이러한 개체를 각 개체가 가지고 있거나 가지고 있지 않은 요소 또는 특성, 개체가 속한 범주에 따라 수학적 형태로 변환합니다.

기본적으로 임베딩을 사용하면 머신 러닝 모델이 유사한 개체를 찾을 수 있습니다. 사진이나 문서가 주어지면 임베딩을 사용하는 머신 러닝 모델이 유사한 사진이나 문서를 찾을 수 있습니다. 임베딩은 컴퓨터가 단어와 다른 개체 간의 관계를 이해할 수 있게 해주므로 임베딩은 인공 지능(AI)의 기초가 됩니다.

예를 들어, 이 2차원 공간의 오른쪽 상단에 있는 문서들은 서로 연관성이 있을 수 있습니다:

임베딩 - 벡터 공간의 문서가 함께 클러스터링됩니다

기술적으로, 임베딩은 각 객체에 대한 의미 있는 데이터를 캡처하기 위해 머신 러닝 모델에 의해 생성된 벡터입니다.

머신 러닝에서 벡터란?

수학에서 벡터는 차원 공간에서 한 점을 정의하는 숫자의 배열입니다. 보다 실제적인 용어로 벡터는 {1989, 22, 9, 180}과 같은 숫자의 목록입니다. 각 숫자는 지정된 차원을 따라 개체의 위치를 나타냅니다.

머신 러닝에서는 벡터를 사용하여 유사한 개체를 검색할 수 있습니다. 벡터 검색 알고리즘은 벡터 데이터베이스에서 서로 가까운 두 개의 벡터를 찾기만 하면 됩니다.

이를 더 잘 이해하려면 위도와 경도에 대해 생각해 보세요. 남북과 동서라는 두 가지 차원으로 지구상의 모든 장소의 위치를 나타낼 수 있습니다. 캐나다 브리티시컬럼비아주 밴쿠버시는 위도 및 경도 좌표 {49°15'40"N, 123°06'50"W}로 표시할 수 있습니다. 이 두 값의 목록은 간단한 벡터입니다.

이제 밴쿠버에서 아주 가까운 도시를 찾으려고 한다고 상상해 보세요. 사람은 그냥 지도를 보지만, 머신 러닝 모델은 위도와 경도(즉, 벡터)를 보고 위도와 경도가 비슷한 장소를 찾아낼 수 있습니다. 버나비 시는 {49°16'N, 122°58'W}에 있습니다. 이는 {49°15'40"N, 123°06'50"W}에 매우 가깝습니다. 따라서 이 모델은 버나비 시가 밴쿠버 근처에 있다고 옳은 결론을 내릴 수 있습니다.

벡터에 더 많은 차원 추가하기

이제 밴쿠버와 가까울 뿐만 아니라 규모도 비슷한 도시를 찾는다고 상상해 보세요. 이 위치 모델에 위도와 경도에 인구 규모라는 세 번째 "차원" 을 추가해 보겠습니다. 각 도시의 벡터에 인구를 추가할 수 있으며, 위도와 경도를 Y축과 X축으로 하고 인구 크기는 Z축처럼 취급할 수 있습니다.

이제 밴쿠버의 벡터는 {49°15'40"N, 123°06'50"W, 662,248*}입니다. 이 세 번째 차원이 추가되면 버나비는 인구가 249,125명*에 불과하므로 더 이상 밴쿠버와 특별히 가깝지 않습니다. 이 모델은 대신 {47°36'35"N 122°19'59"W, 749,256**}의 벡터를 가진 미국 워싱턴주 시애틀이라는 도시를 찾을 수 있습니다.

*2021년 기준.
**2022년 기준.

이것은 벡터와 유사도 검색이 어떻게 작동하는지를 보여주는 아주 간단한 예입니다. 하지만 머신 러닝 모델이 유용하게 사용되려면 3차원 이상의 벡터를 생성해야 하므로 훨씬 더 복잡한 벡터를 생성해야 할 수 있습니다.

더욱 다양한 다차원 벡터

예를 들어, 모델을 통해 어떤 TV 프로그램이 서로 비슷해서 같은 사람들이 시청할 가능성이 높은지 어떻게 알 수 있을까요? 고려해야 할 요소는 에피소드 길이, 에피소드 수, 장르 분류, 공통 시청자 수, 각 프로그램에 출연한 배우, 각 프로그램이 데뷔한 연도 등 다양합니다. 이 모든 것은 "차원"이 될 수 있으며 각 프로그램은 이러한 각 차원을 따라 점으로 표시됩니다.

다차원 벡터는 시트콤 ' Seinfeld '가 호러 쇼 ' Wednesday'와 유사한지 판단하는 데 도움이 될 수 있습니다. Seinfeld는 1989년에, Wednesday는 2022년에 데뷔했습니다. 두 프로그램은 에피소드 길이가 다른데, Seinfeld는 22~24분, Wednesday는 46~57분입니다. 벡터를 살펴보면 이들 프로그램이 TV 프로그램의 차원적 표현에서 매우 다른 지점을 차지할 가능성이 높다는 것을 알 수 있습니다.

TV 프로그램 장르 데뷔 연도 에피소드 길이 시즌(2023년까지) 에피소드(2023년까지)
Seinfeld 시트콤 1989 22~24 9 180
수요일 호러 2022 46~57 1 80억 개

위도와 경도로 표현했던 것처럼 벡터로 표현할 수 있지만, 더 많은 값을 사용할 수 있습니다.

Seinfeld 벡터: {[시트콤], 1989, 22~24, 9, 180}
Wednesday 벡터: {[호러], 2022, 46~57, 1, 8}

머신 러닝 모델은 시트콤 CheersSeinfeld와 훨씬 더 유사하다고 식별할 수 있습니다. Cheers는 1982년에 데뷔한 같은 장르의 드라마로, 에피소드 길이는 21~25분, 시즌은 11개, 에피소드는 275개에 달합니다.

Seinfeld 벡터: {[시트콤], 1989, 22~24, 9, 180}
Cheers 벡터: {[시트콤], 1982, 21~25, 11, 275}

위의 예에서 도시는 위도와 경도의 두 차원을 따라 한 점이었으며, 여기에 인구라는 세 번째 차원을 추가했습니다. 또한 이들 TV 프로그램의 위치를 5가지 차원으로 분석했습니다.

머신 러닝 모델에서 TV 프로그램은 2차원, 3차원, 5차원이 아니라 모델에서 포함시키려고 하는 수에 따라 수백 개 또는 수천 개의 차원에 걸쳐 하나의 점입니다.

임베딩은 어떻게 작동할까요?

임베딩은 딥러닝을 사용하여 벡터를 생성하는 과정입니다. "임베딩"은 이 프로세스의 결과물입니다. 다시 말하자면, 딥러닝 모델이 해당 모델의 유사도 검색을 위해 생성한 벡터입니다.

임베딩 - 왼쪽의 문서가 임베딩 API를 통해 오른쪽의 3차원 벡터로 변환되었습니다

시애틀과 밴쿠버의 위도 및 경도 값이 서로 가깝고 인구가 비슷한 것처럼, 서로 가까운 임베딩은 비슷한 것으로 간주할 수 있습니다. 임베딩을 사용하면 알고리즘이 언어 모델에서처럼 관련 TV 프로그램을 제안하거나, 비슷한 위치를 찾거나, 함께 사용되거나 서로 유사하게 사용될 가능성이 높은 단어를 식별할 수 있습니다.

신경망에서 임베딩이 생성되는 방법

신경망은 인간 두뇌의 구조를 모방한 딥러닝 모델입니다. 뇌가 서로 전기 자극을 주고받는 뉴런으로 구성되어 있는 것처럼, 신경망도 입력이 주어진 임계값을 초과할 때 서로 통신하는 가상 노드로 구성되어 있습니다.

신경망은 입력 레이어, 출력 레이어, 그리고 그 사이에 "숨겨진" 레이어 등 여러 레이어로 구성됩니다. 숨겨진 레이어는 모델이 정의되는 방식에 따라 다양한 방식으로 입력을 변환할 수 있습니다.

임베딩 생성은 숨겨진 레이어입니다. 임베딩 생성은 일반적으로 추가 레이어가 입력을 처리하기 전에 발생합니다. 예를 들어, 인간은 모든 TV 프로그램이 100가지의 다른 차원에 속하는 위치를 정의할 필요가 없습니다. 대신 신경망의 숨겨진 레이어에서 자동으로 이 작업을 수행합니다. 그런 다음 이 임베딩을 사용하여 다른 숨겨진 레이어에서 TV 프로그램을 추가로 분석하여 유사한 TV 프로그램을 찾을 수 있습니다. 결국 출력 레이어는 시청자가 시청하고 싶을 만한 다른 프로그램을 추천할 수 있습니다.

이 임베딩 레이어를 만들려면 처음에는 약간의 수작업이 필요합니다. 프로그래머는 임베딩을 만드는 방법, 포함할 차원 등에 대한 예시를 신경망에 제공할 수 있습니다. 나중에는 임베딩 레이어가 자체적으로 작동할 수 있지만, 더 나은 추천을 생성하려면 프로그래머가 모델을 계속 미세 조정할 수 있습니다.

대규모 언어 모델(LLM)에서 임베딩은 어떻게 사용될까요?

ChatGPT 등의 AI 도구에 사용되는 모델과 같은 대규모 언어 모델(LLM)의 경우 임베딩이 한 단계 더 진행됩니다. 단어 자체뿐만 아니라 모든 단어의 문맥이 임베딩 됩니다. 전체 문장, 단락, 글 전체의 의미를 검색하고 분석할 수 있습니다. 이 작업에는 상당한 연산 능력이 필요하지만, 쿼리에 대한 컨텍스트를 임베딩으로 저장하여 향후 쿼리를 위한 시간과 연산 능력을 절약할 수 있습니다.

Cloudflare에서는 어떻게 임베딩을 쉽게 사용할 수 있게 할까요?

Cloudflare Workers로 AI 기반 앱을 구축하려는 개발자를 위해 Cloudflare에서는 Workers AI를 제공합니다. 이와 함께 Cloudflare에서는 전 세계에 분산된 벡터 데이터베이스인 Vectorize도 제공합니다. 이러한 서비스를 함께 사용하면 임베딩을 더 빠르고, 더 쉬우며, 더 저렴하게 생성하고 쿼리할 수 있습니다. 이를 통해 개발자는 백엔드 인프라를 가동하지 않고도 AI 앱을 만들 수 있습니다. Vectorize와 Workers AI에 대해 자세히 알아보세요.