neural-network - 神经机器翻译任务中的句子指示
问题描述
我见过很多人致力于神经机器翻译。<BOS><EOS>
通常,在训练网络之前,它们会在、<START><END>
等标签之间表示他们的句子。当然,指定句子的开头和结尾是一个合乎逻辑的解决方案,但我想知道神经网络如何理解字符串<END>
(或其他)表示句子的结尾?
解决方案
它没有。
在推理时,有一个硬编码规则,即如果生成了该标记,则序列完成,并且将不再要求底层神经模型提供下一个标记。
source_seq = tokenize('This is not a test.')
print(source_seq)
在这一点上,你会得到类似的东西:
[ '<BOS>', 'Thi###', ... , '###t', '.' , '<EOS>' ]
现在我们用相同的格式构建目标序列:
target_seq = [ '<BOS>' ]
while true:
token = model.generate_next_token(source_seq, target_seq)
if token == '<EOS>':
break
seq.append(token)
模型本身只预测最有可能给出当前状态的下一个标记(到目前为止的输入序列和输出序列)。
它不能退出循环,就像它不能将机器的插头从墙上拉出来一样。
请注意,这不是这里唯一的硬编码规则。另一个是决定从第一个令牌开始并且只追加 - 从不前置,从不删除...... - 就像人类说话一样。
推荐阅读
- python - 从另一个线程或进程更新 Gtk.ProgressBar
- python - 如何在 TensorFlow 中使用 Eager Execution 进行保存和恢复?
- javascript - 如何在 Java 中中止文件下载?
- azure - Azure 功能:队列触发器删除消息,但不触发
- wpf - 在功能区内的控件中正确获取图像大小
- android - RxJava2(Android):PublishSubject 只向活动发出一次?
- python - 在python循环中获取href链接和文本
- android - 事件处理在微调器和按钮的角色中扮演什么角色?
- python - Python添加密码以修改功能
- android - 我无法在片段上设置 ClickListener RelativeLayout