手駒の価値を正しく学習させる


Bonanza6 + KPP=(KPPPPKP KKPP=)


 = 100


KPP=012(P)


11001201KP20


2802-20


1010KP0(0)


10100×10 = 1000





11002011280380


360440520607-207


32370465560()



0 = 0
1 = 100
2 = 100 + 80 = 180
3 = 100 + 80 + 70 = 250
4 = 100 + 80 + 70 + 65 = 315
5 = 100 + 80 + 70 + 65 + 65 = 380



Bonanza調
 = 60
KPP=1 = 40
KPP=2 = 60
KPP=3 = 70
KPP=4 = 75
KPP=5 = 80
6 = 80


6806100



 = 80
KPP=1 = 20
KPP=2 = 20
KPP=3 = 10
KPP=4 = -5
KPP=5 = -20



Bonanza + N(KP)P(0)()


make_list38*12 + 1(KPP) + 2(KPP)


10(KPP)10
 + 1(KPP) + 2(KPP) + () + 9(KPP) + 10(KPP)



make_list38


PonanzaApery


1 > 2 > 3 > 4 >  (N(KPP))調

棋譜からの学習は何日で収束するのか


Bonanza1+α*1PCBonanza1250knpsPC(Stockfish)1Mnps


4Xeon4×dual = 8AWS16使4×2 = 814,5+α


KPP/KPAAWAKEPC 6×1+4×233





PC

次元下げモジュールのプラグイン化計画


NDFKPP

KPP = KPP + PP + KPP + PP

KPPKPPPPKPPPPindex


int* make_kpp(Square king , BonaPiece p1 , BonaPiece p2);
p
learn_kpp [ p[0] ] KPP
learn_kpp [ p[1] ] PP
learn_kpp [ p[2] ] KPP
learn_kpp [ p[3] ] PP
p[4] = INT_MAX()



KPP4N

index

if (p[0] < 0︶
 sum = sum - learn_kpp
[-p[0] ];
else
 sum = sum + learn_kpp[p[0] ];


indexK85S32G45()index


(JPEG)


1) learn_kpp
2) int* make_kpp(Square king , BonaPiece p1 , BonaPiece p2)

KPP
NDFAWAKEdeep learning



調

64GB


やね裏評価関数と38要素化の比較


()


Bonanzamake_list510%38510%


make_list510%38


NDFBonanza3make_list使(Bonanza6make_list())


201438NDFPonanza(L3 cache)38


PPPKKPP34

Bonanzaのmake_listの38要素化


()

3123


38533533


38make_list38make_listPonanza()


make_list38Bonanzafv.bin()KK


Bonanza    38 ()


Apery(1)


稿38Bonanza( )


make_list38

やね裏評価関数とは何か?











Bonanza304KPP(2)88×0×13


Bonanzamake_list99890301(7×2 = 14)38+14 = 5252


0aki.(Ponanza)make_list0


make_list0Bonanzafv.bin()


Bonanzafv.binKK()


5238KPP


()

BMI使ってますか?


HaswellBit Manipulation Instructions Sets (BMI sets)使

http://en.wikipedia.org/wiki/Bit_Manipulation_Instruction_Sets#BMI2_.28Bit_Manipulation_Instruction_Set_2.29

SIMD(64bit)使
PEXTParallel bits extract使

60bit,30bit,12bit1bit maskmaskPEXT使60bit30bit12bit2bit,1bit,0bitmagic bitboard

magic bit board使magic bitboardmagic bitboard使

PEXT24調24bit

 mask = around24[king_sq];
 serial24 = _pext_u64(occupied, mask);
 64bit64bit..