Pierwszy krok: Określ swoje cele / powody
Myślę, że jest to czynnik dominujący. Który z tych najlepiej ci pasuje? (Wybierz tylko jeden )
- Chcesz cieszyć się zabawnym, trudnym zadaniem kodowania
- Chcesz stworzyć wyjątkowo dobry silnik szachowy
- Chcesz dowiedzieć się, jak działają silniki szachowe
- Chcesz się uczyć / ćwiczyć umiejętności kodowania
- Chcesz się uczyć / wdrażać koncepcje / teorię informatyki (np. Uczenie maszynowe)
- (Inny)
IMO jest w stanie „rzucić monetą” za wszystko oprócz 2. Dla wszystkich pozostałych osiągniesz swój cel, niezależnie od tego, czy wybierzesz ML, czy kodowanie. Prawdopodobnie chcesz jednak porównać wybrane opcje, aby pomóc Ci podjąć decyzję.
Sprawa do zakodowania na stałe
Gra w szachy (jako człowiek) wymaga logicznego myślenia. Badasz przestrzeń możliwych działań, które możesz podjąć Ty i przeciwnik. Spowodowało to powstanie pola zwanego teorią gier, która zawiera teoretyczne ramy do ogólnej analizy gier.
Jeśli lubisz pracować ze szczegółami, być konkretnym i zastanawiać się nad rzeczami, może to działać dobrze dla Ciebie. Dla porównania, uczenie maszynowe obejmuje znacznie więcej algorytmów „czarnej skrzynki”, które są rozmyte i nieprzejrzyste. Nie wiesz dokładnie, co się dzieje.
Sądzę też, że łatwiej ci będzie „samemu to rozgryźć”, jeśli wybierzesz twardą ścieżkę niż uczenie maszynowe. Mniej wklejania kopii, których nie do końca rozumiesz.
Sprawa uczenia maszynowego
Urodzenie stworzenia i obserwowanie, jak zaczyna żyć własnym życiem, może być ekscytujące. Podczas gdy kodowanie polega na precyzji i szczegółowości, uczenie maszynowe jest elastyczne. Zabierz trochę neuronów, a wynik prawdopodobnie będzie podobny.
Kodowanie polega na studiowaniu szachów. Uczenie maszynowe polega na badaniu stworzonego stworzenia.
A uczenie maszynowe to oczywiście bardzo gorący temat.
Wybór języka dla zakodowanych na stałe
Nie jestem pewien, co rozumiesz przez „inne języki oparte na języku C”. C ++ to jedyny główny język, który jest podobny do C. Zaletą C / C ++ jest to, że są szybkie . Mimo że inne języki nadrabiały zaległości na przestrzeni lat, C ++ wciąż daje im szansę na swoje pieniądze.
C ++ nie jest łatwe. Osiągniesz doskonałą wydajność dzięki bardziej nowoczesnym językom kompilowanym, takim jak Rust, Golang lub Swift. Ale nie powinno być o wiele gorzej, jeśli wybierzesz język JIT. Czyli nie używać tłumacza CPython ; użyj IronPython lub Jython lub Node, C # lub Java.
Programowanie GPU wymaga innego podejścia i odradzałbym to w tym momencie.
Wybór języka do uczenia maszynowego
Problem z TensorFlow polega na tym, że jest on bardzo niski. Chodzi bardziej o pisanie algorytmów do łamania liczb (które można wyposażyć w sprzęt równoległy) niż o interfejs przeznaczony do uczenia maszynowego.
Oczywiście może to być wspaniałe doświadczenie edukacyjne! Z pewnością warto dzisiaj się uczyć. Możesz jednak zacząć od Keras lub PyTorch.