이 섹션에서는 임베딩을 얻는 여러 가지 방법과 정적 임베딩을 문맥 임베딩으로 변환하는 방법을 설명합니다.
차원 축소 기법
고차원 공간의 중요한 구조를 저차원 공간에서 포착하는 수학적 기법이 많이 있습니다. 이론적으로는 이러한 기술 중 하나를 사용하여 머신러닝 시스템의 임베딩을 만들 수 있습니다.
예를 들어 주요 구성요소 분석 (PCA)은 단어 임베딩을 만드는 데 사용되었습니다. 단어 그룹 벡터와 같은 인스턴스 집합이 주어지면 PCA는 단일 측정기준으로 축소할 수 있는 상관성이 높은 측정기준을 찾으려고 시도합니다.
신경망의 일부로 임베딩 학습
대상 작업을 위한 신경망을 학습하는 동안 임베딩을 만들 수 있습니다. 이 접근 방식을 사용하면 특정 시스템에 맞게 잘 맞춤설정된 임베딩을 얻을 수 있지만 임베딩을 별도로 학습하는 것보다 시간이 더 오래 걸릴 수 있습니다.
일반적으로 신경망에서 임베딩 레이어로 지정된 크기가 d인 히든 레이어를 만들 수 있습니다. 여기서 d는 히든 레이어의 노드 수와 임베딩 공간의 차원 수를 모두 나타냅니다. 이 임베딩 레이어는 다른 모든 기능 및 숨겨진 레이어와 결합할 수 있습니다. 다른 심층신경망과 마찬가지로 네트워크의 출력 레이어에 있는 노드의 손실을 최소화하도록 학습 중에 매개변수가 최적화됩니다.
음식 추천 예로 돌아가면, 현재 좋아하는 음식을 기반으로 사용자가 좋아할 만한 새로운 음식을 예측하는 것이 목표입니다. 먼저 사용자의 가장 좋아하는 음식 5가지에 관한 추가 데이터를 수집할 수 있습니다. 그런 다음 이 작업을 지도 학습 문제로 모델링할 수 있습니다. 이 중 상위 5개 음식 중 4개를 특성 데이터로 설정한 다음, 5번째 음식을 모델이 예측하려는 긍정 라벨로 무작위로 설정하여 softmax 손실을 사용하여 모델의 예측을 최적화합니다.
학습 중에 신경망 모델은 임베딩 레이어 역할을 하는 첫 번째 숨겨진 레이어의 노드에 최적의 가중치를 학습합니다. 예를 들어 모델의 첫 번째 숨겨진 레이어에 노드가 3개 포함되어 있으면 음식 품목과 가장 관련성이 높은 세 가지 측정기준이 샌드위치, 디저트, 액체라고 결정할 수 있습니다. 그림 12는 '핫도그'의 원-핫 인코딩된 입력 값을 3차원 벡터로 변환한 것을 보여줍니다.
![그림 12. 핫도그를 원-핫 인코딩하는 신경망 첫 번째 레이어는 5개의 노드가 있는 입력 레이어로, 각 노드에는 이를 나타내는 음식 (보르시, 핫도그, 샐러드, 샤와르마 등)의 아이콘이 주석으로 추가되어 있습니다. 이러한 노드는 각각 '핫도그'의 원-핫 인코딩을 나타내는 값 [0, 1, 0, ..., 0]을 갖습니다. 입력 레이어는 노드 값이 각각 2.98, -0.75, 0인 3노드 임베딩 레이어에 연결됩니다. 임베딩 레이어는 5개 노드 히든 레이어에 연결되고, 히든 레이어는 5개 노드 출력 레이어에 연결됩니다.](https://developers.google.cn/static/machine-learning/crash-course/embeddings/images/one_hot_hot_dog_embedding.png?authuser=5&hl=ko)
hot dog
의 원-핫 인코딩입니다. 임베딩 레이어는 원-핫 인코딩을 3차원 임베딩 벡터 [2.98, -0.75, 0]
로 변환합니다.
학습 과정에서 유사한 예시의 임베딩 벡터가 서로 더 가까워지도록 임베딩 레이어의 가중치가 최적화됩니다. 앞서 언급했듯이 실제 모델이 임베딩에 선택하는 측정기준은 이 예시처럼 직관적이거나 이해하기 쉽지 않을 수 있습니다.
문맥 임베딩
word2vec
정적 임베딩 벡터의 한 가지 제한사항은 단어가 상황에 따라 서로 다른 의미를 가질 수 있다는 점입니다. '예'는 그 자체로 하나의 의미를 지니지만 '그래 맞아'라는 문구에서는 그 반대의 의미를 지닙니다. '게시'는 '우편', '우편에 넣다', '귀걸이 뒷면', '경마 경기의 끝 지점에 있는 마커', '후반 제작', '기둥', '공지사항 게시', '경비원 또는 군인 배치', '이후' 등을 의미할 수 있습니다.
그러나 정적 임베딩을 사용하면 각 단어가 다양한 의미를 가질 수 있지만 벡터 공간에서 단일 지점으로 표현됩니다.
지난 연습에서는 색상 또는 과일 유형을 나타낼 수 있는 오렌지라는 단어의 정적 임베딩의 한계를 살펴봤습니다. 정적 임베딩이 하나만 있으면 word2vec
데이터 세트에서 학습할 때 오렌지는 항상 주스보다 다른 색상에 더 가깝습니다.
이 제한을 해결하기 위해 문맥 임베딩이 개발되었습니다. 문맥 임베딩을 사용하면 단어 자체뿐만 아니라 주변 단어에 관한 정보도 통합하는 여러 임베딩으로 단어를 표현할 수 있습니다. Orange는 데이터 세트에 단어가 포함된 고유한 문장마다 다른 임베딩을 갖습니다.
ELMo와 같은 문맥 임베딩을 만드는 일부 메서드는 예시의 정적 임베딩(예: 문장 내 단어의 word2vec
벡터)을 사용하여 주변 단어에 관한 정보를 통합하는 함수로 변환합니다. 이렇게 하면 문맥 임베딩이 생성됩니다.
문맥 임베딩에 대한 자세한 내용은 여기를 클릭하세요
- 특히 ELMo 모델의 경우 정적 임베딩은 다른 레이어에서 가져온 임베딩과 집계되며, 이 임베딩은 문장의 앞에서 뒤로 읽은 값과 뒤에서 앞으로 읽은 값을 인코딩합니다.
- BERT 모델은 모델이 입력으로 사용하는 시퀀스의 일부를 마스킹합니다.
- Transformer 모델은 자체 주목 레이어를 사용하여 시퀀스의 다른 단어와 각 개별 단어의 관련성에 가중치를 부여합니다. 또한 위치 임베딩 매트릭스 (위치 인코딩 참고)의 관련 열을 이전에 학습된 각 토큰 임베딩에 요소별로 추가하여 추론을 위해 나머지 모델에 제공되는 입력 임베딩을 생성합니다. 각 고유한 텍스트 시퀀스에 고유한 이 입력 임베딩은 문맥 임베딩입니다.
위에 설명된 모델은 언어 모델이지만 문맥 임베딩은 이미지와 같은 다른 생성형 작업에 유용합니다. 말 사진의 픽셀 RGB 값 삽입은 각 픽셀을 나타내는 위치 행렬과 인접 픽셀의 일부 인코딩을 결합하여 컨텍스트 삽입을 생성할 때 RGB 값의 원래 정적 삽입보다 모델에 더 많은 정보를 제공합니다.