深度学习之pytorch(六)
自然语言处理的应用
一般来说,循环神经网路目前在自然语言处理上面的应用最为火热。
1.词嵌入
他也被称为词向量,他的意思就是,对于每个词,可以使用一个高维向量去表示它,这里高维向量和one-hot的区别在于,这个向量不是0和1的形式,向量的每个位都是一些实数,并且这些实数隐含这个单词的某种属性。
词嵌入在PyTorch中的实现
N Gram模型
他的作用就是在于用前面几个词来预测这些词后面的一个单词,但是他有一个缺点,就是这个公式的参数空间过大,为了解决这问题,就需要引入马尔科夫假设,也就是说这个单词只和前面几个词有关系,而不是和前面所有的词都有关系。
词性判断
他的原理就是,定义一个lstm网络,然后给出一个由很多词构成的句子,然后根据前面的内容,每一个词可以用一个词向量来表示,这样一句话就是一个序列,而序列中的每个元素都是一个高维向量。
字符增强
因为一些单词存在着前缀或者后缀,比如-ly这种后缀很可能是一个副词,这样我们就能够在字符水平上对词性进行进一步判断,把两种方法集成起来,得到一个更好的结果。
用PyTorch实现对词性的判断
循环神经网络的更多应用
1.more to one
也就是在多个输入序列当中,输入单个向量,这个只需要在输出的序列当中取其中一个就可以,通常是取最后一个。
第一个任务是情感分析,也就是判断这句话的态度是消极的还是积极的,第二个任务是关键字提取,输出最后一个,并且用他来辨识这句话的关键字。
2.many to many
第二种结构就是输入和输出都是序列,但是输出的序列比输入的序列短,这种类型结构一般出现在语音识别当中。
3.Seq2seq
这种情况就是,输出的长度不确定,一般发生在机器翻译的任务中,将一句中文翻译成英文,而这句英文长度可能比中文短,也可能比中文长。
CNN+RNN
他们能联合在一起完成图像描述任务,也就是通过预训练的卷积神经网路提取图片特征,再通过循环网络将特征变成文字描述。