Note 2 Language Models
Note 2
深度学习分类:命名实体识别NER(Named Entity Recognition)
-
NER任务是找到文本中的names,并将这些names分类——传统的线性分类
-
Simple NER :使用二元逻辑分类器窗口分类
- idea:在文本窗中将每个词分类(依据上下文)
- 在人工标注的语料库中去训练分类器,训练好的分类器根据文本窗中上下文词拼接成的词向量判断中心词是否属于该分类
- 实际中我们需要使用 multi-class softmax但是这里为了简单,我们只考虑一个分类,即只需判断是否
-
分类任务的数学记号Notation
-
Supervised learning :我们有训练集,其中包含样本:
{xi,yi}N
- xi是输入,维度是d(这里的xi其实就是上文提到的拼接后的长向量)
- yi是标签,是类别的其中之一(人名、地名……)
-
神经网络分类Neural classification
传统softmax分类器: \(p(y|x)=\frac{exp(W_y.x)}{\sum_{c=1}^{C}exp(W_c.x)}\)(W是预训练好的权重矩阵)
- 学习的参数\(\theta\)只是W的元素,x是固定的输入数据,不会发生改变
- 分类本质上只是线性变换,所以决策能力是有限的
神经网络分类器:
- 同时学习W(权重)和Distributed representations for words(词的分布式表示)
- distributed 就是指一种稠密的低维表示,与独热向量完全不同。这样的话,我们可以将这些词向量在空间中移动
- 通过嵌入层embedding layer 和隐藏层把原始数据变成线性可分的,之后就可以通过线性的softmax处理分类
- 通过深层的神经网络(多层) 不断地重新表示和组合数据,得到非线性的分类器
交叉熵cross entropy loss
\[H(p,q)=-\sum_{c=1}^Cp(c)logq(c)
\]
- 其中p为真实情况下的概率,q为模型概率
- 在特殊情况下,以NER为例,如果将正确的类标记为概率1,其他为0,这样就只需要计算\(-logp(y_i|x_i)\)
神经网络 = 同时运行多个逻辑回归单元
-
我们不用提前预设每一个逻辑回归在预测什么
-
通过损失函数指导中间的隐藏层进行调整
每层的矩阵表示 -
我们有:
\[a_1 = f(W_{11}x_{1}+W_{12}x_2+…+b_1)\\ a_2 = f(W_{21}x_{1}+W_{22}x_2+…+b_2)\\ etc. \]按照矩阵的方式表示:
\[z=W_x+b\\ a=f(z) \]激活函数f是以逐元素的方式作用:
\[f([z_1,z_2…])=[f(z_1),f(z_2)…] \]
非线性的激活函数
由于原始的激活函数:
\[f(x)=
\begin{cases}
1,&Wx-\theta \ge 0\\
0 &Wx-\theta \lt 0
\end{cases}
\]
没有梯度,无法进行基于梯度的学习
于是,我们有了logistic (sigmoid)、tanh、hard tanh、ReLU、GeLU……
-
为什么我们需要非线性的激活函数?
-
神经网络在做函数逼近时,多次的线性变换都可以等价成一次
\[W_1W_2x=Wx \] -
但是如果许多层内都包含非线性,就可以逼近任何复杂函数
-

浙公网安备 33010602011771号