无监督学习-词嵌入|深度学习(李宏毅)(七)

简介: 词嵌入(Word Embedding)是将自然语言表示的单词转换为计算机能够理解的向量或矩阵形式的技术。在Word Embedding之前,常用的方法有one-hot、n-gram、co-occurrence matrix,但是他们都有各自的缺点。Word Embedding是一种无监督的方法。

一、概述


词嵌入(Word Embedding)是将自然语言表示的单词转换为计算机能够理解的向量或矩阵形式的技术。在Word Embedding之前,常用的方法有one-hot、n-gram、co-occurrence matrix,但是他们都有各自的缺点。Word Embedding是一种无监督的方法。


1H4ZQ$CPH6~[2]X2F1KJ5}V.png

                                             Word Embedding


Word Embedding的主要任务是输入收集到的词汇,然后获得它的向量表示,其大概过程如下:

%{10KP4L{%Z}K1(SMY50{XX.png

                                                 Word Embedding


Word Embedding不能使用AutoEncoder来做是因为无法为AutoEncoder的输入找到一个包含可以学习的信息的表示。比如使用独热编码作为AutoEncoder的输入,由于独热编码的每一维度之间是相互独立的,且独热编码包含的信息量极少,因此AutoEncoder学不到一些有用的信息。


Word Embedding主要通过训练数据的上下文来学习文本的信息。Word Embedding假设不同的词如果处在同样的上下文位置的话,这两个词就会具有一定的相似性。


M%AY(06NHCK8)V}{L}~98]N.png


                                                  词的上下文


二、词嵌入的方法


  1. Count based


E)WMK_)Z50][5`M${P(G8CO.png

这种方法的典型模型是GloVe模型,这里不做重点介绍。


  1. Prediction based


  • 使用的网络结构

在多层神经网络中输入当前词[X~BIZB1MK$J$~SA@Z)`}Q5.png的独热编码向量并输出每个维度表示CA31CA9S@8FT9KS03V@W)(D.png为每个词的概率的向量,然后取第一个隐藏层的输入作为词的编码向量,其过程如下图所示:


{`U]NH}%]GDP%}{U%$P[9~4.png

                                              网络结构


将获得的词的编码向量进行可视化以后可以看到类似的词会出现在比较接近的地方:


9]TJ{%@VYTFON(NCRZ]8DD0.png

                                                    可视化


  • 为什么第一个隐藏层的输入可以作为词的编码


在下面的训练文本中输入两个人名网络会预测到相同的输出“宣誓就职”,为了使得神经网络输出去同样的结果,神经网络就需要将两个人名经过权重的处理映射到接近的词向量,然后将这个词向量作为神经网络的输入。


I(LIW1J~{P5@`C9I(RG]VUH.png

                                                           训练文本


  • 共享参数——使用多个词预测下一个词


在实际应用中使用一个词来预测下一次个往往是比较困难的,一个词后面可能出现的词的可能结果有千千万万种,因此通常将多个词同时作为网络的输入,通常需要输入至少10个词才会训练出效果比较好的模型。


O]X5BSVZ63}65JKXR}{)(BW.png

]RE1{DS]6X1W9O_ZV5}F]LD.png


①参数共享可以保证同样的词出现在不同位置时不会使得编码的结果不同;


②表示词的独热编码往往维数很高,共享参数可以降低参数的数量。


输入多个词的网络结构如下图所示,其中相同颜色的权重表示共享的参数:


U1@~AZGT][BH%H@O$F8DQVQ.png

                                                           网络结构


在训练时为了保证参数共享,将采用下种方式进行参数更新:


SM7%8MY)4(P@$T$@Z3WUJ63.png

                                                           参数更新


以下为一个举例,预测下一个词时使用的是前两个词,然后将输出与预测的词的独热编码的交叉熵作为损失函数,通过最小化损失来训练模型:


9TQYN_HDLC4DRO}BH`WN9KQ.png

                                                         举例


  • 其他变种


Continuous bag of word (CBOW) model


3EZP08`14WO6TK)%1ISM3@D.png

                                                            CBOW


Skip-gram


DI]R5J%VCBS[J%V0MEQ)XN9.png

                                                 Skip-gram


  • 可视化


从训练得到的模型中获得词的编码向量以后进行可视化可以看到一些规律,比如国家和首都之间有一定的联系:


(WUQ1{5LUIR`XL[1B39AV(1.png

                                           国家与首都


动词的三种时态之间有一定的规律:


C%XB](_{RL3I2R_GE82`S)T.png

                                       动词时态


一类动物的词向量与某一特定品种的该类动物的词向量的差,以及一类职业的词向量与某一特定的该类职业的词向量的差会落在各自的位置:


22S%FF@6G`29775D9YSDCMR.png

                                                   类与实例


根据上述特性可以来回答类比的问题。比如我们知道


0A5EX{YS)QOWZM$8_M5PI_7.png

)0]3ENL8HK57Z{OFY][$])7.png

                                             解决类比问题


H0C0VO$GIOK~57Q4WHT4`R6.png

三、一些其他应用


  1. 多语种的Embedding


如果分别训练英文的材料和中文的材料,那么分别得到的结果就不会有任何联系,比如“apple”和“苹果”的词向量之间就不会有联系。这是因为词嵌入的方法只根据词的上下文来建立词的编码,如果不将中文和英文的资料放到一起训练就不会使相同意义的中英文词汇的词向量产生任何联系。但是如果我们在中英文分别训练出的词向量的基础上继续训练一个模型,使得中英文相同意义的词映射到同一个位置,就可以得到以下结果,这样的模型可以用来进行类似翻译这样的工作:


$JY7KBL54[BKCEXYEN@BQ_M.png

                                                   多语种嵌入


  1. 对图像的Embedding


首先可以对各种类别的词进行词嵌入获得词的编码向量,然后可以训练一个模型使得该模型的输入是图片,输出一个和该图片类别的词向量同样维度的向量并且使得输出散落在类别的词向量周围。通过这样一种方式就可能实现当这个模型输入一张没有训练过的类别的图片时可以将该图片的编码向量映射到正确的类别的词向量周围,从而解决传统的分类方法只能够识别训练过的类别的图片的局限性。下图是上述过程的一个举例,在这里训练了车辆、马和狗的图片,当猫的图片输入到模型中时可以将其映射到“cat”的词向量周围:


2E_I{K0VISHYBWR5{YS8[GL.png

                                          对图像的Embedding


  1. 对词序列的Embedding


词序列可以指文档或一段话,可以将不定长的词向量映射到定长的编码向量,这个编码向量就代表了这个序列的语义,这种Embedding的方法可以解决Bag-of-word+AutuEncoder方法的局限性。Bag-of-word+AutuEncoder方法的过程如下图所示:


_@W~[WS`TMGF}~Y6EIC8HCA.png


                                    Bag-of-word+AutuEncoder


Bag-of-word+AutuEncoder的局限性在于Bag-of-word忽略了词序列中词的顺序所包含的信息。举例来说下面两句话虽然包含同样的词却是完全不同的意思,一句是positive的,另一句是negative的:


(5{([Z%AV_60KLU%PEJGJ24.png

                               Bag-of-word+AutuEncoder的局限性

相关文章
|
1天前
|
机器学习/深度学习 人工智能 自然语言处理
|
1天前
|
机器学习/深度学习 自然语言处理 算法
【Tensorflow深度学习】优化算法、损失计算、模型评估、向量嵌入、神经网络等模块的讲解(超详细必看)
【Tensorflow深度学习】优化算法、损失计算、模型评估、向量嵌入、神经网络等模块的讲解(超详细必看)
58 1
|
机器学习/深度学习 数据挖掘
无监督学习-自编码器-补充|深度学习(李宏毅)(二十)
无监督学习-自编码器-补充|深度学习(李宏毅)(二十)
290 0
无监督学习-自编码器-补充|深度学习(李宏毅)(二十)
|
机器学习/深度学习 数据可视化 数据库
无监督学习-自编码器|深度学习(李宏毅)(十九)
无监督学习-自编码器|深度学习(李宏毅)(十九)
846 0
无监督学习-自编码器|深度学习(李宏毅)(十九)
|
机器学习/深度学习 算法 数据可视化
无监督学习-邻域嵌入方法|深度学习(李宏毅)(十八)
无监督学习-邻域嵌入方法|深度学习(李宏毅)(十八)
162 0
无监督学习-邻域嵌入方法|深度学习(李宏毅)(十八)
|
机器学习/深度学习 搜索推荐 数据挖掘
无监督学习-线性方法|深度学习(李宏毅)(十七)
无监督学习-线性方法|深度学习(李宏毅)(十七)
193 0
无监督学习-线性方法|深度学习(李宏毅)(十七)
|
1天前
|
机器学习/深度学习 计算机视觉
深度学习在图像识别中的应用与挑战
【5月更文挑战第13天】 随着计算机视觉和人工智能技术的飞速发展,深度学习已成为推动图像识别领域进步的核心动力。本文将探讨深度学习技术在图像识别中的应用,并分析其面临的主要挑战。我们将从卷积神经网络(CNN)的基础出发,探索其在图像分类、目标检测和语义分割等方面的应用实例,并针对数据偏差、模型泛化能力、计算资源需求等关键问题展开讨论。通过案例分析和性能比较,我们旨在为读者提供一个关于深度学习在图像识别中应用的全面视角,同时指出未来的研究方向和技术趋势。
|
1天前
|
机器学习/深度学习 存储 人工智能
深度学习在图像识别中的应用与挑战
【5月更文挑战第15天】 随着人工智能技术的飞速发展,深度学习已成为图像识别领域的核心技术。本文将探讨深度学习在图像识别中的应用,以及在实际应用中所面临的挑战。我们将介绍卷积神经网络(CNN)的基本原理,以及如何利用深度学习模型进行图像分类、目标检测和语义分割等任务。此外,我们还将讨论在训练和部署深度学习模型时可能遇到的一些问题,如过拟合、计算资源需求和数据隐私等。
|
1天前
|
机器学习/深度学习 自动驾驶 算法
利用深度学习优化图像识别在自动驾驶系统中的应用
【5月更文挑战第15天】 随着自动驾驶技术的不断进步,图像识别作为其核心技术之一,对准确性和实时性的要求日益提高。本文旨在探讨如何通过深度学习算法优化图像识别流程,进而提升自动驾驶系统的整体性能。文中首先回顾了当前自动驾驶领域中图像识别面临的挑战,接着介绍了几种先进的深度学习模型及其在图像处理中的应用,最后提出了一个结合这些模型的优化框架,并对其潜在的改进效果进行了分析。
|
1天前
|
机器学习/深度学习 传感器 人工智能
基于深度学习的图像识别技术在自动驾驶系统中的应用
【5月更文挑战第15天】随着人工智能技术的飞速发展,尤其是深度学习在图像处理领域的突破性进展,自动驾驶系统得以实现更加精准和高效的环境感知。本文章深入探讨了深度学习技术在自动驾驶车辆图像识别中的运用,分析了卷积神经网络(CNN)等模型在车辆、行人以及交通标志识别上的优势与挑战。同时,本文还针对当前自动驾驶系统中存在的数据偏差、实时处理能力及安全性问题提出了潜在的解决策略,并展望了未来发展趋势。