Building a State of the Art Bacterial Classifier with Fast.ai and Paperspace
blog.paperspace.com
blog.paperspace.com
I've taken an interest in cytotoxins and cytotoxic therapies lately, and there seems to be a use here to help identify and measure impact of various treatments on the cell lifecycle.
One example is the following which shows the difference in cell lifecycle between untreated cancer cells and those being treated with a 200KHz electromagnetic field ('TTFields'): https://www.youtube.com/watch?v=voVa7Pj2xUg
Presently videos like the above are manually reviewed. However, the timescales and noise of some of these observations seem to stretch human attention quite a bit. The unblinking eye of a neural network might help inform the process, if for no other reason than to help direct human attention to anomalous behavior.
For example, in the above video 'blebbing' is seen as an indicator that the cell has started apoptosis and will subsequently die. This is supported by the overall lack of growth in the culture and the mechanism of action is attributed to tubulin disruption.
However, later analysis shows that the cells actually recover from this state but tend to have corrupted mitosis in the future. This in turn indicated that the mechanism of action may be something else.
This post was the result of a small set of experiments that came out of the Paperspace Advanced Technologies Group. We've been working on some pretty ambitious research projects at the intersection of systems, ML, and HCI, and we were evaluating tools and libraries (i.e. Keras and Fast.ai) that would allow us to prototype concepts quickly. (More on our research approach and project structure coming soon). We found this interesting classification task and used it as a testbed for some small scale testing and the results were pretty cool!
1) It's free 2) Jeremmy is a good teacher and one the library creators.
You could actually replicate all the work in this post after just watching the first lesson, that's how fast you start learning.
In the FastAI course, they use the descending limb of the one-cycle curve to set learning rate cutoffs. So I was expecting to see your final model fit with learning rates between ~3e-4 and ~5e-2. However, you used 1e-6 and 1e-4, basically on the flat portion of the curve. That seemed to work just fine for you.
Am I correct that you didn't follow the standard recommendations for the learning rate from one-cycle, or is there some mismatch with the figure?
I'm also very curious what the performance of some of the newer architectures, i.e. capsulenets would look like.
Ideally, you have a held-out test which the model hasn't seen and only used after model has trained and tuned on the dev and validation sets. Often bad experimental models will repeatedly use the test set in fine-tuning an existing model which may result in your model learning about the test set rendering the test set useless.
In the practice real world results may vary as your training and test data may not represent the actual distribution of the real world data.
In retrospect though it was more to do with me not understanding how to use generator functions to better control memory bloating.