recap

  • (word vector) 같은 context를 가지는 center word가 어디에 배치되어야 할까?

그럼 sequence(순서)는 고려하지 않나여? 네 안해요 context window 내에 있는 것만 고려해요

  • Optimization (gradient descent) 𝐽 (𝜃) 을 minimize 하는 것을 목표로 함

하지만 모든 corpus에 대해서는 만족하는 optimal을 구하기 어려움 때문에 sample_window(mini batch)를 통해서 구함 Stochastic gradient descent (SGD)

Skip grams

주어진 center word를 통해서 바깥 context를 예측함

Continuous Bag of Words (CBOW)

context를 통해 center word 예측

최근 Bert 모델

왜 그럼 처음부터 CBOW 안썻어요? 연산량이 너무 많아서 loss function 구하기 힘들었음

negative sampling

  • 기존 softmax가 너무 연산량이 많음 negative sampling 사용
  1. 실제 문맥 단어 o가 등장할 확률을 최대화하고,
  2. 무작위로 샘플링한(negative) 단어들이 등장하지 않을 확률을 최대화합니다.

즉, “실제 단어는 높은 점수를 주고, 무작위로 뽑은 단어들은 낮은 점수를 주는 방향으로 학습” 합니다.

네거티브 샘플 w 를 선택할 때 단순히 균등 분포에서 샘플링하면 자주 등장하는 단어들(“the”, “is” 같은 stop words)이 지나치게 많이 뽑히는 문제가 발생합니다. 이를 해결하기 위해 빈도 기반 샘플링 방법을 사용합니다.

어 그럼 SGD + negative sampling을 쓰면 sparse해지겟네요?

넹 • Negative Sampling을 적용하면 SGD가 매우 희소한 그래디언트를 가지게 됨.전체 단어 벡터를 업데이트하는 것이 아니라, 일부 단어만 업데이트하므로 연산량이 절감됨.SGD와 Negative Sampling의 조합 덕분에 Word2Vec은 대규모 데이터에서도 효율적으로 학습될 수 있음.

왜 같이 등장할 확률을 바로 안구해요?

  • co-occurrence matrix는 어캐 구할까용?
    • window vs document에 따라 달라요

한번 해보죠 이게 말이 되나요?

  • 큰 matrix를 차원을 줄여야 해요
  • voca 사이즈에 따라 사이즈가 커져요

방법 1. Singular Value Decomposition

사실 잘 안돼요

  • counts를 scaling 해야함
  • Use correlations instead of counts, then set negative values to 0
  • Ramped windows that count closer words more than further away words

encoding meaning을 더 잘하게 할 수 없을까? GloVe

어캐했어요?

Intrinsic word vector evaluation

Intrinsic

  • 모델 output만 가지고 평가함
  • correlation을 얼마나 잘 평가하는가

Meaning similarity

  • 사람한테 직접 점수를 매겨서 label로 사용
  • 모델링을 잘했으면 비슷한 값을 가질 듯

Extrinsic

  • 어플리케이션의 목적(다른 task)에 따라 지표 평가
  • named entity recognition (개체 인식 태스크)
    • 어디서부터 단어가 entity이고, classifiy를 얼마나 잘하나

word sense

단어가 여러가지 의미(모호함)를 가질 때, 어떻게 벡터로 표현할까요?

  1. 비슷한 의미를 가진 cluster word windows 다른 의미를 가질 때(다른 클러스터에 있을 때), 각각을 다르게 배치할 거에요

NER(Named Entity Recognition)

문장 안에서 단어(token)가 사람, 장소, 날짜… 등 entity로 감지하고 분류하는 작업

어따 써용?

  • 문서 내 특정 entity 감지
  • entity 감정 분석

그럼 classification를 잘해야함

multiclassify or binary classify

구현 어캐 해용? 간단한 binary classify

classification

supervised learning 학습할 데이터셋이 다 있음

Neural classification Typical ML softmax classifier 은 라벨(y)에 대해 softmax을 최대로 하려고함

  • 즉 linear boundary를 구할 수 밖에 없다 ㅜㅜ

만약에 여러 층을 끼게 된다면 neural network classifier non-linear한 것도 구할 수 있다! non-linear decision boundary

The word vectors x re-represent one-hot vectors, moving them around in an intermediate layer vector space, for easy classification with a (linear) softmax classifier

  • x: (1-hot vector)
  • hidden layer : non-linear function (logistic(sigmoid), ReLU)
  • u 내적
  • function predict

non-linear function

  • logistic, tanh는 지금도 쓴다. 나머진 문제가 좀 있음
    • ReLu 0이하 에러 전파 x
    • GELU 오 낫밷
  • 왜 non-linear가 필요한가용?
    • linear한애는 결국 얼마나 쌓아봐야 결국엔 한층 쌓은거랑 똑같다

Cross Entropy Loss

얼마나 두 distribution이 비슷한가를 측정하는 지표

correct class, predict class 의 CEL 를 높히는 방향으로 학습을 함

  • p : input으로 넣는 1-hot vector  [0, …, 0, 1, 0, …, 0]

Gradient Descent

Addition

un-supervised 특성 추출