Kilka tygodni temu pisałem o alternatywach dla SuperMemo i o przenoszeniu danych z baz SuperMemo. Dzisiaj parę uzupełnień.
Zacznę od dokładniejszego opisu jak się używa programów opartych o metodę SuperMemo, potem trochę moich wrażeń po miesiącu używania Mnemosyne i kilka notek o innych aplikacjach.
Jak działają programy z rodziny SuperMemo
Baza wiedzy
Wszystko zaczyna się od bazy wiedzy - jakiegoś zbioru informacji, które chcemy zapamiętać. Sztandarowe przykłady to obcojęzyczne słówka, wzory matematyczne albo definicje pojęć fizycznych - ale może to być cokolwiek, co da się wyrazić w formie krótkich pytań i odpowiedzi.
Egzotyczny przykład zasłyszany dawno temu - uczenie się twarzy w jakiejś sporej organizacji (zdjęcie jako pytanie, imię, nazwisko i funkcja jako odpowiedź).
Bazę można kupić, co jest sensowne zwłaszcza w przypadku baz językowych (gdzie spore znaczenia mają nagrania dźwiękowe), można ją też budować po trochu samemu (np. dodając kluczowe elementy materiału przerabianego w szkole, na studiach czy na kursach).
Bardzo ważne jest, by pytania i odpowiedzi były krótkie, hasłowe. Tu chodzi o budowę instynktownych skojarzeń, nie o zapis skomplikowanych zadań. Trenujemy sieć neuronową we własnej głowie. SuperMemo nie jest sposobem na zapamiętywanie - na przykład - rozbudowanych dowodów czy złożonych algorytmów. Znakomicie się natomiast nada do zapamiętania kluczowych pojęć, definicji i haseł z nimi związanych.
Codzienny rytuał
Nauka z SuperMemo, Mnemosyne, FullRecall czy Anki wygląda podobnie. Program uruchamiamy codziennie albo prawie codziennie, po czym zadaje nam on pytania.
Patrzymy na pytanie (przy kursach językowych zamiast patrzeć, możemy słuchać nagrania) i przypominamy sobie odpowiedź. Następnie klikamy przycisk albo naciskamy skrót klawiszowy i program pokazuje (czasem także odgrywa) poprawną odpowiedź. Wreszcie, stawiamy sobie ocenę i dostajemy następne pytanie.
W Mnemosyne i SuperMemo mamy ten sam schemat ocen (choć wiele wersji SuperMemo stosuje tekstowe opisy zamiast numerycznych):
- 5 (odpowiedziałem dobrze i bez żadnego wysiłku),
- 4 (odpowiedziałem dobrze ale wymagało to chwili zastanowienia),
- 3 (dobra odpowiedź po długim i wytężonym namyśle, dobra odpowiedź z niewielkim błędem),
- 2 (zła odpowiedź ale ... reakcja ach, oczywiście na widok poprawnej),
- 1 (zła odpowiedź, poprawna - gdy ją zobaczę - wydaje mi się znajoma),
- 0 (nie wiem, nie pamiętam bym kiedykolwiek wiedział, z niczym mi się to nie kojarzy).
Anki stosuje nieco krótszą pięciostopniową skalę ale idea jest ta sama (w porównaniu z powyższą nie rozróżnia dwóch najsłabszych ocen).
Przechodzimy codziennie kilkanaście-kilkadziesiąt pytań (zależnie od ilości czasu poświęcanego na naukę).
Niezależnie od powyższego, możemy oczywiście dopisywać nowe pytania i odpowiedzi.
O co pyta program?
Mamy trzy rodzaje pytań:
- powtórki według harmonogramu,
- nowy materiał,
- utrwalanie.
Powtórki według harmonogramu to kluczowy element metody. Dla każdego pytania program - zależnie od odpowiedzi - ustala kiedy zadać to pytanie ponownie. Może to być jutro (przy totalnej niewiedzy), może za pół roku (któraś z rzędu idealna odpowiedź).
Nowy materiał to rzeczy, których jeszcze się nie uczyliśmy - albo po prostu kolejne pytania z bazy wiedzy, albo pytania na explicite wybrany temat.
Utrwalanie to ponawianie pytań, na które dzisiaj źle odpowiedzieliśmy. Programy zwykle robią to do skutku (tj. jeśli postawiłem sobie 0 albo 1, to to samo pytanie pojawi się w ramach tej samej sesji ponownie, i znowu, i znowu - aż wreszcie postawię sobie przynajmniej 3).
Utrwalanie nie ma znaczenia dla harmonogramu powtórek. To jest po prostu ułatwienie uczenia się czegoś po raz pierwszy.
Mamy pewne różnice w sposobie organizacji sesji.
W SuperMemo zaczynamy od powtarzania, czyli dostajemy pytania, których data powtórki wypada na dzisiaj (oraz zaległe, jeśli takowe są). Po ich wyczerpaniu przechodzimy do nauki nowego materiału. W wybranym dowolnie momencie klikamy dość i program przechodzi do utrwalania (tzw. final drill), prezentując wszystkie pytania na które wcześniej odpowiedzieliśmy źle (tak te z fazy powtarzania, jak te nowe).
W Mnemosyne także zaczynamy od powtarzania, ale program nie odkłada utrwalania na koniec. Zamiast tego pytania utrwalające pojawiają się ponownie w przeplocie z normalnymi (postawiłem sobie 0 lub 1 - dostanę 2-3 kolejne pytania, po czym ponownie pojawi się to, którego nie umiałem). Po wyczerpaniu wszystkich powtórek (z utrwalaniem włącznie) przechodzimy do nauki nowego materiału - i tu mamy ten sam mechanizm, wszelkie błędy wracają wymieszane z normalnymi nowymi pytaniami.
Anki domyślnie zachowuje się podobnie jak Mnemosyne ale ma opcję odkładania błędnych kart na koniec.
Każda z powyższych technik ma zalety i wady. Mi bardziej mi się podoba metoda przyjęta w Mnemosyne, zwłaszcza przy nauce nowych elementów, to nawracanie jest naturalniejsze niż finalna sterta błędów do przerobienia.
Harmonogramowanie powtórek
Kluczowy algorytm - harmonogramowanie powtórek - nie jest w każdym z programów taki sam.
Podstawowa zasada się nie zmienia - mamy probabilistyczny model wyznaczający prawdopodobną datę zapomnienia danej informacji. W szczegóły naukowe nie będę wchodzić, obszerny zbiór artykułów można znaleźć na supermemo.com. Bardzo, bardzo upraszczając: stawiając piątkę sygnalizuję, że powtórka nastąpiła trochę za wcześnie, czwórkę - że z grubsza wtedy, kiedy powinna, niższe oceny - z różną siłą - że za późno.
Anki i Mnemosyne używają pierwotnego algorytmu SuperMemo (SM2), w obu wypadkach z drobnymi adaptacjami. Mnemosyne dodaje lekkie losowe zaburzenia (dobrze, dzięki temu nie mamy ponawianych bloków identycznych pytań), Anki wprowadza trochę więcej zmian - dotyczących głównie różnych warunków brzegowych (inne początkowe interwały, zachowania przy odpowiedziach w spóźnionym terminie, zachowania przy błędach na początku nauki itd).
Kluczowa konsekwencja używania SM2: na harmonogram danego pytania wpływa tylko historia tego konkretnego pytania.
Algorytm w programach firmy SuperMemo ewoluuje (ostatnią wersją jest SM11). Kluczowym elementem odróżniającym bieżące algorytmy od pierwotnego jest próba analizy zbiorczej. Na harmonogram danego pytania wpływa nie tylko historia tego pytania, ale też historia innych, podobnych (przy czym podobieństwo oznacza zbliżoną historię moich odpowiedzi).
FullRecall to już zupełnie inne podejście, program nie ma sztywnego algorytmu, zamiast tego nasze odpowiedzi trenują sieć neuronową.
Które podejście jest najlepsze?
Trudno odpowiedzieć, tym bardziej, że nie da się tego mierzyć w formie krótkich eksperymentów - do oceny algorytmu potrzebne są wyniki zbierane w okresach wieloletnich. Do tego zaburzają je charakterystyki uczących się osób (tendencje do zaniżania lub zawyżania sobie ocen, następujące na przestrzeni lat zmiany w samopoczuciu, zdrowiu i ilości wolnego czasu, zmiany obciążenia itd), a także inne okazje do powtórek (choćby zetknięcie się z przyswajanymi słówkami w czytanych po angielsku artykułach).
Idealny algorytm powinien przywoływać pytania wtedy, gdy są u progu zapomnienia (dawać głównie czwórki dla powtarzanych elementów). Zarówno duża ilość błędów, jak duża ilość piątek świadczą, iż harmonogram powtórek nie wystroił się dobrze (odpowiednio pytania padają zbyt rzadko lub zbyt często).
Podejście z nowszych wersji SuperMemo jest najbardziej ambitne, zarazem ze względu na dużą komplikację budzi spore kontrowersje (sami autorzy przyznają zresztą, że nie wszystkie poprzednie wersje algorytmu były udane). Upraszczając: obserwacje są zaburzane tak dużą ilością czynników, że można wątpić, czy da się naprawdę wyprowadzić z nich sensowne wnioski.
Oryginalny algorytm SM2 można traktować jako dość bezpieczny i stabilny wybór. Program zachowuje się deterministycznie, reagując na takie same oceny takimi samymi harmonogramami powtórek.
Nie mam przekonania do sieci neuronowej z FullRecall. Jak ktoś to ujął, jest to nadzieja, że program sam odkryje reguły, które dla SuperMemo wykrywano przez lata badań naukowych. Warto też wspomnieć, że w jednej z inkarnacji SuperMemo wprowadzono elementy sieci neuronowych ale autorzy szybko się z tego wycofali i uznali eksperyment za nieudany.
Mnemosyne - uwagi po poużywaniu
W największym skrócie: Mnemosyne mnie nie zawiodło, jego małe poręczne okienko zdążyłem już polubić - i planuję przy tym programie zostać na dłużej.
Co lubię
Program faktycznie jest mały i lekki. Nieduże okienko z pytaniem i odpowiedzią, kilka kluczowych skrótów klawiszowych (spacja do pokazania odpowiedzi, 0-5 do oceny, Ctrl-E do edycji), prosta estetyka. Nic nie przeszkadza i nie rozprasza.
Działa bardzo stabilnie. Nie miałem żadnego przypadku wywrócenia się lub zamrożenia programu, nawet w trakcie Firefoksowych prób zaalokowania gigabajta RAM jedynym problemem było przycinanie się dźwięku. Nie miałem też żadnych problemów z integralnością danych.
Wygodna jest obsługa edycji w czasie nauki. Naciskam Ctrl-E i poprawiam czy uzupełniam daną jednostkę. Zamykam i nauka leci dalej. Łatwo, miło i poręcznie. Żadnego przechodzenia w tryby edycyjne czy podobnych komplikacji.
Algorytm repetycji wydaje się trafiać sensownie, przynajmniej na razie (na krótkim dystansie). Trochę słówek zapamiętałem, a większość pytań odświeżających wymaga trochę wysiłku - czyli pojawia się w sam raz wtedy, kiedy trzeba.
Jak już pisałem wyżej, nie ma charakterystycznego dla SuperMemo final drill (kończącego lekcję utrwalania haseł, dla których zrobiłem błąd). Zamiast tego, Mnemosyne przeplata utrwalane jednostki z pozostałymi. Moim zdaniem to zaleta.
Przy używaniu dużej bazy można wybierać tematykę, tj. oznaczyć kategorie do nauki. Fajne jest, że można wybrać ich wiele naraz. Działa to właśnie tak, jak powinno - nowy materiał pochodzi tylko z wybranych kategorii ale repetycje dotyczą całej bazy.
Miałem wrażenie, że po zmianie kategorii program dopytał właśnie aktywną do końca i dopiero potem przeskoczył, ale już w tej chwili nie jestem pewien, czy się nie pomyliłem.
Program zaburza trochę kolejność, dzięki temu jest mniej monotonny.
Z innych niż nauka języków dziedzin: wzory matematyczne można wpisywać w LaTeXu. Kto zna, wie, że jest to bardzo ergonomiczne.
Co mi się nie podoba
Najbardziej dokucza mi brak możliwości przerwania odtwarzania dźwięku. Pytanie/odpowiedź zawsze lecą do końca. Irytuje zwłaszcza, gdy dane pytanie jest pełnym zdaniem, a słyszę je po raz czwarty tego samego dnia (przy utrwalaniu nowych słówek).
Mnemosyne używa do odtwarzania dźwięku biblioteki
pygame
. Funkcje zatrzymywania playbacku tam są, więc poprawienie programu nie wygląda beznadziejnie. Może kiedyś się zmobilizuję...
Drugi dość istotny problem to brak możliwości poprawienia pomyłkowej złej oceny.
Pozostałe sprawy są mniejszego kalibru.
Nie ma możliwości pominięcia pojedynczego elementu. Tj. oczywiście można go skasować czy przenieść do innej kategorii ale brakuje mi jakiejś prostej opcji pomiń (którą wyobrażałbym sobie jako wyrzucenie na koniec albo odłożenie na pół roku).
Przy nauce z kilku baz trzeba explicite przełączać się między nimi. Autor programu sugeruje używanie jednej bazy i dzielenie materiału na kategorie, ja mam trochę wątpliwości, czy mieszać kurs angielskiego z notatkami informatycznymi.
Program wolno się zamyka (jedyny moment, gdy działa wolno), od kliknięcia przycisku zamknij do faktycznego zamknięcia mija dobrych kilka sekund. Ma to związek z bardzo dużą bazą danych której używam (połączenie dwóch kursów SuperMemo Advanced English), po części jest to też konsekwencja mojej zgody na wysyłanie zanonimizowanych danych o nauce do autora programu.
Udogodnienia do wprowadzania nowych informacji są dość skromne. Możliwość wygenerowania pytań dwustronnych i trójstronnych, prosta lista pytań z wyszukiwarką i właściwie tyle. Proste pytania i odpowiedzi można wstukiwać szybko ale np. nie ma niczego, co pomogłoby pociąć tekst na elementy do nauki.
W takim wypadku sensowną opcją może być edycja na zewnątrz, w jakimś wygodnym edytorze tekstu - i import.
Hierarchia kategorii jest płaska. Dla nauki konsekwencji to większych nie ma - dzięki możliwości wybierania wielu aktywnych kategorii - ale wymaga stosowania konwencji nazewniczych (Kurs_Dział_Temat itp).
No i wspominany wcześniej problem z polskim tłumaczeniem psującym kilka ważnych skrótów klawiszowych (min. spację pokazującą odpowiedź i Enter zatwierdzający okno dialogowe). Na ile się dowiedziałem, sprawa jest połączeniem pewnej usterki w QT z nadgorliwością tłumacza (który przetłumaczył słowa typu OK czy Cancel). Prawdopodobnie łatwe do poprawienia ale nie mam motywacji tego analizować.
Najprostszy sposób przełączenia wersji na angielską bez ustawiania zmiennych środowiskowych: edytujemy plik
~/.mnemosyne/config.py
i wpisujemy:locale = 'en'
Co mi w sumie nie przeszkadza
I jeszcze dwie sprawy, które na początku mnie niepokoiły - ale nie są tak naprawdę przesadnie uciążliwe.
Nie ma jasnego końca - momentu, gdy mówię stop. Nie chcę się już dziś więcej uczyć? Po prostu zamykam program. Nie ma opcji nie pytaj już o nowe ale przelećmy przez te, w których zrobiłem błędy. Chwilę musiałem się do tego przyzwyczajać, ale jest to druga strona udanego mechanizmu mieszania utrwalania z nowym materiałem (zamiast odkładania na final drill).
Program nie zapisuje informacji natychmiast, działa bardziej edytorowo, zapis na dysk następuje po wybraniu opcji Save/Zapisz, w reakcji na Ctrl-S albo przy zamykaniu programu. Nie jest to istotnie uciążliwe ale trzeba pamiętać, by od czasu do czasu nacisnąć Ctrl-S (zwłaszcza, by zrobić to jeśli pozostawiamy mnemosyne stale uruchomione).
Uwagi uzupełniające
Mnemosyne można używać z kilku maszyn, oczywiście pamiętając o synchronizacji plików. Dla mniejszych baz rozważyłbym użycie Dropboksa.
Dropbox wyróżnia się z dość obszernej listy serwisów dzielenia/synchronizacji plików kilkoma elementami.
Pierwszym jest bardzo dobrze przemyślane wersjonowanie. Zachowuje historię zmian pliku i pozwala wrócić do wcześniejszych (przy tym robi to efektywnie, przesyłając i przechowując różnice). Już raz mi to uratowało istotny plik, który edytujący go program zapisał niepoprawnie. Można powiedzieć, że Dropbox to program zarządzania wersjami w wersji dla zwykłych ludzi.
Druga sprawa: Dropbox jest wspaniałym przykładem mądrego podejścia do problemów. Program właściwie nigdy nie wyświetla żadnych popupów czy okienek, jeśli nie ma sieci, czeka z synchronizacją aż się ona pojawi, jeśli zdarzy się konflikt, po prostu robi dwie kopie o różnych nazwach itd itp. Jest, działa, nie zawraca mi głowy i robi to co trzeba. Naprawdę warte pochwały.
No i działa także pod Linuksem (natywna wtyczka do nautilusa o pełnej funkcjonalności).
Więcej o programie można poczytać na innych blogach, podobał się między innymi Pawłowi Wimmerowi, czy Stanisławowi Stanuchowi.
Pliki bazy danych Mnemosyne są tekstowe i całkiem nieźle się wersjonują (ja obecnie trzymam je sobie w repozytorium Mercuriala).
O innych programach
I jeszcze parę słów dotyczących innych programów.
SuperMemo UX
Firma SuperMemo wypuściła nowszą wersję swojego produktu, SuperMemo UX. Sam program jest darmowy (płatne są kursy), można go pobrać z tej strony.
Niestety, przy użyciu Wine program zainstalował się poprawnie ale próba jego uruchomienia skończyła się następująco:
SuperMemo jako serwis sieciowy
Firma SuperMemo udostępnia też serwis sieciowy.
Akurat w kontekście nauki nie mam przekonania do tej formy, to jednak wysiłek planowany na wiele lat, a serwisy internetowe pojawiają się, znikają, ewoluują.
Do tego - co dotyczy też SuperMemo UX - mi jakoś zupełnie nie po drodze z estetyką SuperMemo. Czy naprawdę intensywna kolorystyka i ozdobniki graficzne dobrze służą nauce słówek czy wzorów?
Anki
Import do Anki z Mnemosyne niestety nie działa. Jeśli dobrze rozumiem, Anki obsługuje starszy format baz Mnemosyne.
Problem powinien być rozwiązywalny przez odrobinę kodowania ale prosta ścieżka wypróbuj mnemosyne i jakby co zmigruj do anki niestety nie jest tak prosta.