neural-network - 为孪生网络中的对比损失选择边际

标签 neural-network deep-learning nlp computer-vision pytorch

我正在为度量学习任务构建孪生网络,使用对比损失函数,但我不确定如何为损失设置“ margin ”超参数。

我对损失函数的输入目前是来自 RNN 层的 1024 维密集嵌入 - 该输入的维数会影响我选择边距的方式吗?我应该先使用密集层将其投影到低维空间吗?非常感谢任何有关如何选择特定 margin 值(或任何相关研究)的指示!以防万一,我使用的是 PyTorch。

最佳答案

你不需要将它转换到低维空间。 边距与空间维度的相关性取决于损失的公式化方式:如果您不对嵌入值进行归一化并计算向量之间的全局差异,则右边距将取决于维度。但是,如果您计算归一化差异,例如余弦距离,则边距值将不依赖于嵌入空间的维数。 这里解释了排名(或对比)损失,可能有用 https://gombru.github.io/2019/04/03/ranking_loss/

关于neural-network - 为孪生网络中的对比损失选择边际,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54892607/

相关文章:

machine-learning - Weka - StringtoVector 过滤器不工作

scala - Scala 是否有相当于 Python 的 difflib.SequenceMatcher 的工具

machine-learning - 为什么梯度下降会更新 0 值权重?

python - mxnet 训练图像分类模型

python - 在 TensorFlow 中导入巨大的非图像数据集

python - 在 Windows 上使用命令 "sudo apt-get install openblas-dev"?

python - 层 lstm_5 的输入 0 与层 : expected ndim=3, 不兼容,发现 ndim=2

neural-network - 在神经网络中我们应该以什么顺序调整超参数?

machine-learning - 为什么我需要在迁移学习中预先训练权重

python - 在 TensorFlow 2.3 中规范化 BatchDataset