最近是SARI病毒肆虐,身处疫区的我已经在家自我隔离十多天了,家乡的管控做的非常严格,小区已经禁止出入好几天了,于是在家终于闲不住的我,决定把NLP的课程好好刷一遍。
第一讲 NLP和深度学习入门
- 自然语言处理的应用领域:拼写检查,关键词搜索,语义理解,机器翻译,口语对话系统,知识问答等等。
- 人类语言的特别之处:指向性明确,具有表现力的信号词系统,大脑具有连续的激活系统,语言传递可以借助不同的载体。
- 机器学习真正做的事情是:数值优化,不断的优化现有的参数,通过人类的数据分析总结的结果,运算出更优的参数优化表现。
- 深度学习的特点:不需要手动设计特征,提供了灵活通用的学习系统,可以学习更为丰富的特征信息,并且可以结合无监督/有监督的学习。
- DeepNLP:水平——对话、词语、语义、语法;工具——词性标注,实体标注,语义解析等;领域——机器翻译、语义分析、对话理解、问答等。
- 词向量的可视化:词向量中的向量空间的坐标轴实际上不具备现实意义,词向量实际上是用其他词与该词的相似度大小构成一个向量,来表示该词的含义。
第二讲 词向量表示
-
如何表示词的含义?
词的含义:指代了世界上的某些具体事务
WordNet:提供了一个词的上位词、下位词和同义词等解释属性,以此可以表示一个词的具体含义,缺点是:这些分类关系可能遗失掉一些细微的差别属性,并且对新词的表示较为欠缺,在同义词的确定时主观性较强等等。
one-hot:一种存储在某地的独特表示,将词表示转换成[0,0,0,0,0,0,0,0,1,0,0,0]类似的编码形式,但无法表示词与词之间的内在相似性。
分布式相似性:只需要观察某些词出现的上下文,计算和他一起出现的词,以这些词来表示该词的含义,即可在表示中直接观察到词与词之间的相似性,即你可以通过这个词来预测上下文内容,即可理解这个词语的真正含义。 -
什么是Word2Vec?
两种算法:skip-gram:根据目标词预测上下文;CBOW:根据上下文来预测目标词的模型。
skip-gram:通过上下文词的向量表示u乘以目标词的向量v,得到了两个单词向量的点积,再转换为softmax(将值映射到指数空间),将数值转为概率,再进行所谓的归一化处理,也就得到了相应的概率估计。
softmax:类似放大一个最大化方程,重要的内容经过映射依然是最大的值。
上下文词的概率分布:每一个上下文词汇都只有一个概率分布,这个概率分布取决于该词相对于窗口的位置ID,由此每一个词汇只有一个向量表示。
链式法则:f(g(u)),也就是通常说的反向传播算法,保持参数一致,并且减少重复运算,降低运算复杂度。 -
目标函数的优化?
梯度下降算法:将目标函数尽快下降到最优值,同时又有许多优化方法,加快收敛速度。
第三讲 高级词向量表示
- skip-gram
theta通常作为一个用于所有变量的参数,基本上代表所有的上下文词向量和目标词向量,当我们调用时,我们调用theta,J是我们的损失函数,T是遍历语料库的第T个时间步,或第T个窗口,最后我们优化的整体目标函数是分步目标函数的总和。
词的长尾效应:出现频率较低的词,却在文本中具有较为丰富的含义,可能会出现长尾效应,导致词向量的维数非常高。 - 如何评估词向量?
内在的评估:观测向量的差异性和相似性;计算速度更快,便于很快的理解系统的工作原理;内存使用量大小;训练的速度和时间等等。
外在的评估:是真正的评估,取皮尔森相关性,将相关的词输入到训练好的模型,看能否得到有用的结果。