Przejdź do głównej zawartości

Nowa odsłona bloga

· 1 min aby przeczytać

Zmotywowałem się w końcu i postanowiłem odświeżyć tego bloga. Pierwszym problemem na jaki trafiłem było to, że przestał mi działać Sculpin i całe środowisko bazujące na PHP. Do tego Travis CI też już dawno nie budował projektu. Przeniosłem się na Docusaurusa rozwijanego przez Metę (Node.js). Do budowy projektu użyłem GitHub Actions. Pół dnia mi zeszło na przeniesieniu starych postów, ale ogólnie jestem zadowolony z tego narzędzia. Wiem, że nazwa wskazuje na nacisk na tworzenie dokumentacji, ale całkiem szybko można na tym postawić bloga. Pozostało mi tylko dołożyć wyszukiwarkę i język angielski.

Jakie mam plany na przyszłość? Myślę, że dalej będę pisał na temat machine learningu i AI, ale zamierzam rozszerzyć tematykę na inne rzeczy związane z szeroko pojętą computer science. Prawdopodobnie będę także pisał po angielsku.

To tyle, mam nadzieję, że się uda regularnie pisać :)

Docker na Windowsie - problemy z volumes, symlinkami i połączeniem

· 2 min aby przeczytać

Zacząłem się parę dni temu uczyć dockera. Do tej pory do wirtualizacji korzystałem z Vagranta, ale niezbyt mi siadł. Ale ja nie o tym. Niezbyt jeszcze ogarniam dockera, ale po paru próbach i jednym projekcie stwierdziłem, że to fajna sprawa. Nie zamierzam jednak tworzyć żadnego tutoriala. Zainteresowanych tutorialem zapraszam do skorzystania z docker-curriculum.com. Jest całkiem fajny i nieźle tłumaczy podstawy.

Podczas zabaw z dockerem napotkałem parę problemów i o tym będzie ten post.

Multi-armed bandit - Upper Confidence Bound

· 6 min aby przeczytać

Ten post jest częścią moich zmagań z książką "Reinforcement Learning: An Introduction" autorstwa Richarda S. Suttona i Andrew G. Barto. Pozostałe posty systematyzujące moją wiedzę i prezentujące napisany przeze mnie kod można znaleźć pod tagiem Sutton & Barto i w repozytorium dloranc/reinforcement-learning-an-introduction.


W multi-armed bandit, aby znaleźć najlepszą akcję potrzebujemy eksploracji, gdyż wartość każdej akcji jest niepewna. Wartość akcji się zmienia, gdy co jakiś czas wykonujemy akcję i dowiadujemy się o otrzymanej nagrodzie. Im częściej dana akcja została wybrana, tym większą mamy pewność, że wartość tej akcji jest właściwa. Do tej pory jednak nie uwzględnialiśmy tego dość intuicyjnego spostrzeżenia w naszych obliczeniach. Akcje były wybierane losowo, bez uwzględniania tego czy wartości akcji są najbliżej tej najlepszej, bądź tego jak bardzo oszacowania są pewne.

Multi-armed bandit - optymistyczne wartości początkowe

· 3 min aby przeczytać

Ten post jest częścią moich zmagań z książką "Reinforcement Learning: An Introduction" autorstwa Richarda S. Suttona i Andrew G. Barto. Pozostałe posty systematyzujące moją wiedzę i prezentujące napisany przeze mnie kod można znaleźć pod tagiem Sutton & Barto i w repozytorium dloranc/reinforcement-learning-an-introduction.


Wszystkie metody, które do tej pory opisałem zależne są od początkowych oszacowań wartości Q1(a)Q_1(a). Widoczne to jest zwłaszcza, gdy liczymy MAB z ϵ=0\epsilon = 0, czyli bez ekploracji cały czas wybierając najlepszą możliwą akcję (ramię). W statystyce nazywamy takie metody obciążonymi. Obciążenie znika dla metod z α\alpha wynoszącym 1n\frac{1}{n}, gdy każda akcja zostanie wybrana co najmniej raz. Dla stałego α\alpha, obciążenie nie znika, zmniejsza się jedynie wraz z upływem czasu (kolejnymi iteracjami algorytmu).

Torchcraft - analysis and changing the game state

· 6 min aby przeczytać

This post is about the Starcraft bot I am developing using machine learning. The project is being developed as part of the "Daj Się Poznać 2017" competition.


In the last post about the project I described how the maps look like and wrote how to create a basic script that connects to Starcraft and downloads the game state in a loop, or rather each subsequent logical frame games. I don't think I've written yet what a logical game frame is. The thing with logical frames is that graphics rendering is independent of calculations that change the game state. The frame rate is not constant and depends on the speed of your computer. The game state is calculated every interval. If you have played Starcraft, you probably know that you can set the game speed in the options. Changing the speed results in a change in the time between logical frame calculations. This is a fundamental difference, if we had constant 30 or 60 FPS, the issue would probably be solved differently.

Multi-armed bandit - wersja niestacjonarna

· 2 min aby przeczytać

Ten post jest częścią moich zmagań z książką "Reinforcement Learning: An Introduction" autorstwa Richarda S. Suttona i Andrew G. Barto. Pozostałe posty systematyzujące moją wiedzę i prezentujące napisany przeze mnie kod można znaleźć pod tagiem Sutton & Barto i w repozytorium dloranc/reinforcement-learning-an-introduction.


Problem niestacjonarny

W tym poście zajmę się tematem szczególnego rodzaju multi-armed bandit problem (MAB), który polega na tym, że dla każdego jednorękiego bandyty wartość nagród zmienia się w czasie. Jest to tak zwana niestacjonarna wersja MAB. Do tej pory wartość nagród otrzymywana była z pewnego rozkładu normalnego o pewnej średniej i wariancji (średnia dla każdego ramienia wybierana była losowo na początku w konstruktorze).

TorchCraft - podstawowy skrypt

· 4 min aby przeczytać

Ten post jest o rozwijanym przeze mnie bocie do Starcrafta wykorzystującym uczenie maszynowe. Projekt jest rozwijany w ramach konkursu "Daj Się Poznać 2017".


Miałem w tym tygodniu pisać o samym Torchu i o tym jak tworzyć w nim sieci neuronowe, ale zdecydowałem, że zajmę się samymi podstawami samego TorchCrafta i jego interakcji ze Starcraftem. TorchCraft, niestety, ma słabą dokumentację i poza opisem instalacji praktycznie wszystko trzeba rozkminiać na bazie przykładów z katalogu examples.

TorchCraft - podstawy Lua

· 4 min aby przeczytać

Ten post jest o rozwijanym przeze mnie bocie do Starcrafta wykorzystującym uczenie maszynowe. Projekt jest rozwijany w ramach konkursu "Daj Się Poznać 2017".


Ostatnio nie starczyło mi czasu by dokończyć instalację TorchCrafta. Już po napisaniu poprzedniego posta, przypomniałem sobie, że w NTFS jest coś takiego jak "junction point", które jest czymś w rodzaju symlinków w Windowsie. Jeśli BWEnv.exe wymaga Starcrafta ze ścieżką C:\Starcraft, to wystarczy ściągnąć Junction, przenieść do C:\Windows\System32 i wykonać w konsoli: junction c:\Starcraft d:\Games\Starcraft. U mnie zadziałało. No, dobra, nie do końca zadziałało, bo gra uruchomiła się na pełnym ekranie (w configu jest, że ma być w oknie), coś tam się wykonywało, ale po drugiej próbie uruchomienia BWEnv.exe już nie chciało. Lepszą opcją okazało się użycie BWEnv.dll i odpalanie gry przez Chaoslauchera.

Multi-armed bandit - prosta optymalizacja

· 3 min aby przeczytać

Ten post jest częścią moich zmagań z książką "Reinforcement Learning: An Introduction" autorstwa Richarda S. Suttona i Andrew G. Barto. Pozostałe posty systematyzujące moją wiedzę i prezentujące napisany przeze mnie kod można znaleźć pod tagiem Sutton & Barto i w repozytorium dloranc/reinforcement-learning-an-introduction.


W ostatnim poście omówiłem podstawową wersję multi-armed bandit z ϵ\epsilon-greedy strategy. Zaprezentowany algorytm ma małą wadę, wymaga bowiem zapisywania każdej nagrody i liczenia za każdym razem średniej arytmetycznej nagród dla danej akcji, gdy następuje wybór najlepszej akcji. Nie dość, że algorytm wymaga pamięci na nagrody i to łącznie tyle ile jest kroków czasowych, to jeszcze za każdym razem, gdy potrzebny jest wybór najlepszej akcji następuje sporo tak naprawdę zbędnych i dość czasochłonnych obliczeń. Wyobraźmy sobie, że mamy liczyć średnią arytmetyczną z miliona nagród. Ile to zajmie? Da się to rozwiązać lepiej.