не могу понять CRF вперед для функции раздела - PullRequest
0 голосов
/ 16 октября 2019

Говорят, что для "эффективного вычисления функции разбиения" используйте прямой расчет в лог-пространстве. Но я был озадачен эквивалентностью формулы , описанной на этом рисунке (особенно использование пространства журнала, ref https://towardsdatascience.com/implementing-a-linear-chain-conditional-random-field-crf-in-pytorch-16b0b9c4b4ea),, которое точно соответствует коду в tf.contrib.crf.CrfForwardRnnCell. Кто-нибудь может помочь объяснить это? Я был бы признателен за это!

это код tf:

state = array_ops.expand_dims(state, 2)

# This addition op broadcasts self._transitions_params along the zeroth
# dimension and state along the second dimension. This performs the
# multiplication of previous alpha values and the current binary potentials
# in log space.
transition_scores = state + self._transition_params
new_alphas = inputs + math_ops.reduce_logsumexp(transition_scores, [1])

# Both the state and the output of this RNN cell contain the alphas values.
# The output value is currently unused and simply satisfies the RNN API.
# This could be useful in the future if we need to compute marginal
# probabilities, which would require the accumulated alpha values at every
# time step.
return new_alphas, new_alphas
...