BernoulliNegativeSampler
- class BernoulliNegativeSampler(*, triples_factory, **kwargs)[source]
Bases:
pykeen.sampling.negative_sampler.NegativeSampler
An implementation of the Bernoulli negative sampling approach proposed by [wang2014].
The probability of corrupting the head \(h\) or tail \(t\) in a relation \((h,r,t) \in \mathcal{K}\) is determined by global properties of the relation \(r\):
\(r\) is one-to-many (e.g. motherOf): a higher probability is assigned to replace \(h\)
\(r\) is many-to-one (e.g. bornIn): a higher probability is assigned to replace \(t\).
More precisely, for each relation \(r \in \mathcal{R}\), the average number of tails per head (
tph
) and heads per tail (hpt
) are first computed.Then, the head corruption probability \(p_r\) is defined as \(p_r = \frac{tph}{tph + hpt}\). The tail corruption probability is defined as \(1 - p_r = \frac{hpt}{tph + hpt}\).
For each triple \((h,r,t) \in \mathcal{K}\), the head is corrupted with probability \(p_r\) and the tail is corrupted with probability \(1 - p_r\).
If
filtered
is set toTrue
, all proposed corrupted triples that also exist as actual positive triples \((h,r,t) \in \mathcal{K}\) will be removed.Initialize the bernoulli negative sampler with the given entities.
- Parameters
triples_factory (
CoreTriplesFactory
) – The factory holding the positive training tripleskwargs – Additional keyword based arguments passed to
pykeen.sampling.NegativeSampler
.
Methods Summary
corrupt_batch
(positive_batch)Generate negative samples from the positive batch without application of any filter.
Methods Documentation
- corrupt_batch(positive_batch)[source]
Generate negative samples from the positive batch without application of any filter.
- Parameters
positive_batch (
LongTensor
) – shape: (batch_size, 3) The positive triples.- Return type
LongTensor
- Returns
shape: (batch_size, num_negs_per_pos, 3) The negative triples.
result[i, :, :]
contains the negative examples generated frompositive_batch[i, :]
.