cs224n
cs224n课程学习记录
课程相关资源
video:b站视频链接
coursework:官网链接
lecture1-Word Vectors and Introduction
key methods: RNN, transformer, attention
ability to use pytorch
one-hot vector不能提更单词相关性操作,并且向量维度会指数级增长
现代向量编码,分布式语义:一个词的意义由它附近出现的的词语来定义/表示,上下文表示(context )
1.word embeddings
分布式语义对word classification具有重要贡献:)
2.Word2vec
中心词和上下文词出现的概率计算模型
目标函数:
定义一个滑动窗口大小为$2M$,预测上下文词组中的数据似然(data likehood)
$$
L(\theta)=\prod_{t=1}^{T} \prod_{-m\le{j}\le{m}}P{(w_{t+j}\ | w_t;\theta)}
$$
T表示语料中心词的变化,其中$\theta$是可变量,可以训练至似然最大
与此同时loss function:
$$
J(\theta) = -\frac{1}{T}\rm{log}L(\theta)=-\frac{1}{T}\sum_{t=1}^{T}\sum_{-m\le{j}\le{m}}\rm{log}P(w_{t+j}|w_t;\theta)
$$
对于概率函数$P(w_{t+j}|w_t;\theta)$的计算:
我们用两对词向量对于每个词w有$v_w$,$u_w$两种表示,前者表示w为中心词的表示后者为上下文的表示于是我们有对于每个中心词c和上下文若干词汇o有以下公式:
$$
P(o|c) = \frac{\rm{exp}(u_o^Tv_c)}{\sum_{w\in{V}}\rm{exp}(u_w^Tv_c)} \to{P(w_{t+j}|w_t;\theta)}
$$
->make our word vector
其中
course Q&A未记录 _(:з」∠)_
有空就记录
词汇的多意义问题对wordvector,直接融合叠加
lecture2-Neural Classifiers
1.词袋模型
模型学习阶段将含义相近的单词放置在高纬度向量空间中临近位置,按词义分组。
To学习好的词向量
从random vectors开始,通过不断调整$\theta$的值来使得$J(\theta)$的值最小
equation:$\theta^{new} = \theta^{old}-\alpha\nabla_{\theta}J(\theta)$,但是在计算损失函数的代价会随着corpus的增加而快幅度增加单个梯度增加缓慢,使用随机梯度下降,只使用一小批梯度估计,小部分梯度更新会使得结果充满噪声和误差,少部分中心词更新。并且每次梯度下降只更新窗口内词汇参数,窗口外词汇透明(稀疏更新)。
随机梯度下降有噪声,可能会体现出有反弹的趋势,但在复杂网络中可以比普通梯度下降中更快更好,反直觉。
word2vector including:skip-grams(SG)、CBOW
k-negative sampling
最开始使用的不是softmax
而是k负采样方法来作为$\rm{J(\theta)}$
损失函数为此时为求J max:
$$
J_t(\theta) = \rm log(u_o^Tv_c)+\sum_{i=1}^{k}E_{j\sim P(w)}[log \sigma(-u_j^Tv_c) ] \tag{NS} \\ J(\theta) = \frac{1}{T}\sum^T_{t=1}J_t(\theta) \\ \sigma(x) = \frac{1}{1 + e^{-x}}
$$
解释损失函数:
在每个词滑动窗口移动过程中窗口外词汇即负样本点过多,负样本太多,会导致训练样本失衡,同时负样本太多会导致数据量太大难以训练、以及训练模型有偏。所以减少负样本点的抽取和训练,采用K个负样本点的方.
softmax计算量大,分母位置有许多$e^{-x}$等待求值,直接用$\rm log{\sigma(x)}$的方式来取得probity.
转化为最小形式$\rm J_{neg-sample}=-log(\sigma(u_o^Tv_c) - \sum _\limits{k\in {K-sample indices}}log\sigma(-\textbf{u}_k^T\textbf{v}_c )$
课程中所讲述的vector analogies以及词向量关系和co-occur不多做赘述。
多义词在词向量中的表现: