Word2Vec

Word2Vec Model Tutorial (part 1)

Arif Romadhan
5 min readNov 29, 2018

1. Introduction

Word2vec adalah suatu metode untuk merepresentasikan setiap kata di dalam konteks sebagai vektor dengan N demensi. Dalam mempresentasikan suatu kata, Word2Vec mengimplementasi neural network untuk menghitung contextual and semantic similarity (kesamaan kontekstual dan semantik) dari setiap kata (inputan) yang berbentuk one-hot encoded vectors [1]. Hasil dari contextual and semantic similarity ini dapat merepresentasikan relasi suatu kata dengan kata lainnya, misalnya relasi antara ‘Male — Female’, relasi pada ‘Verb tense’, dan bahkan relasi pada ‘Country — Capital’ , seperti yang diilustrasikan pada gambar dibawah ini[2].

Hasil dari relasi-relasi tersebut menjadi referensi dalam merepresentasikan suatu kata menjadi vektor. misalnya representasi vektor[queen] didapatkan dari vektor[king] yang dikurang vektor[man] kemudian ditambah vektor[woman].

vektor[queen] = vektor[king] - vektor[man] + vektor[woman]

2. Model Word2Vec

Word2Vec memiliki 2 model yaitu Continuous Bag-of-Word (CBOW) dan Skip-Gram. Arsitektur CBOW dan Skip-Gram dapat dilihat pada gambar dibawah ini :

2.1 Skip-gram

Skip-Gram merupakan model yang diperkenalkan oleh Mikolov et al[3]. Ilustrasi feeding forward Skip-Gram dengan windows (jarak antara kata-kata konteks dengan posisi kata yang menjadi inputan) = 2 dapat dilihat pada gambar dibawah ini :

Secara Arsitektur Skip-Gram menggunakan current word (sebagai input) untuk memprediksi konteks (sebagai target) disekitarnya[4], dimana Skip-Gram akan mempelajari distribusi probabilitas dari kata-kata didalam konteks dengan windows yang telah di tentukan. Misal konteks yang digunakan saat ini adalah “the best revenge is massive success” dengan nilai windows = 2.

the best revenge is massive success

Untuk merepresentasikan konteks kedalam arsitektur Skip-Gram, maka kita harus merubah setiap kata menjadi one-hot encoded vectors.

the      = [1,0,0,0,0,0]
best = [0,1,0,0,0,0]
revenge = [0,0,1,0,0,0]
is = [0,0,0,1,0,0]
massive = [0,0,0,0,1,0]
success = [0,0,0,0,0,1]

ilustrasi forward-backward training Skip-Gram dengan nilai random pada weight (W dan W`), dengan w(t) = “revengesebagai input, dan w(t - 2) = “the”, w(t - 1) = “best”, w(t + 1) = “is”, w(t + 2) = “massivesebagai target dapat dilihat pada gambar dibawah ini :

import numpy as np
np.random.seed(42)
v_revenge = np.array([0,0,1,0,0,0]) #"revenge"
print(v_revenge)
#array([0, 0, 1, 0, 0, 0])
weight = np.random.random_sample((6,3))
print(weight)
array([[ 0.43194502, 0.29122914, 0.61185289],
[ 0.13949386, 0.29214465, 0.36636184],
[ 0.45606998, 0.78517596, 0.19967378],
[ 0.51423444, 0.59241457, 0.04645041],
[ 0.60754485, 0.17052412, 0.06505159],
[ 0.94888554, 0.96563203, 0.80839735]])
hidden_layer_sg = np.dot(input_revenge,weight)
print(hidden_layer_sg)
#array([ 0.45606998, 0.78517596, 0.19967378])
weight_prime = np.random.random_sample((3,6))
print(weight_prime)
#array([[ 0.30461377, 0.09767211, 0.68423303, 0.44015249, 0.12203823, 0.49517691],
[ 0.03438852, 0.9093204, 0.25877998, 0.66252228, 0.31171108, 0.52006802],
[ 0.54671028, 0.18485446, 0.96958463, 0.77513282, 0.93949894, 0.89482735]])
o_the = np.dot(hidden_layer_sg, weight_prime)
print(o_the)
#array([ 0.27508995, 0.79543243, 0.7088466, 0.87571061, 0.48799933,
0.8128538 ])

Setelah output didapatkan, perlu dilakukan perhitungan nilai error dengan metode cross entropy (target - output). Tahap setelah perhitungan nilai error adalah backprogation, dengan menghitung gradien lost function terhadap semua parameter yang ada dengan cara mencari partial derivative. Pada tahap backprogation terjadi proses update parameter, yaitu mengurangi atau menambahkan weight (W dan W`) lama dengan nilai gradient yang sudah didapatkan (Gradient Descent) hingga tercapai nilai minimum error pada cross entropy. Saya akan membahas detail implementasi perhitungan Skip-Gram pada artikel Word2Vec Part 3 (Implementasi Skip-Gram).

2.2 Continuous Bag-of-Word (CBOW)

Ilustrasi feeding forward training CBOW dengan nilai windows = 2 dapat dilihat pada gambar dibawah ini :

CBOW merupakan model yang memprediksi current word (sebagai target) dari konteks (sebagai input) di sekitarnya[4]. bisa dikatakan bahwa CBOW merupakan kebalikan dari Skip-Gram, dimana CBOW pun akan mempelajari distribusi probabilitas dari konteks dengan windows yang telah di tentukan. konteks yang digunakan serupa dengan konteks pada ilustrasi implementasi Skip-Gram sehingga menggunakan one-hot encoded vectors yang serupa.

ilustrasi forward-backward training CBOW dengan nilai random pada weight (W dan W`), dengan w(t - 2) = “the”, w(t - 1) = “best”, w(t + 1) = “is”, w(t + 2) = “massivesebagai inputan, dan w(t) = “revenge” sebagai target dapat dilihat pada gambar dibawah ini :

v_the = np.array([0,0,1,0,0,0]) #"the"
print(v_the)
#array([1, 0, 0, 0, 0, 0])
#weight = menggunakan weight yang sama dengan ilustrasi pada Skip-Gramhidden_layer_cbow = np.dot(v_the,weight)
print(hidden_layer_cbow)
#array([0.43194502, 0.29122914, 0.61185289])
#weight_prime = menggunakan weight_prime yang sama dengan ilustrasi pada Skip-Gramo_revenge = np.dot(hidden_layer_cbow, weight_prime)
print(o_revenge)
#array([0.47609761, 0.42011332, 0.96415848, 0.85733473, 0.7183283, 0.91285087])

Setelah output didapatkan, maka tahap selanjutnya serupa seperti tahap dan proses yang ada pada backprogation Skip-Gram hingga tercapai nilai minimum error pada cross entropy.

3. Various training methods

Word2Vec memiliki 2 metode training yaitu Hierarchical Softmax dan Negative Sampling. saya akan membahas ini pada artikel Word2Vec Part 2 (word2vec various training methods)

Linkedin arif romadhan

My Website : https://komuternak.com/

4. Referensi

  1. Mikolov, T., Sutskever, I., Chen, K., Corrado, G. S., and Dean, J. (2013). Efficient Estimation of Word Representations in Vector Space.
  2. Mikolov, T., Yih,W., Zweig,G. (2013). Linguistic Regularities in Continuous Space Word Representations. Proceedings of NAACL-HLT 2013, pages 746–751.
  3. Mikolov, T., Sutskever, I., Chen, K., Corrado, G. S., and Dean, J. (2013b). Distributed representations of words and phrases and their compositionality. In Advances in Neural Information Processing Systems, pages 3111–3119.
  4. Word2Vec. 28 November 2018. <https://en.wikipedia.org/wiki/Word2vec#CBOW_and_skip_grams>

--

--

Arif Romadhan

Data Scientist and Artificial Intelligence Enthusiast