- BrainTools - https://www.braintools.ru -
Когда я учился в университете, то активно изучал английские слова. Тогда ещё не использовал какой-то специальный софт для этого. Я просто записывал слова в тетрадь: в первом столбце — слово на английском, во втором — транскрипция, в третьем — перевод на русский.
Затем закрывал английскую часть листа, смотрел на перевод и пытался вспомнить слово.
Сначала этот способ работал. Но когда количество слов и фраз начало приближаться к тысяче, система сломалась. Чтобы пройти всю тетрадь, приходилось выделять почти час. Это быстро стало утомлять, и удовольствие от изучения языка постепенно исчезло.
Главная проблема была очевидна: одни слова я уже знал очень хорошо, а другие постоянно забывал. Но повторять [1] всё равно приходилось весь список подряд.
Получалось, что я тратил большую часть времени на уже знакомые слова вместо того, чтобы сосредоточиться на новых и сложных.
Именно эту проблему решают интервальные повторения.
Ещё в XIX веке немецкий психолог Герман Эббингауз решил выяснить, как человек забывает [2] новую информацию.
Он хотел исследовать память [3] в максимально чистом виде, без влияния смысла, личного опыта [4] и знакомых ассоциаций. Поэтому вместо настоящих слов использовал бессмысленные слоги вроде “бов”, “гис” и “лоч”. Эббингауз заучивал их, а затем через разные промежутки времени проверял, сколько сможет вспомнить.
Результаты своих исследований он опубликовал в 1885 году. На их основе появился график, который позже стали называть кривой забывания [5].
Оказалось, что мы забываем информацию неравномерно. Быстрее всего она исчезает из памяти вскоре после изучения. Затем скорость забывания постепенно снижается.
Это хорошо объясняет знакомую ситуацию: сегодня новое английское слово кажется очевидным, а через несколько дней ты смотришь на него так, будто никогда раньше не видел.
При этом повторение укрепляет воспоминание. Если периодически возвращаться к материалу, он забывается медленнее. А значит, нет необходимости каждый день повторять абсолютно всё. Достаточно возвращаться к информации через постепенно увеличивающиеся промежутки времени.
Очевидно, что знания о кривой забывания очень легко ложатся на специальный алгоритм, который можно использовать в приложениях для изучения иностранных слов.
Вместо того чтобы каждый раз проходить весь список с самого начала, приложение пытается показать слово примерно тогда, когда оно начинает забываться.
Сложные слова появляются чаще. Хорошо знакомые постепенно откладываются на недели, месяцы, а иногда и годы.
Благодаря этому человек тратит время не на бесконечное повторение уже выученного, а прежде всего на слова, которые рискуют выпасть из памяти.
Один из самых простых примеров такого подхода — система Лейтнера. В ней карточки распределяются по нескольким ящикам.
Если человек отвечает правильно, карточка переходит в следующий ящик и показывается реже. Если ошибается, карточка возвращается назад и снова начинает появляться чаще.
В приложении похожая система может выглядеть так:
сначала слово повторяется на следующий день;
затем через два дня;
потом через четыре;
через восемь;
через шестнадцать;
и так далее.
Чем больше правильных ответов, тем длиннее становится интервал.
Это уже намного эффективнее обычной тетради. Но у такого подхода есть проблема: разные слова могут двигаться по одной и той же схеме, хотя запоминаются они совершенно по-разному.
Например, слово cat один человек запомнит после первого повторения. А какое-нибудь thorough будет забывать снова и снова.
Поэтому более продвинутые алгоритмы учитывают не только правильность ответа, но и историю изучения конкретной карточки.
Один из современных алгоритмов интервального повторения — FSRS (Free Spaced Repetition Scheduler). Он используется в Anki и пытается предсказать, насколько вероятно, что пользователь вспомнит конкретную карточку в определённый день.
FSRS анализирует историю повторений: когда человек видел карточку, как отвечал и сколько времени прошло с предыдущего занятия.
Упрощённо алгоритм оценивает три характеристики:
сложность — насколько тяжело пользователю даётся карточка;
стабильность — насколько прочно информация закрепилась в памяти;
воспроизводимость — вероятность вспомнить карточку прямо сейчас.
После успешного повторения вероятность вспомнить слово высокая. Со временем она постепенно снижается. Задача алгоритма — выбрать подходящий момент для следующего показа.
В Anki после просмотра ответа пользователь должен сам оценить, насколько хорошо он вспомнил карточку:

Снова — не вспомнил;
Трудно — вспомнил с трудом;
Хорошо — дал нормальный правильный ответ;
Легко — ответил почти сразу.
После каждого ответа FSRS обновляет свои оценки.
Если пользователь нажимает Снова, карточку нужно показать раньше. После Трудно интервал увеличится незначительно. После Хорошо карточка получит обычный интервал, а после Легко — более длинный.
С точки зрения [6] эффективности это разумный подход. Но лично мне не нравится, что часть ответственности за работу алгоритма перекладывается на пользователя.
После каждого ответа приходится дополнительно решать, что именно выбрать: Трудно или Хорошо, Хорошо или Легко.
Вместо того чтобы думать о значении слова, контексте и самом языке, пользователь начинает оценивать собственную память и управлять алгоритмом.
Мне кажется, хорошая система должна работать незаметно для пользователя.
Если память можно приблизительно моделировать математически [7], зачем заставлять человека вручную управлять этой моделью?
В хорошей системе пользователь должен просто учить слова: проходить тренировки, отвечать на вопросы и использовать язык. Всё остальное должно происходить внутри приложения.
Алгоритм может самостоятельно учитывать косвенные сигналы:
соотношение правильных и неправильных ответов;
количество ошибок подряд;
скорость ответа;
использование подсказок;
опечатки;
стабильность правильных ответов на длинных интервалах.
Этих данных достаточно, чтобы приблизительно определить, насколько хорошо человек запомнил слово.
Пользователю не нужно думать о метриках. Ему нужно думать о языке.
Именно такой подход я постарался реализовать в своём приложении.
В VibeLing используется собственный упрощённый алгоритм, построенный на тех же основных идеях: сложные слова нужно показывать чаще, а хорошо знакомые — реже.
Весь процесс разделён на два этапа.
Первые дни после добавления слово находится в режиме интенсивного изучения.
Чтобы перейти к интервальным повторениям, пользователь должен правильно ответить на вопросы с этим словом девять раз. Обычно приложение показывает его три раза в день, причём в разных типах заданий.
Если пользователь ошибается, переход просто откладывается. Важно набрать девять правильных ответов, а не уложиться ровно в три дня.
В идеальном случае процесс выглядит так:
в первый день — три правильных ответа;
во второй день — ещё три;
в третий день — ещё три;
После интенсивного изучения слово переходит в режим интервальных повторений. Теперь оно появляется только в дни, когда действительно должно быть повторено.
Базовая последовательность интервалов выглядит примерно так:
1 день → 2 дня → 4 дня → 8 дней → 16 дней → 32 дня → 64 дня → 128 дней → 256 дней → 512 дней.
Теоретически слово никогда не получает статус “выучено навсегда”. Оно просто переходит на всё более длинные интервалы — вплоть до нескольких лет.
Но такая ровная последовательность возможна только при идеальных ответах. В реальности интервалы меняются в зависимости от того, как пользователь справляется со словом.
На расписание влияют:
с какой попытки пользователь ответил правильно;
скорость ответа;
использование подсказок;
соотношение неправильных ответов к правильным за последние 10 тренировок.
Изначально коэффициент сложности равен единице. Если пользователь ошибается, долго думает или использует подсказку, коэффициент снижается, а следующий интервал становится короче. Поэтому простые слова довольно быстро переходят на большие интервалы, а сложные появляются чаще.
При этом слово не получает ярлык “сложное” навсегда. Для расчёта используется статистика только по последним десяти ответам. Если пользователь перестал ошибаться, коэффициент постепенно восстанавливается, а интервалы снова начинают расти.
В результате приложение самостоятельно решает, когда показать слово в следующий раз. Пользователю не нужно выбирать между Снова, Трудно и Легко или разбираться в принципах работы алгоритма.
Он просто учит язык, а система подстраивается под его ответы.
Приложение называется VibeLing [8] и доступно на iOS и Android. Буду рад, если попробуете его и поделитесь обратной связью. А я продолжу делать алгоритм ещё лучше и не перекладывать эту работу на пользователей.
Автор: vital_pavlenko
Источник [9]
Сайт-источник BrainTools: https://www.braintools.ru
Путь до страницы источника: https://www.braintools.ru/article/31574
URLs in this post:
[1] повторять: http://www.braintools.ru/article/4012
[2] забывает: http://www.braintools.ru/article/333
[3] память: http://www.braintools.ru/article/4140
[4] опыта: http://www.braintools.ru/article/6952
[5] забывания: http://www.braintools.ru/article/3931
[6] зрения: http://www.braintools.ru/article/6238
[7] математически: http://www.braintools.ru/article/7620
[8] VibeLing: https://vibeling.app/
[9] Источник: https://habr.com/ru/articles/1046267/?utm_campaign=1046267&utm_source=habrahabr&utm_medium=rss
Нажмите здесь для печати.