Zastosowanie sieci neuronowych do oceny liczby lew w rozdaniach brydżowych Studium przypadku mgr inż. Krzysztof Mossakowski Wydział Matematyki i Nauk Informacyjnych Politechniki Warszawskiej Warszawa, 3 grudnia 2003
Zagadnienie Dane są rozdania brydżowe z obliczoną liczbą lew wziętych przez parę NS (przy założeniu optymalnej gry obu stron) Stworzyć sieć neuronową, która na podstawie podanych wszystkich rąk poda spodziewaną liczbę lew dla pary NS
Pochodzenie danych GIB (Ginsberg Intelligent Bridgeplayer) - najsilniejszy program brydżowy [http://www.gibware.com] GIB Library - zbiór rozdań brydżowych z obliczoną liczbą lew wziętych przez parę NS przy optymalnej grze obu stron [http://www.cirl.uoregon.edu/ginsberg/gibresearch.html]
Dane 717102 rozdania Pojedyncze rozdanie: 0 12 0 12 0 3 0 3 9 12 9 12 8 12 8 12 0 3 0 3 wist W wist N wist E wist S BEZ ATU 717102 rozdania Pojedyncze rozdanie: karty wszystkich rąk W: AT85432.4.J32.K9 N: Q6.AJ2.Q98764.JT E: KJ.953.T5.AQ8643 S: 97.KQT876.AK.752 liczba lew pary NS dla wszystkich możliwości koloru atutowego i osoby wistującego PIKI KIERY KARA TREFLE
? Oczekiwane rezultaty W ilu procentach przypadków pomyłka nie będzie większa niż 2 lewy? W ilu procentach przypadków pomyłka nie będzie większa niż 1 lewa? W ilu procentach przypadków nie będzie pomyłki?
Wykorzystane narzędzie JNNS 1.1 - Java Neural Network Simulator następca SNNS - Stuttgart Neural Network Simulator
Testowane sieci neuronowe Jednokierunkowe wielowarstwowe Losowa inicjalizacja wag z przedziału [-1.0, 1.0] Neurony funkcja aktywacji: sigmoidalna unipolarna (logistyczna) funkcja wyjściowa: identyczność
Algorytm uczący RProp (Resilient Propagation) przy zmianie wag uwzględniany jest tylko znak składowej gradientu współczynnik gradientu jest dobierany w każdym cyklu dla każdej wagi na podstawie zmian wartości gradientu zgodny znak zmiany gradientu w dwóch kolejnych krokach zwiększa wsp. uczenia, przeciwny - zmniejsza parametry 0 = 0.1 max = 50.0 = 4.0
Reprezentacja danych Liniowe przekształcenie danych do przedziału [min, max] dla danych: wartość karty [dwójka, as] kolor: [bez atu, trefle] wistujący: [nie, tak] liczba lew: [0, 13] Testowane przedziały: min: 0 0.1 0.2 max: 1 0.9 0.8
Najczęściej stosowane zbiory danych Uczący - 10 tys. rozdań numery od 1 do 10000 Walidacyjny - 1 tys. rozdań numery od 500001 do 501000 charakter wyłącznie informacyjny Testowy - 1 tys. rozdań numery od 600001 do 601000
Pierwsza sieć neuronowa (26x4)-(7x4)-13-1 Wyniki (37 tys. iteracji): uczący: [92%, 71%, 28%] walidacyjny: [86%, 59%, 22%] testowy: [87%, 63%, 23%] 1 ... 13 ... ... ... ... 7 x 4 ... ... ... ... 26 x 4 W (13 par neuronów) N E S
Pomysł: Zgrupować karty (26x4)-(13x4)-(7x4)-13-1 Wyniki (20 tys. iteracji): uczący: [95%, 78%, 32%] [+3,+7,+4] walidacyjny: [93%, 73%, 29%] [+7,+14,+7] testowy: [93%, 76%, 33%] [+6,+13,+10] 1 ... 13 ... ... ... ... 7 x 4 ... ... ... ... 13 x 4 ... ... ... ... 26 x 4
Pomysł: Połączyć ręce parami (26x4)-(13x4)-(7x4)-(7x2)-7-1 Wyniki (20 tys. iteracji): uczący: [92%, 71%, 28%] [-3,-7,-4] walidacyjny: [88%, 64%, 24%] [-5,-9,-5] testowy: [89%, 68%, 27%] [-4,-8,-6] 1 ... 7 ... ... 7 x 2 ... ... ... ... 7 x 4 ... ... ... ... 13 x 4 ... ... ... ... 26 x 4
Pomysł: Powiększyć sieć (26x4)-(13x4)-(13x4)-26-13-1 Wyniki (20 tys. iteracji): uczący: [95%, 77%, 31%] [0,-1,-1] walidacyjny: [89%, 67%, 26%] [-4,-6,-3] testowy: [90%, 70%, 29%] [-3,-6,-4] 1 ... 13 ... 26 ... ... ... ... 13 x 4 ... ... ... ... 13 x 4 ... ... ... ... 26 x 4
Pomysł: Zmniejszyć sieć (26x4)-(13x4)-(3x4)-5-1 Wyniki (20 tys. iteracji): uczący: [94%, 75%, 29%] [-1,-3,-3] walidacyjny: [92%, 71%, 28%] [-1,-2,-1] testowy: [91%, 73%, 28%] [-2,-3,-5] 1 ... 5 ... ... ... ... 7 x 4 ... ... ... ... 13 x 4 ... ... ... ... 26 x 4
Zestawienie wyników Sieć Uczący Walidacyjny Testowy (26x4)-(7x4)-13-1 [37 tys. iteracji] 92% 71% 28% 86% 59% 22% 87% 63% 23% (26x4)-(13x4)-(7x4)-13-1 [20 tys. iteracji] 95% 78% 32% 93% 73% 29% 93% 76% 33% (26x4)-(13x4)-(7x4)-(7x2)-7-1 88% 64% 24% 89% 68% 27% (26x4)-(13x4)-(13x4)-26-13-1 95% 77% 31% 89% 67% 26% 90% 70% 29% (26x4)-(13x4)-(3x4)-5-1 94% 75% 29% 91% 73% 28%
Eksperyment: Mała sieć, dużo iteracji (26x4)-(13x4)-(3x4)-5-1 Dla 150 tys. i 175 tys. iteracji nie ma różnic w wartościach wyjściowych Liczba iteracji Uczący Walidacyjny Testowy 1 tys. 87%, 63%, 24% 86%, 61%, 22% 86%, 61%, 23% 10 tys. 92%, 72%, 28% 90%, 69%, 26% 90%, 69%, 27% 20 tys. 94%, 75%, 29% 92%, 71%, 28% 91%, 73%, 28% 50 tys. 93%, 75%, 30% 92%, 73%, 29% 94%, 73%, 29% 100 tys. 94%, 76%, 30% 93%, 74%, 29% 93%, 73%, 30% 150 tys. 175 tys.
Eksperyment: Duża sieć, dużo iteracji (26x4)-(13x4)-(13x4)-26-13-1 Od ok. 55 tys. iteracji maleje błąd dla zbioru uczącego, a wzrasta dla zbioru walidacyjnego Liczba iteracji Uczący Walidacyjny Testowy 1 tys. 87%, 64%, 23% 85%, 60%, 23% 85%, 61%, 21% 5 tys. 92%, 71%, 28% 89%, 66%, 26% 90%, 67%, 25% 20 tys. 95%, 77%, 31% 89%, 67%, 26% 90%, 70%, 29% 50 tys. 97%, 81%, 34% 90%, 68%, 29% 91%, 72%, 28% 80 tys. 97%, 82%, 35% 90%, 68%, 27% 91%, 70%, 29%
Eksperyment: Najlepsza sieć, dużo iteracji (26x4)-(13x4)-(7x4)-13-1 Wykresy błędów dla zbiorów uczącego i walidacyjnego wciąż miały tendencję malejącą Liczba iteracji Uczący Walidacyjny Testowy 20 tys. 95%, 78%, 32% 93%, 73%, 29% 93%, 76%, 33% 50 tys. 95%, 79%, 32% 93%, 75%, 30% 93%, 74%, 30% 100 tys. 96%, 80%, 33% 94%, 75%, 30% 93%, 75%, 31% 115 tys. 96%, 80%, 34% 94%, 76%, 30% 93%, 76%, 30%
Eksperyment na danych: Przedział wartości danych Sieć (26x4)-(13x4)-(7x4)-13-1 20 tys. iteracji Przedział Uczący Walidacyjny Testowy <0, 1> 95%, 79%, 32% 91%, 71%, 28% 93%, 75%, 29% <0.1, 0.9> 95%, 78%, 32% 93%, 73%, 29% 93%, 76%, 33% <0.2, 0.8> 93%, 74%, 31% 92%, 72%, 29%
Eksperyment na danych: Zamiana rąk w parach Sieć (26x4)-(13x4)-(7x4)-13-1 20 tys. iteracji Podwojenie liczby rozdań - zduplikowanie rozdań przez zamianę rąk w parach Rozdania Uczący Walidacyjny Testowy Pojedyncze (10 tys.) 95%, 79%, 32% 91%, 71%, 28% 93%, 75%, 29% Podwójne (20 tys.) 95%, 77%, 31% 93%, 73%, 28% 94%, 76%, 31%
Eksperyment na danych: Nie tylko bez atu Sieć (26x4)-(13x4)-(7x4)-13-1 Sieć (26x4;1)-(13x4)-(7x4)-13-1 dodatkowe wejście z wartością atu pięciokrotne zwiększenie liczby danych 20 tys. iteracji Rozdania Uczący Walidacyjny Testowy bez atu 95%, 79%, 32% 91%, 71%, 28% 93%, 75%, 29% wszystkie (5) 97%, 82%, 35% 96%, 79%, 33% 96%, 81%, 35%
Analiza: Liczba punktów na rękach Sieć (26x4)-(13x4)-(7x4)-13-1 115 tys iteracji zbiór uczący: 96%, 80%, 34% Szacunek: LiczbaLew = 13/40 * punktyNS zbiór uczący: 96%, 70%, 24%
Analiza: Punkty, układy, wisty
Analiza: Najgorsze rozdanie Rozdanie (S-H-D-C): W: AT85432 - 4 - J32 - K9 N: Q6 - AJ2 - Q98764 - JT E: KJ - 953 - T5 - AQ8643 S: 97 - KQT876 - AK - 752 Liczba lew NS przy grze w bez atu: wist N lub S: 12 wist E lub W: 0 odpowiedź sieci: 6
Czas Problemy zbiór uczący 40 tys. danych sieć (26,1x4)-(13x4)-(7x4)-13-1 1 tys. iteracji 1 godzina
Pomysły Dyskusja ?