Word Embedding,linux技术支持面试题

s o f t m a x ( x ) i = e x p ( x i ) ∑ j = 1 n e x p ( x j ) = p i softmax(x)_i = \frac{exp(x_i)}{\sum^n_{j=1}exp(x_j)}=p_i softmax(x)i​=∑j=1n​exp(xj​)exp(xi​)​=pi​

s o f t m a x softmax softmax又称为多项逻辑回归( m u l t i n o m i a l l o g i s t i c r e g r e s s i o n multinomial logistic regression multinomiallogisticregression),多用于分类过程,它通过将多个神经元的输出,映射到 ( 0 , 1 ) (0,1) (0,1)区间。它通过将任意值 x i x_i xi​映射到一个概率分布 p i p_i pi​上," m a x max max“是因为它会将输入中最大的值的概率进一步放大,而” s o f t soft soft"则是因为对于输入中极小的值,它也人然后分配一些概率,而不是直接丢弃。因此, s o f t m a x softmax softmax函数常常用在深度学习中;

word2vec中将文本进行向量表示的方法


  • C B O W ( C o n t i n u o u s B a g o f W o r d s ) CBOW(Continuous Bag of Words) CBOW(ContinuousBagofWords)

CBOW模型结构图

给定上下文中的词,然后预测中心词。从而利用中心词的预测结果情况,利用梯度下降方法不断调整上下文词的向量。训练完成后,每个词都作为中心词遍历了一遍,将上下文中的词向量进行调整,从而获取整个文本中所有词的向量;

  • S G ( S k i p − G r a m ) SG(Skip-Gram) SG(Skip−Gram)

SG模型结构图

给定中心词,然后预测上下文中的词。从而利用上下文中的词的预测结果情况,利用梯度下降法不断调整中心词的词向量,最后文本遍历完一遍之后,就得到了所有词的词向量;

  • C B O W CBOW CBOW和 S G SG SG的比较

两者均为三层神经网络(输入层、投影层和输出层)。 S G SG SG中,每个词作为中心词时,是一对多的情况,多个上下文中的词对一个中心词进行“训练”,然后得出较准确地中心词的向量结果,这样最终的效果更好。 C B O W CBOW CBOW中,是多对一的情况,多个上下文中的词从一个中心词处进行“学习”,这样效率更高,速度快,但是最终效果却不如 S G SG SG。此外,在 S G SG SG中,每个词都会受上下文词的影响,每个词作为中心词时,需要进行 K K K次训练( K K K为窗口大小),所以经过多次调整将使得词向量相对更准确。 C B O W CBOW CBOW预测词数和整个文本中词数几乎相等,每次预测才会进行一次反向传播。

模型优化的方法


  • 分层 S o f t m a x Softmax Softmax

用于分层softmax的二叉树示例

用于计算 s o f t m a x softmax softmax的方法,用二叉树(根据类标频数构造的霍夫曼树)来表示词汇表中的所有单词。如上图,其中,白色节点表示词汇表中的所有单词,而黑色节点则表示隐节点。其中 V V V个单词存储于二叉树的叶子节点单元,而对于每个叶子节点,都有一条唯一的路径可以从根节点达到该叶子节点,这条路径用于计算该叶子节点所代表的单词的概率。在这个模型中,不存在单词的输出向量,而是 V − 1 V-1 V−1个隐节点中都有一个输出向量 v n ( w , j ) ‘ v ^`_{n(w,j)} vn(w,j)‘​,单词作为输出词的概率被定义为:

p ( w = w O ) = ∏ j = 1 L ( w ) − 1 σ ( [ [ n ( w , j + 1 ) = c h ( n ( w , j ) ) ] ] . v n ( w , j ) ‘ T h ) p(w=w_O)=\prod {L(w)-1}_{j=1}\sigma([[n(w,j+1)=ch(n(w,j))]].{v`_{n(w,j)}}^Th) p(w=wO​)=j=1∏L(w)−1​σ([[n(w,j+1)=ch(n(w,j))]].vn(w,j)‘​Th)

其中, c h ( n ) ch(n) ch(n)是节点 n n n的左侧子节点, v n ( w , j ) ‘ v^`_{n(w,j)} vn(w,j)‘​是隐节点 n ( w , j ) n(w,j) n(w,j)的向量表示(即“输出向量”)。而 h h h则是隐藏层的输出值(SG模型中, h = v w i h=v_{wi} h=vwi​;CBOW模型中, h = 1 C ∑ c = 1 C v w c h=\frac{1}{C}\sum_{c=1}^C v_{w_c} h=C1​∑c=1C​vwc​​), [ [ x ] ] [[x]] [[x]]则为一个特殊函数,其定义如下:

[ [ x ] ] = { 1    , i f   x   i s   t r u e − 1   ,   o t h e r s [[x]]=\begin{cases}1\ \ ,if\ x\ is\ true\\-1\ ,\ others\end{cases} [[x]]={1  ,if x is true−1 , others​

  • 负采样技术

为解决数量过于庞大的输出向量的更新问题,于是在更新时不更新所有向量,而只更新他们的一个样本。正样本应该出现在我们的样本中,此外也需要加入几个单词作为负样本。而在采样的过程中,我们需要任意指定一个总体的概率分布,这个分布就叫做噪声分布,标记为 P n ( w ) P_n(w) Pn​(w)。在 w o r d 2 v e c word2vec word2vec中,作者用一个定义好的后多项分布的负采样形式取代简化的训练目标,从而产生高质量的嵌入:

E = − l o g σ ( v w O ‘ T h ) − ∑ w j ∈ W n e g l o g σ ( − v w j ‘ T h ) E=-log\sigma({v`_{w_O}}Th)-\sum_{w_j\in W_{neg}}log\sigma(-{v`_{w_j}}Th) E=−logσ(vwO​‘​Th)−wj​∈Wneg​∑​logσ(−vwj​‘​Th)

其中, w O w_O wO​是正样本(即输出单词), v w O ‘ v^`_{w_O} vwO​‘​是词向量。而 h h h则是隐藏层的输出值(SG模型中, h = v w i h=v_{wi} h=vwi​;CBOW模型中, h = 1 C ∑ c = 1 C v w c h=\frac{1}{C}\sum_{c=1}^C v_{w_c} h=C1​∑c=1C​vwc​​)。 W n e g = { w j ∣ j = 1 , … , K } W_{neg}=\{w_j|j=1,…,K\} Wneg​={wj​∣j=1,…,K}是从 P n ( w ) P_n(w) Pn​(w)中采样得到的单词集合,即负样本。

G l o v e Glove Glove


  • 定义

基于计数和直接预测的方法;

  • 目标函数

J ( θ ) = 1 2 ∑ i , j = 1 W f ( P i j ) ( u i T v j − l o g P i j ) 2 J(\theta)=\frac{1}{2}\sumW_{i,j=1}f(P_{ij})(uT_iv_j-logP_{ij})^2 J(θ)=21​i,j=1∑W​f(Pij​)(uiT​vj​−logPij​)2

X f i n a l = U + V X_{final}=U+V Xfinal​=U+V

其中, P i j P_{ij} Pij​是单词 j j j出现在单词 i i i上下文中的概率,而 f ( P i j ) f(P_{ij}) f(Pij​)则是为了去除噪声而设定的函数。

如何评价 E m b e d d i n g Embedding Embedding


  • 内在方式:对特定/中间子任务的评估;

  • 外在方式:应用到具体任务中;

f a s t T e x t fastText fastText分类


在文本分类任务中, f a s t T e x t fastText fastText作为一种浅层网络,能取得媲美于深度网络的精度,但是训练时间却比深度网络快许多数量级。一般情况下,用 f a s t T e x t fastText fastText进行文本分类的同时也会产生词的 e m b e d d i n g embedding embedding;

  • 字符级的 n − g r a m n-gram n−gram

w o r d 2 v e c word2vec word2vec中以词作为原子,为每个词生成一个向量,而忽略词内部形态特征。面对这一问题, f a s t T e x t fastText fastText采用字符级的 n − g r a m n-gram n−gram来表示一个单词。通过这样处理则有两个优点;

  1. 对于低频词,生成的词向量效果更好,其 n − g r a m n-gram n−gram可以与其他词共享;

  2. 对于训练词库外的词,仍然可以构建其词向量,可通过叠加其字符级 n − g r a m n-gram n−gram从而生成向量;

  • 模型架构

fastText模型架构图

类似于 w o r d 2 v e c word2vec word2vec中的 C B O W CBOW CBOW模型,只有输入层、隐藏层、输出层三层。其中,输入为多个单词表示成的向量,输出是一个特定的 t a r g e t target target,隐藏层是对多个词向量的叠加平均。不同的是, C B O W CBOW CBOW的输入是目标词上下文中的词,而 f a s t T e x t fastText fastText的输入则是多个单词及其 n − g r a m n-gram n−gram特征。这些特征用于表示单个文档, C B O W CBOW CBOW中输入词的是经过 o n e − h o t one-hot one−hot编码过的,输出为目标词;而 f a s t T e x t fastText fastText中输入特征则是经 e m b e d d i n g embedding embedding过的特征,输出是各个文档对应的类标,且采用分层 s o f t m a x softmax softmax优化措施,大大加快了训练速度;

小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
img

277437)]
[外链图片转存中…(img-FyU0MnK5-1710846277437)]

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
[外链图片转存中…(img-qJzeNVFA-1710846277438)]

  • 20
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值