Description:
In our current social climate, the field of machine learning has been positioned as something on the forefront of scientific and technical advancement, as a way to interact with computers that is somehow beyond any kind of human understanding. Though there is beautiful and challenging technical work taking place at the frontiers of mathematical modeling and machine learning, this course seeks to challenge some of this mystique around the field. In fact, we claim that from the point of knowing nothing at all about coding or mathematics beyond algebra, a student can come to understand the basic mechanisms behind modern machine learning algorithms and learn how to build small versions of these algorithms within a semester.
We begin with the basics of the programming language Python, describing how to install software, write and run code, work with loops and functions, and build off the work of others in the community using packages and the careful reading of documentation. We then apply this knowledge of Python to building of an early machine learning algorithm known as the Perceptron, which learns how to distinguish between two types of objects that it is given.
We then broaden our goal to building a more flexible, accurate, and powerful machine learning algorithm using the principles of multivariable gradient descent. A detour though the basics of calculus and linear algebra show us the mathematical frameworks that we will be using and why applying them carefully can give us a process that 'teaches' a computer the right mathematical approximation for a problem. We learn about neural networks, build a small version from scratch, and learn about packages that help us create fast and simple neural networks to use in machine learning.
Finally, we briefly discuss the ways in which chaining together machine learning algorithms and altering the way we train them give rise to the many complex computer learning systems that are pervasive today. We see the many human decisions that need to be made when designing such algorithms and the many issues that can lead to (in both the short and long term) its breakdown and innacuracies.
Background Needed:
Basic computer skills needed, including the ability to do research on the internet. No prior coding background necessary. High school algebra and familiarity with functions and graphs strongly recommended.
Soft Skills Learned Along the Way:
Coding in python, basics of single and multivariable calculus, basics of linear algebra, data cleaning and evaluation.
Disclaimer:
Parts of the content of this course has been simplified or given in slightly less generality than possible for the intended audience. This course has been built from several sources, including Charles Severance's Python for Everybody, Diesenroth et. al.'s Mathematics for Machine Learning, and Gilbert Strang's Calculus. These sources will provide a more accurate and formal treatment of the material covered.
This page contains materials originally designed on a Canvas site. Some references to this remain.
2.1.1: Introduction to Gradient Descent (No Code)
2.1.2: Introduction to Set Theory and Functions (No Code)
2.1.3: Limits of a Function (No Code)
2.1.4: Continuity (No Code)
2.1.5: The Derivative and Linear Approximation (No Code)