- 词表示
- 同义词、上位词表示
- 人工标注更新、具有主观性
- 数据稀疏
- 无法获得单词的新含义
- One-hot表示
- N维,N=词汇表大小
- 每个词独一ID
- One-hot向量:只在一个维度非0
- 所有向量正交,无法计算相速度
- 用于查询
- 上下文词表示 Distributional Representation
- 共现统计
- 基于计数的分布式词表示
- Term-Term矩阵
- 窗口越小,词表示能包含越多句法信息
- 窗口越大,词表示能包含越多语义信息
- Term-Document矩阵
- 相似度 $(v,w) = \vec{v} \cdot \vec{w}$
- 频度 $length(v) = |\vec{v}|$
- 余弦相似度 $\text{cosine_similarity}(v,w) = \frac{\vec{v} \cdot \vec{w}}{|v||w|}$
- 基于统计的不足
- 随词表增大规模变大,需要大量储存空间
- 低频词存在稀疏问题
- 稠密向量
- 奇异值分解(SVD)
- 词嵌入
- 分布式表示 Distributed Representation
- word2vec
- 共现统计
- 同义词、上位词表示
- 分布式表示 Distributed Representation
- 语言模型
- 计算词序列的联合概率
- 计算下一个词 $ w_n $ 出现的条件概率
- \[P(W) = P(w_1,w_2,\dots, w_n) = \prod_{i}P(w_i|w_1, w_2,\dots,w_n-1)\]
- N-gram
- 没有考虑1~2词之外的上下文信息
- 没有考虑词与词之间的相似度
- 神经语言模型
- \[\text{softmax} = \frac{\exp(u_i)}{\sum \exp(u)}\]
-
交叉熵损失函数
\[\mathcal{L}_{\text{CE}}(y,\hat{y}) = -\sum_i y_i \log \hat y_i\] - 反向传播
- 参数优化
- 语言模型
- 词嵌入
- word2vec
- 滑动窗口
- 连续词袋模型(Continuous Bag-of-Word)
- 给出窗口中的上下文的词,预测目标词
- 词袋假设:上下文词的顺序不影响模型的预测结果
- Skip-gram模型
- 通过目标词,预测上下文的词
- 负采样
- 随机选择噪音词对其词向量进行更新
- 将噪音词从目标词上下文中区分开,提高学习质量
- 分级softmax
- Huffman树
- 下采样
-
按以下概率丢弃一个词,不学习和更新它的向量
\[1-\sqrt{t/f(w)}\]
-
- Soft滑动窗口
- 假设滑动窗口较远的词权值应更小
- 定义窗口最大长度$S_{max}$,每个样例随机选择窗口长度$[1,S_{max}]$
- 靠近目标词的词更有可能出现在窗口中
- 全局向量 GloVe
- 评估
- 类比推理
- 词相似度
- Spearman相关性系数
- word2vec
- 神经网络
- 神经元 $h_{w,b}(\vec{x})=f(\vec{w}^T\vec{x}+\vec{b})$
- 非线性函数
- 神经网络训练
- 目标函数
- 随机梯度下降
- 反向传播
- 循环神经网络 RNN
- 序列记忆 Sequential memory
- $h_i=\tanh(W_x x_i+W_h h_{i-1}+b)$
- 梯度消失、梯度爆炸
- 门控循环单元 GRU
-
更新门
\[z_i = \sigma(W_x^{(z)}x_i+W_h^{(z)}h_{i-1}+b^{(z)})\] -
重置门
\[r_i = \sigma(W_x^{(r)}x_i+W_h^{(r)}h_{i-1}+b^{(r)})\] -
新的激活态
\[\tilde h_i = \tanh (W_x x_i+r_i * W_h h_{i-1} + b)\] -
隐状态
\[h_i = z_i * h_{i-1} + (1-z_i) * \tilde{h}_i\] - $*$为按位乘
- 注重短距离信息时$r$值较大
- 注重长距离信息时$z$值较大
- 利用更新门剪去结点中不必要的连接
-
- 长短时记忆 LSTM
- 细胞状态 $C_t$
- 遗忘门 $f_t$
- 输入门 $i_t$
- 新的激活态 $\tilde{C}_t$
- $C_t = f_t * C_{t-1} + i_t * \tilde{C}_t$
- 输出门 $o_t$
- $h_t=o_t*\tanh(C_t)$
- 双向RNN
- 句子结构
- 成分句法分析树
- 依存句法分析树
- Child-sum Tree LSTM
- N-ary Tree LSTM
- 卷积神经网络 CNN
- 输入层
- 卷积层
- 池化层
- 非线性层
-
CNN RNN 优点 抽取局部特征 捕捉序列长距离依赖信息 参数 参数量少 参数量较大 并行度 在句子内可以方便地实现并行计算 无法在句子内实现并行计算
- Transformer
- 概览
- 架构:编码器-解码器
- 输入:字节对编码+位置编码
- 模型:多层编码/解码模型单元的堆叠
- 输出:下一个单词的概率
- 损失函数:softmax层之后使用标准的交叉熵损失函数
- 输入编码
- 字节对编码 Byte Pair Encoding, BPE
-
位置编码 Positional Encoding, PE
\[PE_{(pos,i)}=\sin(pos/10000^{2i/d}) \\ PE_{(pos,2i+1)}=\cos(pos/10000^{2i/d})\]$i\in[0,\frac{d}{2}]$
- $input=BPE+PE$
- 注意力层
- 输入
- 查询 $\vec q$ 和键值对 $(\vec k, \vec v)$ 的集合
- 查询和键的向量维度为 $d_k$
- 值向量的维度为 $d_v$
- 输出
- 值向量的加权求和
- 每个值向量的权重由查询和相应键的点积来会的
- \[A(q, K, V)=\sum _i \frac{e^{q \cdot k_i}}{\sum _j e^{q \cdot k_j}}v_i \\\]
-
放缩
\[A(Q,K,V)=\text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V\]
- 自注意力
- 多头注意力机制
- 输入
- Transformer 组成单元
- 两个子层
- 多头注意力层
- 2层的前馈网络
- 两个小技巧
- 残差链接
- 层归一化
- 两个子层
- 解码器
- 掩码自注意力
- 编码器-解码器注意力
- 其他技巧
- 检查点平均
- ADAM优化器
- 在残差前dropout
- 标签平滑
- 带有束搜索和长度惩罚的自回归解码
- 概览
- 机器翻译
- 基于规则的机器翻译
- 基于实例的机器翻译
- 统计机器翻译
- \[\text{argmax}_y P(y|x)\] \[=\text{argmax}_y \frac{P(x|y)P(y)}{P(x)}\] \[=\text{argmax}_y P(x|y)P(y)\]
- $P(x|y)$ 翻译模型
- $P(y)$ 语言模型
- 启发式搜索算法
- 神经机器翻译
- seq2seq
- 编码器RNN
- 解码器RNN
- 解码策略
- 贪婪搜索
- 束搜索 Beam Search
- 每步记录k个最有可能的结果
- 评价指标
- BLUE (Bilingual Evaluation Understudy)
- 注意力机制
-
注意力得分 $e^t=[s^T_th_t,\dots,s_t^Th_n]$
编码器隐状态 $h_t,h_2,\dots,h_n\in \mathbb{R}^d$
解码器在时间$t$的隐状态 $s_t\in\mathbb{R}^d$
-
注意力分布
$\alpha^t=\text{softmax}(e^t) \in \mathbb{R}^n$
-
输出向量
$o_t=\sum_{i=1}^n \alpha_i^t h_i \in \mathbb{R}^d$
$\hat y_t=[o_t;s_t]\in\mathbb{R}^{2d}$
- 帮助解决瓶颈问题
- 帮助解决梯度消失问题
- 提供了一定可解释性
-
- seq2seq
- 预训练模型
- 基于特征 Feature-based
- 预训练模型的输出作为下游任务模型的输入
- word2vec
- 词向量与上下文无关
- context2vec
- 双向LSTM
- 词向量只与上下文有关,忽略了词本身
- ELMo
- 多层双向LSTM
- 字符级输入
- 基于微调 Fine-tuning
- 预训练模型本身是下游任务模型的一部分,参数在下游任务训练继续更新
- Semi-supervised Sequence Learning
- 两种无监督训练方法改进RNN
- 语言模型
- 根据前文预测下一个词
- 序列自编码器
- 在解码前已经看过整个序列,尝试在隐状态中记录整个序列信息
- 语言模型
- 两种无监督训练方法改进RNN
- ULMFiT
- 步骤
- LM pre-training: 在大规模语料上训练语言模型
- (新增)LM fine-tuning: 使用任务语料继续微调上一步训练的语言模型
- Classifier fine-tuning: 在上步模型基础上进行任务微调
- 步骤
- GPT
- 首次尝试使用Transformer的预训练语言模型
- 零次学习:通过提示符让模型完成指定文本生成任务
- BERT
- 遮盖语言模型 Masked LM
- 遮盖 $k$% 的输入单词,根据上下文预测遮盖的词
- BERT中,$k$=15
- 80% 遮盖词替换成
[MASK]
- 10% 替换成一个随机的词
- 10% 保持单词不变
- Next Sentence Prediction
- 输入表示
- 每个词由三种向量构成
- Token Embeddings
- Segment Embeddings
- Position Embeddings
- 每个词由三种向量构成
- 遮盖语言模型 Masked LM
- RoBERTa
- 探索BERT的最好的训练策略
- XLNet
- 排列语言模型
- 自回归语言模型
- 自编码器
- 改进自注意力机制
- 排列语言模型
- ELECTRA
- 替换单词检测
- 生成器 遮盖语言模型
- 判别器 判别单词是否被替换
- 预测100%的单词
- 替换单词检测
- 基于特征 Feature-based
- 知识图谱
- 图机构:关系性、灵活性、可学习性
- 语义
- 问答系统
- 搜索引擎
- 推荐系统
- 知识表示学习
- One-hot
- 分布式表示/嵌入
- 缓解大规模自然语言处理中的稀疏性
- 实现跨域和夸对象的知识迁移
- 符号三元组
- TransE
- 能量函数 $f(h,r,t)=|\mathbf{h}+\mathbf{r}-\mathbf{t}|$
-
目标函数
\[\sum_{(h,r,t)\in\Delta}\sum_{(h',r,t')\in\Delta'}[\gamma+f(h,r,t)-f(h',r,t')]_+\]where $[x]_+=\max(0,x)$
w.r.t $|\mathbf{h}| \le 1, |\mathbf{t}| \le 1$
$\Delta$ 知识图谱里的三元组
$\Delta’$ 不在图谱的负例
- RESCAL
- 双线性函数
- $f_r(h,t)=\mathbf{h}^T\mathbf{M}_r\mathbf{t}$
- DistMult
- 简化 RESCAL,限制 $\mathbf{M}_r$ 为对角矩阵
- HoIE
- 循环相关
- 处理复杂关系
- 投影
- TransH 将实体投影到关系决定的超平面
- TransR 将实体投影到与关系有关的表示空间
- TransD 使用不仅与关系相关而且与头尾实体相关的投影矩阵构建特定于关系的实体嵌入
- 嵌入空间
- ComplEx 使用复数空间
- RotatE 关系建模为复数空间的旋转
- KG2E 将实体与关系建模为高斯分布
- 编码模型
- NTN 神经张量网络
- ConvE 卷积
- ConvKB
- CoKE Transformer
- R-GCN 图神经网络
- 投影
- 融合外部信息
- 文本描述
- DKRL Description Knowledge Representation Learning
- 结构信息
- TKRL Type Knowledge Representation Learning
- KR-EAR 关系三元组、属性三元组
- 图像信息
- IKRL Image Knowledge Representation Learning
- 文本描述
- 知识推理
- 基于路径的方法
- Path_Ranking
- Path-Based TransE
- 基于路径的方法
- 序列标注
- 经典模型
- 简单分类
- 隐马尔可夫模型
- 条件随机场模型
- 可以用概率图模型统一表示
- 节点:随机变量
- 无向边:联合概率
- 有向边:条件概率
- 简单分类
- 不考虑相邻状态之间的联系,为每个位置进行独立分类
- 往往选择最常见的标签
- 隐马尔可夫模型
- 生成模型
- 转移过程:生成一个标签序列 $\{y_t\}$,每个 $y_t$ 只依赖 $y_{t-1}$
- 生成过程:根据条件概率 $P(x_t|y_t)$ 生成 $x_t$
- \[P(x_{1:T},y_{1:T})=\prod^T_{t=1} \underbrace{P(y_t|y_{t-1})}_{转移概率} \underbrace{P(x_t|y_t)}_{生成概率}\]
- 模型参数 $\lambda$
- 转移矩阵 $\mathbf{P} = \left( P(y_t = l_i |y_{t-1}=l_j)\right)$
- 生成概率 $\mathbf{E} = (P(x=x_i|y=y_j))$
- $\lambda = \{\mathbf{P},\mathbf{E}\} $
- 有监督学习
- 目标函数:最大化 $P(x_{1:T}|y_{1:T},\lambda)$
- 无监督学习
-
目标函数:最大化 $P(x_{1:t},\lambda)$
$P(x_{1:T}|\lambda) = \sum_{y_{1:T}}P(x_{1:T},y_{1:T}|\lambda) =\sum_{y_{1:T}}\prod_{t=1}^T P(y_t|y_{t-1},\lambda)P(x_t|y_t,\lambda)$
- 前向算法
- 动态规划
- E-M(期望最大化)算法学习
- E 步骤:用 $\lambda_{old}$ 计算获得 $y_{1:T}$:根据 $P(x_{1:T} | y_{1:T},\lambda_{old})$ 的概率
- M 步骤:用 $y_{1:T}$ 找到最优的产生 $x_{1:T}$ 的 $\lambda$
-
- 条件随机场模型
- 判别模型
- \[P(y_{1:T}|x_{1:T})=\frac{P(x_{1:T},y_{1:T})}{\sum_{y_{1:T}}P(x_{1:T},y_{1:T})}=\frac{1}{Z}\exp(S(x_{1:T},y_{1:T}))\]
- $S(x_{1:T},y_{1:T})=\sum_{t=1}^T wf(y_t,y_{t-1},x_{1:T},t)=\sum_{t=1}^T \sum_k w_k f_k(y_t,y_{t-1},x_{1:T},t)$
- 特征 $f_k$,权重 $w_k$
- 优化学习
- 负对数似然函数 $\mathcal{L}(\mathbf{X},y,\{w\})=\sum_{i=1}^m -\log P(y_{i,1:T}|x_{i,1:T},\{w_i\})$
- 对 $\{w_k\}$ 求导,梯度下降
- 词性标注
- 文本转语音
- 词形还原
- 信息抽取
- 命名实体识别
- 标注范式
- IOB
- I:实体内部,但不是开头
- B:实体开头
- O:实体外部
- BIOES
- B:实体开头
- I:实体内部
- O:实体外部
- E:实体结尾
- S:单个词的实体
- LSTM + 条件随机场
- IOB
- 标注范式
- 命名实体分类
- 多分类/层次性标签预测
- 实体链接
- 实体消歧
- 候选实体生成
- 候选实体排序
- 无法被链实体预测
- 命名实体识别
- 经典模型
- 关系抽取
- 系统构建
- 手写规则
- 监督学习
- 嵌入层
- 词嵌入
- 位置嵌入
- 头尾上下文嵌入 head-tail-context embedding
- 相对距离嵌入
- dist to tail
- dist to head
- RNN / CNN
- 分段卷积神经网络
- 根据两个实体的位置将卷积结果分为三个部分
- 分段卷积神经网络
- Softmax 层
- 嵌入层
- 半监督学习
- 关系自拓展
- 收集一组具有关系 $r$ 的种子实体对
- 用这些实体对查找句子
- 查看实体对之间或周围的上下文,并概括上下文以创建模版规则
- 使用这些规则在无监督文本中获取更多关系 $r$ 的关系样例与实体对
- 局限性:产生的规则经常存在精度低与语义漂移的问题
- 远程监督
- 远程监督假设
- 两个实体有某个关系,则包含这两个实体的任何句子都可以表达该关系
- 可能导致错误标注
- 减轻标注错误问题
- 远程监督关系提取视为多实例问题
- 多实例问题
- 训练集包括许多袋子(bag)
- 每一个袋子包括多个实例
- 袋子的标签已知
- 袋子中实例标签未知
- 训练模型,预测未见过的袋子的标签
- At-least-one 多实例学习
- 为每个实体对选择最有可能的句子
- 考虑实例标签的不确定性
- 丢失被忽略句子的丰富信息
- 多实例的句子级注意力机制
- 通过注意力将关系表示为句子表示的语义组合
- 动态降低嘈杂实例的权重
- 远程监督假设
- 关系自拓展
- 开放关系抽取
- 从无监督、开放域语料库中自动发现新的关系类型
- 基于标注的模型
- BIO / BIOES
- 基于聚类的模型
- 文档级关系抽取
- 头尾实体不在同一个句子
- 从文档中多个句子抽取关系
- 少样本关系抽取 Few-shot Relation Extraction
- 迁移学习 Transfer Learning
- 度量学习 Metric Learning
- 元学习 Meta Learning
- 事件抽取
- 事件提及、事件触发词、事件要素、要素角色
- 事件检测
- 事件要素抽取
- 监督学习
- 基于特征的方法
- 神经网络方法
- DMCNN Dynamic Multi-pooling Convolutional Neural Network
- 词嵌入,位置嵌入,事件类别嵌入
- 远程监督方法
- 自动数据生成
- 系统构建