- Get rapid online help via our Piazza discussion forum
- Get in-person help at regular Office Hours
- For personal issues, make a Private Post on Piazza (visible to Instructors and you only)
Quick Links: [Prereqs] [Wait List] [Grading Rubric] [Late Work Policy] [Collaboration Policy]
Course Overview
This course provides the theoretical and computational foundations for probabilistic machine learning. The focus is on probabilistic models, which are especially useful for any application where observed data could be noisy, sometimes missing, or not available in large quantities. We emphasize representing uncertainty with formal distributions and trying to average over these distributions when making decisions (as done in the Bayesian approach).
The course is organized into 4 topical units (each 3 weeks long), which will govern in-class content followed by out-of-class work. In each unit, we will study the following probabilistic models:
- Unit 1: models for discrete data (e.g. next word prediction)
- Unit 2: linear models for regression and generalized linear models for classification
- Unit 3: general directed graphical models and variational autoencoders
- Unit 4: mixture models
We will try to understand all models through a unifying conceptual framework of directed graphical models.
Algorithms studied include:
- closed-form computation of posteriors and point estimates via conjugacy
- optimization of point estimates via gradient descent
- optimization of distributions via variational inference
- optimization via coordinate descent, as in expectation maximization and variational inference
Objectives
After completing this course, students will be able to:
- Demonstrate formal mathematical understanding of probabilistic models.
- Given an applied data analysis task, select a relevant probabilistic model, fit the model on a relevant dataset using an appropriately chosen approximate inference method, and analyze the results.
- Analyze numerical accuracy and stability of common probabilistic ML algorithms (e.g. avoiding overflow/underflow)
- Analyze scalability considerations of common probabilistic ML methods (including runtime and memory complexity requirements).
Prerequisites
This course intends to provide students a solid foundation in statistical machine learning methods.
To achieve this objective, we expect students to be familiar with the following before taking the course:
- Coding in Python with modern open-source data science libraries
- Basic array operations in numpy (computing inner products, inverting matrices, etc.)
- Making basic plots or grids of plots in matplotlib
- Training basic classifiers (like LogisticRegression) in scikit-learn
- Probability theory
- In particular: joint/marginal/conditional distributions, independence, Bayes rule, expectations, discrete probability mass functions and continuous probability density functions.
- Basic linear algebra
- In particular: comfort with matrix/vector products, inverses, and determinants
- Gradient Descent
- e.g. you could code up a simple gradient descent procedure in Python to find the minimum of functions like f(x) = x^2
- Basic machine learning concepts
- In particular: parameters, training data and heldout data, hyperparameters, overfitting, linear regression, neural networks (NNs are only relevant for two days of the course)
Practically, this means having successfully completed at least one and ideally both of:
- Probability Course MATH 165 (Probability) or EE 104 (Probabilistic Systems Analysis) or equivalent outside of Tufts.
- Machine Learning Course CS 135 (Introduction to Machine Learning) or EE143/CS144 (Iterative Methods for Machine Learning) or equivalent outside of Tufts.
With instructor permission, diligent students who are lacking in a few of these areas of coursework could be able to catch-up on core concepts via self study and thus still be able to complete the course effectively. Please see the community-sourced Resources Page for a list of potentially useful resources for self-study.
Enrolling and Wait Lists
Because of the classroom capacity of 48, I expect to be able to add all students on the waitlist to the course. Any students not currently on the waitlist will only be added if enrollment drops below 48. Final decisions on enrolling students will be made September 14, before the ADD deadline.
Attendance
Participation in class is strongly encouraged, as you will get hands-on practice with material and have a chance to ask questions of the instructor, as well as your peers.
We will ocasionally have in-class worksheets which allow us to either assess prior understanding (of a topic we have not covered) or check progress (for a topic we are covering). These worksheets are graded for completeness, not correctness. We intend to provide about 8 worksheets across the semester; your participation grade is determined as \(\max\Big(1, \frac{N_{completed}}{N_{total} - 2}\Big)\) where \(N_{completed}\) is the number of worksheets you complete and \(N_{total}\) is the total number of worksheets administered. Thus you can miss 2 worksheet days and still receive full participation credit.
Instructional material (readings, notes, and watch-ahead videos) will released on the Schedule page at the start of each week. We will record video and audio for the main track of each interactive class session. We will strive to release that video within 24 hours on the Piazza resources page.
Assignments
Each of the course's 4 units will have the following assigned work (in order):
- 1 written problem set (PS), to build math skills (derivation and analysis, resulting in a LaTeX typeset report)
- 1 coding assignment (CA), to build implementation skills (auto-graded Python exercises + a short report of figures and analysis)
- 1 Exam on the unit's material (except for Unit 4, which has no Exam).
Essentially, every week there will be exactly one of either a PS, a CA, or an Exam (see Schedule). For a complete list of graded assigned work, see the Assignments page.
Note that there is a special "first homework" PS0 designed to make sure you have necessary prerequisite knowledge and that you become familiar with LaTeX for math report preparation.
In the last month of the course, there will be an open-ended project that allows you to apply and synthesize your knowledge about probabilistic modeling. Students will work in pairs, and will gain practical experience in selecting, applying, evaluating and improving the models we study in this class in the context of a real dataset.
Exams
In Spring 2025, there will be 3 official exams covering the material of Units 1-3. Each exam takes place 2 weeks after the conclusion of the Unit, to (a) give students time to complete relevant assignments and build their understanding for the upcoming exam and (b) encourage longer-term recall.
On the scheduled final exam date, students will have the option of retaking 1-2 previous exams as a chance to improve your score. If you choose to retake an exam, only the higher score will be kept. If you are content with your exam scores, you do not need to attend the final exam.
Exact policies will be posted a week before the final exam date.
Bonus Topics
Each assignment in Units 1-3 (i.e. PS 1-3 and CA 1-3) will come with a bonus topic. These are bonus problems that expose you to a different topic beyond what we cover in this class. Problem sets will have math-focused bonus topics, and coding assignments will have coding/implementation-focused bonus topics. The topics are:
- Statistics (PS1, Bayesian vs Frequentist Statistical Inference)
- Basic Reinforcement Learning (CA1, Multi-Armed Bandits)
- Inference in Graphical Models (PS2, Belief Propagation)
- Data Privacy (CA2, Differential Privacy)
- Optimization (PS3, Natural Gradient Descent)
- Sampling-Based Inference (CA3, Metropolis-Hastings)
You only need to complete one bonus topic all semester for full credit. You get a 2% final grade boost by completing one bonus topic. The deadline for all bonus topics is Tuesday, Nov 17 so you can return to an early bonus topic later in the course if you want.
Bonus topics are not turned into Gradescope. Instead, bring your solution to Harry's office hours and present/discuss your results. You will have 5 minutes to go over your findings, and he will ask you questions about your work. There are no partial grades for bonus topics: you receive full credit for reasonable effort and demonstrated understanding of the underlying topic, even if you have mistakes present in your work. Students lacking in effort or understanding will be asked to resubmit.
Grading
Final grades will be computed based on a numerical score via the following weighted average:
- 1% problem set 0
- 15% remaining problem sets (lowest score gets dropped; remaining are valued at 5% of your grade)
- 15% coding assignments (lowest score gets dropped; remaining are valued at 5% of your grade)
- 51% exams (17% each, with the opportunity to retry during the final exam block; see Exam policy above)
- 15% project (including final report and intermediate checkpoint reports)
- 3% participation, measured via in-class worksheets (see Attendance policy above)
When assigning grades given a final numerical score (from 0.0 to 1.0), the following scale will be used:
- 0.93-1.00 : A
- 0.90-0.93 : A-
- 0.87-0.90 : B+
- 0.83-0.87 : B
- 0.80-0.83 : B-
- 0.77-0.80 : C+
- 0.73-0.77 : C
- 0.70-0.73 : C-
- 0.67-0.70 : D+
- 0.63-0.67 : D
- 0.60-0.63 : D-
- Below 0.60: F
The highest possible grade of "A+" will be awarded at the instructor's discretion.
Late work Policy
We want students to develop the skills of planning ahead and delivering work on time. To facilitate learning, we also want to be able to release solutions quickly and discuss recent assignments soon after deadlines. On the other hand, we know that this semester offers particular challenges, and we wish to be flexible and accommodating within reason.
With these goals in mind, we have the following policy:
Each student will have 196 total late hours (= 8 late days) to use throughout the semester across all problem sets (PS1 - PS4) and coding assignments (CA1 - CA4).
For each individual assignment, you can submit beyond the posted deadline at most 96 hours (4 days) and still receive full credit. Thus, for one assignment due at Thu 11:59pm ET, you could submit by the following Mon at 11:59pm ET.
This late work deadline is key to our classroom goals. It allows us to always release homework solutions on Tuesday mornings, ahead of the exam for that unit, and lets us discuss the assignment in class soon after without issue.
The timestamp recorded on Gradescope will be official. Late time is rounded up to the nearest hour. For example, if the assignment is due at 3pm and you turn it in at 3:05pm, you have used one whole hour.
Beyond your allowance of 8 late days, zero credit will be awarded except in cases of truly unforeseen exceptional circumstances (e.g. family emergency, medical emergency). Students with exceptional circumstances should contact the instructor to make other arrangements as soon as possible.
Textbook
As a primary textbook, we will use "Pattern Recognition and Machine Learning" by Christopher M. Bishop.
A free PDF is available online from the author:
Other suggested resources can be found on the Resources Page.
Collaboration Policy
Our ultimate goal is for each student to fully understand the course material. With this goal in mind, we have the following policy:
For exams, all work should be done individually, with no collaboration with others whatsoever.
For problem sets and written homeworks (PSs and CAs), we have the following policy for student work:
You must write the text of anything that will be turned in -- all code and all written solutions -- on your own without help from other human or artificial agents. You may not directly share any code or solutions with others, regardless of if they are enrolled in the class or not.
We do encourage high-level interaction with your classmates. After you have spent at least 10 minutes thinking about the problem on your own, you may verbally discuss assignments with others in the class. You may work out solutions together on whiteboards, laptops, or other media, but you are not allowed to take away any written or electronic information from joint work sessions with others. No notes, no diagrams, and no code. Emails, text messages, and other forms of virtual communication also constitute “notes” and should not be used preparing solutions.
When preparing your solutions, you may seek general background knowledge from textbooks, materials on the course website, or existing pages on the web. If you find material on a substantially similar problem to your homework, you cannot use that material; you should instead work out your own solution. Released solutions from past years of this course are generally not available to currently enrolled students; released solutions should never be used in preparation of your homework, however you find them.
If general-purpose material was helpful to you, please cite it in your solution within your "Collaboration Statement".
You cannot ask for direct answers to homework questions via any generative AI or question answering websites such as (but not limited to) ChatGPT, Quora, StackOverflow, etc.
Collaboration Statement
At the top of every turned in problem set (PS) and coding assignment (CA), you must include a collaboration statement with two parts:
- An explicit statement about involvement of other humans, which names any people you worked with, in what way you worked them (discussed ideas, debugged math, team coding), and verifies your work adhered to our collaboration policy. Examples:
- "No other students or staff in the class were consulted."
- "I consulted Marie Curie about the high-level strategy for problem 2a, but I wrote the solution on my own as required."
- An explicit statement about the use of AI tools, such as:
- "No generative AI was used in this assignment"
- "Generative AI was used to review the general concept of linearity of expectations. Otherwise, I came up with all answers and wrote all text as required."
We may occasionally verify that resources mentioned in this statement were consulted as claimed.
Academic Integrity Policy
This course will strictly follow the Academic Integrity Policy of Tufts University. Students are expected to finish course work independently when instructed, and to acknowledge all collaborators and assitive technologies appropriately when consulting such resources is allowed. Submitted work should truthfully represent the student author's time and effort applied.
Please refer to the Academic Integrity Policy at the following URL: https://students.tufts.edu/student-affairs/student-life-policies/academic-integrity-policy
Accessibility
Tufts and the instruction team of CS 136 strive to create a learning environment that is welcoming students of all backgrounds.
If you feel unwelcome for any reason, please talk to your instructor so we can work to make things better. If you feel uncomfortable talking to members of the teaching staff, consider reaching out to your academic advisor, the department chair, or your dean.
Please see the detailed accessibility policy at the following URL: https://students.tufts.edu/student-accessibility-services