{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/a-self-attentive-model-for-knowledge-tracing","title":"A Self-Attentive model for Knowledge Tracing","arxiv_id":"1907.06837","date":"2019-07-16","proceeding":null,"authors":["Shalini Pandey","George Karypis"],"abstract":"Knowledge tracing is the task of modeling each student's mastery of knowledge concepts (KCs) as (s)he engages with a sequence of learning activities. Each student's knowledge is modeled by estimating the performance of the student on the learning activities. It is an important research area for providing a personalized learning platform to students. In recent years, methods based on Recurrent Neural Networks (RNN) such as Deep Knowledge Tracing (DKT) and Dynamic Key-Value Memory Network (DKVMN) outperformed all the traditional methods because of their ability to capture complex representation of human learning. However, these methods face the issue of not generalizing well while dealing with sparse data which is the case with real-world data as students interact with few KCs. In order to address this issue, we develop an approach that identifies the KCs from the student's past activities that are \\textit{relevant} to the given KC and predicts his/her mastery based on the relatively few KCs that it picked. Since predictions are made based on relatively few past activities, it handles the data sparsity problem better than the methods based on RNN. For identifying the relevance between the KCs, we propose a self-attention based approach, Self Attentive Knowledge Tracing (SAKT). Extensive experimentation on a variety of real-world dataset shows that our model outperforms the state-of-the-art models for knowledge tracing, improving AUC by 4.43% on average.","url_abs":"https://arxiv.org/abs/1907.06837v1","url_pdf":"https://arxiv.org/pdf/1907.06837v1.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"a-self-attentive-model-for-knowledge-tracing","repo_url":"https://github.com/Machine-Learning-for-Everyone-ML4E/CoP-Code-of-Papers","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"tf","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"a-self-attentive-model-for-knowledge-tracing","repo_url":"https://github.com/arshadshk/SAKT-pytorch","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}},{"paper_slug":"a-self-attentive-model-for-knowledge-tracing","repo_url":"https://github.com/jdxyw/deepKT","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"a-self-attentive-model-for-knowledge-tracing","repo_url":"https://github.com/theophilee/learner-performance-prediction","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}},{"paper_slug":"a-self-attentive-model-for-knowledge-tracing","repo_url":"https://github.com/theophilegervet/learner-performance-prediction","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"a-self-attentive-model-for-knowledge-tracing","repo_url":"https://github.com/MindCode-4/code-11/tree/main/a-self-attentive-model-for-knowledge-tracing","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"mindspore","reach":null},{"paper_slug":"a-self-attentive-model-for-knowledge-tracing","repo_url":"https://github.com/MindCode-4/code-6/tree/main/a-self-attentive-model-for-knowledge-tracing","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"mindspore","reach":null},{"paper_slug":"a-self-attentive-model-for-knowledge-tracing","repo_url":"https://github.com/MindSpore-scientific/code-3/tree/main/a-self-attentive-model-for-knowledge-tracing","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"mindspore","reach":null},{"paper_slug":"a-self-attentive-model-for-knowledge-tracing","repo_url":"https://github.com/nanzhaogang/contrib/tree/master/application/a-self-attentive-model-for-knowledge-tracing","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"mindspore","reach":{"status":"ok","spdx":"Apache-2.0"}},{"paper_slug":"a-self-attentive-model-for-knowledge-tracing","repo_url":"https://github.com/shalini1194/SAKT","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"tf","reach":null}],"tasks":[{"task_slug":"ad-hoc-information-retrieval","task_name":"Ad-Hoc Information Retrieval"},{"task_slug":"knowledge-tracing","task_name":"Knowledge Tracing"},{"task_slug":"question-answering","task_name":"Question Answering"},{"task_slug":"model","task_name":"model"}],"methods":[{"method_slug":"memory-network","method_name":"Memory Network"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=1907.06837","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1907.06837"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/MindCode-4/code-6/tree/main/a-self-attentive-model-for-knowledge-tracing","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/shalini1194/SAKT","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/theophilee/learner-performance-prediction","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/MindCode-4/code-11/tree/main/a-self-attentive-model-for-knowledge-tracing","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/MindSpore-scientific/code-3/tree/main/a-self-attentive-model-for-knowledge-tracing","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/Machine-Learning-for-Everyone-ML4E/CoP-Code-of-Papers","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/jdxyw/deepKT","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/theophilegervet/learner-performance-prediction","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/arshadshk/SAKT-pytorch","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/nanzhaogang/contrib/tree/master/application/a-self-attentive-model-for-knowledge-tracing","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"ran_fixture":1,"ran_draft_wrong":3,"ran_violates":2,"unverified":6},"by_repo_kind":{"listed":{"samples":12,"ran":6,"repositories":3}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":9,"samples":[{"code_sha256_prefix":"47e44e2cbc1d0361","entry":"attention","repo":"theophilegervet/learner-performance-prediction","repo_kind":"listed","path":"model_sakt.py","file_url":"https://github.com/theophilegervet/learner-performance-prediction/blob/HEAD/model_sakt.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"47e44e2cbc1d0361"}},{"code_sha256_prefix":"1b483db3c68fe2df","entry":"clone","repo":"theophilegervet/learner-performance-prediction","repo_kind":"listed","path":"model_sakt.py","file_url":"https://github.com/theophilegervet/learner-performance-prediction/blob/HEAD/model_sakt.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"1b483db3c68fe2df"}},{"code_sha256_prefix":"77174654ec32c686","entry":"future_mask","repo":"theophilegervet/learner-performance-prediction","repo_kind":"listed","path":"model_sakt.py","file_url":"https://github.com/theophilegervet/learner-performance-prediction/blob/HEAD/model_sakt.py","link_basis":"first_harvest_node","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"77174654ec32c686"}},{"code_sha256_prefix":"f2254f62decab8a1","entry":"prepare_batches","repo":"theophilegervet/learner-performance-prediction","repo_kind":"listed","path":"train_sakt.py","file_url":"https://github.com/theophilegervet/learner-performance-prediction/blob/HEAD/train_sakt.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"f2254f62decab8a1"}},{"code_sha256_prefix":"dc76ab08d0c550d9","entry":"read_data_from_csv_file","repo":"shalini1194/SAKT","repo_kind":"listed","path":"2019-EDM/main1.py","file_url":"https://github.com/shalini1194/SAKT/blob/HEAD/2019-EDM/main1.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"dc76ab08d0c550d9"}},{"code_sha256_prefix":"37e217915347c2dc","entry":"str2bool","repo":"shalini1194/SAKT","repo_kind":"listed","path":"2019-EDM/main1.py","file_url":"https://github.com/shalini1194/SAKT/blob/HEAD/2019-EDM/main1.py","link_basis":"first_harvest_node","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"37e217915347c2dc"}},{"code_sha256_prefix":"63379c3778af65f9","entry":"compute_auc","repo":"theophilegervet/learner-performance-prediction","repo_kind":"listed","path":"train_sakt.py","file_url":"https://github.com/theophilegervet/learner-performance-prediction/blob/HEAD/train_sakt.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"63379c3778af65f9"}},{"code_sha256_prefix":"845ba6090f20db7e","entry":"deepirt_eval","repo":"jdxyw/deepKT","repo_kind":"listed","path":"deepkt/utils/utils.py","file_url":"https://github.com/jdxyw/deepKT/blob/HEAD/deepkt/utils/utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"845ba6090f20db7e"}},{"code_sha256_prefix":"258c9e181f3270df","entry":"dkt_predict","repo":"jdxyw/deepKT","repo_kind":"listed","path":"deepkt/loss/loss.py","file_url":"https://github.com/jdxyw/deepKT/blob/HEAD/deepkt/loss/loss.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"258c9e181f3270df"}},{"code_sha256_prefix":"a79ac5e51695f207","entry":"get_data","repo":"theophilegervet/learner-performance-prediction","repo_kind":"listed","path":"train_sakt.py","file_url":"https://github.com/theophilegervet/learner-performance-prediction/blob/HEAD/train_sakt.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"a79ac5e51695f207"}},{"code_sha256_prefix":"ce77a64f3aefc943","entry":"run_epoch","repo":"shalini1194/SAKT","repo_kind":"listed","path":"2019-EDM/main1.py","file_url":"https://github.com/shalini1194/SAKT/blob/HEAD/2019-EDM/main1.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"ce77a64f3aefc943"}},{"code_sha256_prefix":"c408856774ceda9f","entry":"sakt_eval","repo":"jdxyw/deepKT","repo_kind":"listed","path":"deepkt/utils/utils.py","file_url":"https://github.com/jdxyw/deepKT/blob/HEAD/deepkt/utils/utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"c408856774ceda9f"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}