Cleanup around get_loss

This commit is contained in:
Tomasz Sobczyk
2020-11-30 20:42:54 +01:00
committed by nodchip
parent 256c4b55ec
commit cf6bc7ecaf

View File

@@ -213,9 +213,9 @@ namespace Learner
static thread_local auto outcome_loss_ = -(t_ * log(q_) + (1.0 - t_) * log(1.0 - q_));
static thread_local auto result_ = lambda_ * teacher_loss_ + (1.0 - lambda_) * outcome_loss_;
static thread_local auto entropy_ = lambda_ * teacher_entropy_ + (1.0 - lambda_) * outcome_entropy_;
static thread_local auto loss_ = result_ - entropy_;
static thread_local auto cross_entropy_ = result_ - entropy_;
return loss_;
return cross_entropy_;
}
template <typename ValueT>
@@ -247,23 +247,27 @@ namespace Learner
return perf_;
}
static ValueWithGrad<double> get_loss(Value shallow, Value teacher_signal, int result, int ply)
static ValueWithGrad<double> get_loss_noob(Value shallow, Value teacher_signal, int result, int /* ply */)
{
using namespace Learner::Autograd::UnivariateStatic;
/*
auto q_ = sigmoid(VariableParameter<double, 0>{} * winning_probability_coefficient);
auto p_ = sigmoid(ConstantParameter<double, 1>{} * winning_probability_coefficient);
auto t_ = (ConstantParameter<double, 2>{} + 1.0) * 0.5;
auto lambda_ = ConstantParameter<double, 3>{};
auto loss_ = pow(lambda_ * (q_ - p_) + (1.0 - lambda_) * (q_ - t_), 2.0);
*/
static thread_local auto q_ = VariableParameter<double, 0>{};
static thread_local auto p_ = ConstantParameter<double, 1>{};
static thread_local auto loss_ = pow(q_ - p_, 2.0) * (1.0 / (2400.0 * 2.0 * 600.0));
/*
auto q_ = VariableParameter<double, 0>{};
auto p_ = ConstantParameter<double, 1>{};
auto loss_ = pow(q_ - p_, 2.0) * (1.0 / (2400.0 * 2.0 * 600.0));
*/
auto args = std::tuple(
(double)shallow,
(double)teacher_signal,
(double)result,
calculate_lambda(teacher_signal)
);
return loss_.eval(args);
}
static ValueWithGrad<double> get_loss_cross_entropy(Value shallow, Value teacher_signal, int result, int /* ply */)
{
using namespace Learner::Autograd::UnivariateStatic;
static thread_local auto q_ = expected_perf_(VariableParameter<double, 0>{});
static thread_local auto p_ = expected_perf_(scale_score_(ConstantParameter<double, 1>{}));
@@ -281,6 +285,13 @@ namespace Learner
return loss_.eval(args);
}
static auto get_loss(Value shallow, Value teacher_signal, int result, int ply)
{
using namespace Learner::Autograd::UnivariateStatic;
return get_loss_cross_entropy(shallow, teacher_signal, result, ply);
}
static auto get_loss(
Value teacher_signal,
Value shallow,