I was wondering what are the current state-of-the-art methods (i.e., your favourite methods, if you are an expert) for Monte Carlo sampling from a target density function $f(x)$ with $x \in \mathbb{R}^d$, $d > 1$, given different amount of accessible knowledge about $f$.
If you already know a lot about $f$, or you spend a lot of time to get to know the details of $f$, you could do pretty clever stuff; but this is not often the case. I am curious to know what would be your general strategy and your first out-of-the-box method to attack the problem in the following cases.
Basic assumptions: For simplicity, in the following I will assume that most of the probability mass of $f(x)$, $x \in \mathbb{R}^d$, belongs to a single connected component ("mode jumping" for disconnected modes is a topic in itself). This connected component does not necessarily have a simple shape (e.g., multivariate normal), and it is not necessarily "unimodal" in the analytical sense. Also, let us focus on the low- to medium- dimensional case ($2 \le d \le 20$).
Specifically, let us consider the following scenarios:
- When for $f(x)$ you only have an unnormalized black-box. That is, you can only evaluate $f$ exactly at a given point $x$, and up to a normalization constant. You may have some vague information about the meaning of $x$.
- As (1) but also with gradient information.
- As (1) but the normalization constant is known (does it allow to do better?).
- As (1) but we know that $f(x)$ has compact support within a known region $\mathcal{U} \subset \mathbb{R}^d$.
- As any above and we know that $\log f(x) = \sum_{i = 1}^n \log f_i(x)$, and we can evaluate the various $f_i$ separately.
- As (1) but we can only get a noisy (unbiased) estimate of $f(x)$ itself.
- As (6) but with an unbiased estimate of $\log f(x)$.
- [new] As (1) (or any other above) and you know that $f$ is actually unimodal (or some other specific property about the shape of $f$).
I think that gathering answers to these questions in a single thread might be very useful as a general guide for the community, for people who use sampling methods in their work (or might want to start to), and perhaps do not know the whole array of existing methods.
I'll post below what would be my answers, to give an idea. Also, please feel free to expand with other scenarios about possible kinds of prior knowledge on $f(x)$ that I did not explicitly consider but that you think are particularly important.