machine-learning - 在机器学习中多次使用相同的输入(输出不同)是否可以接受?
问题描述
我想知道在机器学习中是否可以接受一个数据集可能包含多次相同的输入,但每次都有另一个(有效!)输出。例如,在机器翻译的情况下,输入句子但每次都给出不同的翻译。
一方面我会说这绝对是可以接受的,因为输出的差异可能更好地模拟小的潜在特征,从而导致模型更好的泛化能力。另一方面,我担心多次使用相同的输入会使模型偏向于给定的输入——这意味着第一层(在深度神经网络中)可能在这个输入上“过度拟合”。具体来说,当在测试集中多次看到相同的输入但在训练集中从未出现过时,这可能会很棘手,反之亦然。
解决方案
一般来说,你可以做任何有效的事情,这个“任何有效的”也是回答你问题的关键。您需要做的第一件事是定义性能指标。如果要学习的函数定义为X |-> Y
其中 X 是源语句,Y 是目标语句,则性能度量是一个函数f((x,y)) -> |R
,反过来可以用来定义必须由神经网络优化的损失函数。
为简单起见,我们假设您使用准确度,即完美匹配句子的比例。如果你有相互冲突的例子(x,y1)
,(x,y2)
那么你就不能再达到 100% 的准确率,这感觉很奇怪,但不会造成任何伤害。另一个很酷且重要的事实是,根据定义,每个句子只能正确匹配一次——假设你的 NN 预测中没有随机分量。这意味着具有更多替代翻译的句子在构建模型中的权重不会更高。优点是这种方法可能会导致更好的泛化。不利的一面是,这种方法可能会导致优化失败,从而导致模型陷入最佳选择之间。
一种更简洁的方法是考虑在您的绩效衡量/损失的定义中存在替代翻译这一事实。您可以将性能指标定义为
其中 1I 是指标函数。
这将提供一个更清晰的指标。显然,您需要对目标指标采用上述推导
推荐阅读
- r - 逻辑索引时是否有用 0 替换消失值的功能?
- java - 使用 Java Socket 和 java.nio.file.Files.copy 发送文件
- java - 屏幕关闭时,前台服务上的 Android 蓝牙 LE 扫描仪立即停止
- python - 如何在 fastapi 上查看来自 json 的产品
- curl - 使用 curl->xpost 将 geojson 内容发送到数据库时出错
- vba - 使用 VBA 将值修改为外部访问表单
- javascript - 如何使用过滤器进行双循环?
- python-3.x - Azure 函数 Python 容器 - 如何配置 HTTP ping
- javascript - 使用 Jsstore select() 查询嵌套对象的 IndexDB?
- sql-server - Sqlserver 现有用户将“db_owner”提供给数据库失败