Skip to content

Commit e3c1d72

Browse files
committed
add projects section
1 parent 0617463 commit e3c1d72

15 files changed

+626
-6
lines changed

_config.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,6 @@ exclude:
194194
- readme_preview/
195195
- vendor
196196
- _pages/blog.md
197-
- _pages/projects.md
198197
- _pages/repositories.md
199198
- _pages/profiles.md
200199
- _pages/teaching.md

_includes/projects.liquid

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
{% if project.github %}
1919
<div class="github-icon">
2020
<div class="icon" data-toggle="tooltip" title="Code Repository">
21-
<a href="{{ project.github }}"><i class="fa-brands fa-github gh-icon"></i></a>
21+
Github: <a href="{{ project.github }}"><i class="fa-brands fa-github gh-icon"></i></a>
2222
</div>
2323
{% if project.github_stars %}
2424
<span class="stars" data-toggle="tooltip" title="GitHub Stars">

_includes/projects_horizontal.liquid

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
{% if project.github %}
1616
<div class="github-icon">
1717
<div class="icon" data-toggle="tooltip" title="Code Repository">
18-
<a href="{{ project.github }}"><i class="fa-brands fa-github gh-icon"></i></a>
18+
Github:<a href="{{ project.github }}"><i class="fa-brands fa-github gh-icon"></i></a>
1919
</div>
2020
{% if project.github_stars %}
2121
<span class="stars" data-toggle="tooltip" title="GitHub Stars">

_pages/about.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ latest_posts:
3232

3333
Thank you dear visitor for stopping by! I am a final year PhD candidate at University of Michigan, Ann Arbor. My research focus and interests are at the intersection of Machine Learning and Human-Computer Interaction (HCI).
3434

35-
I develop adaptive AI systems that <span style="color:deeppink;">enable people to reason under risk and uncertainty in complex decision-making scenarios</span> by modeling their underlying thought processes and not just their observable behaviors. For example, in education, inferring students' conceptual gaps requires reconstructing their mental models from their learning trajectories, not just identifying surface-level mistakes. I borrow from <span style="color: deeppink">cognitive science and probabilistic machine learning</span> to design AI with experts' mental model to improve Human-AI interaction. By modeling people's latent cognitive states, my methods <span style="color: deeppink">improve reasoning of AI systems beyond observed behaviors</span>, improving overall learning efficiency and accuracy. I bring in strong computational and model building skills from my prior industry experience to build systems for Human-AI interaction and my training in HCI allows me to conduct large scale evaluations in people's work context for improving Human-AI interaction. For example, I recently built a bayesian network from a massive dataset of 3M records to model personal information and using it to study personalization - privacy trade-off. I have also applied my strong Reinforcement Learning (RL) foundations to modeling human behavior, which positions me well to explore RL-based fine-tuning of LLMs. For instance, I developed a <a href="{{ site.baseurl }}/behavior_modeling" target="_blank">deep RL system</a> from scratch to simulate indoor human behavior and COVID-19 transmission dynamics (code available on request), demonstrating how RL can capture and reason about complex behavioral patterns. The following three broad directions describe my research focus and future vision.
35+
I develop adaptive AI systems that <span style="color:deeppink;">enable people to reason under risk and uncertainty in complex decision-making scenarios</span> by modeling their underlying thought processes and not just their observable behaviors. For example, in education, inferring students' conceptual gaps requires reconstructing their mental models from their learning trajectories, not just identifying surface-level mistakes. I borrow from <span style="color: deeppink">cognitive science and probabilistic machine learning</span> to design AI with experts' mental model to improve Human-AI interaction. By modeling people's latent cognitive states, my methods <span style="color: deeppink">improve reasoning of AI systems beyond observed behaviors</span>, improving overall learning efficiency and accuracy. I bring in strong computational and model building skills from my prior industry experience to build systems for Human-AI interaction and my training in HCI allows me to conduct large scale evaluations in people's work context for improving Human-AI interaction. For example, I recently built a bayesian network from a massive dataset of 3M records to model personal information and using it to study personalization - privacy trade-off. I also have strong Reinforcement Learning (RL) foundations that I have applied to model human behavior, which positions me well to explore <b>RL-based fine-tuning of LLMs</b>. For instance, I developed a <a href="{{ site.baseurl }}/behavior_modeling" target="_blank">deep RL system <i class="fa-solid fa-link"></i></a> from scratch to simulate indoor human behavior and COVID-19 transmission dynamics (code available on request), demonstrating how RL can capture and reason about complex behavioral patterns. The following three broad directions describe my research focus and future vision.
3636

3737
1. <b>Desiging computational models that can understand and improve expert decision-making</b> <span style="color:deeppink;">(AI to critique not obey)</span>: Furthering the design of computational models that can <span style="color:deeppink;">understand and reason about experts' decision processes, and how they reason about and balance principles in their decisions</span>. For example, understanding how instructors balance providing the answer versus guiding students in tutoring scenarios.
3838

_pages/projects.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,15 @@
22
layout: page
33
title: projects
44
permalink: /projects/
5-
description: A growing collection of your cool projects.
5+
description:
66
nav: true
77
nav_order: 3
8-
display_categories: [work, fun]
8+
display_categories: [work]
99
horizontal: false
1010
---
1111

12+
> The projects described here either ended up as production grade software in organizatons, or were used for designing systems as part of publications. Some more will be added soon.
13+
1214
<!-- pages/projects.md -->
1315
<div class="projects">
1416
{% if site.enable_project_categories and page.display_categories %}
@@ -36,6 +38,7 @@ horizontal: false
3638
</div>
3739
{% endif %}
3840
{% endfor %}
41+
More coming soon...
3942

4043
{% else %}
4144

_projects/project_das3h.md

Lines changed: 156 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,156 @@
1+
---
2+
layout: page
3+
title: Implementing the DAS3H model to model student's learning and retention using spaced repetition
4+
description:
5+
img:
6+
importance: 1
7+
category: work
8+
related_publications: true
9+
github:
10+
---
11+
12+
# Modeling Student Learning with Spaced Repetition: Implementing a DAS3H Model
13+
14+
**This post is an accessible guide to implementing the DAS3H model for modeling student learning and memory using spaced repetition techniques.**
15+
16+
---
17+
18+
## 🎯 Motivation
19+
20+
Understanding how students learn and forget is key to designing intelligent educational systems. The **DAS3H** (Difficulty, Ability, Skill, and Student, with 3-parameter Half-life) model provides a principled way to capture the effects of **time**, **practice history**, and **knowledge component (KC)** difficulty on memory retention. It builds on earlier memory models by explicitly incorporating the idea that memory decays over time unless refreshed.
21+
22+
This makes DAS3H particularly suitable for modeling **spaced repetition**—a technique used by apps like Anki and Duolingo—where practice is scheduled to optimize long-term retention.
23+
24+
---
25+
26+
## 🧠 What is the DAS3H Model?
27+
28+
The DAS3H model estimates the probability that a student will recall a given knowledge component (KC) based on:
29+
30+
- **Student ability**
31+
- **KC difficulty**
32+
- **KC-specific retention/forgetting rate**
33+
- **Time since last correct attempt**
34+
- **Practice history (correct/incorrect responses)**
35+
36+
Mathematically, the probability of a correct response is modeled as a logistic function of the log-time since last practice and other parameters:
37+
38+
\[
39+
P(\text{correct}) = \sigma\left(\theta_s - \delta_k + \gamma_k \cdot \log(t)\right)
40+
\]
41+
42+
Where:
43+
- \( \theta_s \) = student's ability
44+
- \( \delta_k \) = KC difficulty
45+
- \( \gamma_k \) = KC-specific forgetting rate
46+
- \( t \) = time since last correct answer on that KC
47+
- \( \sigma(x) \) = sigmoid function
48+
49+
This model assumes **each KC has its own forgetting curve**, which makes it particularly suited to domains where retention rates vary between concepts (e.g., math formulas vs. vocabulary words).
50+
51+
---
52+
53+
## 🛠️ Implementation Overview
54+
55+
Here’s a quick overview of how to implement DAS3H.
56+
57+
### 1. **Data Format**
58+
59+
The input dataset should contain the following fields:
60+
61+
- `student_id`
62+
- `kc_id` (knowledge component)
63+
- `timestamp` of the attempt
64+
- `is_correct` (binary)
65+
- `attempt_number`
66+
67+
Optionally, store time since last correct response per `(student, KC)` pair.
68+
69+
### 2. **Parameter Initialization**
70+
71+
Each KC has its own:
72+
- Difficulty \( \delta_k \)
73+
- Forgetting rate \( \gamma_k \)
74+
75+
Each student has:
76+
- Ability \( \theta_s \)
77+
78+
You can randomly initialize these parameters or use heuristics from early training performance.
79+
80+
### 3. **Training**
81+
82+
We minimize **binary cross-entropy** loss over the predicted vs. actual correctness using gradient descent.
83+
84+
You can use PyTorch or JAX for a flexible implementation. Here's a simplified PyTorch sketch:
85+
86+
```python
87+
import torch
88+
import torch.nn as nn
89+
90+
class DAS3H(nn.Module):
91+
def __init__(self, num_students, num_kcs):
92+
super().__init__()
93+
self.ability = nn.Embedding(num_students, 1)
94+
self.difficulty = nn.Embedding(num_kcs, 1)
95+
self.forgetting_rate = nn.Embedding(num_kcs, 1)
96+
97+
def forward(self, student_ids, kc_ids, log_time_since_last_correct):
98+
theta = self.ability(student_ids).squeeze()
99+
delta = self.difficulty(kc_ids).squeeze()
100+
gamma = self.forgetting_rate(kc_ids).squeeze()
101+
logit = theta - delta + gamma * log_time_since_last_correct
102+
return torch.sigmoid(logit)
103+
```
104+
105+
You’ll need to batch your training data and compute log(t) from timestamps.
106+
107+
## 📊 Evaluating the Model
108+
109+
To evaluate the performance of the DAS3H model, you can use several standard metrics from binary classification tasks, as well as metrics specific to educational data:
110+
111+
- **Accuracy**: Measures the percentage of correctly predicted responses.
112+
- **AUC-ROC (Area Under the ROC Curve)**: Captures the ability of the model to distinguish between correct and incorrect responses.
113+
- **Log-loss (Cross-Entropy Loss)**: Measures the calibration of the predicted probabilities.
114+
- **Mean Absolute Error on Recall Time**: Optional, if you simulate recall prediction over time.
115+
116+
Additionally, you can segment performance by:
117+
- **Time since last attempt** to see if the model degrades reasonably with time.
118+
- **Knowledge component (KC)** to verify KC-specific learning/forgetting curves.
119+
- **Student proficiency levels** to ensure the model generalizes across learner types.
120+
121+
---
122+
123+
## 💡 Insights
124+
125+
Implementing and analyzing the DAS3H model reveals several key insights:
126+
127+
- **Temporal modeling is critical**: Time since last practice is a powerful predictor of recall. DAS3H leverages this directly through the log-time decay term.
128+
- **Different concepts decay differently**: The model learns that not all knowledge components (KCs) are retained equally. Some require more frequent review.
129+
- **Students vary in ability and retention**: The separation of student ability and KC decay rates allows personalization without overfitting.
130+
- **Supports spaced repetition planning**: DAS3H can be used to estimate optimal review times, supporting intelligent tutoring systems that adapt over time.
131+
132+
---
133+
134+
## 🔮 Future Directions
135+
136+
There are many ways to build on and extend the DAS3H model:
137+
138+
- **Meta-learning extensions**: Learn how forgetting rates vary across student profiles to dynamically adjust model parameters.
139+
- **Bayesian DAS3H**: Place priors over student and KC parameters to improve robustness in low-data settings.
140+
- **Item-level effects**: Incorporate question-level embeddings to account for difficulty or bias in specific items.
141+
- **Curriculum planning**: Use predicted recall probabilities to optimize what the student should review next.
142+
- **Active learning for education**: Select the next KC to quiz on based on expected information gain about student knowledge.
143+
144+
---
145+
146+
## 🧰 Related Tools and Libraries
147+
148+
Here are some tools that are helpful for implementing or experimenting with knowledge tracing and memory models:
149+
150+
- [`pyBKT`](https://github.com/CAHLR/pyBKT): A Python library for Bayesian Knowledge Tracing (BKT), suitable for simpler models.
151+
- [`EduMPL`](https://github.com/educational-ml/eduml): Educational Machine Learning library with multi-task learning capabilities.
152+
- [`Torch-KT`](https://github.com/woojihoon/torch-kt): A PyTorch-based framework for implementing knowledge tracing models, including deep KT.
153+
- [`Khan Academy Datasets`](https://www.kaggle.com/c/riiid-test-answer-prediction/data): Useful for large-scale experiments with temporal learning data.
154+
155+
---
156+

0 commit comments

Comments
 (0)