По предоставленной вами ссылке,
if regression_type == 'LASSO':
# Declare Lasso loss function
# Lasso Loss = L2_Loss + heavyside_step,
# Where heavyside_step ~ 0 if A < constant, otherwise ~ 99
lasso_param = tf.constant(0.9)
heavyside_step = tf.truediv(1., tf.add(1., tf.exp(tf.multiply(-50., tf.subtract(A, lasso_param)))))
regularization_param = tf.multiply(heavyside_step, 99.)
loss = tf.add(tf.reduce_mean(tf.square(y_target - model_output)), regularization_param)
Эта heavyside_step
функция очень близка к логистической функции, которая, в свою очередь, может быть непрерывным приближением для ступенчатой функции.
Вы используете непрерывную аппроксимацию, потому что функция потерь должна быть дифференцируемой относительно параметров вашей модели.
Чтобы получить интуицию о прочтении ограниченного раздела формулировки 1.6 в https://www.cs.ubc.ca/~schmidtm/Documents/2005_Notes_Lasso.pdf
Вы можете видеть, что в вашем коде, если A <0,9, то регуляризация_парам исчезает, поэтому оптимизация ограничит A в этом диапазоне. </p>