
Acknowledge the libraries and papers that enable federated learning, including decentralized data and average-based methods, and thank the authors, code repositories, and cloud resources that support this course.
Explore the core deep learning concepts, including neural networks, parameters, weights, bias, activation functions, and forward and backward propagation, with practical notes on gradient descent, mini-batches, normalization, and dropout.
Build a single-layer neural network in PyTorch with one neuron by computing the dot product of inputs and weights, adding bias, and applying the sigmoid activation.
Explore how PyTorch autograd builds a computational graph, performs forward propagation, then backward propagation to compute gradients and guide loss minimization.
Load the MNIST dataset using PyTorch and torchvision, apply transforms including normalization, configure a data loader with batch size 64, and iterate over images and labels.
Automate the training phase by looping over multiple epochs and all batches, performing forward propagation, computing loss, and updating weights via backward propagation and optimizer steps.
Learn to prepare MNIST data for federated learning in an IID setting by randomly distributing 60k images across clients with non-overlapping indices and a fed data set for training.
Explore how to load MNIST in a non-IID, unbalanced federated setting, allocate class indices to clients, balance distributions, and handle edge cases with random class allocation.
Tackle federated optimization in heterogeneous networks using FedProx, adding a proximal term to updates to handle system heterogeneity and non-identically distributed data, improving accuracy beyond FedAvg.
The course starts by introducing you to the main concepts in Neural Networks (NN) and how do they work. Then we will implement a NN from scratch using Pytorch. After that, a quick introduction to Federated Learning architecture. Then, we will start by loading the dataset on the devices in IID, non-IID, and non-IID and unbalanced settings followed by a quick tutorial on PySyft to show you how to send and receive the models and the datasets between the clients and the server.
This course will teach you Federated Learning (FL) by looking at the original papers' techniques and algorithms then implement them line by line. In particular, we will implement FedAvg, FedSGD, FedProx, and FedDANE. You will learn about Differential Privacy (DP) and how to add it to FL, then we will implement FedAvg using DP. In this course, you will learn how to implement FL techniques locally and on the cloud. For the cloud setting, we will use Google Cloud Platform to create and configure all the instances that we will use in our experiments. By the end of this course, you will be able to implement different FL techniques and even build your own optimizer and technique. You will be able to run your experiments locally and on the cloud.