워드 임베딩(Word Embedding)에 대한 몇 가지 결론

오랫동안 강좌를 읽으면서 단어 임베딩이 무엇인지 이해가 되지 않아 관련 지식을 정리했습니다. 인용하다:

1. 텍스트와 벡터에 대하여

텍스트는 일종의 비정형 데이터 정보로 직접 계산할 수 없습니다.

텍스트 표현의 기능은 이러한 비정형 정보를 구조화 정보로 변환하여 텍스트 정보에 대한 계산을 수행하여 우리가 매일 볼 수 있는 텍스트 분류 및 감정적 판단과 같은 작업을 완료하는 것입니다.
여기에 이미지 설명 삽입
텍스트를 표현하는 방법에는 여러 가지가 있지만 주로 세 가지 유형이 있습니다.

여기에 이미지 설명 삽입

여기에 이미지 설명 삽입

2. 원-핫 인코딩

여기에 이미지 설명 삽입
그러나 실제로는 수만 개의 다른 단어가 텍스트에 나타날 가능성이 있으며 이때 벡터는 매우 길 것입니다. 99% 이상이 0입니다.

one-hot의 단점은 다음과 같습니다.

  • 단어 간의 관계를 표현할 수 없음
  • 이러한 종류의 너무 희박한 벡터는 낮은 계산 및 저장 효율성으로 이어집니다.

3. 정보 검색(IR) 기술

원-핫 인코딩의 한계를 극복하기 위해 NLP 분야에서는 문서를 컨텍스트로 사용하여 텍스트를 벡터화하는 정보 검색(IR) 기술을 차용했습니다. TF-IDF, LSA 및 주제 모델링 등

· 단어의 가방

단어 모음 모델은 텍스트에서 단어 간의 문맥적 관계를 고려하지 않고 모든 단어의 가중치만 고려한다고 가정합니다. 가중치는 텍스트에 나타나는 단어의 빈도와 관련이 있습니다.

bag-of-words 모델은 먼저 단어 분할을 수행합니다.단어 분할 후 각 단어가 텍스트에 나타나는 횟수를 세어 텍스트의 단어 기반 기능을 얻을 수 있습니다.이 단어와 해당 단어 빈도가 각 텍스트 샘플이 합쳐지며, 이것이 우리가 종종 벡터화라고 부르는 것입니다. 벡터화가 완료되면 일반적으로 TF-IDF를 사용하여 특징의 가중치를 수정한 다음 특징을 표준화합니다. 다른 작업을 수행한 후 계산을 위해 데이터를 기계 학습 모델로 가져올 수 있습니다.

Bag-of-Words 모델의 3부작: 토큰화 , 계산정규화 .

단어 모음 모델은 단어 빈도만 고려하고 문맥 관계를 고려하지 않기 때문에 큰 제한이 있습니다. 따라서 텍스트 일부의 의미를 잃게 됩니다.

단어 모음 모델의 단점:

bag-of-words 모델에서 가장 중요한 것은 어휘를 구성한 다음 텍스트를 통해 어휘에 있는 단어에 값을 부여하는 것이지만, bag-of-words 모델은 유사한 단어 사이의 표현이 심각하게 부족합니다.

예를 들어, "나는 베이징이 좋다"와 "나는 베이징이 싫다" 실제로 이 두 텍스트는 심각하게 다릅니다. 그러나 bag of words 모델은 매우 유사하다고 판단될 것입니다.

"나는 베이징을 좋아한다"와 "나는 베이징을 사랑한다"는 실제로 매우 매우 가까운 의미를 표현하지만 단어 주머니 모델은 "좋아요"와 "사랑" 사이의 심각한 유사성을 표현할 수 없습니다. (물론 bag model이라는 단어도 이 두 문장에 높은 유사도를 부여할 수 있지만, 내가 표현하고자 하는 의미에 주목)

하위 텍스트 말뭉치에서 일부 단어는 매우 일반적이므로(예: 영어의 "the", "a", "is") 문서의 실제 내용에 대한 유용한 정보를 거의 전달하지 않습니다. 순수한 카운트 데이터를 분류기에 직접 공급하면 빈도가 낮은 단어가 빈도는 낮지만 더 의미 있는 단어의 빈도는 무색해집니다.

분류기에 적합한 부동 소수점 값으로 변환하기 위해 특성의 카운트 가중치를 다시 계산하기 위해 일반적으로 tf-idf 변환이 수행됩니다.

TF-IDF

정보 검색 및 텍스트 마이닝에 일반적으로 사용되는 가중치 기법입니다.

TF-IDF는 말뭉치의 문서 집합 또는 문서에 대한 단어의 중요도를 평가하기 위한 통계적 방법입니다.

단어의 중요도는 문서에 나타나는 횟수에 비례하여 증가하지만 말뭉치에 나타나는 빈도에 반비례하여 감소합니다.

다양한 형태의 TF-IDF 가중치 는 문서가 사용자 쿼리와 얼마나 관련이 있는지를 측정하거나 평가하기 위해 검색 엔진에서 종종 적용됩니다 .

주요 생각:

어떤 단어나 문구가 기사에서 자주 등장하고 다른 기사에서는 거의 나오지 않는 경우, 해당 단어나 문구는 카테고리를 구분하는 능력이 좋고 분류 적합한 것으로 간주됩니다 .
여기에 이미지 설명 삽입
여기에 이미지 설명 삽입
특정 문서 내에서 높은 단어 빈도와 전체 문서 모음에서 해당 단어의 낮은 문서 빈도는 가중치가 높은 TF-IDF를 생성할 수 있습니다. 따라서 TF-IDF는 일반적인 단어는 필터링하고 중요한 단어는 유지하는 경향이 있습니다.

IDF에서는 단어가 말뭉치의 각 문서에서 더 많이 나타날수록 그 IDF 값이 낮아지는 것을 알 수 있으며, 모든 문서에서 나타날 때 IDF 계산 결과는 0이며, 일반적으로 이러한 단어 나 문자가 많이 발생 "de", "I", "do" 등은 물품의 무게 계산에 있어 일정한 역할을 하지 않습니다.

예를 들어 "환경 보호"라는 단어가 기사에 자주 나오는 경우 "환경 보호"라는 단어가 매우 중요하다고 생각할 수 있지만 많은 기사에 "환경 보호"라는 단어가 나오면 덜 중요해집니다.

적용 : bag-of-words 모델은 주로 이미지 처리에 사용됩니다.

단어 가방 모델에 대한 이 기사는 더 자세한
단어 가방 모델입니다: https://www.jianshu.com/p/0587bc01e414

·Bi-gram과 N-Gram

N-Gram은 통계 언어 모델을 기반으로 하는 알고리즘입니다. 기본 아이디어바이트에 따라 텍스트 내용에 대해 크기가 N인 슬라이딩 윈도우 작업을 수행하여 길이가 N인 일련의 바이트 조각을 형성하는 것입니다.

각 바이트 조각은 모든 그램의 발생 빈도를 세고 미리 설정된 임계값에 따라 필터링하여 이 텍스트의 벡터 기능 공간인 키 그램 목록과 목록의 각 유형을 형성합니다. 그램은 특징 벡터 차원입니다.

모델은 다음과 같은 가정을 기반으로 합니다.N번째 단어의 출현은 이전 N-1개의 단어와만 관련이 있고 다른 단어와는 관련이 없습니다.전체 문장의 확률은 각 단어의 확률의 곱입니다.. 이러한 확률은 말뭉치에서 직접 N개의 단어가 동시에 나타나는 수를 세어 얻을 수 있습니다. 일반적으로 사용되는 것은 이진 Bi-Gram과 삼항 Tri-Gram입니다.
여기에 이미지 설명 삽입
여기에 이미지 설명 삽입
N-gram 모델의 일반적인 적용은
검색 엔진(Google 또는 Baidu) 또는 입력 방법에 대한 추측 또는 힌트입니다. 구글을 이용할 때 하나 또는 여러 개의 단어를 입력하게 되는데 검색창은 보통 아래 그림과 같이 드롭다운 메뉴 형태로 여러 옵션을 제공하는데, 이 옵션들은 실제로 검색하고자 하는 단어열을 추측하고 있는 것이다.

4. 분산 표현

분산 표현은 단어 의미, 품사 및 기타 정보와 같은 원 핫 표현을 기반으로 단어 간의 연결을 고려합니다. 각 차원 요소는 더 이상 0 또는 1이 아니라 서로 다른 정도를 나타내는 연속적인 실수입니다. 분산 표현에는 다음 세 가지 처리 방법이 포함됩니다.

  • 행렬 기반 분포 표현. 행렬의 행은 단어 문맥의 분포를 설명하는 해당 단어의 표현이 됩니다. 분포 가설은 문맥이 유사한 단어는 유사한 의미를 가진다고 주장하기 때문에 이 표현에서 두 단어의 의미적 유사성은 두 벡터의 공간적 거리로 직접 변환될 수 있습니다.
  • 클러스터 기반 분포 표현.
  • 신경망에 기반한 분산 표현.
    핵심 아이디어는 두 부분으로 구성됩니다: 1. 단어의 문맥을 설명하는 방법 선택 2. 단어("대상 단어")와 해당 문맥 사이의 관계를 설명하는 모드 선택.
    우리가 지금 자주 말하는 분산 표현은 주로 신경망의 분산 표현을 기반으로 합니다. 예를 들어, '항저우'와 '상하이'의 분산 표현은 각각 [0.3 1.2 0.8 0.7]과 [0.5 1.2 0.6 0.8]입니다.

그래서 워드 임베딩의 경우 단어의 분산 표현으로 이해할 수 있으며, 고차원의 희소 벡터에서 상대적으로 저차원의 실수 벡터로 매핑됩니다.

분산 표현의 목적은각 단어가 관련 벡터로 변환되도록 변환 함수 찾기. 즉, 분포는 단어를 벡터로 변환하는 표현이며 벡터 간의 유사성은 단어 간의 의미적 유사성과 관련됩니다.

분산 가설. 문맥에서 유사한 단어는 유사한 의미를 갖습니다 .이 방법으로 벡터의 각 차원에 분산적으로 정보를 저장할 수 있습니다.이 분산 표현 방법은 컴팩트한 저차원 특성을 가지며 구문 및 의미 정보에 쉽게 액세스할 수 있습니다.

추신: 요컨대, 위의 단어는 차원을 늘리지 않고 다음 단어를 나타내는 데 사용할 수 있습니다.

여기에 이미지 설명 삽입

1. 행렬 기반 분포 표현

매트릭스 기반 분포 표현은 주로 **"단어-맥락" 매트릭스**를 구성하고 특정 기술을 통해 매트릭스에서 단어의 분포 표현을 얻는 것입니다. 매트릭스의 행은 단어를 나타내고 열은 컨텍스트를 나타내고 각 요소는 특정 단어를 나타냅니다.컨텍스트와 동시 발생의 수입니다. 이러한 방식으로 행렬의 한 행은 단어의 컨텍스트 분포를 설명합니다.

일반적인 컨텍스트는 다음과 같습니다. 1. 문서: "단어-문서" 매트릭스 2. 컨텍스트의 각 단어: "단어-단어" 매트릭스 3. n-그램, "단어-n-튜플" 매트릭스 . 행렬의 각 요소는 단어 수와 컨텍스트 동시 발생이며 TF-IDF, 로그 및 기타 방법은 일반적으로 가중치 평활화에 사용됩니다. 또한 행렬의 차원이 높고 매우 성긴 경우 SVD와 같은 수단으로 축소하여 밀도가 낮은 행렬이 될 수 있습니다.

동시 발생 행렬

여기에 이미지 설명 삽입

위의 예에서는 이것이 우리의 모든 말뭉치라고 가정하고 세 개의 문장이 주어집니다. size=1의 창을 사용하여 각 문장을 차례로 슬라이드합니다. 이는 인접한 단어만 세는 것과 같습니다. 이러한 방식으로 동시 발생 행렬을 얻을 수 있습니다.

동시 발생 행렬의 각 열은 자연스럽게 단어의 벡터 표현으로 간주될 수 있습니다. 이러한 표현은 분명히 원-핫 표현보다 낫습니다. 각 차원에는 의미가 있기 때문입니다. 즉, 동시 발생 수이므로 이러한 벡터 표현은 단어 간의 유사성을 찾을 수 있습니다.
여기에 이미지 설명 삽입
단점 : 원-핫 벡터의 유사도가 0인 문제를 어느 정도 완화하지만 데이터 계수 및 차원 재해 문제는 여전히 해결하지 못한다. 희소성 문제에 직면하면 벡터 차원은 사전 크기에 따라 선형적으로 증가합니다.
솔루션: SVD, PCA 차원 감소, 하지만 계산량이 많음

SVD(특이값 분해)

먼저 단어의 동시 발생 행렬 X를 계산합니다. X는 |V|×|V| 크기의 행렬이고, Xij는 전체 말뭉치에서 어휘 V의 i번째 단어와 j번째 단어에 나타나는 단어의 수를 나타내며 |V|는 어휘. X에서 행렬 분해(예: 특이 값 분해)를 수행하여 행렬 직교 행렬 U를 얻고 U를 정규화하여 모든 단어의 단어 벡터로 간주되는 행렬을 얻습니다. SVD는 단어의 조밀(조밀) 행렬을 얻습니다. 이는
여기에 이미지 설명 삽입
많은 좋은 속성을 가지고 있습니다. 유사한 의미론을 가진 단어는 벡터 공간에서 유사하며 단어 사이의 선형 관계를 어느 정도 반영할 수도 있습니다.
여기에 이미지 설명 삽입

그러나 이러한 전통적인 접근 방식에는 많은 문제가 있습니다.


많은 단어가 나타나지 않기 때문에 행렬이 매우 희소하므로 좋은 행렬 분해 효과를 얻기
위해 단어 빈도에 대한 추가 처리가 필요합니다. 단어(예: even, a,...), 그렇지 않으면 이러한 자주 나타나는 단어도 행렬 분해의 효과에 영향을 미칩니다.

2. 클러스터링 기반 분포 표현(이해 없음)

단어 문맥 간의 관계는 군집화(Clustering)에 의해 구성되며 대표 모델은 Brown Clustering(Brown Clustering)이다.

3. 신경망 기반 분포 표현

  • 신경망 언어 모델(NNLM)을 기반으로
    NNLM은 Bengio 등이 제안했습니다. 그의 주요 아이디어는 다음과 같습니다.
  1. 사전의 각 단어는 단어 특징 벡터에 해당합니다.

  2. 단어 시퀀스를 결합 확률 함수로 표현

  3. 단어 특징 벡터와 확률 함수의 매개변수를 자동으로 학습

NNLM에서 각 단어는 벡터 공간의 한 점이며 특징의 수는 사전의 크기보다 작으며 확률 함수는 이전 단어가 주어졌을 때 다음 단어의 조건부 확률의 곱으로 표현됩니다.

여기에 이미지 설명 삽입
여기에 이미지 설명 삽입
여기에 이미지 설명 삽입
추신: 위의 사진을 이해하지 못했습니다.

  • 순환 신경망 언어 모델 (알 수 없음)
  • C&W 모델 (알 수 없음)
  • 워드투벡
    • 스킵그램
    • CBOW(연속 Bag-of-Words)

추신: 여기 쓸 때 좀 혼란스럽네요 코퍼스, 단어 벡터, 단어 임베딩 및 언어 모델 간의 관계는 무엇입니까? 여기를 보세요 ☞: 코퍼스, 단어 벡터, 단어 임베딩 및 언어 모델 간의 관계는 무엇입니까?

자연어 이해의 문제가 기계 학습의 문제로 전환되려면 먼저 이러한 기호를 수학화하는 방법을 찾아야 합니다.

  • 가장 직접적인 것은 one-hot입니다. 그런데 문제는 단어 사이에 관계가 없다는 것입니다.
  • 다른 하나는 분산 표현 분산 표현입니다.
    • 행렬 기반 분포 표현(n-gram, Glove)
    • 클러스터 기반 분포 표현(두 단어의 클러스터링 범주, 브라운 클러스터링을 기반으로 유사성 판단)
    • 신경망의 분산 표현을 기반으로 분산 표현, 단어 임베딩 및 단어 임베딩의 핵심은
      여전히 ​​컨텍스트의 표현과 컨텍스트와 대상 단어 간의 관계 모델링입니다.
      지금까지 모든 단어 벡터 학습 방법은 언어 모델을 학습하면서 단어 벡터를 얻었으므로 언어 ​​모델의 개념을 도입했습니다.

언어 모델에는 문법적 언어 모델과 통계적 언어 모델이 있습니다. 일반적으로 우리는 통계적 언어 모델을 참조합니다. 사실 평범한 사람이 한 문장을 말하는지 보는 것이다. 예를 들어, 기계 번역 및 음성 인식이 여러 후보를 얻은 후 언어 모델을 사용하여 가능한 한 신뢰할 수 있는 결과를 선택할 수 있습니다. NLP의 다른 작업에도 사용할 수 있습니다.

이제 원래 질문으로 돌아가 말뭉치, 단어 벡터, 단어 임베딩 및 언어 모델 사이의 관계는 무엇입니까?

코퍼스는 언어 모델을 훈련하고 단어 벡터를 생성하며 단어 벡터에는 단어 임베딩과 같은 표현이 포함됩니다.
자체 코퍼스를 사용하여 Finetuning으로 자체 언어 모델을 생성할 수 있습니까?

5. 워드 임베딩 및 Word2Vec

워드 임베딩(Word Embedding)은 텍스트의 일종으로단어를 숫자형 벡터로 변환표준 기계 학습 알고리즘을 사용하여 이를 분석하려면 숫자로 변환된 이러한 벡터를 숫자 형식의 입력으로 사용해야 합니다. 워드 임베딩 과정은 차원이 모든 단어의 수인 고차원 공간을 훨씬 더 낮은 차원의 연속된 벡터 공간에 임베딩하는 것으로, 각 단어 또는 구문은 실수 필드의 벡터에 매핑됩니다.단어 임베딩 결과는 단어 벡터를 생성합니다.

단어 벡터 는 품사 태깅, 명명된 엔터티 인식, 텍스트 분류, 문서 클러스터링, 감정 분석, 문서 생성, 질문 응답 시스템 등과 같은 다양한 NLP 작업에서 텍스트 벡터화에 선호되는 기술입니다.
여기에 이미지 설명 삽입

워드투벡 소개

Word2vec은 Word Embedding 방법 중 하나입니다. 그는 2013년 Google의 Mikolov가 제안한 새로운 단어 임베딩 방법이었습니다.

이 알고리즘에는 2가지 훈련 모드가 있습니다.

  • 문맥에서 현재 단어 예측
  • 현재 단어에서 문맥 예측

Word2Vec 모델은 실제로 두 부분으로 나뉩니다.첫 번째 부분은 훈련 데이터 세트의 구성 이고 두 번째 부분은 모델을 통해 단어 임베딩 벡터를 얻는 것 , 즉 단어 임베딩입니다.

Word2Vec의 전체 모델링 프로세스는 실제로 Auto-encoder의 아이디어와 매우 유사합니다. 즉, 먼저 교육 데이터를 기반으로 신경망을 구축합니다. 새로운 데이터, 작업이지만 실제로 필요한 것은 학습 데이터를 통해 모델이 업데이트되는 매개변수입니다.

단어 임베딩의 개발은 문맥을 고려하여 모델의 입력과 출력을 어휘에 있는 단어로 구성한 다음 Skip-Gram과 CBOW의 두 가지 단어 모델 방법을 생성합니다. 동시에 숨겨진 레이어-출력 레이어에서도 softmax() 메서드에서 레이어드 softmax 및 네거티브 샘플 메서드로 진화했습니다.

1. 스킵그램 알고리즘

여기에 이미지 설명 삽입
Skip-Gram은 입력 단어가 주어진 컨텍스트를 예측하는 것입니다. 이해를 돕기 위해 초등학교 영어 수업에서 문장을 사용할 수 있습니다. 예를 들면 "The __________"입니다.

Skip-Gram의 모델 구조는 주로 여러 단계로 나뉩니다.

  • 문장에서 중심 단어, 즉 Skip-Gram 모델 입력 단어를 정의합니다.
  • skip_window 매개변수를 정의하여 현재 입력 단어의 한쪽(좌우)에서 선택된 단어 수를 나타냅니다.
  • 중심 단어와 skip_window에 따라 창 목록을 만듭니다.
  • 현재 창 목록에서 얼마나 많은 다른 단어가 출력 단어로 선택되었는지 나타내는 데 사용되는 num_skips 매개 변수를 정의합니다.

"The quick brown fox jumps over the lazy dog"라는 문장이 있다고 가정하면 설정된 창 크기는 2(window_size=2)입니다. 단어(입력 단어)가 선택됩니다. ) 결합합니다. 아래 그림과 같이 가운데 단어는 단계 크기 1로 슬라이드되며 파란색은 입력 단어를 나타내고 사각형은 창 목록의 단어를 나타냅니다.
여기에 이미지 설명 삽입
따라서 Skip-Gram을 사용하여 신경망의 훈련 데이터를 구성할 수 있습니다.

우리는 단어를 텍스트 문자열로 신경망에 공급할 수 없다는 것을 이해해야 하므로 단어를 인코딩하여 네트워크에 공급할 방법이 필요합니다. 이를 위해 훈련할 문서에서 먼저 10,000개의 개별 단어로 구성된 어휘를 구성합니다. 그런 다음 해야 할 일은 각 단어를 하나의 핫 표현으로 만드는 것입니다. 또한 신경망의 출력은 어휘의 각 단어가 근처 단어를 무작위로 선택할 확률을 포함하는 단일 벡터(역시 10,000개의 구성 요소 포함)입니다.

훈련 문서에서 10,000개의 고유하고 고유한 단어를 추출하여 어휘를 형성한다고 가정합니다. 이 10,000개의 단어에 대해 원-핫 인코딩을 수행하고 얻은 각 단어는 10,000차원 벡터입니다 벡터의 각 차원 값은 0 또는 1입니다. 갈색 벡터는 세 번째 차원이 1이고 다른 차원이 0인 10,000차원 벡터입니다(갈색 = [0,0,1,0,…,0]

다음 그림은 훈련이 필요한 신경망 구조입니다. 왼쪽의 뉴런 입력 벡터는 어휘에서 One hot representation 이후의 단어 이고 오른쪽의 각 뉴런은 어휘의 각 단어를 나타냅니다. 실제로 신경망 피드 학습 데이터를 학습할 때 입력 단어(중심 단어)가 One hot representation으로 표현될 뿐만 아니라 출력 단어도 One hot representation으로 표현됩니다. 그러나 이 네트워크가 평가되고 예측될 때 출력 벡터는 실제로 softmax() 함수 로 계산된 어휘에 있는 모든 단어의 확률 분포 입니다 (즉, One hot 표현이 아닌 부동 소수점 값의 묶음).
여기에 이미지 설명 삽입
히든 레이어

단어 인코딩과 학습 샘플 선택에 대해 이야기한 후 숨겨진 레이어를 살펴보겠습니다. 이제 300개의 특징을 사용하여 단어를 표현하려는 경우(즉, 각 단어는 300차원 벡터로 표현될 수 있음). 그러면 은닉층의 가중치 행렬은 10,000개의 행과 300개의 열이어야 합니다(은닉층에는 300개의 노드가 있음).
Google은 Google 뉴스 데이터 세트에서 훈련된 새로 출시된 모델에서 300개의 기능이 있는 단어 벡터를 사용합니다. 단어 벡터의 차원은 조정 가능한 하이퍼 매개변수입니다(Python의 gensim 패키지에 캡슐화된 Word2Vec 인터페이스의 기본 단어 벡터 크기는 100이고 window_size는 5입니다).

아래 그림을 보면 왼쪽과 오른쪽 그림은 서로 다른 각도에서 입력 레이어 숨김 레이어의 가중치 행렬을 나타냅니다. 왼쪽 그림의 각 열은 은닉층의 단일 뉴런에 연결된 10,000차원 단어 벡터와 가중치 벡터를 나타냅니다. 오른쪽 플롯에서 각 행은 실제로 각 단어에 대한 단어 벡터를 나타냅니다.

여기에 이미지 설명 삽입
따라서 우리의 궁극적인 목표는 이 은닉층의 가중치 행렬을 학습하는 것입니다.
이제 다시 돌아와서 모델의 정의를 통해 모델을 훈련해 봅시다.

위에서 입력 단어와 출력 단어가 모두 one-hot 인코딩될 것이라고 언급했습니다. 신중하게 생각해보세요. 입력이 원-핫 인코딩된 후 대부분의 차원이 0이므로(사실 하나의 위치만 1임) 이 벡터는 매우 희소하므로 어떤 일이 일어날까요? 1 x 10000 벡터와 10000 x 300 행렬을 곱하면 상당한 계산 리소스가 소모됩니다.효율적인 계산을 위해 행렬의 해당 벡터에서 차원 값이 1인 인덱스 행만 선택합니다.(이 문장은 매우 복잡합니다.) 그림을 보면 이해할 수 있습니다.

여기에 이미지 설명 삽입
위 그림에서 행렬 연산을 살펴보자 왼쪽은 1 x 5와 5 x 3의 행렬이고 결과는 1 x 3의 행렬이어야 한다. 결과의 첫 번째 열은 [식]이고, 다른 두 요소는 같은 방법으로 12, 19로 얻을 수 있습니다. 10,000 차원의 행렬에 대해 이러한 계산 방법을 사용하는 것은 매우 비효율적입니다 .

계산을 효율적으로 하기 위해 이 sparse 상태에서는 행렬 곱셈 연산을 하지 않게 되는데, 행렬 계산 결과는 실제로 행렬에 해당하는 벡터에서 값이 1인 인덱스 임을 알 수 있다.위의 예에서, 왼쪽 벡터의 값은 1의 해당 차원은 3(첨자는 0부터 시작)이고 계산 결과는 행렬의 세 번째 행(첨자는 0부터 시작) - [10, 12, 19]이므로 모델의 히든 레이어 가중치 행렬은 "룩업 테이블"이 됩니다. 행렬 계산을 할 때 입력 벡터에서 값이 1인 차원에 해당하는 가중치 값을 직접 확인합니다. 숨겨진 레이어의 출력은 각 입력 단어에 대한 "단어 임베딩"입니다.

출력 레이어

신경망의 은닉층 계산 후 개미라는 단어는 1 x 10000의 벡터에서 1 x 300의 벡터로 변경된 다음 출력층에 입력됩니다. 출력 레이어는 softmax 회귀 분류기이며 각 노드는 0과 1 사이의 값(확률)을 출력하며 출력 레이어의 모든 뉴런 노드 확률의 합은 1입니다.

다음은 예제이며 훈련 샘플은 (입력 단어: "개미", 출력 단어: "자동차") 계산 다이어그램입니다.

여기에 이미지 설명 삽입
먼저 스킵그램에 대해 쓰자면 너무 과한 것 같다. . .

2. 연속 백오브워드 알고리즘(CBOW)

여기에 이미지 설명 삽입
여기에 이미지 설명 삽입

☞ https://www.cnblogs.com/Luv-GEM/p/10593103.html 참조

아직도 이해가 안 돼요. . . . 울었다. . .

Supongo que te gusta

Origin blog.csdn.net/Mason_Chen/article/details/109528753
Recomendado
Clasificación