Menu

Model parameter selection Log in to Edit

Nick Crabtree

[Documentation]

Model parameter selection

Summary

When running multiple iterations, particularly for use with cross-validation, it is necessary to select from the available models. This section documents how that selection is performed.

Monte-carlo use (default)

By default, xval randomly selects all the model parameters from the available choices.
This is a good option when the user is confident that all the available models are good ones. Usually this is not the case, and xval is run with a variety of different model parameters with the objective that the models with the best cross-validation results will be chosen.

Not monte-carlo

Introduction

The --not-montecarlo option (often abbreviated to --not-monte) tells xval to use a different algorithm. The algorithm used is unique to xval. It is a hybrid between a simulated annealing and a genetic algorithm. The idea is that each parameter for a velocity model corresponds to an individual 'gene' in the terminology of evolutionary algorithms. Each gene has a score, which is the cross-validation RMS of the best model it has been involved in so far. When a new model is constructed, the random choice of each parameter is weighted by the score. If the parameter has a low score (has been involved in a good model) then it is more likely to be selected. If it has a high score, it is less likely to be selected.

By itself, this weighting is not sufficient to fully explore all possible models, so a further weighting is done according to how many models the parameter has been involved in. If a parameter has been used in lots of models, then it is less likely to be selected than another parameter with the same score, but which has been involved in fewer models. There is a trade-off in the calculations, such that a low-score parameter which has been in several models is nevertheless more likely to be chosen than a high-score parameter which has been involved in only a few.

This hybrid algorithm is tuned to converge gradually on the parameters with the lowest score, but without ending up with a set of best models which are near-identical clones of each other.

Process of selecting methods and parameters for a velocity model

In order to properly select from the available options, the process of constructing each model works in stages.
1. First a residual range is chosen. (I don't now regard the ability to have different error-correction residual ranges as a good thing, so I don't recommend having different residual ranges, but the code is there to support this if wanted).
2. Second, a layering scheme is chosen. A list of all possible layering schemes is built and the appropriate weighted choice is made. (People often expect that the choice is made in a top-down basis, looking at each horizon in turn, but it turns out that it is the entire layering combination which is the key differentiator between different depth conversion methods). As for all parameters, the weighting is a combination of the best cross-validation RMS produced by this layering combination, and the number of times this layering scheme has been used so far.
3. For each layer, a velocity method is chosen. All possible method are put into a list and have a weighting calculated, before the weighted random selection occurs. (Once again, people expect that first a choice is made between, for example, Vo,k or a seismic velocity map, and then afterwards a second choice is made of the k value in the Vo,k. This is not what happens. For example, Vo,k with k=0.2 is a single method; kriging interval velocity with an external drift of the seismic interval velocties with a variogram range of 2 km is a second method; a constant velocity of 2300 m/s is a third method.)

Options for controlling weighting

Several options are available to control the weighting:
--min-layering-layers: When running different layering scenarios, ignore cases which have fewer than this number of layers.
--max-layering-layers: When running different layering scenarios, ignore cases which have more than this number of layers.\n";
--weight-not-monte=n: Weighting factor for non-montecarlo crossvalidation method selection. The default is to use inverse weighting, so the weight is proportional to (1/r) where r is the RMS residual of the best method. This option adds the value of n to the RMS residual. This is typically used where the best method has a large residual, to accelerate the convergence. For example, if the best method has an RMS of 34 after several hundred iterations,, using --weight-not-monte=-30 might be appropriate.
--power-min-not-monte=n: raise the weight on the cross-validation RMS to this power. Larger values increase convergence rate at the expense of diversity. Default is 1, values of 2 or 4 are sensible.
--power-count-not-monte=n: As for the above, but applied to the count (the number of models this parameter has been involved in). Default is 1. Larger values have the effect of strongly down-weighting parameters with a large count.
--multiplier-not-monte=n: Using the power and weight options above can result in the weights being very large. This parameter can be used to bring the weight values back down to where they can be printed as integers rather than in scientific notation. Pairs of --power-min-not-monte=2 --multiplier-not-monte=1e-7 or --power-min-not-monte=4 --multiplier-not-monte=1e-16 are a good starting point.
--unused-multiplier=n: If a parameter has not yet been used, multiply its weight by n. (By default, unused parameters have the same weight as the highest weighted parameter).
--worst-multiplier=n: If the worst value is greater than n * the best value, give it the same weight as the best value as this isn't fair, but only if the method hasn't been tried very often. Default 100.


Related

Wiki: Documentation