티스토리 뷰

과제 Assignment #2

  - 1.

word2vec의 핵심적인 통찰은 '단어가 보유하고있는 그룹에 의해 알려진다'는 것입니다.

구체적으로 '중심'단어 C C를 둘러싼 상황 별 창이 있다고 가정합니다.

이 상황 별 창에있는 단어를 '외부 단어'라고합니다.

예를 들어, 그림 1에서 중심 단어 c 'banking'임을 알 수 있습니다.

컨텍스트 창 크기가 2이므로 외부 단어는`turning ',`into',`crises '`as'입니다.

 

context window란 근방의 단어를 몇 길이나 볼것인지를 뜻하는 크기임

--

skip-gram word2vec 알고리즘의 목표는 확률 분포 P (O|C)를 정확하게 얻는 것입니다.

특정 단어 o와 특정 단어 c가 주어지면, 우리는 단어 o c에 대한 '외부'단어 일 확률 인 P (O = o|C = c)를 계산하려고합니다.

, o c의 문맥 window에 속할 확률을 구하는 것입니다.

 

word2vec에서 조건부 확률 분포는 벡터 내적을 취하고 softmax 함수를 적용하여 제공됩니다.

(( 수식을 설명하는 ))

여기서 u_o는 외부 단어 o를 나타내는 'outside'벡터이고 v_c는 중심 단어 c를 나타내는 'center'벡터입니다. 이러한 매개 변수를 포함하기 위해 두 개의 행렬 U V가 있습니다. U의 열은 모두 '외부'벡터 uw입니다. V의 열은 모든 '중심'벡터 vw입니다. U V 모두 어휘에 포함 된 모든 w에 대한 벡터를 포함합니다.(*1)

더보기

*1 우리 어휘의 모든 단어가 정수 k와 일치한다고 가정합니다. 굵은 소문자는 벡터를 나타냅니다.

uk U k 번째 열과 k로 인덱싱 된 단어에 대한 '외부'단어 벡터입니다. vk V k 번째 열과 k로 색인 된 단어의 '중심'단어 벡터입니다. 표기법을 단순화하기 위해 우리는 단어와 단어의 색인을 참조하기 위해 k를 번갈아 사용합니다

강의에서 한 쌍의 단어 c o에 대해 손실은 다음과 같이 주어집니다.

이 손실을 실제 분포 y와 예측 된 분포 ^ y 사이의 교차 엔트로피 (*2)로 볼 수 있습니다

더보기

*2 (이산)확률분호 p 또다른 분포 q 사이에서의  크로스엔트로피는 이러합니다.

여기서 y ^ y는 어휘의 단어 수와 길이가 같은 벡터입니다. 또한,이 벡터의 k 번째 항목은 k 번째 단어가 주어진 c에 대해 '외부 단어'가 될 조건부 확률을 나타냅니다. 실제 경험적 분포 y는 실제 외부 단어 o에 대해 1, 그 밖의 모든 곳에서 0을 갖는 원-핫 벡터입니다. 예측 분포 ^ y는 방정식 (1)에서 모델에 의해 주어진 확률|분포 P (O|C = c)입니다.

 

((이제설명이 끝남- 내번역은 인간미 있게 할거임))

 

(a) (3점) 주어진 (2)번의 나-이브한 softmax loss 는 y와 y햇(^)과 같은지를 보이시오. 먼소리냐면, 아래 식을 1줄로 표현하라 이말이오. 

((머리가 빙빙도는구마 ))

((오늘은 이 (a)번 문제를 풀기 위해 기호를 이해하는 것만 진행하자)) (6/28)

 

  • 소프트 맥스는 결과값 y가 각 클래스에 해당하는 확률값이라 볼수 있다. 그런의미에서 w번째(word)에 대한 확률(y햇이 y를) 은 정확하게 일치하는 경우 1이라 볼수 있다. 그말인즉 log1이 되는데, 그럼 0 이된다! 앞서말한 정확하게 일치하는 것에 대한 갱신값은 0이라는 것이 상응하는 결과라 볼수 있다. 
  • 그리고 오른쪽 값을 왼쪽으로 옮기면 log(y햇초기값) 이라고 볼수 있는데 이는 초기의 y값에서 softmax갱신값을 계속해서 더해나가는 상황이다. (그야 학습할수록 갱신값이 연산되니까) 그렇기 때문에 (3번) 수식이 softmax_loss와 같다고 본다면, softmax loss연산값에 대해서 다시한번 살펴보고 같음을 인정하자 

 

 

이해한 것 

  • 일단 ^ 은 hat으로, 행렬상에서는 단위벡터라 부른다. 
  • w ∈ Vocab은  Vocabulary에 포함된 word 하나를 이야기하는 것이다. 이를테면 for 문의 i처럼
  • Softmax 함수는 범주(Class)  수만큼의 차원(dimension)을 갖는 입력벡터를 받아서 확률 p(요소의 합이 1)로 변환해 줍니다. 이후 손실 함수로는 크로스엔트로피(cross entropy)가 쓰이는데요. 크로스엔트로피는 소프트맥스 확률의 분포와 정답 분포와의 차이를 나타냅니다.((??)) 이를 기본으로 해서 손실(오차)을 최소화하는 방향으로 모델의 각 파라메터를 업데이트하는 과정이 바로 딥러닝 모델의 학습이 되겠습니다.
  • 두 확률분포 p q 사이의 차이를 계산하는 데에는 크로스 엔트로피(cross entropy)라는 함수가 사용됩니다. 식은 Σp(x)log⁡q(x)입니다. 여기에서 p를 우리가 가진 데이터의 분포 P(Y|X), q를 모델이 예측한 결과의 분포 P(Y|X;θ)로 두겠습니다. 이렇게 되면 크로스 엔트로피는 파라메터 θ 하에서의 음의 로그우도의 기대값이라고 해석할 수 있습니다. 따라서 ΣxP(y|x) log⁡P(y|x;θ)를 최소화하는 θ가 바로 우리가 찾고 싶은 모델이 됩니다.
  • 요컨대 우도(likelyhool)의 곱이 최대인 모델을 찾는 것은 로그우도의 기대값이 최대인 모델을 찾는 것과 같으며, 이는 또한 학습데이터의 분포(distribution)와 모델이 예측한 결과의 분포 사이의 차이, 즉 크로스 엔트로피를 최소화하는 것과 동치입니다. 이 때문에 음의 로그우도가 딥러닝 모델의 손실함수가 되는 것입니다. 
    • 위를 읽어보니, 좌변은 크로스 엔트로피라고 하는 것 같다. 내가 아는 것은 cross entropy는 loss 연산하기 위해 존재하고 softmax는 보는 사람이 이해하게끔 값들의 합을 1로 치환하는 것으로만 아는데 softmax를 포함하여 값이 갱신되는지는 몰랐다. (그래서 맨마지막에 하는줄 알았는데) 

  • 일단 cross entropy에 대한 1번문제는 여기까지 진행

 

 

출처 : 딥러닝 모델의 손실함수 https://ratsgo.github.io/deep%20learning/2017/09/24/loss/

softmax-with-loss 계층 https://ratsgo.github.io/deep%20learning/2017/10/02/softmax/

오차 역전파 https://ratsgo.github.io/deep%20learning/2017/05/14/backprop/

크로스엔트로피 함수 https://wikidocs.net/59427

'AI > 자연어 처리' 카테고리의 다른 글

max-margin loss란  (0) 2021.06.23