Lecture1.md 4.5 KB
Newer Older
C
cx123cx456 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158
**CS224N笔记(一):自然语言处理(NLP)简介**

**WordNet(分类词典)的缺点:**

不能准确识别同义词之间的细微差别。

对词语的理解不够精确(单词的词义不能及时更新,WordNet资源也不完整)。

主观性太强(只有固定的离散同义词集)。

耗费大量的人力资源进行标注,来构建 。

难以准确计算字词之间的相似性。

One-hot vectors:

![](media/d3737e074d0d735dae202cbddb31623f.png)

列如:

[猫,狗,鸡,鸭,汽车旅馆,鸟,骆驼,酒店],对这个数组进行编码之后;

Motel(汽车旅馆)对应的编码应是:

Motel=[0,0,0,0,1,0,0,0];

同理,Hotel(酒店)对应的编码应是:

Hotel=[0,0,0,0,0,0,0,1];

在上面汽车旅馆和酒店的意思是相似,但是对Motel=[0,0,0,0,1,0,0,0]与Hotel=[0,0,0,0,0,0,0,1]内积为0,也就是完全不相关;所以这种方式并不能表示出这种关系。

![](media/26cef4d801bc54c1939a7e0cc8f734aa.png)

由于ONE-Hot满足不了相关性,(J.R.Firth)提出了Distributional
semantics(分布式语义):单词的意思,应该结合它的上下文来确定的;现代统计NLP成功的理念之一。

e:

用‘banking’许多的上下文来构建它的意思:

![](media/d2b95dae5dedcbc90fad260cbc1da976.png)

**词向量:**

将选择的每个单词构建了密集的向量,为了更好的预测上下文的意思:

![](media/40677ebb4b091966d2f8e550b4ca6d30.png)

‘banking’对应的维度是8;每一个单词都有一个向量维度,所有单词在一起将会有一个向量空间。

![](media/90138e84ea3b961732b0d5e70e032f4a.png)

向量中的每个单词具有不同的基础;

Word2vec:是一个学习单词向量的框架。

![](media/756020be8c51e4f89a721f20dca825bd.png)

想法;

我们有大量的文本。

固定词汇表中的每一个单词都由一个向量表示

遍历文本中每一个位置,其中有一个中心词C与外部词O。

用单词的向量的相似性来计算O与C的相同(或想反)的概率。

不断的调整单词向量,使概率值最大化。

用迭代来实现这个算法,要确定一个单词的意思,要结合上下文的意思来确定,我们要遍历文本中的每个位置,通过移动单词向量来实现;重复10亿次之后,得到了好的结果;

计算过程:

![](media/4275e279e6d646246334a84434ebf9dd.png)

目标函数(损失函数或成本函数):

![](media/939133082e8b9ec6e39ac058a84e8cdd.png)

对于给定的数据集T,固定了窗口的大小(每个面几个字),给定中心单词Wj;

模型的概率

![](media/1ed8e2c6f59f03f227a0a96783bee07c.png)

最小化目标函数==最大化概率值;

![](media/86f7fdf808b1a7958f0fa3c15c413ab1.png)

这个模型中,唯一的一个参数就是我们给定的一个变量;

![](media/f6ee3acc5c552202abf5a7bd033cbbe2.png)

最小化损失函数;

将每个单词使用俩个向量:当W是中心词是,当W是上下文词时;

然后是中心词C与上下文词O;

e:

定义一个某个单词的上下文模型:

>   P(context\|Wt)=.....

定义损失函数:

>   J=1-P(Wt+j\|Wt)(Wt+j与Wt为上下文)

如果预测结果正确,目标函数为0;

在词料库中的不同位置来训练,调整词向量,最小化目标函数:

比如:我喜欢打篮球,也喜欢打羽毛球。

当出现“打篮球”时,预测出现“打羽毛球”的可能性;概率模型为:

>   P(打羽毛球\|打篮球)(也就是在“打篮球”的条件下“打羽毛球”的概率)

目标函数:

>   J=1-p(W\|打篮球)

如果w=“打羽毛球”,概率为1,目标函数为0。

![](media/2f999b6467c4c018c0306069f60b3625.png)

分子是:通过点积来计算O与C的相似性;分母是对整个词汇表进行标准化后给出的概率分布;

这是一个SOFEMAX函数R\^N——R\^n的例子:

![](media/a1d0273bc4309db805739d88a64fbc92.png)

在SOFTMAX函数中:

“max”是将一些大的概率表示为最大的概率Xi;

“soft”是将一些小的概率表示为更小的概率Xj;

经常用于深度学习;

**通过优化训练参数训练模型:**

为了更好的训练模型,调整参数使目标函数最小化;

也就是用梯度下降来找到最优点;

![](media/8b5e9d716ea43a7b82695a73ad497674.png)

**计算所有向量维度:**

在D维向量与V维向量中,有许多单词:

![](media/0f678a32a897d8a7cbdd958b5e73047a.png)

每个单词都有俩个向量;沿着这个梯度进行优化;