임베딩: 임베딩 획득하기

이 섹션에서는 임베딩을 얻는 여러 방법과 정적 임베딩을 문맥 임베딩으로 변환하는 방법을 다룹니다.

차원 축소 기법

고차원 공간의 주요 구조를 저차원 공간에 담아내는 수학적 기법은 다양합니다. 이론적으로는 이러한 기법은 모두 머신러닝 시스템을 위한 임베딩을 생성하는 데 사용할 수 있습니다.

예를 들어 주성분 분석(PCA)은 단어 임베딩을 만드는 데 사용될 수 있습니다. 단어 집합 벡터와 같은 인스턴스의 집합이 주어지면 PCA는 단일 차원으로 축소 가능하며 높은 상관도를 갖는 차원을 찾습니다.

임베딩을 신경망의 일부로 학습시키기

신경망을 타겟 작업에 맞게 학습시키는 과정에서 임베딩을 생성할 수 있습니다. 이 접근법은 특정 시스템에 맞게 임베딩을 효과적으로 맞춤화할 수 있지만 임베딩을 별도로 학습시키는 것보다 시간이 오래 걸릴 수 있습니다.

일반적으로, 신경망 내에 크기가 d인 히든 레이어를 생성하여 임베딩 레이어로 지정할 수 있습니다. 여기서 d는 히든 레이어의 노드 수이자 임베딩 공간의 차원을 의미합니다. 이 임베딩 레이어는 다른 특성 및 히든 레이어와 결합할 수 있습니다. 다른 심층신경망과 마찬가지로, 네트워크 출력 레이어의 노드에서 손실을 최소화하기 위해 학습 중에 파라미터들이 최적화됩니다.

음식 추천 예제로 다시 돌아가 보겠습니다. 목표는 사용자가 현재 좋아하는 음식을 바탕으로 좋아할 만한 새로운 음식을 예측하는 것입니다. 먼저, 사용자가 가장 좋아하는 음식 데이터 5가지를 추가로 수집할 수 있습니다. 그런 다음, 이 작업을 지도 학습 문제로 모델링할 수 있습니다. 다섯 가지 음식 중 네 가지를 특징 데이터로 사용하고, 나머지 하나를 무작위로 선택하여 모델이 예측해야 할 양성 라벨로 설정합니다. 모델은 소프트맥스 손실을 사용해 예측 성능을 최적화합니다.

학습 과정에서 신경망 모델은 첫 번째 히든 레이어에 있는 노드들의 최적 가중치를 학습하며, 이 레이어는 임베딩 레이어로 사용됩니다. 예를 들어, 모델의 첫 번째 히든 레이어에 노드가 세 개 있다면, 음식 항목을 표현하는 데 있어 가장 관련성이 높은 세 가지 차원을 샌드위치성, 디저트성, 액체성이라고 판단할 수 있습니다. 그림 12는 '핫도그'에 대한 원-핫 인코딩된 입력값이 3차원 벡터로 변환되는 과정을 보여줍니다.

그림 12. 핫도그에 대한 원-핫 인코딩을 처리하는 신경망. 첫 번째 레이어는
    5개의 노드를 가진 입력 레이어며, 각 노드는 해당 음식을 나타내는 아이콘으로
    표시되어 있습니다(수프, 핫도그, 샐러드, …, 샌드위치). 이 노드들은
    각각 [0, 1, 0, …, 0]의 값을 가지며, 이는 ‘핫도그’에 대한 원-핫
인코딩을 나타냅니다. 입력 레이어는 3개의 노드로 구성된 임베딩
    레이어와 연결되어 있으며, 이 노드들의 값은 각각 2.98, -0.75, 0입니다. 임베딩
    레이어는 다시 5개의 노드로 이루어진 히든 레이어에 연결되고, 그 히든 레이어는
    5개의 노드로 구성된 출력 레이어와 연결됩니다.
그림 12. 원-핫 인코딩된 hot dog가 입력을 통해 심층 신경망에 제공됩니다. 임베딩 레이어는 이 원-핫 인코딩을 3차원 임베딩 벡터 [2.98, -0.75, 0]로 변환합니다.

학습 과정에서 임베딩 레이어의 가중치는 비슷한 예시들의 임베딩 벡터가 서로 더 유사하도록 최적화됩니다. 앞서 언급했듯이, 실제 모델이 선택하는 임베딩 차원은 이 예시처럼 직관적이거나 이해하기 쉽지 않을 수 있습니다.

문맥 임베딩

word2vec 정적 임베딩 벡터의 한계 중 하나는, 단어가 문맥에 따라 다른 의미를 가질 수 있다는 점입니다. 예를 들어 '응'은 단독으로 쓰일 때와 '응, 퍽이나.'라는 문구에서 쓰일 때의 의미가 완전히 다릅니다. '바람'이라는 단어는 '공기', '공기의 움직임', '간절한 마음', '결과나 그 영향', '불륜', '일시적 유행' 등 다양한 의미를 가질 수 있습니다.

그러나 정적 임베딩에서는 각 단어가 벡터 공간상의 하나의 점으로만 표현되기 때문에, 단어의 의미가 여러 개라도 하나의 벡터로만 나타납니다. 이전 실습에서, 오렌지라는 단어의 의미가 색깔이 될 수도 있고 과일이 될 수도 있다는 점에서 정적 임베딩의 한계를 확인했을 것입니다. 하나의 정적 임베딩으로는 word2vec 데이터 세트로 학습되었을 때 오렌지가 항상 과일보다 색깔에 더 가깝게 표현됩니다.

문맥 임베딩은 기존 임베딩의 한계를 극복하기 위해 개발되었습니다. 문맥 임베딩은 단어 자체뿐만 아니라 그 주변 단어의 정보를 반영하여 하나의 단어를 여러 개의 임베딩으로 표현할 수 있도록 합니다. 예를 들어, 오렌지라는 단어는 데이터 세트에 포함된 문장마다 서로 다른 임베딩을 가지게 됩니다.

ELMo와 같은 일부 문맥 임베딩 생성 기법은 문장 속 단어의 word2vec 벡터처럼 예시의 정적 임베딩을 가져와, 그 주변 단어의 정보를 반영하는 함수로 변환하며, 이 과정을 통해 문맥 임베딩이 생성됩니다.

문맥 임베딩에 대한 자세한 내용은 여기를 클릭하세요

  • ELMo 모델의 경우, 정적 임베딩은 문장을 앞에서부터 읽은 정보와 뒤에서부터 읽은 정보를 각각 인코딩한 다른 레이어의 임베딩과 결합되어 사용됩니다.
  • BERT 모델은 입력으로 사용하는 시퀀스의 일부를 마스크하며,
  • Transformer 모델은 셀프 어텐션 계층을 사용해 각 단어와 시퀀스 내 다른 단어들 간의 연관성을 가중치로 반영합니다. 또한 위치 임베딩 행렬(위치 인코딩 참조)의 관련 열을 이전에 학습한 각 토큰 임베딩에 요소별로 추가하여 추론을 위해 나머지 모델에 공급되는 입력 임베딩을 생성합니다. 이처럼 텍스트 시퀀스마다 고유하게 생성된 입력 임베딩이 문맥 임베딩입니다.

위에서 설명한 모델들은 언어 모델이지만, 문맥 임베딩은 이미지와 같은 다른 생성 작업에서도 유용하게 사용됩니다. 예를 들어, 말 사진의 픽셀 RGB 값 임베딩에 각 픽셀을 나타내는 위치 행렬과 주변 픽셀에 대한 특정 인코딩을 결합하면 문맥 기반 임베딩이 생성되며, 이는 단순한 RGB 값의 정적 임베딩보다 모델에 더 많은 정보를 제공합니다.