SimPEG.regularization.SparseSmallness.update_weights#

SparseSmallness.update_weights(m)[source]#

Update the IRLS weights for sparse smallness regularization.

Parameters:
mnumpy.ndarray

The model used to update the IRLS weights.

Notes

For the model m provided, the regularization kernel function for sparse smallness is given by:

fm(m)=mm(ref)

where m(ref) is the reference model; see Smallness.f_m() for a more comprehensive definition.

The IRLS weights are computed via:

wr=λ[fm2+ϵ2]1p/2

where represents elementwise division, ϵ is a small constant added for stability of the algorithm (set using the irls_threshold property), and p defines the norm for each cell (defined using the norm property).

λ applies optional scaling to the IRLS weights (when the irls_scaled property is True). The scaling acts to preserve the balance between the data misfit and the components of the regularization based on the derivative of the l2-norm measure. And it assists the convergence by ensuring the model does not deviate aggressively from the global 2-norm solution during the first few IRLS iterations.

To compute the scaling, let

fmax=fm

and define a vector array f~max such that:

f~i,max={fmaxforpi1ϵ1piforpi<1

The scaling quantity λ is:

λ=[fmaxf~max][f~max2+ϵ2]1p/2