1 .word2vec 개선 

 

두 계산이 병목되는 문제점 (병목이란?  속도 차이가 달라서 중간에 데이터가 쌓이는 문제점을 말한다 . )

 

1-1 입력층의 원핫 표현 / 가중치의 행렬 win 의 곱 

1-2 은닉층의 가중치 행렬 w out 의 곱 및 softmax 계산 

 

 

1-1 원핫 표현 시간 多 -> 벡터의 크기 多

벡터의 크기 ?( 내 생각에는 벡터는 하나의 방향을 나타내는 거라고 생각하면 된다. 즉 여러개의 방향이 쌓이면 차원이 되는데 여기서는 하나만 1 이고 나머지는 0 이가 때문에 차원은 그렇게 크지는 않으나. 벡터의 크기는 크다는 것을 알수 있다. )

어쨌든 100만 단어 일시 원소수가 100만개 이기 때문에 벡터의 크기는 크다고 말할수있다. 

 

1-2  wout  / softamx 오래걸림

 

4.1 EmBedding 계층

 

forward는 win 에서  자기 자신에 해당하는 배열만 추출해서 흘러 보낸다. 

따라서 역전파에서는 그대로 흘러주기만 하면된다. 

 

backforward 

에서 dw 와 dh 가 이해가 안갔다.  (그래서 밑 바닥 부터 시작하는 1 책 다시봄)

dh 는 자기 자신이니까 변한게 없으니 자신의 원래 상태 인것 이였고 (틀릴수도 잇음

dw은 뭐지???? 싶었다. 편미분인게 분명한데 어떤 상태에서 편미분인지 분모가 안적혀있어서 헷갈렷다.

 

 

그래서 결국은 이런상태인거 같다. 

 

### 왜  softmax+ cross Entropy Error 의 backward 는 y1-t1 인가?

처음 봣을때는 이해가 안됫는데 계속보다보니가 알겠다.

https://velog.io/@bbirong/%EB%B0%91%EB%94%A5-%EB%B6%80%EB%A1%9D-A.-Softmax-with-Loss-%EA%B3%84%EC%B8%B5%EC%9D%98-%EA%B3%84%EC%82%B0-%EA%B7%B8%EB%9E%98%ED%94%84

https://questionet.tistory.com/23

여기에 설명 잘되어있음

 

이부분에서 사실 이해안되서 많이 찾아봤는데 

라고 생각했다. 그래서 이게 뭔가 고민해봤는데 우리가 중요한거는 미분이지 그 값이 아니다.

그니까 결국은 

y= exp(x) 식을 가상으로 있다고 생각하고 미분 한다고 생각해야되는거 같다 (아닐수도 ^^:; 

 

이부분도 이해가 안됬는데 이런식으로 하면 이해가 된다. 

(어쨋뜬.. 책은 다 ... 하나도 안써있고 알아서 생각해라 인데 가끔 블로그 보면 이해 안될때도 많다.. 근데 이게 맞는 해석인지는 나도 모르겠음....)

 

어쨌든 이런식으로 쉽게 나타나면 (yt-t , y2-t2 ,y3-t3) 가 나오게된다. 

 

 

 

### 다시 본문

 

 

 

2개의 값이 dw에 할당하는데 중복이 생긴다 이때는 더하기를 해야되는데 책에서는

(왜 더해야 하는지는 각자 생각해봅시다라고 적혀져 있다,)

 

3장에서 우리는 h= 1/2(h1+h2) 을 해주었다. 

 

 

 

4.2 word2vec 개선

1-2 은닉층의 가중치 행렬 w out 의 곱 및 softmax 계산 에 대해서 서술한다. 

 

 

4.2.2 다중 분류에서 이진분류로 

 

  다중분류 (여러개중에서 이거 맞나요? ) -> 이중분류 ( 이것은 __이거 인가요 ? yes / no) 

 으로 변한해 보자 

 

"you "     __  " goodbye"  -> 타킷 단어가 무엇인가요 ? ( 여러가지 확률을 보여줌)

 

이것을 이진분류  -> yes / no 으로 답할수 있는가 으로 변환하겠다. 

 

"you "     __  " goodbye"  -> " say"  입니까? yes/ no 

 

 

처음에 시작할때 백만개의 단어를 원핫 샷 으로 했고 w in 가중치를 통해 h  가 1*100 으로 줄어들었다. 

그  h 를다시 wout 을해서 백만개의 단어중 각각 나올 확률을알아보는거였다. 

 

하지만 여기서는 개선을 위해서 wout 을 전체를 곱하는게 아닌 say 의 wout만 나올 확률을 물어보는 듯하다. 

 

4.2.3  교차 엔트로피 오차 

이전 블로그에서 교차 엔트로피 loss 는 이런식으로 진행된다고 서술하였다. 

즉 실제의 엔트로피와 내가 예상한 엔트로피 오차 간의 차이가 얼마나 나는지 를 알아보는 공식이다. 

 

 

저번 블로그에서 적은 식을 이용해서 변경하면 

이렇게 나온다. 

 

 

Softmax와 Cross entropy

학습시키는 데이터의 Feature가 3가지이고 이 데이터들을 총 3개의 분류로 나눈다고 해봅시다. 이때 우리는 하나의 feature에 대하여 총 3가지로 분류해줄 weight값이 필요합니다. 만약 데이터의 Feature

selfish-developer.com

여기 참조 

 

 

 

Understanding binary cross-entropy / log loss: a visual explanation

Have you ever thought about what exactly does it mean to use this loss function?

towardsdatascience.com

 

 

좀 이해 안되서 다시 공부하고 쓸예정