RNN模型与NLP应用(7/9):机器翻译与Seq2Seq模型

  Рет қаралды 17,987

Shusen Wang

Shusen Wang

Күн бұрын

Пікірлер: 47
@darrengreen2449
@darrengreen2449 3 жыл бұрын
王老师讲得真的太好了
@kejianshi9196
@kejianshi9196 2 жыл бұрын
Training时 decoder是 teacher forcing. inference时 是autoregressive (w/ beam search/sampling with temperature...). 并会penalize短生成文本.
@user-wq8yo7nh8d
@user-wq8yo7nh8d 3 жыл бұрын
王老师,在decoder的部分,每一次model.predict的结果一定是只有一个字符吗?我看keras官方代码里decoder部分是这样写的,sampled_token_index = np.argmax(output_tokens[0, -1, :]),它取的是最后一个字符的向量来做预测。
@PatrickCat99
@PatrickCat99 11 ай бұрын
讲的太好了
@ericwang5504
@ericwang5504 2 жыл бұрын
讲得太好了,非常感谢!
@neoky3705
@neoky3705 Жыл бұрын
王老师,想具体了解一下多任务学习,多任务学习是只优化encoder吗
@qchirac
@qchirac 3 жыл бұрын
encoder bi-lstm, decoder uni-lstm. 那么有个问题,encoder的输出有两套 (h, c), 左右两端各出一个。两套东西怎么输入decoder一端呢?concact起来吗?例如【h,h_prime】?
@davidliu5075
@davidliu5075 3 жыл бұрын
感谢!
@xinliu4785
@xinliu4785 2 жыл бұрын
讲得太好了!!
@hanweisi8058
@hanweisi8058 4 жыл бұрын
您好,我想请问一下,在8:37秒左右的时候,我们Decoder的输入依次是, \t,\tm, \tma, \tmac, 每到了下一个state都用之前全部的字符串,到最后一次预测把\tmach ne fliege都输入。那么多个character怎么一起输入呢,难道不是预测m的时候输入\t,预测a的时候输入m,预测c的时候输入a嘛?因为我看到后面的课件说是一个一个字符输入的,所以想问问您这里是不是写错啦~
@ShusenWang
@ShusenWang 4 жыл бұрын
你的观查很仔细哈~ 我只是为了方便理解才这么写的,实际实现的话应该按照下节课的方法,效率更高。 两种方法其实等价。 在这里,输入 \t,\tm, \tma, \tmac 的时候,Decoder状态都是 Encoder 最后一个状态。 在下节课,输入 \t, m, a, c 的时候,状态分别是 h0, h1, h2, h3,状态变了。
@hanweisi8058
@hanweisi8058 4 жыл бұрын
@@ShusenWang 哦哦哦,也就是说,只是h1包含了\t的信息,h2包含了\tm的信息,h3包含了\tma的信息,只是state包括了之前字符串的内容,而input还是按照\t, m, a, c 一个个character输入的是吧~
@ximingdong503
@ximingdong503 3 жыл бұрын
@@ShusenWang 你好 老师 还有个问题 假设 我们 decoder input \t 但是输出 a 不是目标 m , 我们 用 loss 跟新 model 以后 我们 是 应该 把 正确结果 m 作为 input 对吧 ?
@ShusenWang
@ShusenWang 3 жыл бұрын
@@ximingdong503 对,你说的没错
@maonanwang9298
@maonanwang9298 3 жыл бұрын
@@ShusenWang 老师你好,我也是对这里有一些疑问。在 Decoder 的时候,每次输入是前面所有是不是会更好呢?比如根据 \tma 来预测 c,而不是通过 a 来预测 c,不然句子长了 hidden state 也会出现遗忘的问题。
@joetsai4676
@joetsai4676 Жыл бұрын
感觉机器翻译好像不如自动生成文本那么直观,特别是decoder的时候,为什么预测每个字母的时候输入长度会不一样啊,起始符好理解,预测第一个德语字母的时候,只有一个输入,这信息量是不是太少了啊。还有就是训练集的时候,整个神经网络中encoder和decoder部分的 parameters 是同时训练的吗?感谢解惑!
@wispershadow3131
@wispershadow3131 Жыл бұрын
王老师,请问这里输入文本是不是不需要截取固定长度啊?因为我只取提取的特征状态给decoder,长度是我自己指定的,还是说建议输入文本也截取固定长度,这个对预测准确性有影响么?
@darrengreen2449
@darrengreen2449 3 жыл бұрын
王老师, decoder为什么要抽样啊?不是输出最大概率的单词吗。
@YuchuHe
@YuchuHe 7 ай бұрын
抽样是为了使多次翻译时,输出多样化。要不然每次都一样,不见得是想要的结果。
@xiangwang4462
@xiangwang4462 4 жыл бұрын
谢谢老师!
@黃宜靜-d5l
@黃宜靜-d5l 3 жыл бұрын
老師 您好, 想請問9:53 許多 AE LSTM模型 , encoder 後,只保留 最後一個狀態h' 給 decoder, 沒有傳輸帶c, 使用keras(return seqence =False),那如何跟decoder 連結起來? 使用repeat layer? 那這兩者會的結果差異如何解釋?
@ShusenWang
@ShusenWang 3 жыл бұрын
Keras可以让encoder 输出 [h,c],把[h,c]作为decoder的 initial states,这样就连起来了。 你看一下这个: github.com/wangshusen/CS583-2020S/blob/master/homework/HM5/HM5.ipynb 文件中的这一部分:3. Build the networks (for training)
@facesquare1171
@facesquare1171 4 жыл бұрын
老师好呀,在哪里可以找到9:14里说的demo?
@ShusenWang
@ShusenWang 4 жыл бұрын
这里: github.com/wangshusen/CS583-2020S/tree/master/homework/HM5
@xiujiesong3095
@xiujiesong3095 3 жыл бұрын
thx a lot!
@danwang5482
@danwang5482 3 жыл бұрын
如果预测word,也是用one hot encoding?那么维度会很大呀
@XujieLi
@XujieLi 3 жыл бұрын
是的 所以已在讲解的时候使用char level讲解 不过由此可见苹果和谷歌的实时翻译还是很是很厉害的技术
@DED_Search
@DED_Search 4 жыл бұрын
12:36秒说到decoder的每一个output都会被记录下来,最后return一整句翻译。请问是用一个单独的variable来存储么?还是存在cell state c里面?谢谢
@ShusenWang
@ShusenWang 4 жыл бұрын
直接打印出来就行了,这就是翻译的结果
@DED_Search
@DED_Search 4 жыл бұрын
@@ShusenWang 谢谢
@DED_Search
@DED_Search 4 жыл бұрын
王老师,这节课我有个问题。 lstm encoder跟decoder的工作原理是一样的么?都类似text generator么?encoder的目的是什么呢?我想知道encoder每个block的input x, hidden state h, output, and cell state c都大概长什么样子。 13:10秒说每输入一个词rnn就会更新状态,把输入的信息积累在更新的hidden state里。我有些迷惑,假设英文句子是"i am chinese", 那么每个block的输入x依次是:i; am; chinese. 每个block的hidden state依次是:i; i_am;I_am_chinese?? 这么理解对么?如果是这样,那cell state长什么样子呢?那么这跟直接用英文这句话的one hot encoding得出的matrix做decoder state初始值,有什么区别呢?这跟上节课的text generator不太一样,我有点没办法wrap my head around it. 谢谢
@ShusenWang
@ShusenWang 4 жыл бұрын
Encoder 不是generator。Encode只是从输入的句子中提取特种。Encoder的输出 h 、c 相当于特征向量。
@DED_Search
@DED_Search 4 жыл бұрын
@@ShusenWang 那么这跟直接用英文这句话的one hot encoding得出的matrix做decoder state初始值,有什么区别呢? 不好意思 初学者问题有点多。感谢老师的解答。
@ShusenWang
@ShusenWang 4 жыл бұрын
@@DED_Search 你当然可以那么做。RNN适合处理文本,RNN提取的特种比你说的简单方法效果好很多。
@DED_Search
@DED_Search 4 жыл бұрын
好的。明白了。谢谢老师解答
@maxxxwan
@maxxxwan 4 жыл бұрын
如果目标翻译是英语到德语。用英语到其它几种语言的训练数据做多任务学习,引入英语跟这些语言的映射关系,会不会反而损害模型英语到德语的映射关系呢?
@ShusenWang
@ShusenWang 4 жыл бұрын
我也不太确定。我觉得应该不会,不管把英文翻译成任何语言,都不应该损失信息。当然这是语言学和NLP的问题,我不是太了解。
@DED_Search
@DED_Search 4 жыл бұрын
请问,seq2seq 可以用lstm encoder/decoder也可以用simplernn encoder/decoder么?我看到视频里两种都有写。谢谢
@ShusenWang
@ShusenWang 4 жыл бұрын
用任何的RNN都可以
@DED_Search
@DED_Search 4 жыл бұрын
@@ShusenWang 谢谢
@ucastiel5986
@ucastiel5986 4 жыл бұрын
老师您好,请问一下英德翻译时,encoder的输入为英文,输出最后一个状态h,也是decoder的初始状态,decoder输入为起始符,然后根据h和起始符预测第一个值z1,并且z1作为下一个神经网络的输入并预测z2,直到预测到终止符完了(大约在视频的13'47处)。能否告知作为正确标签的德文是在decoder的哪个位置输入的?谢谢!!
@ucastiel5986
@ucastiel5986 4 жыл бұрын
又看了几遍视频,是不是在decoder预测概率p的地方输入德语对应的one-hot向量求loss进行梯度下降,不知道理解对不对。。。
@ShusenWang
@ShusenWang 4 жыл бұрын
你说的是 train 还是 test?如果是train,德文token作为标签(做one-hot),与decoder输出(也是向量)作对比,计算loss。有了loss,就可以反向传播计算梯度。
@ucastiel5986
@ucastiel5986 4 жыл бұрын
@@ShusenWang 我说的是train的时候,明白了,谢谢老师!!
@painterloy3845
@painterloy3845 4 жыл бұрын
Shusen Wang 意思是这需要人工标记很多很多次吗
@ShusenWang
@ShusenWang 4 жыл бұрын
@@painterloy3845 不需要。一句英语+一句德语,就是一组训练数据。
RNN模型与NLP应用(8/9):Attention (注意力机制)
16:51
Shusen Wang
Рет қаралды 31 М.
RNN模型与NLP应用(6/9):Text Generation (自动文本生成)
23:24
Long Nails 💅🏻 #shorts
00:50
Mr DegrEE
Рет қаралды 16 МЛН
coco在求救? #小丑 #天使 #shorts
00:29
好人小丑
Рет қаралды 30 МЛН
Transformer模型(1/2): 剥离RNN,保留Attention
24:07
Shusen Wang
Рет қаралды 54 М.
2027,人類終結 | 老高與小茉 Mr & Mrs Gao
30:03
老高與小茉 Mr & Mrs Gao
Рет қаралды 551 М.
62 序列到序列学习(seq2seq)【动手学深度学习v2】
12:35
RNN模型与NLP应用(5/9):多层RNN、双向RNN、预训练
12:16
RNN模型与NLP应用(9/9):Self-Attention (自注意力机制)
7:17
RNN模型与NLP应用(3/9):Simple RNN模型
20:50
Shusen Wang
Рет қаралды 21 М.