Embeding层与fc层的理解

1 Embedding

Embeding在自然语言处理中是十分重要而且常见的操作, 目的是把符号化的字符用数字表示便于计算机的处理, 同时具有一定的语义信息。比如, 假设英文词表有30000个词汇,当然最简单的办法是把这30000个词汇编号, 如0-29999, 这样也完成了数字化,但这个编号毫无语义信息, 编号的大小也没有什么意义, 因此简单的编号不是一个好的方案。One-Hot编码是一种可行的方案, 但是当词表非常大的时候(比如本例中的30000), One-Hot编码会非常稀疏, 也非常浪费计算和存储。Embedding就是一个用来进行语义表示的方法, 它把稀疏的信息嵌入到一个稠密的空间, 语义信息表示更加紧凑。比如Embedding可以把用One-Hot编码需要30000维压缩到1024维, 只用30000x1024大小就表示了原本需要30000x30000才能表达的语义编码。
其实更通俗一点说, Embedding就是一个投影的过程, 把稀疏的高维信息投影到密集的低维空间表示。

2 Fc

fc就是全连接层, 也是一个投影的过程。

其实Embedding与Fc并无什么关联, 只是因为都是类似于投影的操作, 导致初学者理解Embedding的时候会与Fc混淆。那么下面就说一下他们的区别吧:
Embedding本质上就是一个查找表,通过索引查找对应的词嵌入表示, 比如有一个30000x1024大小的查找表, 其中包含30000个字符的词嵌入表示, 每个字符用1024大小的向量表示。当然Embedding层也是可以训练的, 训练方式与fc层是一样的。比如30000个字符, 每个字符用1024维表示, Embedding层包含30000x1024个可训练参数, 训练完后这些参数就是最终需要的结果。 同样地输入维度是30000, 输出维度1024的fc也包含同样多个参数, 但是fc层的参数仅仅是个参数, 最终的输出还是1024维的。 或许正是因为在维度相同的时候他们的参数个数相同, 过程也类似才容易混淆吧。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值