Tellstory · Học tập · Bài 2 / 2

Khi goed
trở thành
dữ liệu.

Ở bài trước, tôi đã xem lỗi goed không đơn giản là chuyện quên từ, mà là dấu hiệu cho thấy một luật đang bị áp nhầm, và trong bài này, tôi đưa dấu hiệu đó vào một hệ thống nhỏ để xem thuật toán có thật sự đọc được nó hay không.

Trong dự án nhỏ này, Learner A và Learner B là hai học sinh của tôi, một em lớp 4 và một em lớp 6, tức một em đang ở bậc tiểu học và một em đang ở đầu THCS. Hai em sẽ giúp tôi thu dữ liệu học thật trong quá trình luyện động từ bất quy tắc, còn dữ liệu học thử của người đọc chỉ dùng để xem cách hệ thống hoạt động. Vì hai em khác nhau về độ tuổi và nền tảng học tiếng Anh, dữ liệu này sẽ được tôi đọc như hai trường hợp quan sát ban đầu, không phải kết luận đại diện cho toàn bộ học sinh. Khi có đủ dữ liệu thật từ hai em, tôi sẽ cập nhật phần phân tích chi tiết hơn ở bài sau.

Chưa đọc bài trước? Bài này tôi sẽ đi tiếp từ overregularization và cách chia cụm động từ, nên bạn nên đọc bài goed trước để theo mạch dễ hơn.
cuộn xuống
data pipeline
goed → dòng dữ liệu
Một câu trả lời sai không chỉ là một câu trả lời sai.
goed → errorType: overregularization
δ = −2 → M_c giảm mạnh
half-life cluster mastery priority queue
§
goed → errorType → δ → M_c → S_v → priority
Phần I · Dữ liệu trước, thuật toán sau

Với tôi, một thuật toán học tập không bắt đầu từ công thức, nó bắt đầu từ câu hỏi dữ liệu nào được phép đi vào báo cáo.

Bài trước dừng ở lỗi goed như một dấu hiệu của overregularization, còn bài này tôi đi thêm một bước, đặt lỗi đó vào một hệ thống học thật, để mỗi câu trả lời không chỉ được xem là đúng hay sai, mà trở thành một dòng dữ liệu có thời gian, người học, động từ, cụm động từ, loại lỗi và dự đoán của thuật toán tại thời điểm câu hỏi xuất hiện.

Điều tôi để ý nhất ở đây không phải là làm cho công thức trông thông minh, mà là giữ dữ liệu sạch, vì dữ liệu học thử của người đọc chỉ nên nằm trong trình duyệt của họ, trong khi dữ liệu thật của tôi phải nằm ở một vùng riêng.

Nguồn tôi dựa vào: Knowledge tracing thường dùng chuỗi tương tác đúng/sai của người học để theo dõi trạng thái kiến thức thay đổi theo thời gian, xem Liu et al., 2024 survey.
Phần II · Từ lỗi sai đến tín hiệu

Tôi không muốn hệ thống chỉ hỏi học sinh sai bao nhiêu câu, tôi muốn nó hỏi trước rằng học sinh đang sai theo kiểu nào.

Một câu trả lời bỏ trống chỉ cho tôi biết học sinh chưa nhớ được từ ở thời điểm đó, một lỗi chính tả nhẹ có thể cho thấy học sinh biết từ nhưng gõ sai, còn một lỗi như goed thì nói nhiều hơn, vì học sinh đang lấy luật thêm -ed của động từ có quy tắc rồi áp vào một động từ bất quy tắc.

Nguồn tôi dựa vào: Overregularization được mô tả như việc trẻ hoặc người học mở rộng mẫu ngữ pháp có quy tắc sang từ bất quy tắc, ví dụ comed, và hiện tượng này thường gắn với phát triển dạng chữ U, xem Marcus et al., 1992; một hướng mô hình hóa gần đây về thì quá khứ tiếng Anh cũng tiếp tục xem overregularization là hiện tượng trung tâm, xem Haga et al., ACL Findings 2024.
loại lỗi ví dụ nó cho thấy gì
overregularizationgoed, runned, puttedluật -ed đang bị áp nhầm
wrongFormV3gone thay vì wentđang nhầm V3 sang V2
spellingwnet, slleptcó thể biết từ nhưng gõ sai
blankbỏ trốngchưa nhớ được ở thời điểm đó
othercâu trả lời chưa lộ pattern rõcần xem lại thủ công

Ghi chú phương pháp: nhãn lỗi tự động trong prototype này chỉ là một heuristic baseline thô, không phải một bộ phân loại ngôn ngữ học đáng tin cậy hoàn toàn. Ví dụ, lỗi gõ nhầm ký tự đầu có thể rơi vào nhóm other thay vì spelling, còn luật bắt -ed khá rộng có thể gom nhầm một vài đáp án tình cờ kết thúc như vậy. Trong quy trình nghiên cứu, các nhãn này chỉ được xem như tín hiệu ban đầu; giáo viên-người nghiên cứu sẽ audit thủ công các phản hồi mơ hồ sau khi thu dữ liệu và mô tả chúng thay vì ép mọi trường hợp vào một nhãn.

Cách tôi chia sáu cụm trong demo là một lựa chọn thiết kế, không phải một chuẩn duy nhất của ngôn ngữ học, nó giúp hệ thống đọc lỗi theo pattern hình thái, ví dụ đổi hẳn dạng, đổi nguyên âm, giữ nguyên hoặc kết thúc bằng -ought/-aught, rồi từ đó kiểm tra xem lỗi có thật sự tập trung theo cụm hay không.

Phần III · Ba biến cần đọc chậm

δ, M_c và S_v không phải ba công thức để làm khó người đọc, với tôi, chúng chỉ là ba cách ghi lại một lượt học vừa xảy ra.

correct
δ = +1
cụm được củng cố
overregularization
δ = −2
luật bị áp nhầm
wrongFormV3
δ = −1
nhầm dạng
blank / spelling
δ = −0.3
tín hiệu yếu hơn

δ là mức tác động của câu trả lời vừa rồi, M_c là điểm thành thạo của cụm động từ, còn S_v là độ bền ghi nhớ của một động từ cụ thể, vì vậy khi học sinh viết goed, tôi không chỉ giảm niềm tin vào riêng từ go, mà còn giảm nhẹ niềm tin vào cụm mà go thuộc về.

Mcnew = Mcold + η × δ
η là tốc độ cập nhật · δ là tác động của câu trả lời

Điểm cụm M_c lấy cảm hứng từ cách knowledge tracing theo dõi trạng thái kiến thức của người học qua chuỗi tương tác, nhưng trong bản demo này, tôi xem mỗi cụm động từ như một kỹ năng nhỏ, còn các trọng số δ là giả định thiết kế để phân biệt lỗi có giá trị chẩn đoán mạnh với lỗi ít thông tin hơn.

Nguồn tôi dựa vào: Knowledge tracing nhằm theo dõi trạng thái kiến thức đang thay đổi và dự đoán kết quả tương lai của người học, xem Liu et al., 2024 surveyLu, 2024.
Phần IV · Từ xác suất nhớ đến câu tiếp theo

Khi chọn câu tiếp theo, tôi để hệ thống hỏi cùng lúc hai chuyện, từ này có sắp quên không, và cụm của nó có đang yếu không.

Ý tưởng đường quên nói rằng trí nhớ thường giảm theo thời gian sau khi học, còn half-life regression trong học ngôn ngữ viết xác suất nhớ theo dạng p = 2^(-Δ/h), nghĩa là càng lâu không gặp lại một từ thì xác suất nhớ càng giảm, trong khi một từ có half-life lớn hơn sẽ giảm chậm hơn.

Nguồn tôi dựa vào: Ebbinghaus được replicate trong nghiên cứu của Murre & Dros, 2015, còn công thức half-life regression cho học ngôn ngữ được trình bày trong Settles & Meeder, ACL 2016.
Svnew = Svold × α × β(Mc)
α phản ứng với đúng/sai · β(M_c) phản ứng với tình trạng cụm
Priority(v) = (1 − p(v,t)) + λ × (1 − Mc)
λ = 0.4 là điểm khởi đầu, không phải kết luận cuối cùng

Trong công thức priority, phần 1 − p(v,t) là nguy cơ quên của riêng từ, còn phần λ × (1 − M_c) là lực kéo nhẹ từ cụm, vì vậy một từ có thể quay lại sớm do chính nó đang yếu, hoặc do nó thuộc một cụm đang tạo ra nhiều tín hiệu sai, tuy nhiên tôi dùng λ để điều tiết, để cụm không lấn át hoàn toàn dữ liệu của từng từ.

Phần V · Công thức chưa phải kết luận

Điểm đáng tin của hệ thống không nằm ở việc tôi có công thức, mà nằm ở việc công thức đó có được đem ra kiểm tra hay không.

Các phần liên quan đến đường quên, xác suất nhớ và half-life có nền từ spaced repetition, trong khi M_c, δ, β và λ là cách bản demo mã hóa giả thuyết rằng lỗi sai có thể mang thông tin theo cụm, vì vậy những con số như δ = −2, β = 0.7 + 0.3M_c hoặc λ = 0.4 tôi sẽ không trình bày như chân lý, chúng chỉ là hằng số khởi đầu để hệ thống chạy được và có thể quan sát được.

Calibration là bước tôi kiểm tra độ khớp giữa dự đoán và thực tế, ví dụ nếu hệ thống dự đoán một nhóm câu có p khoảng 0.8 nhưng học sinh chỉ đúng khoảng 0.5, mô hình đang quá lạc quan, còn nếu hệ thống dự đoán 0.5 nhưng học sinh đúng 0.8, mô hình đang quá thận trọng, và trong cả hai trường hợp các hằng số đều phải được xem lại.

Nguồn tôi dựa vào: Half-life regression được thiết kế để dự đoán xác suất nhớ trong học ngôn ngữ, nên việc so sánh xác suất dự đoán với kết quả đúng/sai thực tế là phần cốt lõi của hướng này, xem Settles & Meeder, ACL 2016.
Dữ liệu từ hai học sinh không thể chứng minh một quy luật lớn, nó chỉ giúp tôi nhìn xem giả định ban đầu đang lệch ở đâu, và chính sự lệch đó mới là thứ đáng đọc trong report.
Phần VI · Đọc thử trước khi kết luận

Tôi không muốn trang báo cáo được đọc như một bảng điểm, tôi muốn nó được đọc như một bản chụp quá trình hệ thống đang học cách hiểu người học.

Người đọc có thể mở trang học thử ở cuối bài, trả lời vài câu, rồi mở trang báo cáo để xem dữ liệu phiên của mình biến thành điểm cụm, half-life, hàng đợi ưu tiên và calibration, trong khi dữ liệu đó chỉ nằm trong trình duyệt của người đọc, không đi vào bộ dữ liệu thật của hai người học.

Dữ liệu thật của Learner A và Learner B chỉ có ý nghĩa khi nó được tách khỏi dữ liệu học thử, vì mục tiêu của tôi không phải làm report trông đông vui, mà là xem từng học sinh đang để lại pattern lỗi nào qua thời gian, cụm nào đang yếu thật, và công thức nào đang cần chỉnh.

Thực hành · Dữ liệu

Bài viết dừng ở phần giải thích, còn hệ thống học thửbáo cáo tôi để ở hai trang riêng.

Nếu muốn tự tạo dữ liệu, bạn mở trang học thử trước, trả lời vài câu để trình duyệt ghi lại phiên làm bài, rồi mở trang báo cáo để xem dữ liệu ấy biến thành điểm cụm, half-life, hàng đợi ưu tiên và calibration như thế nào.

Dữ liệu học thử chỉ lưu trong trình duyệt của bạn, không ghi vào bộ dữ liệu nghiên cứu chính thức.

Kết · Tellstory

Hệ thống đã chạy được, nhưng với tôi, tất cả hằng số vẫn chỉ là điểm khởi đầu.

λ = 0.4, δ = −2, sàn 0.7 trong β và ngưỡng p_target = 0.8 đều là giả định có cơ sở từ literature nhưng vẫn cần được hiệu chỉnh bằng dữ liệu thật, vì câu hỏi mở của tôi là liệu overregularization có thật sự lan theo cụm ở học sinh Việt Nam học tiếng Anh như ngôn ngữ thứ hai không, hay các em có pattern khác với trẻ nói tiếng Anh như tiếng mẹ đẻ, và Learner A và Learner B chỉ là hai trường hợp để quan sát chứ không phải kết luận.