final List<Vector> jointProbs = Lists.newArrayList();
for (int i = 0; i < forwardProbabilities.size() - 1; i++) {
final WeightedValue<Vector> input = forwardProbabilities.get(i);
final Vector prod =
hmm.getTransitionProbability().times(input.getValue());
jointProbs.add(prod.scale(1d / prod.norm1()));
}
jointProbs
.add(Iterables.getLast(forwardProbabilities).getValue());
return jointProbs;