Lecture01笔记
前言、课程规划
1、介绍nlp基础概念、进而学习循环神经网络、注意力机制、transformers等在nlp中使用的关键方法
2、理解人类语言为什么难以理解
3、在Pytorch中构建系统的能力
单词含义、依存分析、机器翻译、问答等
一、人类语言
1、人类语言特点
人类语言的特点:目的指向明确,并非是海量数据,而是明确的一句话完成该话的任务
2、语言处理的难点:
自然语言处理最大难点是人类语言的省略使用,人类根据自己的世界常识来进行补充,而计算机并不具备常识。
二、词向量概念
传统nlp向量:
使用离散的独热词汇向量(one-hot)、独热词汇向量就是一个维度为1其余维度全0的向量表示一个词汇。一个词离散的表示一个含义,与其他词汇的向量均正交,所以失去了相似性原理,不能合理联想。
目前nlp研究的向量:
使用实值向量编码相似性,利用了分布式语义的特点,即一个词汇的语义要以其经常出现的上下文来表示,例如知道某一个词,可以找多个该词出现的场景,然后根据其出现场景的上下文来解释该词汇。
因此某个词的向量则是基于其上下文出现的单词来抽象出的向量表示,该向量可以用于预测其上下文词汇。
该类词向量也被成为词嵌入,因为可以理解为将该词汇的含义嵌入到n维向量的n个维度中,反过来讲即将n维的离散符号变成了一个方便机器处理的向量,使机器更容易完成自然语言处理的任务。
三、word2vec介绍
1、算法思想:
首先我们有很多来自某个地方的一大堆文本(文本语料库),同时我们再选择一个词库,并为每个词创建向量,之后我们要做的就是为每个词找出好的向量表示,即通过文本语料库来学习这些词向量(通过分布式相似性任务来预测该词的上下文词汇),即根据当前词向量计算上下文词出现的概率,不断调整该中心词的词向量来提高文本中上下文实际出现词汇的概率。
2、损失函数设置
这里的损失函数使用的是似然估计,用来表示预测结果的准确性。
补充:似然估计是概率学知识,似然与概率相反,即通过既定结果来反推可能的参数。
如上文所言,我们不断调整词向量,来提高预测上下文词汇的能力。一方面我们使用模型通过词向量可预测上下文词汇概率,另一方面我们拥有文本语料库,我们可以确切的知道真实的上下文词汇的概率;此时我们想要使得模型预测更准确,就要是的损失函数最小,也就是似然函数最大(即模型预测上下文词汇的概率更接近实际文本上下文词汇的概率)。
之后损失函数就可以列出来了,由于求和相较于连乘更容易计算所以取了对数,由于人们习惯最小化损失函数所以在前面加了负号,且是平均对数似然函数所以加了1/t;则可以列出其损失函数为:
3、概率计算
再上述的计算中要解决两个问题:
1)词向量的设计:
在设计词向量时,实际上一个词汇设计了两个词向量,分别为作为中心词的词向量与作为上下文词汇的词向量。一方面是为了简化计算,另一方面是避免进行梯度偏导计算时候,中心词和上下文词不同造成的困扰,如果我们将中心词和上下文词的词向量都视为相同的参数进行训练,那么在梯度下降的过程中,中心词和上下文词的更新可能会相互抵消,导致模型无法收敛或者收敛缓慢。
以词汇t为例,其中将作为中心词时候的向量称为Vt,作为上下文词汇时的向量称为Ut。
2)如何计算公式中的 P(Wt+j|Wt;θ);
当中心词为c,上线词为o时候则有公式:
公式中V向量为一个词作为中心词的向量,U向量是作为上下文的向量。
做点积的作用是:当Uo与Vc进行点积时,向量越相似则获得的结果越大,最终获得归一化概率越大。训练的目的就是为了让上下文相似的单词具有相似的向量。
取指数的原因是:因为最终我们要计算概率,我们不可以有复的概率,所以去指数变为正数。
为了让所以的概率相加为1,则除以词汇表中所有单词的相似度之和。从而获得概率分布。
其中一个例子就是使用了softmax函数,进行概率归一化,可以将相似度不同的向量转化到0-1之间的数字。
其中max是将大部分概率给到相似度高的文本,而soft是做到并不完全抹杀掉相似度低的文本,也给了较低的概率。
4、梯度下降
上文所提到的目标函数所表达的意义是预测值与真实值之间的差距,所以我们需要在让机器学习的过程中让差距缩小。可以用梯度下降的方法,计算出向量的梯度,则可找出如何改进向量将使得目标函数值变小。简单说就是找到各个参数的偏导数。
对目标函数进行对Vc的偏导:
对上述结果进行转化后,可以发现其中一部分即为softmax函数,故再化简:
此时结果就是 (观测值-期望值)。如果我们模型准确的预测了实际看到的词向量则说明我们的模型很好,所以我们可以尽可能的调整参数让其做到这一点。
总结:
第一节课主要讲述了一些nlp基础理论,如人类语言特点与词向量的概念。之后主要讲述了Word2vec的基本思想,与其一些函数的推导。课程最后曼宁教授进行了简单词向量应用的演示与对同学问题的回答(本文并未记录)。
– 希望可以给共同初学该课程的同学提供一些便利共同进步,如有错误也请大家多多指正。