PaPaPaPatrick / NN

0 stars 0 forks source link

Encoder-Decoder #15

Open PaPaPaPatrick opened 1 year ago

PaPaPaPatrick commented 1 year ago

Encoder-Decoder(一)理论理解 https://zhuanlan.zhihu.com/p/57623148 RNN的output的长度和输入的序列长度相同,RNN的hidden_state就是该序列输入完毕后该序列最后一个输入产生的隐状态,但是这两种情况下output的值也确实是来自hidden_state。

文本生成本质上应该是一个分类任务,这些类别就是你构建的词表。所以在你完成特征抽取后,你还需要一个全连接层帮你实现分类的任务,这个全连接层会将RNN的结果通过矩阵作用变为一个长度和词表长度一样的向量,这个向量的每个元素的值表示词表上对应的词是这次输出的结果的可能性。所以,从真正意义上来说,经过V矩阵作用的输出并不属于RNN。 decoder部分的RNN和unfold的RNN是一样的,encoder部分的RNN则有区别,区别在于encoder部分的RNN是没有输出O的。也就是说encoder它做的事情就是接收一个词向量,产生一个隐藏层向量,这样接收完一句话后,得到的隐藏层的向量理论上是包含了一句话的信息,所以我们可以将这个最终的隐藏层向量看做是对整句话的编码,但是当句子长了之后,这个向量还能记得这么多吗?

所以encoder-decoder模型可以看做是两个编码器进行联合训练得到的语言模型。

PaPaPaPatrick commented 1 year ago

轰炸理解深度学习里面的encoder-decoder模型 https://blog.csdn.net/program_developer/article/details/78752680 有很多encoder-decoder解释的汇总

准确的说,Encoder-Decoder并不是一个具体的模型,而是一类框架。Encoder和Decoder部分可以是任意的文字,语音,图像,视频数据,模型可以采用CNN,RNN,BiRNN、LSTM、GRU等等。所以基于Encoder-Decoder,我们可以设计出各种各样的应用算法。

PaPaPaPatrick commented 1 year ago

Encoder-Decoder模型和Attention模型 https://blog.csdn.net/u011734144/article/details/80230633

基本的Encoder-Decoder模型非常经典,但是也有局限性。最大的局限性就在于编码和解码之间的唯一联系就是一个固定长度的语义向量c。也就是说,编码器要将整个序列的信息压缩进一个固定长度的向量中去。但是这样做有两个弊端,一是语义向量无法完全表示整个序列的信息,还有就是先输入的内容携带的信息会被后输入的信息稀释掉,或者说,被覆盖了。输入序列越长,这个现象就越严重。这就使得在解码的时候一开始就没有获得输入序列足够的信息, 那么解码的准确度自然也就要打个折扣了

PaPaPaPatrick commented 1 year ago

系统了解Encoder-Decoder 和 Seq2Seq及其关键技术 https://zhuanlan.zhihu.com/p/114933655 有各种方法和解决方案的介绍链接,但是没有展开,也没有对比结果

PaPaPaPatrick commented 1 year ago

一文看懂NLP 里的模型框架Encoder-Decoder 和Seq2Seq

Encoder-Decoder 这个框架很好的诠释了机器学习的核心思路:

将现实问题转化为数学问题,通过求解数学问题,从而解决现实问题。

Encoder 又称作编码器。它的作用就是「将现实问题转化为数学问题」 Decoder 又称作解码器,他的作用是「求解数学问题,并转化为现实世界的解决方案」

关于 Encoder-Decoder,有2 点需要说明:

不论输入和输出的长度是什么,中间的「向量 c」 长度都是固定的(这也是它的缺陷,下文会详细说明) 根据不同的任务可以选择不同的编码器和解码器(可以是一个 RNN ,但通常是其变种 LSTM 或者 GRU ) 只要是符合上面的框架,都可以统称为 Encoder-Decoder 模型。说到 Encoder-Decoder 模型就经常提到一个名词—— Seq2Seq。