3 điểm bởi GN⁺ 2024-01-16 | 1 bình luận | Chia sẻ qua WhatsApp
  • Wiki ABC of FSRS của FSRS, dùng để tối ưu hóa lịch ôn tập, đã được chuyển từ fsrs4anki sang wiki awesome-fsrs mới
  • Các tài liệu nghiên cứu MaiMemo được liên kết lần lượt đề cập đến tối ưu hóa lịch lặp lại ngắt quãng và mô hình hóa động lực học của trí nhớ trong các bài báo ACM KDD và IEEE TKDE
  • Một bài viết riêng giới thiệu quá trình nghiên cứu thuật toán lặp lại ngắt quãng thông qua trải nghiệm xuất bản bài báo ACM KDD của một sinh viên đại học
  • FSRS-Anki-20kanki-revlogs-10k được giới thiệu cùng nhau như các bộ dữ liệu nguồn mở có đặc tính chuỗi thời gian
  • FSRS là một dự án nguồn mở độc lập do cộng đồng dẫn dắt, và sự hỗ trợ từ các tổ chức như MaiMemo Inc. giúp các cộng tác viên chủ chốt tiếp tục tham gia lâu dài

ABC of FSRS đã chuyển sang wiki mới

Tài liệu nghiên cứu về lặp lại ngắt quãng

Bài viết về trải nghiệm nghiên cứu

Bộ dữ liệu công khai

Dự án cộng đồng và tài trợ

  • FSRS là một dự án nguồn mở độc lập do cộng đồng dẫn dắt
  • Bày tỏ sự cảm ơn đối với hỗ trợ từ các tổ chức như 墨墨背单词 (MaiMemo Inc.)
  • Sự hỗ trợ của MaiMemo giúp các cộng tác viên chủ chốt như Jarrett Ye có thể dành thời gian và chuyên môn cho FSRS
  • Sự hợp tác như vậy giúp FSRS tiếp tục là một thuật toán lặp lại ngắt quãng hàng đầu, được cung cấp miễn phí cho tất cả mọi người

1 bình luận

 
GN⁺ 2024-01-16
Ý kiến trên Hacker News
  • Một cách bị đánh giá thấp rất nhiều để cải thiện lặp lại ngắt quãng là làm cho thẻ dễ hơn. Tôi nhận ra rằng thẻ hiệu quả có thể dễ đến mức đáng ngạc nhiên
    Ban đầu tôi học thuộc từ vựng tiếng Pháp bằng Anki, tạo thẻ hai chiều Anh↔Pháp, nhưng khi số thẻ lên đến vài trăm, có quá nhiều từ đồng nghĩa nên rất khổ sở
    Sau đó, theo lời khuyên học tiếng Nhật của Katzumoto, tôi dán nguyên cả đoạn từ ebook hoặc trang web và tạo thẻ điền chỗ trống chỉ che một từ; chúng dễ nhưng hiệu quả
    Tôi còn lười hơn, chỉ che nửa từ, hoặc tô đậm từ và nếu trong ngữ cảnh tôi nhớ mang máng được thì cho qua, vậy mà lại hoạt động tốt hơn
    Khi thẻ hiện lên mà tôi nghĩ “à, lại cái thẻ đó à?” thì tôi xóa, và đặt Anki treo vĩnh viễn nếu sai 3 lần. Nếu đó là từ thật sự cần biết thì chẳng mấy chốc tôi sẽ gặp lại nó trong một ngữ cảnh tốt hơn, nên không vấn đề gì; vốn từ tiếng Pháp của tôi vẫn tiếp tục tăng nhanh
    Tôi nghĩ cải thiện lớn nhất sẽ đến từ cải thiện định dạng thẻ hơn là từ thuật toán lặp lại ngắt quãng tốt hơn, và việc tạo ra những thẻ tưởng như quá dễ để hữu ích hóa ra lại khó bất ngờ. Đây là kết quả sau hơn 35.000 lượt ôn Anki ở ba ngôn ngữ

    • Đây mới là cách dùng SRS đúng. Những người geek như chúng ta dễ chạy theo cải thiện 1% bằng thuật toán lặp thông minh hơn hay phương thức nhập liệu tốt hơn, nhưng chế độ thất bại thực tế lại tầm thường hơn nhiều: mọi người bỏ cuộc
      Tôi thường thấy người ta nhồi hàng nghìn thẻ vào Anki trong tháng đầu học thứ gì đó, rồi một hai tháng sau bị khối lượng ôn tập áp đảo, việc ôn cảm giác như việc vặt và họ bỏ
      Có hai lời khuyên tạo ra khác biệt: làm thẻ hơi “quá” dễ, và phải khá chọn lọc xem đưa thẻ nào vào
      Khi mới tạo thẻ, bạn vừa học chủ đề đó nên nó còn sống động trong đầu, khiến bạn muốn tạo những thẻ thú vị và thử thách với chính mình lúc này. Nhưng sau 1–2 tuần, những thẻ đủ dễ để chỉ khẽ chạm vào ký ức sẽ tốt hơn là làm bạn rối trí
      Thay vì đưa nguyên cả lượng câu của một cuốn sách vào Anki, tốt hơn là chậm rãi nhìn quanh như đi trong vườn cây ăn quả và chỉ hái một hai quả táo ngon nhất. Táo thối, tức các thẻ không thú vị hoặc quá khó, sẽ làm ô nhiễm cả bộ thẻ và khiến bạn né luôn việc ôn tập
    • Tôi thì làm ngược lại. Tôi đã có 70.000 lượt ôn Anki ở một ngôn ngữ, và việc thêm ngữ cảnh cẩn thận phần lớn có cảm giác như lãng phí thời gian tạo thẻ
      Việc ôn thường trôi qua rất nhanh, nên thời gian tạo thẻ lại chiếm tỷ trọng khá lớn trong tổng thời gian học cho mỗi thẻ. Gần đây tôi ngày càng đưa ít ngữ cảnh hơn, và nhiều khi các thẻ đơn giản mặc định do plugin từ điển tạo ra là đủ
      Việc cố thêm ngữ cảnh vào mặt trước của thẻ hầu như chỉ xảy ra khi đó là thuật ngữ chuyên ngành chỉ xuất hiện trong ngữ cảnh ấy. Tức là khi nó không đáng học độc lập
      Tuy vậy, tôi nghĩ làm một cách lười biếng và rộng lượng với bản thân là tốt. Khi chấm câu trả lời, tôi cũng chấm khá thoáng, dựa trên việc mình đã hiểu đủ để tránh nhầm lẫn trong thực tế hay chưa, chứ không phải mức làm chủ hoàn hảo như người bản ngữ
    • 20 quy tắc viết thẻ SRS gốc của SuperMemo là một kho báu: https://www.supermemo.com/en/blog/twenty-rules-of-formulating-knowledge
      Nó sẽ cải thiện chất lượng thẻ rất nhiều
    • Tôi cũng nghĩ tương tự khi học guitar. Có thể sẽ tốt nếu để não xử lý một vấn đề theo nhiều cách
      Ví dụ, bạn có thể dùng lặp lại ngắt quãng để nhồi các nốt trên cần đàn một cách thô bạo, nhưng trong thực tế trộn ngữ cảnh hiệu quả hơn
      Có tuần tôi lười nên chỉ luyện tên nốt, tuần khác thì mày mò các thang âm kỳ lạ như thang âm Hungary, tuần khác nữa thì cố tái tạo arpeggio chord, chuỗi power chord, hoặc âm thanh/cảm giác của một bài cụ thể
      Theo thời gian, não bắt đầu tạo liên kết. Những nhận ra kiểu “cái này chỉ là âm giai G thứ thôi”, “cái này là âm giai G trưởng nhưng bỏ qua mấy nốt kia”, “với mẫu này thì có thể thử chơi như thế kia nhỉ?” xuất hiện
      Cũng có cảm giác kỳ lạ là tốc độ nhận ra những gì mình không biết tăng nhanh hơn nhiều so với những gì mình tưởng là đã biết. Dù vậy tôi đang nghĩ đến việc dùng một thuật toán lặp lại ngắt quãng giao cho mình các bài tập guitar 5–10 phút để cùng lúc phát triển trí nhớ cơ bắp và các kết nối thần kinh
    • Tôi đã dùng Anki không liên tục trong thời gian dài để học ngôn ngữ, và gần đây dùng nó để học các khóa đại học trực tuyến
      Có lẽ vì nội dung đa dạng hơn so với khi chỉ có ngôn ngữ, tôi cảm nhận rất rõ tác động của định dạng thẻ. Ngay cả với bộ thẻ do người khác tạo, tôi cũng thường sửa câu chữ ở phần trả lời, và thấy khác biệt đáng kể về tỷ lệ ghi nhớ
      Những câu trả lời ngắn gọn, tự nhiên, có mạch sẽ dễ bám hơn. Nếu có thẻ nào cảm thấy gượng gạo, tốt nhất là đừng ngần ngại sửa nó
  • Tôi đã học thuộc hàng chục nghìn từ nước ngoài bằng Anki, và việc có hình ảnh trên thẻ luôn giúp tôi nhớ từ
    Hiện tôi đang làm một dự án có thể hơi ngớ ngẩn: học thuộc 750 thẻ của một trò đố vui chơi với gia đình. Tất cả các thẻ đều có đáp án là năm. Ví dụ: “Coca Cola Light ra mắt năm nào?”
    Tạo ảnh cho thẻ bằng Midjourney giúp tôi nhớ dễ hơn nhiều
    Tôi dùng một hệ thống trong đó mỗi thế kỷ có một nhân vật đại diện. Einstein biểu thị giai đoạn 1900–2000, Marie-Antoinette biểu thị giai đoạn 1700–1800
    Đồ vật biểu thị các thập niên. Xe hơi thập niên 60 là những năm 60, áo khoác đệm vai là những năm 80, kiểu vậy. Chữ số cuối cũng xử lý tương tự
    Tôi để Midjourney tạo các yếu tố này thành hình ảnh phong cách hoạt hình, rồi lưu hình vui nhất hoặc lố bịch nhất vào mặt sau thẻ Anki. Nhiều khi hình ảnh dễ nhớ hơn chính năm đó

    • Có ba điều. Thứ nhất, nên tìm hiểu PAO, một kỹ thuật ghi nhớ dựa trên hình ảnh
      Thứ hai, trong tình huống thực tế không có hình ảnh, khả năng hồi tưởng có thể kém đi, nên cần định kỳ kiểm tra tách riêng lúc có hình và lúc không có hình
      Thứ ba, tôi tò mò không biết trò đố đó có phải Trivial Pursuit không. Một người bạn của tôi đã cố ý học thuộc toàn bộ thẻ của bản Genus gốc
    • Tôi đang làm điều tương tự với địa lý. Những thứ như quốc kỳ, thủ đô. Tôi nghĩ nó sẽ cho mình lợi thế khoảng +5 trong hầu hết các buổi đố vui
    • Hệ thống đó thật sáng tạo. Ngày tháng luôn khó với tôi; từ giờ chắc tôi sẽ mượn ý tưởng đó để dùng
  • Thú vị. Theo benchmark, dùng thuật toán này thì chỉ cần ôn ít hơn 20–30% số thẻ so với thuật toán Anki cổ điển
    Vài ngày trước tôi đã công bố một bản triển khai Python của thuật toán SM-2 cổ điển dùng trên https://python.cards, và có lẽ có thể chuyển sang FSRS: https://github.com/vlopezferrando/simple-spaced-repetition

    • python.cards trông có vẻ hay. Sẽ tốt hơn nếu thêm vài ví dụ
      Tôi cũng tò mò liệu có khả năng mở mã nguồn web app này không. Nó có vẻ có thể trở thành một cách phổ biến để hiển thị flashcard trong một lĩnh vực cụ thể, kiểu như học sinh học X
  • Theo phần mô tả, có vẻ FSRS vẫn gắn ngày ôn tập chính xác cho từng thẻ. Chính tính năng này khiến tôi bỏ Anki
    Tôi không còn là sinh viên đại học và cũng không thi cử gì, nên chỉ muốn luyện tập khi nào mình thích. Có thể có những khoảng nghỉ dài giữa các phiên, và tôi không muốn có cảm giác thẻ tồn đọng đang chất đống
    Anki là một ứng dụng tuyệt vời, nhưng tôi ước có một thuật toán không gắn ngày ôn tập, mà lấy mẫu ngẫu nhiên các thẻ với xác suất tỷ lệ với mức độ cần ôn gấp
    Sẽ rất tuyệt nếu cách như https://github.com/fasiha/ebisu có thể chạy như một plugin Anki, hoặc có một ứng dụng tương tự dùng định dạng thẻ mở

    • Nhưng trí nhớ không hoạt động như vậy. Bạn không thể đặt ký ức ở trạng thái tạm hoãn như đề xuất. Có lý do FSRS đi theo đường cong trí nhớ được cá nhân hóa
    • Việc luyện tập khi muốn, và có thể có khoảng nghỉ dài giữa các phiên, vốn đã là cách SRS hoạt động
      Chỉ là nếu bạn dọn hết phần “quá hạn” thì bạn không thể tiếp tục luyện tập tùy ý nữa, mà phải chờ một thời gian cho đến khi chúng lại sẵn sàng để ôn
    • Tôi từng làm một ứng dụng nửa vời kiểu đó, và nó hoạt động rất tệ
      Những kiến thức còn nhớ thì lặp lại rất khó chịu, còn nhiều thứ đã quên thì đã quên sạch. Vì vậy việc lặp lại gần như không còn ý nghĩa và tiến độ rất chậm
      Điểm cốt lõi là lặp lại ngay trước khi gần quên, mà điều đó khó làm được nếu không có thời hạn và quản lý lịch trình
    • Phrasing.app đang xây dựng đúng kiểu đó. Ban đầu chúng tôi dùng ebisu, nhưng cuối cùng lại dùng một fork FSRS đã chỉnh sửa rất nhiều
      Thực tế chúng tôi không dùng thời hạn, và ngoài một số tính năng phân tích được yêu cầu, chúng tôi cố giữ người dùng ở nhiều mức độ khó khác nhau
      Chúng tôi coi tiến về phía trước quan trọng hơn việc luôn xóa sạch 100% phần tồn đọng. Nếu là một từ thật sự quan trọng thì người dùng sẽ đánh dấu yêu thích hoặc gặp lại nó
      Đây không phải ứng dụng flashcard công khai, mà tập trung nhiều vào việc tự động khai thác câu trong ngoại ngữ. Dù vậy tôi sẵn lòng trả lời các câu hỏi về kinh nghiệm chỉnh sửa FSRS
      Có thể xem thông tin về sản phẩm tại https://blog.phrasing.app/phrasing-first-look/
    • Trong Anki, bạn có thể dùng bộ thẻ lọc và sắp xếp thẻ theo mức độ quá hạn tương đối
  • Tôi đã dùng FSRS được 3 tháng, và nỗi khổ phải chỉnh thuật toán lịch trình SM2 cũ bằng thử-sai cuối cùng đã được giải quyết
    Nội dung của từng bộ thẻ có thể ảnh hưởng lớn đến tỷ lệ duy trì tối ưu, và giờ đây cứ vài tháng huấn luyện lại trọng số cho từng bộ thẻ thì nó sẽ thích nghi phù hợp
    Bài báo[0] cũng đáng đọc nếu bạn muốn xem một phân tích nghiêm ngặt về khoa học lặp lại ngắt quãng trong môi trường thực tế quy mô lớn
    Vì các benchmark rất rộng, với phần lớn người dùng, việc tinh chỉnh lại trọng số cho bộ sưu tập của mình sẽ không đem lại nhiều lợi ích cho đến khi tích lũy được vài nghìn lượt review. Tác giả khuyến nghị từ 1.000 lượt trở lên
    Nó vẫn hoạt động tốt ngay cả khi bạn làm thẻ muộn. Xác suất nhớ lại dựa trên độ ổn định và thời điểm ôn cuối cùng, và nếu bạn vẫn nhớ được sau khi quá hạn thì độ ổn định sẽ được cập nhật dài hơn một chút
    [0] https://dl.acm.org/doi/10.1145/3534678.3539081?cid=99660547150
    [1] https://github.com/open-spaced-repetition/fsrs4anki/wiki/The-Algorithm

  • Vì thích flashcard như một sở thích nên hằng ngày tôi dùng nhiều ứng dụng lặp lại ngắt quãng cho vui. Tôi cũng đã thử FSRS và thấy tốt, nhưng vẫn chưa bằng SuperMemo mới nhất
    Nếu đưa cùng một hoặc tài liệu tương tự vào hai ứng dụng trở lên thì sẽ thấy khác biệt. Dù vậy FSRS vẫn tốt hơn hầu hết mọi thứ hiện có, và có vẻ sẽ sớm tốt hơn SuperMemo
    Tôi đã dùng Mochi Cards khoảng 1 năm, thấy chỉ ở mức ổn, và nhỉnh hơn một chút so với cài đặt Anki mặc định. Mnemosyne cũng tương tự. Ứng dụng SuperMemo SaaS cũng ổn, nhưng tôi không thích cách nó tổ chức tài liệu ngôn ngữ
    Với từ vựng ngôn ngữ, tôi dùng Clozemaster, và sau khi trả lời đúng thì đưa câu đó vào SuperMemo. Vì thuật toán của SuperMemo tốt hơn đến mức đó. Cũng có phần giải thích của ChatGPT cho từng từ, nên tôi cũng đưa vào SuperMemo
    Phần khó nhất chắc chắn là tạo được thẻ tốt. Để có thêm ý tưởng, http://arxiv.org/abs/2401.01257https://rust-book.cs.brown.edu khá hữu ích
    Tôi vẫn chưa tìm thấy chương trình flashcard nào cho phép tạo thẻ nhanh như SuperMemo. Trong SuperMemo, chỉ cần dán một đoạn văn bản (ctrl-n), chọn từ muốn biến thành chỗ trống, rồi nhấn alt-x. Có thể làm nhiều lần trên cùng một đoạn văn bản, và mỗi lần như vậy một thẻ điền khuyết mới sẽ được đưa vào phần ôn tập
    Hầu hết ứng dụng khác phải tạo từng thẻ một. Có lẽ vì chúng bị ràng buộc quá chặt vào ẩn dụ thẻ và bộ thẻ. SuperMemo sắp xếp mọi thứ theo cấu trúc cây, tạo ra khác biệt lớn. Thực ra cũng không nhất thiết phải sắp xếp, nhưng mọi người hành xử như thể tài liệu đã học sẽ được phân loại gọn gàng trong đầu thành các bộ thẻ

    • Trong Anki, trên Debian là Ctrl-Alt-C
    • Trong Mochi cũng gần như vậy. Nhấn n để tạo thẻ mới, ctrl-v để dán văn bản, chọn từ rồi nhấn ctrl-l để tạo chỗ trống, và dùng ctrl-[n] để tạo nhóm chỗ trống từ 0~9
      Mỗi nhóm chỗ trống sẽ có “thẻ” riêng của nó
  • Nghĩ đến tầm quan trọng của lặp lại ngắt quãng, tôi tự hỏi có phải cần một cách tiếp cận mô-đun khác với Anki không
    Chẳng phải có ba thứ tách biệt sao?

    1. Các thẻ hoặc một tập con của thẻ
    2. Lịch sử tương tác với các thẻ đó
    3. Thuật toán dựa trên lịch sử đó để trình bày thẻ và thêm lịch sử mới. Về tiềm năng, có thể là cách tính toán đúng lúc cần
    • Anki FSRS đã tiến gần hơn đến một thuật toán tính toán đúng lúc chỉ dựa trên dữ liệu đầu vào do người dùng cung cấp
      Cấu trúc dữ liệu không hoàn toàn mô-đun nghiêm ngặt, nhưng trong khi vẫn giữ tương thích với các bộ thẻ Anki hiện có và tiện ích mở rộng, nó đã gần đến mức thực tế có thể
      Thực tế là giờ đã có một nút tính toán lại hoàn toàn mọi khoảng cách và độ khó chỉ từ lịch sử và các giá trị điều chỉnh hiện tại của thuật toán. Nếu bạn đã dùng FSRS và các giá trị điều chỉnh không đổi, việc tính toán lại sẽ không có tác dụng gì, vì nó tương đương với phép tính tăng dần sau mỗi lần ôn tập
      Về nguyên tắc có thể xem nó như một hàm thuần tính toán đúng lúc, và dữ liệu được sinh ra chỉ là cache vì lý do tương thích ngược và hiệu năng
  • Nhân tiện tự quảng bá một chút về thứ liên quan: tôi đã làm một công cụ mã nguồn mở miễn phí để tạo thẻ Anki từ video YouTube: https://youtube2anki.fly.dev/
    Tôi muốn nhận phản hồi. Mã nguồn có trên GitHub: https://github.com/vacmar01/youtube2anki

    • Hay đấy. Có thể hỏi bạn dùng nó với những video nào không?
  • Tôi đã nói chuyện với Xiaojun nhiều lần về FSRS và Anki. Trong các hệ thống lặp lại ngắt quãng truyền thống như Anki+FSRS, người học thường ôn kiến thức trong cùng một ngữ cảnh, nên có thể hiểu kiến thức như những đơn vị cô lập thay vì một phần của mạng lưới lớn hơn
    Ví dụ, học riêng lẻ từng từ không đủ để chuẩn bị cho việc dùng ngôn ngữ trong đời sống thực. Trong tình huống thực tế, ngữ cảnh, cụm từ thường đi cùng nhau và cách dùng đóng vai trò rất lớn
    Một cách học ngôn ngữ tốt hơn so với lặp lại cô lập là cho người học gặp từ trong nhiều ngữ cảnh và tổ hợp khác nhau, để họ hiểu cách từ tự nhiên hình thành thành cụm và câu
    Vì vậy, trong học ngôn ngữ, tôi đang làm thứ hiển thị các video ngắn đời thực thay vì thẻ Anki. Mỗi video là một kịch bản nhỏ, cho thấy ngôn ngữ được dùng như thế nào trong tình huống thực tế
    Học viên không chỉ ghi nhớ từ, mà còn thấy cách dùng trong ngữ cảnh tự nhiên, bao gồm cả gợi ý thị giác và cử chỉ. Cách tiếp cận này có thể giúp họ hiểu ứng dụng thực tế của từ và biểu đạt, làm việc học nhập vai hơn và hiệu quả hơn. Vì lý do chính khiến việc học ngoại ngữ thất bại là không duy trì được
    Một điểm nữa Anki còn thiếu là các câu đố dựa trên tình huống thực tế, chứ không phải “có nhớ không?”. Học viên cần áp dụng điều đã học trong môi trường vui và ít áp lực
    Thuật toán SRS chỉ là một phần của giải pháp, không phải thuốc chữa bách bệnh. Trí nhớ có nhiều yếu tố, chẳng hạn tác động của cảm xúc lên quá trình mã hóa. Bạn không cần SRS để nhớ nụ hôn đầu hay ngày tốt nghiệp
    Mọi người học tiếng mẹ đẻ trôi chảy mà không cần bất kỳ SRS nào, nhưng với ngoại ngữ thì phần lớn vẫn không thể trôi chảy ngay cả khi dùng SRS

    • Lập luận rằng nên học trong ngữ cảnh và đa dạng hóa ngữ cảnh là có giá trị, nhưng câu “người ta học tiếng mẹ đẻ mà không cần Anki hay học ngữ pháp” lúc nào cũng làm tôi khó chịu
      Tiếp thu ngôn ngữ thứ nhấttiếp thu ngôn ngữ thứ hai khác nhau như táo với thịt xông khói vậy. Não của trẻ sơ sinh và người trưởng thành khác nhau, nhu cầu, năng lực và ngữ cảnh cũng khác nhau rất nhiều
    • Đúng vậy. Tôi thích hướng kết hợp SRS và học nhập vai như phương pháp Refold hơn