<p>To my understanding, irrespective of what architecture is used (skip-gram/CBOW), word vectors are read from same word-vector matrix.</p>

<p>As suggested in second footnote of the <a href="http://arxiv.org/pdf/1402.3722v1.pdf" rel="nofollow">paper</a>, <em>v_in</em> and <em>v'_out</em> of same word (say <em>dog</em>) should be different, and they are assumed to be coming from different vocabularies during the derivation of the loss function.</p>

<p>Practically, probability of  word appearing in its own context is very low, and most implementations don't save two vector representations of same word for saving memory and efficiency.</p>
Two vectors of every word in basic Skip-bigram word2vec model with softmax function
<p>I'm reading the raw word2vec paper: <a href="http://papers.nips.cc/paper/5021-distributed-representations-of-words-and-phrases-and-their-compositionality.pdf" rel="nofollow noreferrer">http://papers.nips.cc/paper/5021-distributed-representations-of-words-and-phrases-and-their-compositionality.pdf</a></p>

<p>According to below equation, every word has two vectors, one is used to predict context word as center word, another is used as context word. For the former one, we can update it with Gradient descent in each iteration. But how to update the latter one? And which vector is the final vector in final model?
<a href="https://i.stack.imgur.com/m4x7n.jpg" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/m4x7n.jpg" alt="enter image description here"></a></p>