У меня проблема: прямо сейчас мое обучающее программное обеспечение сообщает мне, что у меня есть 5 239 карточек для просмотра сегодня. Это не идеально.

Почему это проблема?

Мое — самодельное — программное обеспечение для обучения и продуктивности (https://kaado.io) использует Интервальные повторения (SR). Выглядит так:

Итак, один из основных принципов SR заключается в том, что учебные элементы показываются как раз до того, как мозг их забудет. Если они показаны после этого момента времени, происходит что-то плохое. Я не уверен, что именно, если честно. Это одна из причин, по которой существует эта статья.

В любом случае, сегодня я не могу почтить пять тысяч карт Активным отзывом. Не работает. Таким образом, мы можем предположить, что сегодняшняя эффективность моей системы обучения очень неоптимальна.

От чего зависит количество подлежащих изучению предметов и почему оно так велико?

Давайте проанализируем, как я попал в эту ситуацию:

1. У меня есть много тем и предметов для изучения, связанных с этими

Очевидный ответ на вопрос, почему у меня так много проклятых карт, заключается в том, что я использую свое программное обеспечение, чтобы попытаться изучить множество вещей. Столицы мира, питон, растения, правила оформления, итальянский язык. Это складывается.

Впрочем, мне это нравится. Я в этом в долгосрочной перспективе, так что я не возражаю против объема. Таким образом, этот абзац был в основном предназначен для того, чтобы убрать очевидный дух ответ. SR может и используется для изучения сложных и обширных тем, поэтому количество не должно быть проблемой. Просто нужно хорошо с этим обращаться. Чего в настоящее время нет в моем программном обеспечении, о чем этот пост.

2. Качество алгоритма интервальных повторений

Еще одна особенность SR заключается в том, что интервал, проходящий между просмотром данного элемента обучения, увеличивается по мере того, как вы лучше его запоминаете. Что для хорошо спроектированного предмета означает, что интервал со временем увеличивается. Чем дольше элемент живет в системе, тем больше его интервал. В среднем то есть.

Вычисление этого интервала является задачей алгоритма. Алгоритм здесь не является эвфемизмом для дерьмового ИИ, он означает просто что-то, принимающее входные данные (например, когда я смотрел на этот минимум и помнил ли я, что элемент просто знаю) и выдает результат (например, этот элемент будет рассмотрен еще раз через 27 дней). Эта логика действительно может включать в себя нейронные сети или быть настолько простой, что вы можете сделать это вручную (см., например, ящик Лейтнера).

Теперь это имеет важное значение:

Чем лучше работает алгоритм интервальных повторений, тем быстрее интервалы карт становятся настолько большими, что перестают засорять систему.

As in:

  • Если у меня будет 365 карточек, а моя система настолько плоха, что я никогда не запомню их, у меня будет 365 карточек каждый день.
  • Если у меня 365 карточек и моя система работает хорошо, я быстро дохожу до точки, когда интервалы между проверками будут очень большими (скажем, 1 год), что означает, что в среднем у меня есть только 1 карточка в день, и это значение постоянно падает.

3. Способ введения новых карт в систему

Последний компонент, определяющий количество ежедневных карточек, – это то, как (и, в частности, сколько) вводятся новые карточки и когда.

Пример. Я взял на себя обязательство выучить французский язык и решил, что знание десяти тысяч наиболее распространенных слов было бы полезно. Итак, у меня есть 10 тысяч карточек или 20 тысяч при двунаправленном обучении. Очевидно, что просматривать миллионы карточек в первый же день обучения — это что-то среднее между скучным, разочаровывающим и невозможным, поэтому вы этого не делаете. Вместо этого вы вводите их постепенно. Но как?

Мы обсудим подходы позже, давайте просто сохраним это как второй важный столп, определяющий количество элементов, которые мы должны просмотреть в данный день.

Проверить: Предварительная цель и как ее достичь

Имея все это в виду, давайте быстро рассмотрим:

  • Мы хотим решить проблему, связанную с слишком большим количеством ежедневных сроков погашения.
  • Мы знаем две вещи, которые мы можем улучшить:
  • Качество алгоритма SR, поэтому карты быстрее «уходят» из дневной ротации
  • Качество алгоритма введения карт, чтобы система не перегружалась новыми картами

Текущая система

Позвольте мне быстро поделиться тем, как моя система работает в настоящее время:

Мой алгоритм интервальных повторений

Мой алгоритм SR — это просто SM-2. Почему? Он открытый, это очевидно, и я нашел для него библиотеку javascript. Хороший выбор в то время, далекий от идеала с точки зрения обучения.

Для этого исследования я, наконец, стиснул зубы на вики supermemo достаточно долго, чтобы получить общее представление о том, что на самом деле делает SM-2, поэтому давайте сначала сделаем шаг назад:

Как работает СМ-2 (примерно)

Чтобы было ясно, это не что иное, как грубый набросок той же информации, подробно описанной в вики supermemo и, вероятно, лучше объясненной в другом месте. В любом случае, мое понимание:

  • SM-2 — это алгоритм, вычисляющий интервал повторного просмотра данного элемента.
  • Первый интервал проверки всегда один день, а второй шесть дней.
  • После этого он вычисляет следующий интервал по формуле, основанной на последнем интервале и вашем суждении о том, насколько хорошо вы запомнили

Я думаю, что это упрощение будет работать нормально на данный момент. Позже мы рассмотрим проблемы и альтернативы.

Мой алгоритм знакомства

В моем приложении новые карты вводятся следующим образом:

  1. Генерируется случайное число, чтобы…
  • …в 90% случаев выбирается обучающая карта, которая уже встречалась
  • …в 10% случаев выбирается новая учебная карта (ранее никогда не просматриваемая)
  1. Если мы хотим новую карту, но ее нет, мы получаем вместо нее «старую», и наоборот.

Теперь это может показаться странным выбором, в отличие от, например, просто вводить 10 новых карт каждый день. Вот мои причины пойти по этому пути:

  • это довольно легко реализовать
  • он дает предсказуемый и довольно желательный результат для множества сценариев:
  • никаких новых карточек → пока вы не закончите, будут показаны только старые карточки
  • никаких старых карточек, потому что вы только начинаете → вы можете проходить через свою причудливую новую обучающую колоду, пока у вас не закончится мотивация
  • количество введенных карточек зависит от количества времени, которое пользователь тратит на обучение (больше просмотренных карточек, больше введенных карточек)
  • он не требует хранения где-то дополнительных значений и не возится с датой и временем, что всегда доставляет неудобства.

Проблемы с моей текущей системой

Теперь, когда мы знаем симптом (так много карточек с погашением!) и немного о лежащих в его основе системах, давайте перейдем к самой пикантной части. Что происходит не так?

Недостатки СМ-2

На самом деле есть только один большой: ему более тридцати пяти лет!

Сейчас конечно математика обычно не балует, но в данном случае речь идет о вычислительной аппроксимации психологического явления. И это очень улучшается со временем и вложенными исследованиями.

Петр Возняк — изобретатель SM-2 — и его компания SuperMemo добились огромных успехов за последние три десятилетия. Об этом свидетельствует тот факт, что их текущий алгоритм SR называется SM-18. Даже СМ-5, тоже родившийся в восьмидесятых, кажется, уже сильно опережает СМ-2 (см. сравнение).

Возникает вопрос: почему бы просто не использовать SM-18?

Краткий ответ: потому что алгоритм не открыт, и использование SuperMemo (программного обеспечения) для меня не вариант. Подробнее об этом позже.

Недостатки моего алгоритма введения

Проблемы с моей каждая десятая карта — новая карта:

  • Это явно засоряет систему слишком большим количеством ежедневных обязательных обзоров.
  • Более того, в нем также нет концепции новой обучающей карточки, срок которой не истек — если вы добавите 500 новых карточек, у вас будет еще 500 карточек, подлежащих оплате, тут же. Не имеет значения для математики, важно для морали.

Альтернативы, решения и идеи

Теперь пусть будет солнце. Это будет наименее организованный раздел этого поста, где я буду обсуждать различные подходы и концепции, которые могут помочь мне (и, возможно, вам) во всем этом.

Что такое хороший алгоритм SR?

Я подумал, что если я подумаю о замене моего алгоритма SR, у меня, вероятно, должны быть средства оценки того, был ли это хороший ход. Мое погружение в это было еще не слишком глубоким, поэтому вот несколько указателей:

  • В вики supermemo есть эта статья, в которой обсуждаются способы сравнения алгоритмов интервальных повторений.
  • В нем упоминается индекс забывания как предпочтительное, но ошибочное значение, чтобы основывать суждения алгоритмов SR на
  • Внутри supermemo использует R-метрику для сравнения производительности алгоритма, которая рассчитывается на основе разницы предсказанного отзыва и оценки учащегося того, насколько хорошо он запомнил элемент.
  • Существует также метрика B-W, которая выполняет некоторые математические операции на основе разницы извлекаемости и оценки учащегося. Я не очень уверен, чем это отличается.
  • Вики supermemo также кратко определяет понятие Бремя, что может быть полезно для моей конкретной проблемы.
  • Здесь есть много возможностей получить очень мета: Сравнение алгоритмов интервального повторения для легальных цифровых карточек обнаруживает разницу в удержании в зависимости от используемого алгоритма SR, но нет в фактической прикладной производительности.

Альтернативные алгоритмы SR

Так к какому алгоритму тогда переходить? Я еще не уверен, и, поскольку соображения, обсуждавшиеся выше, оказались немного более липкими, чем я ожидал, я также еще не исследовал это широко. Опять же, некоторые указатели:

  • Хотя, конечно, все, что SuperMemo пишет об их собственном программном обеспечении, следует рассматривать в какой-то степени как рекламу, SM-18 действительно выглядит очень хорошо. Однако кажется, что это требует рекурсивного чтения и понимания вики-статей всех предшественников, а также широкого круга фундаментальных концепций. Кроме того, я не уверен в законности фактического внедрения SM-18.
  • Anki использует SM-2 и не рассматривает ничего, кроме алгоритмов SM. Их причины того, что они не обновляются до более новой версии, кажутся похожими на мои — организационные, юридические и продуктовые причины превыше преимущества превосходного обучения.
  • Случайный комментарий Reddit утверждает, что SM-15 на самом деле довольно прост в реализации. Может стоит изучить.
  • Статья о интервальных повторениях в Википедии поднимает вопрос о нейронной сети, интересно цитируя еще один пост SuperMemo 1998 года, описывающий подход. Я уверен, что будет много статей, пытающихся это сделать.
  • Обязательно проверьте Результаты Google Scholar для реализации альтернативных алгоритмов SR.

Альтернативные алгоритмы введения

Вернемся к сколько новых учебных предметов следует вводить в день. Теперь это разочаровывает.

Кажется, все только догадываются.

На Reddit можно просмотреть /r/Anki, чтобы найти треды всех, кто просто счастливо делится своими произвольными магическими числами для новых карт в день, что является пользовательской настройкой в ​​Anki.

Хотя я полностью за пользовательскую настройку, здесь должен быть математический оптимум, верно? Я не могу себе представить, чтобы позволить моему иррациональному мозгу угадать правильное число и было бы решением.

Другие приложения не намного лучше. DuoLingo также контролируется пользователем, но менее прямолинейно. Пользователи выбирали, хотят ли они повторить старые уроки или перейти к новым, а фанаты создали сложные системы, такие как Метод водопада, чтобы сбалансировать этот выбор. Интересно, но вряд ли серебряная пуля.

Не имея системы Windows и пояснительной статьи, я не мог узнать, как это делает SuperMemo. Из вики кажется, что то, что они называют переполнением (наличие избытка отзывов), допускается или поощряется, а затем решается разнообразными инструментами.

В настоящее время я рассматриваю возможность создания системы, подобной Anki, выпускающей определенное количество новых карточек в день, но адаптируя эту нагрузку в соответствии с тем, сколько карточек пользователь обычно просматривает в данный день, возможно, в сочетании с будущими прогнозами того, сколько карточек будет. должны быть основаны на том, как развиваются интервалы проверки.

Звучит болезненно.

Возможно, некоторые статьи с автономными реализациями чистых алгоритмов SR вдохновят меня.

Заключительные слова

Я надеюсь, что эта бессвязная статья принесет какую-то пользу хотя бы мне в будущем. Чтение газет это. Но сначала позвольте мне создать колоду Flags of the World. Привет!