I was looking around for some similar explanations and I believe I can help with this question.
What you think a mismatch is actually the same formula with a more general scope. Let us say our target unit is and using the sigmoid function we define the probability of this target unit given the status of the hidden units. Thus, the evaluation of sigmoid() corresponds to the probability of the target unit being on. Now if you were asked to calculate the derivative of the probability of the unit activating wrt the weight of a specific connection you would calculate it as:
And as you explain the result would be
However if you were asked to compute the derivative of the probability that the target unit is switched off, you would use 1-sigmoid() and then when you apply the chain rule for derivation in the following expression
Now the result is . Now these two different derivaties correspond to the target unit taking the values 1 and 0 respectively so both expressions can be summarised as:
Now to generalise here you can find some more theoretical details:
Regarding the paper from Neal's the formulation is the same, the only difference is that here we have made use of the following calculation for the sigmoid function derivative:
While he applies:
And finally to the last question I believe the difficulty lies in the fact that it is typically hard to compute the posterior distribution over all possible configurations of hidden causes. It is also hard to compute the probability of an observed vector and hence the definition of methods to train the network that rely on an estimation of the distribution combined with either minimising the energy of observed states on the generative model or approximations to MAP learning.
Hope this helps!