Project DelphiTaller de Tensores

Error: el entrenamiento enseña a DistMult el sentido de una relación

«DistMult puntúa igual (Francia, contiene, París) y (París, contiene, Francia) al principio, pero con suficientes hechos el entrenamiento romperá el empate.»

rng_claim = np.random.default_rng(19) e_paris, e_france, w_contains = rng_claim.standard_normal((3, 8)) france_contains_paris = np.sum(e_france * w_contains * e_paris) paris_contains_france = np.sum(e_paris * w_contains * e_france) assert np.isclose(france_contains_paris, paris_contains_france)

La puntuación es una suma de productos y la multiplicación conmuta: las dos puntuaciones son iguales para cualquier embedding, en cualquier dimensión y tras cualquier entrenamiento. Ningún dato enseña a un modelo una distinción que su función de puntuación no puede expresar.

En el mundo de juguete del cuaderno (3 países, 9 ciudades, 27 distritos), DistMult no separa ninguno de los 36 hechos de contains de su inverso y les da a ambos una probabilidad cercana a un medio. TuckER, con núcleo denso, acierta todos.