GitHub of the project The program has 4 steps as we can see on the picture.
GitHub of the project This project combines neural networks (NNs) to genetic algorithms, in a 2D car race environnement. Here, NNs don't learn by backpropagation according to their errors. Instead, a lot of agents are "playing" for multiple generations. The best agents are then chosen to be kept in the next generations. This goes for some time until we reach a stage where some agents are capable of fully driving the road without ever crashing. Moreover, they learned to drive faster and faster because the generations had a time limit, so only the fastest agents could be selected for the next generation. The user can select a car to have a deeper view of how the car is driven, as the full neural network architecture will be shown and the decisions in real-time are visible through the neurons' activations and the final output. Made using Python for an easy playing environment setup. No ML library was used, the entire neural network architecture was done from scratch.
For multiple stores of different brands, scraping was done on their respective website and comparison between shelves, so that items of same type were grouped. The project was realised over weeks, so the evolution of the mean prices could be analysed, as seen on the graphs. This allows to find the best supermarket for each type of product one could need, and optimize the global cost of groceries.
This project is able to connect multiple users with each others to communicate while being fully protected from eavesdropping, either from the server or any other player. This was done using java's bouncycastle library and asymmetric encryption, where the client only knows its own private key and communicates the public key to any other client requiring to communicate. The client saves a keystore locally to have its key and any other client's public keys also saved, so it doesn't ask the server anymore.
This project is a fast keylogger running in background and well hidden from the target. Once started for the first time, it will hide in user's machine and make itself auto-run at every startup of the machine. During its lifetime, it will detect all user's keystroke, analyse and rewrite user's final text, for example by deleting the last character when backspace key is hit, or re-positioning the cursor when left and right keys are hit. Every N characters saved, the program will connect to an outside server to send the current dump of text and continues the job.
This project aims to show how different pathfinding algorithms behave when looking for a point on a 2D plan. The plan is drawable by the user manually, or a maze can also be generated by a maze generating algorithm. Once everything is set, the user can choose one of the algorithm and see how it tries to find the target.
This project was done at first to simulate and control a robotic arm around multiple axis of rotations. Once the calculations and algorithms were written, it was then transformed into a writing pen on a board and a soccer player, all controlled by the initial controls of the arm.
GitHub of the project This project is a complete HTTP server from scratch, handling and responding to all requests, following the HTTP protocol. It uses follows a whitelist principle, which makes only hardcoded URIs to be served. These paths are written in a file. For more efficiency in the file retrieval process, the content is encoded in a trie (a tree without repeating previous tokens). For any upcoming request, the program tries to find the URI in it before accepting the request.
Medium of the project This project follows and implements this paper, which presents a method for privacy preserving federated learning, using homomorphic encryption. This kind of encryption allows computations on it. Thanks to that, federated learning principles can continue and weights from all participants are computed together. A very interesting mix of cryptography, machine learning and distributed systems. The program is done in Golang, with one part focused on clients' representation over the network, and one other part on weights packets computation. The actual neural network part is not done in the project, as it should be framework agnostic.
GitHub of the project This project follows and implements this report, which presents multiple techniques for analysing sentiments in a tweet. The entire lifecycle of a ML project is covered, from the data exploration, a baseline method setting, the preprocessing of the data and the word embeddings, up to the different type and architectures of neural networks used in the project. In the end, the highest accuracy of 88% is reached using a transformer (BERT).