What are typical challenges when training a deep neural networks ⁉️
▪️ Overfitting
▪️ Underfitting
▪️ Lack of training data
▪️ Vanishing gradients
▪️ Exploding gradients
▪️ Dead ReLUs
▪️ Network architecture design
▪️ Hyperparameter tuning
How to solve them 👇
Overfitting 🐘
Your model performs well during training, but poorly during test.
Possible solutions:
- Reduce the size of your model
- Add more data
- Increase dropout
- Stop the training early
- Add regularization to your loss
- Decrease batch size
Underfitting 🐁
You model performs poorly both during training and test.
Possible solutions:
- Increase the size of your model
- Add more data
- Train for a longer time
- Start with a pre-trained network
Lack of training data 🤷♂️
Deep learning algorithms are hungry for data compared to classical ML methods.
Possible solutions:
- Get more data (😂)
- Use data augmentation
- Use a pre-trained network and fine tune for your problem
- Try transfer learning
Vanishing Gradients 📉
During training the gradients in the first layers become small or 0. Learning is slow or the net doesn't learn at all.
Possible solutions:
- Use ReLU, which doesn't saturate in the positive direction
- Add residual/skip connections
- Batch normalization
Exploding Gradients 📈
Gradients become too big, training is unstable.
Possible solutions:
- Decrease the learning rate
- Use saturating activation functions, like sigmoid or tanh
- Gradient clipping
- Batch normalization
Dead ReLUs 😵
When using ReLU as activation function, a large gradient can knock off the weight of certain neurons so that they output 0 for all input data. They become useless.
Possible solutions:
- Decrease learning rate
- Use Leaky ReLU, ELU or some other variant
Network Architecture Design 🕸️
What and how many layers? How many neurons? Designing a network architecture may not be trivial.
Possible approaches:
- Find existing architectures for similar problems
- Trail and error
- User Network Architecture Search (en.wikipedia.org/wiki/Neural_ar…)
Hyperparameter Tuning 🔧
Finding the right hyperparameters for your problem is not easy.
Possible approaches:
- Check out existing parametrizations for similar problems
- Inspect your data and play around
- Grid search
- Bayesian optimization
- User Auto ML
If you wan to get better at training neural networks, this article by @karpathy is a must read!
This is my answer to my question in the Tweet below. This list is no complete, so make sure you also check out the replies below. There are many other very interesting answers!
Self-driving car engineer roles - Big Data Engineer 💽
Self-driving cars have lots of cameras, lidars and radars. Waymo currently has 29 cameras on a single vehicle! The cars generate huge amounts of data, easily more than 1 GB/s. This data needs to be processed...
Thread 👇
Problems to work on 🤔
The big data engineer needs to design and implement efficient storage and data processing pipelines to handle such large amounts of data.
The data also needs to be made available to the developers in a way that they can efficiently get to what they need.
Data 💾
Imagine that the self-driving car is recording data at a rate of 1 GB/s. Going on a test drive for 4 hours means that you'll collect more than 14 TB of data!
There are specialized loggers that can handle such rates, like this beast for example: vigem.de/en/content/pro…
Self-driving car engineer roles - Computer Vision Engineer 👀
The camera is one of the most important sensors! It is not always the most accurate one, but it can provide much more data than a lidar or radar. Extracting this data is the job of the CV engineer.
Thread 👇
Problems to work on 🤔
Here some typical object classes that need to be detected and classified.
🛑 Traffic signs
🚦 Traffic lights
🚘 Vehicles
🚶 Pedestrians
🦌 Animals
🛣️ Lane markings
🏔️ Landmarks
🚧 Construction zones
🧱 Obstacles
🚔 Police cars
Distance estimation 📏
Detecting an object is not enough, though. You also want to know how far the object is from the car. While the detection part is dominated by deep learning, the traditional CV methods (e.g. Kalman Filter) are still very useful for distance estimation.
Self-driving car engineer roles - Software Engineer 💻
There are many specialized roles in a self-driving car project, like ML or CV engineers. However, every projects needs lots of good software devs - you can enter the industry even without specific knowledge!
Thread 👇
Problems to work on 🤔
Some problems that software developers work on to build a self-driving car (the list is not exhaustive):
- HMI
- Operating system
- Logging and tracing
- Communication between ECUs
- Internal frameworks and libraries
- Implementing diagnostic interfaces
Software engineers also work closely with many of the more specialized roles.
For example with Machine Learning engineers to implement models on the ECU or with Vehicle Control engineers to get their algos working efficiently.
Some interesting self-driving news lately:
- Waymo launching test fleet without safety driver
- Tesla launching a beta of their Full Self-Driving
- Mercedes announcing a level 3 traffic jam pilot for 2021
There are 3 very different approaches 👇
1️⃣ "Everything that fits" approach.
This is Waymo's approach, but other companies like Cruise, Argo, Aurora, Uber, Zoox have a similar strategy.
Fit as much sensors as possible on the car, build high-definition maps of the environment and throw in lots of compute power.
Check out some images of these cars - they all have multiple lidars, cameras and radars all around the car. Waymo now has 29 cameras! 😲
They are not really integrated in a consumer oriented way, but it should be fine for a robotaxi.