Use plain nnue eval for validation loss calculation instead of first performing qsearch

This commit is contained in:
Tomasz Sobczyk
2020-12-21 20:35:23 +01:00
committed by nodchip
parent 6853b4aac2
commit 8ca82646a9
2 changed files with 2 additions and 31 deletions

View File

@@ -611,8 +611,6 @@ namespace Learner
atomic<int>& move_accord_count
);
Value get_shallow_value(Position& pos);
bool check_progress();
// save merit function parameters to a file
@@ -996,7 +994,7 @@ namespace Learner
continue;
}
const Value shallow_value = get_shallow_value(pos);
const Value shallow_value = Eval::evaluate(pos);
// Evaluation value of deep search
const auto deep_value = (Value)ps.score;
@@ -1018,33 +1016,6 @@ namespace Learner
test_loss_sum += local_loss_sum;
}
Value LearnerThink::get_shallow_value(Position& pos)
{
// Evaluation value for shallow search
// The value of evaluate() may be used, but when calculating loss, learn_cross_entropy and
// Use qsearch() because it is difficult to compare the values.
// EvalHash has been disabled in advance. (If not, the same value will be returned every time)
const auto [_, pv] = Search::qsearch(pos);
const auto rootColor = pos.side_to_move();
std::vector<StateInfo, AlignedAllocator<StateInfo>> states(pv.size());
for (size_t i = 0; i < pv.size(); ++i)
{
pos.do_move(pv[i], states[i]);
}
const Value shallow_value =
(rootColor == pos.side_to_move())
? Eval::evaluate(pos)
: -Eval::evaluate(pos);
for (auto it = pv.rbegin(); it != pv.rend(); ++it)
pos.undo_move(*it);
return shallow_value;
}
bool LearnerThink::check_progress()
{
auto out = sync_region_cout.new_region();

View File

@@ -124,7 +124,7 @@ cat << EOF > learn01.exp
send "uci\n"
send "setoption name SkipLoadingEval value true\n"
send "setoption name Use NNUE value true\n"
send "setoption name Use NNUE value pure\n"
send "setoption name Threads value $threads\n"
send "isready\n"
send "learn targetdir training_data epochs 1 sfen_read_size 100 thread_buffer_size 10 batchsize 100 use_draw_in_training 1 use_draw_in_validation 1 lr 1 eval_limit 32000 nn_batch_size 30 newbob_decay 0.5 eval_save_interval 30 loss_output_interval 10 validation_set_file_name validation_data/validation_data.bin\n"