word2vecプロジェクトのコードを理解しようとしています。私が参照しているファイルはword2vec.cです。コードのスニペットは次のとおりです。
#define EXP_TABLE_SIZE 1000
#define MAX_EXP 6
//...snip...
expTable = (real *)malloc((EXP_TABLE_SIZE + 1) * sizeof(real));
for (i = 0; i < EXP_TABLE_SIZE; i++) {
// Precompute the exp() table
expTable[i] = exp((i / (real)EXP_TABLE_SIZE * 2 - 1) * MAX_EXP);
// Precompute f(x) = x / (x + 1)
expTable[i] = expTable[i] / (expTable[i] + 1);
}
//...snip...
これらの値を事前計算することの利点は明らかではありません。誰か説明してくれませんか?