RNN,LSTM和GRU和word2vec及embedding等的联系与区别解析。

普通的MLP和CNN都没有事件维度,可以从RNN开始引入了事件维度,这在理解上给我们带来了一些困难,笔者为了避免遗忘,将这种区别和特点记录如下。

(没时间画图,就看文字吧,写的比较简单。。。)

资料 https://zhuanlan.zhihu.com/p/36455374

这篇博客讲的其实很清楚了,为了帮助理解,我总结如下::

1. RNN可以看成是有t个3层的全连接神经网络,从1-t代表了一个时序的输入 
2. 将这些全连接网络的隐含层全部连接起来 
3. 每一次前面训练完的部分结果都会通过隐藏层传递给下一层(双向网络是双向传递) 
4. 至于LSTM中的num_units这个参数,其实就是第一步提到的3层网络中的第二层的神经元节点数目。激活函数就是LSTM中定义的那些。

就这么简单。。。。。。


接下来再将word2vec和embedding中理解有障碍的地方说一下。。 
word2vec顾名思义就是将一个word转成一个vector,怎么转呢,word2vec有两种办法,分别是skip-gram和CBOW,其实差不多,就是一对多和多对一的不同。 这里需要注意的是 word2vec是一个三层的网络,输入和输出都是one-hot向量,是一个半监督的网络(因为他的监督标签也来自于输入数据),训练完之后我们需要的是第一层和第二层之间的权重矩阵。加入输入的维度是n,中间层维度是m,则这个矩阵的维度是(n x m),其中的每一行代表了一个word,这也就是词嵌入embedding的由来,将一个词的向量表示嵌入到了一个矩阵单中,用的时候拿出来用。

这些都和自动编码机有异曲同工之妙。


另一个点就是哈夫曼树和word2vec的关系,再word2vec中,最末层的激活函数是softmax,但是对于的标签非常巨大(等于词的数目),这相当于是一个巨大的多分类问题,为了解决这个问题就再word2vec的末尾引入了哈夫曼树,即神经网络训练的输出对应的是一颗哈夫曼树,在多分类寻找的时候会大大的加快速度,从而加快word2vec的训练速度,这种优化方式被称为hierarchical softmax
--------------------- 
作者:河流儿 
来源:CSDN 
原文:https://blog.csdn.net/github_34777264/article/details/82660131 
版权声明:本文为博主原创文章,转载请附上博文链接!

猜你喜欢

转载自blog.csdn.net/Rex_WUST/article/details/84203957