Despite the media’s best efforts to declare the end of human doctors, it’s becoming evident healthcare professionals are integral to bringing about the AI revolution in the medical field. A deep understanding of medicine and medical systems are imperative to designing clinically relevant studies and to inform subsequent application in healthcare settings. Where many studies are very well exciting and interesting, careful thought is required if the goal is to move towards practical application.
An illustration of this comes from the paper ‘CheXNet: Radiologist-Level Pneumonia Detection on Chest X-Rays with Deep Learning’. (Check out this in depth analysis by radiologist Dr Oakden-Rayner). While the paper did not explicitly make this claim, a tweet from one of the authors particularly highlighted the necessity of medical input to AI research in the medical field.
On the contrary to this hefty claim, pneumonia is not a diagnosis that can be made on a chest x-ray alone. Diagnosis requires clinical information such as history, physical exam and laboratory tests due to the nonspecific appearance of pneumonia on imaging. Furthermore, the data is labeled with separate categories for consolidation, infiltration and pneumonia which in reality are not distinct diagnostic entities. To have separate categories for these just doesn’t make sense when consolidation is simply a way of describing airway opacification as may be seen in pneumonia. My point is not to criticise the paper, it’s exciting that people are working with large medical datasets and looking towards clinically relevant tasks, but rather to stress the importance of the input of medical experts in such research. Of course if I’m claiming such research needs more medical input, in turn the medically trained need a reasonable depth of understanding regarding the technicalities of artificial intelligence in order to effectively contribute.
This can be a fairly daunting task if you’ve never programmed before. I’ve had many people say things to me like “I could never do that” or “I just don’t know where to start”, demonstrating just how mysterious the skill of programming is to many of us. I’m quite new to deep learning myself but as I’ve recently undertaken the task from no programming experience to implementing deep learning models, I hope I’m well positioned to provide some guidance on how to go about it to those approaching it from a similar lack of programming experience.
To start with, let’s outline some key terms. A lot of buzzwords are flung around in the media interchangeably, but there are some important distinctions. The term Artificial Intelligence simply refers to techniques that allow computers to mimic human cognition. It’s not a particularly specific term and as such is used in a nebulous, diverse manner. Machine learning is a subset of AI and uses statistical methods to allow machines to receive a set of training data and modify algorithms to learn to make predictions about test data. Similarly, deep learning is a subset of machine learning that relies on artificial neural networks (ANN). Nodes of the network are interconnected in a way often compared to the neurons of a brain, particularly useful for interpreting data such as images, sound and text. An ANN takes input data, performs a series of functions on it before spitting out a prediction. For example, you may have a dataset of chest x-rays and want to predict whether there are findings suspicious for cancer. When you first start training, the model will be rubbish, no better than chance. However, with each iteration the ANN compares its prediction with the actual diagnosis and updates its functions slightly, becoming a little more accurate. After having done this process potentially many thousands of times it hopefully will have started to get a reasonable level of accuracy at detecting lung cancers.
This hierarchy of definitions also provides a useful framework to approaching the development of skills to implement deep learning for medical problems. We start with generic AI, that is, learn the basics of python to write code that can do something that seems somewhat intelligent (even if it is simple). Once you’re comfortably coding in Python you can move to learning about machine learning models and how to use packages useful for these applications. Next, take a dive into the deep learning world to understand the concepts behind neural networks. The current most popular package for this is called PyTorch. Ultimately, the absolute best way to develop these skills is to find a project that interests you. It’s significantly more motivating to be invested in the outcome of your efforts and there’s no better way to learn how to do something than just doing it!
Basics of Python
Start off with an online course to learn the basics of Python. Then choose a couple of simple projects, gradually increasing their complexity, to implement the skills you’ve picked up so far.
Pandas is a Python package particularly useful for machine learning applications. One of the most popular first introductions to machine learning is a project based on the Titanic. With demographic data about passengers you learn to use Pandas in order predict the likelihood of survival of individuals on the Titanic. www.kaggle.com
I started off by learning the underlying concepts of deep learning with Stanford’s CS231n course ‘Deep Convolutional Neural Networks for Image Recognition’. All the lectures and assignments are publicly available to go through at your own pace.
PyTorch, as mentioned earlier, is a useful package for deep learning purposes. This is the part of the process I found the most difficult with my limited programming experience and hence will be the primary focus of future posts.
Apply it to a problem that interests you
Finally find a project that interests you to tie it all together.