Skip to content

Commit

Permalink
Bert 系列模型 更新
Browse files Browse the repository at this point in the history
  • Loading branch information
km1994 committed Oct 8, 2021
1 parent 525124a commit fdbc868
Show file tree
Hide file tree
Showing 21 changed files with 613 additions and 105 deletions.
53 changes: 53 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
# Local .terraform directories
**/.terraform/*
**/w2v_model/
**/saved/
**/runs/*
**/.idea/
**/__pycache__/
**/.ipynb_checkpoints/
**/summarys/
model/
**/model/
**/models/
**/outputs/
**/saved_models/
version/
**/version/
**/gitinfo/
**/mywork/*

T1_Relation_Classification_via_CDNN/saved_models/*

text_simple_study/RE2_study/simple-effective-text-matching-pytorch/*

# .tfstate files
*.tfstate
*.tfstate.*
*checkpoint
**/model.ckpt*
*.ckpt*
# .tfvars files
*.tfvars
*.all
*.hdf5
*.json
*.txt
*.csv
task/.idea/*
*.xml
*.zip
*.rar
*.bin
*.vec
*.model
*.gz
*.bz2
*.word
*.pkl
*.tsv
*.neg
*.pos
**/mywork/*
**/pdf/*

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
577 changes: 494 additions & 83 deletions NLPinterview/PreTraining/bert_big/readme.md

Large diffs are not rendered by default.

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
86 changes: 65 additions & 21 deletions NLPinterview/ner/crf/readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,13 +70,13 @@ $$

#### 3.1.4 隐马尔科夫算法 中 两个假设 是什么?

- 假设一:输出观测值间严格独立,仅取决于对应隐状态。假设隐状态$x_i$ 的状态满足马尔可夫过程,i时刻的状态$x_i$ 的条件分布,仅与其前一个状态$x_{i-1}$相关,即:
- 齐次马尔可夫性假设:即假设隐藏的马尔科夫链在任意时刻 t 的状态只依赖于其前一时刻的状态,与其他时刻的状态及观测无关,也与时刻 t 无关;

$$
P(x_i|x_1,x_2,...,x_{i-1}) = P(x_i|x_{i-1})
$$

- 假设二:状态转移过程中,当前状态只与前一状态相关。假设观测序列中各个状态仅取决于它所对应的隐状态,即:
- 观测独立性假设:即假设任意时刻的观测只依赖于该时刻的马尔科夫链的状态,与其他观测及状态无关。

$$
P(y_i|x_1,x_2,...,x_{i-1},y_1,y_2,...,y_{i-1},y_{i+1},...) = P(y_i|x_{i})
Expand All @@ -96,18 +96,40 @@ $$

### 3.2 隐马尔科夫算法 模型计算过程篇

#### 3.2.1 隐马尔科夫算法 学习训练过程 是什么样的?
#### 3.2.1 隐马尔科夫算法 序列概率计算过程 是什么样的?

1. 思想

如何对一条序列计算其整体的概率。即目标是计算出 $P(O | \lambda)$ ;

给定模型 $\lambda=(A,B,π)$ 和观测序列 O=(o1,o2,...,oT) ,计算在模型 $\lambda$ 下观测序列 $O$ 出现的概率 $P(O|\lambda)$

1. 常用方法

- 直接计算法(穷举搜索)

由于有隐藏的状态序列 I 的存在,我们是无法计算 $P(O|\lambda)$ 的。一种常见的做法是把 I 边缘掉,即 $P(O|\lambda)=\sum(P(O,I|\lambda))$ ,当然,这种计算复杂度非常高,为 $O(TN^2)$

- 前向算法

减少计算量的原因在于每一次计算直接引用前一个时刻的计算结果,避免重复计算,计算复杂度将为$O(T^2 * N)$

- 后向算法

#### 3.2.2 隐马尔科夫算法 学习训练过程 是什么样的?

1. 思想

找出数据的分布情况,也就是模型参数的确定;

已知观测序列 O=(o1,o2,...,oT) ,估计模型 $\lambda=(A,B,π)$ 参数,使得在该模型下观测序列概率 $P(O|\lambda)$ 最大,即用极大似然估计的方法估计参数

2. 常用方法

- 极大似然估计:该算法在训练数据是**会 将 观测状态序列 $O$ 和 隐状态序列 $I$**;
- Baum-Welch(前向后向):该算法在训练数据是**只会 将 观测状态序列 $O$**;

#### 3.2.2 隐马尔科夫算法 序列标注(解码)过程 是什么样的?
#### 3.2.3 隐马尔科夫算法 序列标注(解码)过程 是什么样的?

1. 思想

Expand All @@ -121,19 +143,13 @@ Viterbi计算有向无环图的一条最大路径:

![](img/viterbi.png)

#### 3.2.3 隐马尔科夫算法 序列概率过程 是什么样的?

1. 思想
### 3.3 HMM模型三个基本问题的联系?

如何对一条序列计算其整体的概率。即目标是计算出 $P(O | \lambda)$ ;
三个基本问题 存在 渐进关系。首先,要学会用前向算法和后向算法算观测序列出现的概率,然后用Baum-Welch算法求参数的时候,某些步骤是需要用到前向算法和后向算法的,计算得到参数后,我们就可以用来做预测了。因此可以看到,三个基本问题,它们是渐进的,对于做NLP的同学来说,应用HMM模型做解码任务应该是最终的目的。

2. 常用方法
### 3.4 隐马尔科夫算法 问题篇

- 直接计算法(穷举搜索)
- 前向算法
- 后向算法

### 3.3 隐马尔科夫算法 问题篇
因为HMM模型其实它简化了很多问题,做了某些很强的假设,如**齐次马尔可夫性假设****观测独立性假设**,做了假设的好处是,**简化求解的难度**,坏处是**对真实情况的建模能力变弱**了。

在序列标注问题中,隐状态(标注)不仅和单个观测状态相关,还和观察序列的长度、上下文等信息相关。例如词性标注问题中,一个词被标注为动词还是名词,不仅与它本身以及它前一个词的标注有关,还依赖于上下文中的其他词。

Expand Down Expand Up @@ -217,7 +233,7 @@ MEMM 容易出现标注偏置问题,MEMM倾向于选择拥有更少转移的

#### 5.2.1 什么是 CRF?

设X与Y是随机变量,P(Y|X)是给定条件X的条件下Y的条件概率分布,若随机变量Y构成一个由无向图G=(V,E)表示的马尔科夫随机场。则称条件概率分布P(X|Y)为条件随机场。
设 X 与 Y 是随机变量,**P(Y|X) 是给定条件 X 的条件下 Y 的条件概率分布**,若**随机变量 Y 构成一个由无向图G=(V,E)表示的马尔科夫随机场**。则称 **条件概率分布P(X|Y)为条件随机场**

![条件随机场图片](img/条件随机场.png)

Expand All @@ -240,7 +256,12 @@ $$

![条件随机场图片](img/条件随机场.png)

- 参数化形式
#### 5.2.4 CRF 的 三个基本问题 是什么?

##### 5.2.4.1 概率计算问题

- 定义:给定 观测序列 x 和 状态序列 y, 计算概率 P(y|x)
- 公式定义:

$$
p\left(y | x\right)=\frac{1}{Z\left(x\right)} \prod_{i=1}^{n} \exp \left(\sum_{i, k} \lambda_{k} t_{k}\left(y_{i-1}, y_{i}, x, i\right)+\sum_{i, l} \mu_{l} s_{l}\left(y_{i}, x, i\right)\right)
Expand All @@ -258,7 +279,24 @@ $$
> $s_1$ 为定义在节点上的特征函数,状态特征,依赖于当前位置。
#### 5.2.4 CRF 的 流程是什么?
- 解决方法:前向计算、后向计算

##### 5.2.4.2 学习计算问题

- 定义:给定训练数据集估计条件随机场模型参数的问题,即条件随机场的学习问题。
- 公式定义:利用极大似然的方法来定义我们的目标函数

![](IMG/微信截图_20210901095003.png)

- 解决方法:随机梯度法、牛顿法、拟牛顿法、迭代尺度法这些优化方法来求解得到参数
- 目标:解耦 模型定义,目标函数,优化方法

##### 5.2.4.3 预测问题

- 定义:给定条件随机场 P(Y|X) 和输入序列(观测序列) x ,求条件概率最大的输出序列(标记序列) y* ,即对观测序列进行标注。
- 方法:维特比算法

#### 5.2.5 CRF 的 流程是什么?

1. 选择特征模板:抽取文本中的字符组合 or 具有其他特殊意义的标记组成特征,作为当前 token 在模板中的表示;
2. 构建特征函数:通过一组函数来完成由特征向数值转换的过程,使特征与权重对应;
Expand Down Expand Up @@ -379,14 +417,18 @@ $$

## 六、对比篇

### 6.1 CRF模型 和 HMM和MEMM模型 区别?
### 6.1 CRF模型 和 HMM 和 MEMM 模型 区别?

- 相同点:MEMM、HMM、CRF 都常用于 序列标注任务;
- 不同点:
- 与 HMM 的区别:CRF 能够解决 HMMM 因其输出独立性假设,导致其不能考虑上下文的特征,限制了特征的选择的问题;
- 与 MEMM 的区别:MEMM 虽然能够解决 HMM 的问题,但是 MEMM 由于在每一节点都要进行归一化,所以只能找到局部的最优值,同时也带来了标记偏见的问题,即凡是训练语料中未出现的情况全都忽略掉。
- CRF :很好的解决了这一问题,他并不在每一个节点进行归一化,而是所有特征进行全局归一化,因此可以求得全局的最优值。
- 与 HMM 的区别:CRF 能够解决 HMMM 因其输出独立性假设,导致其不能考虑上下文的特征,限制了特征的选择的问题;
- 与 MEMM 的区别:MEMM 虽然能够解决 HMM 的问题,但是 MEMM 由于在每一节点都要进行归一化,所以只能找到局部的最优值,同时也带来了标记偏见的问题,即凡是训练语料中未出现的情况全都忽略掉。
- CRF :很好的解决了这一问题,他并不在每一个节点进行归一化,而是所有特征进行全局归一化,因此可以求得全局的最优值。

### 6.2 为什么 CRF模型 会比 HMM 被普遍使用?

- 原因 1:CRF模型 属于 判别式模型,在 序列标注 任务上,效果优于 生成式模型;
- 原因 2:HMM 提出 齐次马尔可夫性假设 和 观测独立性假设,这两个假设过强,而 CRF 只需要满足 局部马尔可夫性就好,通过降低假设的方式,提升模型效果;


## 参考资料
Expand All @@ -397,4 +439,6 @@ $$
4. [如何轻松愉快地理解条件随机场(CRF)?](https://www.jianshu.com/p/55755fc649b1)
5. [概率图模型体系:HMM、MEMM、CRF](https://zhuanlan.zhihu.com/p/33397147)
6. [CRF 视频介绍](https://b23.tv/BV19t411R7QU/p1)
7. [概率图模型(二):捋一捋HMM模型](https://zhuanlan.zhihu.com/p/398880896)
8. [概率图模型(三):理一理CRF模型](https://zhuanlan.zhihu.com/p/402132237)

2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# 【关于 NLP】百问百答

> 作者:杨夕、芙蕖、李玲、陈海顺、twilight、LeoLRH、JimmyDU、艾春辉、张永泰、金金金
> 作者:杨夕、芙蕖、李玲、陈海顺、twilight、LeoLRH、JimmyDU、张永泰
>
> 面筋地址:https://github.com/km1994/NLP-Interview-Notes
>
Expand Down

0 comments on commit fdbc868

Please sign in to comment.