NLP

by1.
Naive : one hotamong .
“You shall know a word by theit keeps.” – J.R. Firth
Idea:densebased on /use of words, using :
count-based, , and task-based.
2. Count-based
When we want toaofword, we use the wordstheof it as abasedfor it. Then use atothe / of two words.
层就是以one hot为输入、中间层节点为字向量维数的全连接层!而这个全连接层的参数,就是一个“字向量表”!从这个层面来看,字向量没有做任何事情!它就是one hot,别再嘲笑one hot的问题了,字向量就是one hot的全连接层的参数!
那么,字向量、词向量这些,真的没有任何创新了吗?有的,从运算上来看,基本上就是通过研究发现,one hot型的矩阵相乘,就像是相当于查表,于是它直接用查表作为操作,而不写成矩阵再运算,这大大降低了运算量 。再次强调,降低了运算量不是因为词向量的出现,而是因为把one hot型的矩阵运算简化为了查表操作 。这是运算层面的 。思想层面的,就是它得到了这个全连接层的参数之后,直接用这个全连接层的参数作为特征,或者说,用这个全连接层的参数作为字、词的表示,从而得到了字、词向量,最后还发现了一些有趣的性质,比如向量的夹角余弦能够在某种程度上表示字、词的相似度 。

NLP

文章插图
【NLP】
我们已经拥有了一个naive的词向量表达方式,那就是one-hot的方法:构造一个词典,这个词典里面有kk个单词,那么就用 Rk" role="">RkRk 的 one-hot 来表示这个单词 。
但是这样子构成的单词有缺点:1. word 过于稀疏 。2. 不能表示出上下文的信息 。因此要想办法对它改进 。
举例
有一个词典,有六个字 我喜欢计算机 那么计算机的 one-hot表示就为
??????????????????[ 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 ]
该如何改进呢?想通过某种方式将它变换为:
??????????????[ ? w o r d 1 ? ? w o r d 2 ? ? w o r d 3 ? ]
每一行作为一种改进版本的,比one-hot表示法优秀的word 表示法,它所蕴含的词法和上下文信息更加丰富 。方法一:Count-based
这是一种办法,通过手动设定的宽度和直接数的办法来提取上下文信息 。它的形式是离散的,类似于强化学习中的马尔可夫过程 。
方法二:model 下面的东西其实都不需要,直接看这个博客
讲解一:
严格来讲,神经网络都是有监督的,而之类的模型,准确来说应该是“自监督”的,它事实上训练了一个语言模型,通过语言模型来获取词向量 。所谓语言模型,就是通过前n个字预测下一个字的概率,就是一个多分类器而已,我们输入one hot,然后连接一个全连接层,然后再连接若干个层,最后接一个分类器,就可以得到语言模型了,然后将大批量文本输入训练就行了,最后得到第一个全连接层的参数,就是字、词向量表,当然,还做了大量的简化,但是那都是在语言模型本身做的简化,它的第一层还是全连接层,全连接层的参数就是字、词向量表 。
讲解二 Word Level :
输入是上下文中的词从嵌入矩阵E中提取的词向量,将它们求和(称为投影层,),然后直接通过连接到输出层做,输出层的维度为词汇表的大小,每一维代表中某个wi作为中心词的概率 。(以负对数似然作为损失函数)
NLP

文章插图
Skip-gram模型由于涉及的参数少,因此计算速度同样非常快,相似的改进有- 等,在计算效率和结构化程度上平衡 。
: The heart of Count-basedis theof, then we make thisvia DL.
: Ato Word.