클러스터링에 BERT 임베딩을 사용하는 방법 (감독 된 작업을위한 BERT 모델 미세 조정과 반대)

Aug 21 2020

먼저 클러스터링을 수행하기 위해 BERT 임베딩을 문서 기능으로 사용하는 데 관심이 있기 때문에이 질문을하고 싶습니다. Hugging Face 라이브러리의 Transformers를 사용하고 있습니다. 각 문서가 고유 한 벡터를 갖도록 각 문서에 대한 모든 Word Piece 임베딩을 평균화하려고했습니다. 그런 다음 클러스터링에이 벡터를 사용합니다. 이것이 좋은 생각이 아니라고 생각하거나 내가 무언가를 놓치고 있거나 무언가를 이해하지 못한다면 언제든지 의견을 말하십시오.

내가 본 문제 max_length는 Hugging Face 라이브러리에 지정된 처음 N 개의 토큰 만 사용하고 있다는 것 입니다. 처음 N 개의 토큰이 해당 문서에 대한 최상의 표현이 아니라면 어떻게됩니까? N 개의 토큰을 무작위로 선택하거나 N 개의 토큰을 10 번 무작위로 선택하는 것이 더 낫지 않을까요?

또한 WordPiece 토크 나이저를 사용하는 것이 lemmatization을 대체하는 것이므로 표준 NLP 사전 처리가 더 간단해야한다는 것을 알고 있습니다. 그러나 우리는 이미 처음 N 개의 토큰만을 사용하고 있기 때문에 불용어를 제거하지 않으면 쓸모없는 불용어가 처음 N 개의 토큰에있을 것입니다. 지금까지 Hugging Face의 예에서 토큰 화 전에는 아무도 실제로 더 많은 전처리를 수행하지 않습니다.

[(Hugging Face에서) 토큰 화 된 아래 예제, 문서의 처음 64 개 토큰]

따라서 여기에서 몇 가지 질문을하고 있습니다 (하나만 답하거나 읽을 수있는 논문 또는 리소스에 대한 참조를 제공해도됩니다).

  1. 처음 N 개의 토큰이 무작위가 아닌 선택되는 이유는 무엇입니까? 1a) N 개의 토큰을 무작위로 여러 번 선택하는 것이 있습니까?
  2. 질문 1과 마찬가지로 토큰을 선택하는 더 좋은 방법이 있습니까? 적어도 특정 쓸모없는 토큰을 배제하기 위해 토큰에 TF-IDF를 사용하고 있습니까?
  3. 사람들은 일반적으로 Word Piece 토크 나이저를 사용하기 전에 더 많은 전처리를 사용합니까?
  4. 선택이 max_length성능에 어느 정도 영향 을 미칩니 까?
  5. Hugging Face 라이브러리에서 최대 길이가 512 개로 제한되는 이유는 무엇입니까? 왜 가장 긴 문서의 길이를 사용하지 않습니까?
  6. 행렬을 얻기 위해 WordPiece 임베딩의 평균을 구하는 것이 좋은 생각입니까 (클러스터링을 수행하려는 경우)?
  7. BERT 임베딩을 사용하여 유사한 문서 그룹을 찾기 위해 클러스터링 할 수있는 문서에 대한 기능을 얻는 것이 좋은 생각입니까? 아니면 더 나은 다른 방법이 있습니까?

실물: 'Trump tries to smooth things over with GOP insiders. Hollywood, Florida (CNN) Donald Trump\'s new delegate guru told Republican Party insiders at a posh resort here on Thursday that the billionaire front-runner is recalibrating the part "that he\'s been playing" and is ready

토큰 화 :

['[CLS]',
 'trump',
 'tries',
 'to',
 'smooth',
 'things',
 'over',
 'with',
 'go',
 '##p',
 'insider',
 '##s',
 '.',
 'hollywood',
 ',',
 'florida',
 '(',
 'cnn',
 ')',
 'donald',
 'trump',
 "'",
 's',
 'new',
 'delegate',
 'guru',
 'told',
 'republican',
 'party',
 'insider',
 '##s',
 'at',
 'a',
 'po',
 '##sh',
 'resort',
 'here',
 'on',
 'thursday',
 'that',
 'the',
 'billionaire',
 'front',
 '-',
 'runner',
 'is',
 'rec',
 '##ali',
 '##bra',
 '##ting',
 'the',
 'part',
 '"',
 'that',
 'he',
 "'",
 's',
 'been',
 'playing',
 '"',
 'and',
 'is',
 'ready',
 '[SEP]']

답변

3 AshwinGeetD'Sa Aug 21 2020 at 16:10

답은 다음과 같습니다.

  1. 시퀀스 모델링에서 우리는 문장이 순서가있는 순서를 기대하므로 임의의 단어를 취할 수 없습니다 (단어가 실제로 순서가 아닌 단어에 대해 신경 쓰이는 단어 가방과는 달리). 예 : "I ate- ice-cream"과 "ice-cream ate I"는 동일하지만 전체 문장을 순서대로 처리하는 모델에는 해당되지 않습니다. 따라서 무작위 순서로 N 개의 무작위 단어를 선택할 수 없습니다.
  2. 토큰 선택은 모델에 따라 다릅니다. 불용어와 기호, 숫자 등과 같은 기타 내용이 정보보다 노이즈로 작용하는 경우 항상 사전 처리하여 제거 할 수 있습니다.
  3. 나는 lemmatizing과 word-piece tokenization이 동일하지 않다는 것을 분명히하고 싶습니다. 예를 들어, lemmatization에서 "playing"과 "played"는 "play"로 lemmatized됩니다. 그러나 단어 조각 토큰 화의 경우 어휘에 따라 "play"+ "## ing"또는 "play"+ "ed"로 나뉩니다. 따라서 더 많은 정보가 보존됩니다.
  4. max_length대부분의 문장이 완전히 고려되도록 최적으로 선택되어야합니다. (즉, 대부분의 문장은 max_length토큰 화 이후 보다 짧아야합니다 ). 전체 시퀀스 길이를 고려하는 일부 모델이 있습니다. 예 : Universal Sentence Encoder (USE), Transformer-XL 등. 그러나 더 작은으로 더 높은 배치 크기를 사용할 수도 있으므로 max_length학습 / 미세 조정이 더 빨라지고 언젠가 더 나은 결과가 생성됩니다.
  5. 사전 훈련 된 모델은 MAX_LEN512 개로 훈련되었습니다. 이는 모델의 한계입니다.
  6. BERT와 관련하여 논문에서 주장한 바와 같이 [CLS]토큰의 분류 포함으로 충분합니다. 주의 기반 모델이므로 [CLS]토큰은 전체 문장의 구성을 포착하므로 충분합니다. 그러나 모든 토큰의 임베딩을 평균화 할 수도 있습니다. 나는 대부분의 작품에서 모든 단어 조각 토큰의 평균이 더 높은 성능을 얻었습니다. 또한 일부 작업에서는 마지막 4 개 레이어에서 평균 임베딩을 가져 오라고 제안하기도합니다. 단지 디자인 선택 일뿐입니다.
  7. 문장 임베딩을 사용하는 것은 일반적으로 괜찮습니다. 그러나 문헌으로 확인해야합니다. 항상 더 나은 기술이있을 수 있습니다. 또한 문장 임베딩에 특화된 모델이 있습니다 (USE는 그러한 모델 중 하나입니다). 확인할 수 있습니다.
1 XsLiar Aug 25 2020 at 21:47

귀하의 많은 질문이 이미 답변되었으므로 마지막 질문에 대한 개인적인 경험 만 공유 할 수 있습니다.

7) BERT 임베딩을 사용하여 유사한 문서 그룹을 찾기 위해 클러스터링 할 수있는 문서에 대한 기능을 얻는 것이 좋은 생각입니까? 아니면 더 나은 다른 방법이 있습니까?

더 간단한 접근 방식으로 시작 하는 것이 좋은 아이디어 라고 생각합니다 . 특히 벡터 라이저에 의존하는 긴 문서를 다룰 때 tf-idf더 나은 결과를 가져 오면서 덜 복잡하고 일반적으로 더 많은 해석 성을 가질 수 있습니다.

더 긴 문서에 대한 클러스터 연습을 방금 마치고 비슷한 사고 과정과 실험을 거쳤습니다. 결국 tf-idf기능으로 최상의 결과를 얻었습니다 . 내가 사용한 파이프 라인은 다음과 같이 구성되었습니다.

  1. 프로세스 데이터 (중단 어 제거, lemmatising 등)
  2. tf-idf 벡터 라이저를 맞 춥니 다 (또는 시도 할 수도 있습니다 doc2vec).
  3. 일종의 차원 축소 알고리즘 (제 경우에는 PCA)을 실행하십시오.
  4. (K- 평균) 클러스터링-최적의 클러스터 수를 평가합니다.

다운 스트림 작업에서 긴 문서와 함께 BERT를 사용하려는 경우 다음 두 가지 주요 접근 방식을 살펴볼 수 있습니다.

자르기 방법

  • 헤드 전용 (처음 512 개 토큰)
  • 꼬리 만 (마지막 512 개 토큰
  • 머리 + 꼬리

도메인에 따라, 예를 들어 각 문서가 요약으로 마무리되는 경우 테일 전용이 결과를 개선 할 수 있습니다.

계층 적 방법

  • 평균 풀링
  • 최대 풀링

여기에 언급 된대로 절단 방법은 BERT 모델 (토큰)의 입력에 적용되는 반면 계층 적 방법은 Bert 모델의 출력 (임베딩)에 적용됩니다.