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.
"CRL Error" przy próbie uruchomienia SuperMemo UX sugeruje problem z bibliotekami .NET. Może da się to jakoś odpalić z użyciem Mono?
Nie mam żadnych doświadczeń z próbami portowania aplikacji .NET na Mono ale byłbym pesymistą, Mono przecież nie reimplementuje kompletu windowsowych API, ot - durne odtwarzanie dźwięku na pewno się wysypie.
Zresztą - mi już przeszło. Po co walczyć z SuperMemo, skoro konkurencyjne programy mi wystarczają i potrafią być portable. Obietnice linuksowego SuperMemo od autorów padały w ciągu minionych 10 lat w różnych inkarnacjach (min. była kiedyś mowa o wersji na Kylixa, kiedyś indziej o użyciu frontendu FullRecalla itd). Teraz zrobili pełną totalną reimplementację i znowu wybrali narzędzia czysto Windows-only. Firma SuperMemo nie chce supportować Linuksa i ma do tego prawo.
A ja mam prawo używać czego innego.
Powiedź mi tylko jedno, wpisy czytam od bardzo dawna, i zawsze temat wyczerpujesz od początku do końca. Czasami z braku czasu mogę nie doczytać notki, ale i tak wielki ukłon!widac sens w tym co robisz i nie mam wgladu w statystyki, ale chyba troche osob Cie musi czytac, a jesli nie prooponowalbym sensowna reklame, moze jakis konkurs na blog informatyczny?
Miło mi.
Wychodzę z założenia, że lepszy jeden przemyślany artykuł, niż pięć byle-jakich notek. Czy to korzystne dla popularności bloga? Pewnie nie. Ale mam cichą nadzieję, że komuś się moje artykuły przydadzą.
Oglądalność? 100-200 osób w szare dni, ponad 1000 osób dziennie kilka razy (po pochwaleniu się artykułami na linuxnews).
Co do reklamy... Nie mam na nią zbyt wielu pomysłów i nawet nieprzesadnie chcę się nią zajmować. Piszę, bo lubię pisać - w czasie, który kiedyś traciłem na gry czy czytanie nowinek sportowych.
Konkursy? Póki sam nie zacząłem blogować, nic o nich nie wiedziałem, więc nie przeceniam ich znaczenia. Wrzuciłem blog na konkurs w24 ale nie będę umieszczał żadnych apeli o głosy, traktuję to po prostu jako okazję do umieszczenia linka na poczytniejszej stronie.
PS Zachowam sobie ten komentarz na następny kryzysowy moment (miewam wątpliwości ilekroć dokładniej przyjrzę się, co jest popularne w polskiej sieci).
Zrobiłem wg Twoich porad konwersję SM Adv English do Mnemosyne - wyszło świetnie. Jak nie mogłem się przekonać do używania SM pod Wine to teraz działam dziennie po 50 i więcej zupełnie nowych słówek. Jednak co mnie drażni to chrapliwe odtwarzanie sampli - mplayer pliki odtwarza bez trzasków, Mnemosyne skrzeczy. Może masz jakąś poradę, gdzie, co sprawdzić by się tego pozbyć?
Dzięki.
Marcin
Mi skrzeczy tylko, gdy mam mocno obciążony system. Zastanawiam się, czy nie ma tu jakiegoś znaczenia rodzaj używanego systemu dźwięku (może np. wyłączenie pulseadio ciut pomoże?)
Aha: czytałem, że w mnemosyne 2.0 mają wymienić bibliotekę dźwiękową na inną, więc coś może jest na rzeczy.
No właśnie też czekam na wersję 2.0
Jakoś to skrzeczenie da się przecierpieć (wina SDL ??) ale niech się pośpieszą :)
Dzięki
U mnie import z mnemosyne do anki zadziałał - i cieszę się całym Advanced English pod anki wraz z dźwiękami.
(Może być konieczne ręczne poprawienie ścieżek do plików dźwiękowych, np. sedem)
Dzięki za informację, rzucę na to okiem w przyszłości - mnemosyne co prawda nadal mi się podoba ale mam ochotę porównać.