第一课
NLP
自然语言处理的难点
- 一词多义
- 上下文相关
- 不守语法
- 随着时间变化
- 表达的意义信息量很大
- 隐含常识
实际任务
- 搜索引擎
- 文本分类
- 机器翻译
- 指代消解
- 问答系统
深度神经网络做自然语言处理的优势
随着网络规模的增加与数据量的增加我们可以将效果做的比传统方法更好的水平。
背景知识
梯度下降(Gradient Descent):通过对目标函数的参数求偏导,利用梯度更新参数值,从而迭代产生最优解。
语言模型(Language Model,LM):
- 是对语言现象的数学抽象:计算句子出现的概率
- 马尔科夫链:第n个词出现的概率与前n-1个词概率相关
- k-gram model:当前词出现的概率只与前k个词相关,当k=1时,为1-gram模型
词向量
WordNet
通过如下代码可以引入WordNet
from nltk.corpus import wordnet
WordNet是英文领域,专家纯手工构造的词典。(知识结构的词库)
可以给出一个词的近义词和上位词
WordNet存在的问题:
- 可以作为一个很好的资源来使用,但是其精确程度不高。
- 不能实时更新,缺少了词汇的新含义。
- 人工构造,主观性太强
- 需要大量的人力资源
- 不能够准确计算词汇之间的相似性。
在中文领域中
与WordNet对应的产物是:
- 知网(HowNet)
- 哈工大词林
离散词表征
在传统NLP中,我们将词汇认为是一个一个离散的符号。
词汇可以表示为一个one-hot(独热编码)向量
表示形式如下:
one-hot向量的维度是词汇表的大小。
存在的问题:
- 每个词汇之间是正交的
- 向量之间的相似度没有自然含义
解决方法:
- 用WordNet的经一次表达获取相似度(效果不好,且不完整)
- 相反:学习在向量本身中编码相似性
分布式词表征
一个词的含义是由经常出现在其上下文的词所决定的(词义由上下文给出)
词向量(word2vec也称为word embedding)
特点
- 无监督学习: 使用没有经过人工标注的数据进行训练
- 压缩自编码:通过向量空间的运算进行压缩自编码
- 结合上下文: 通过词语词之间的关系学习特征
两种算法:
- CBOW:连续词袋模型
- Skip-Gram(SG):跳字模型
两种训练技巧:
- Negative Sampling(负采样)
- Hierarchical Softmax(层序softmax)
词向量的评估方法:
- 相似度——cos(word1,word2)
- 词类比——cos(word1-word2+word3,word4)
目标函数(loss function)
目标函数如下
变形之后的目标函数如下:
式子中的P代表概率
表达式如下:
损失函数中的
是词向量
和
。
的优化过程: