Since I started posting images from my own machine learning work, I’ve gotten a lot of questions about how to get started. So here’s what I know.
These are my recommendations to jump right in and start learning
Machine Learning is a huge field, and each artist will have aspects they’re interested in and stuff they are less interested in. For me I’m mostly interested image processing and other visual outputs. That means I’m less interested in the performance, text generation, and classification genres. If that doesn’t interest you at all I still think the TL;DR resources are your best bet, but you may not like my deeper dive. I’ll try to mention if things go deeper into these areas I’m not interested but take my experiences with them with a grain of salt.
The other important consideration is the order in which I took each course. I may have found certain courses boring because I learned much of the material in a previous course. I may have loved a certain course because I hated the course I started right before it (and vice versa). I’ll try to be self-aware when possible, but reader beware.
Finally, a note about my coding knowledge. I’d consider myself an intermediate level coder at best. I certainly know enough to get myself in over my head, but seeing large blocks of code doesn’t scare me. If you can understand loops, functions, and objects I think you’ll be ok with most of the resources I list. I’ll also try to highlight courses that do a good job of explaining ideas intuitively and not just with code samples thrown at you (believe me there are a lot that are just that and they suck).
Machine Learning often sounds scary because it requires a lot of computational power. And while that’s true of certain areas of ML, its not true of everything. If you’re looking into using Word2Vec or other NLP type of things you don’t actually need a crazy gaming laptop. But if you’re working with imagery you will probably need to find a fast PC or use a server in the cloud.
Personally, I am very fortunate to have a friend who has offered to let me use a GPU server he owns. I often use it for small tests or experiments. Sometimes, however, I do need more power or something state-of-the-art. In these cases I use Paperspace (disclosure) I use the Ubuntu P5000 box—if you want to use the same you just need to select those configurations and then message Paperspace with your project idea so they can whitelist you to use it. It is expensive, so take care to make sure you turn it off when youre done with it.
On the software side, you should be comfortable using basic terminal commands, including using ssh and the like. To be honest I google a lot of what i don’t know and usually end up finding what I need. Knowing Python is a big plus, but a lot of the resources below will cover the exact code you need to know.
3Blue1Brown Neural Networks Series
If you’ve never seen a 3Blue1Brown video, stop reading this and go there now. 3B1B videos provide some of the best visual explanations of mathematic concepts I’ve ever seen, and his series on Neural Networks is no exception. There’s no code here, but if you’re still wrapping your head around neural nets and how they work—and you’re more of a visual learner like me—this is a great place to start.
SFPC Machine Learning Literacy Workshop
Sorry, there’s no video or materials available from this workshop I was a part of in Winter 2018. I want to mention this in case they run it again—of you see it come up again I can’t recommend it enough. SFPC is a great org and this was an amazing opportunity to hear from people in the field like Allison Parrish, Hannah Davis, and Gene Kogan (a few of these names will re-appear here). While there’s no materials here, I did pin a vast collection of notes from the week, most of which I’m still digging thru. And my colleague Naoto wrote about the week.
ML4A (Machine Learning 4 Artists)
ML4A is the best encapsulation of the whole topic. Its overseen by Gene Kogan and contains an (almost finished) book, individual articles, videos, code samples, and links to a slack channel (drop in and say hi!). It is an amazing survey of the major areas of art and machine learning. I recommend watching a few of his videos to get a sense of the various practices available to you and then diving into a project you’re particularly interested in. It’s a strong place to start without feeling overwhelmed with math and data science, but once you get deep into a topic you might need to look elsewhere for more fine grained help.
Deep Learning and Computer Vision A-Z™: OpenCV, SSD & GANs
I watched this a few months after the Machine Learning Literacy course. The intuitions were really helpful at expanding my knowledge in key technical areas. The parts on convolution kernels remain one of the best explanations I’ve come across. I personally found the code exploration moved too quickly and didn’t contain a lot of explanation. Since this covers OpenCV, SSD, and GANs its really geared toward people interested in the image side of machine learning.
Fast AI Deep Learning for Coders, Part 1
Fast AI is a series of classes organized and run by Jeremy Howard and Rachel Thomas. The way they organize their classes is a little different from traditional classrooms. They start by showing you a project you can run immediately then work backwards and break down individual pieces of the code. I personally find this much more engaging than, say, the Stanford approach which builds up tiny little theories and then at the end shows you how to put them all together. It’s a much more “production-first” approach and one I think will work better for artists who want to start making. Each class is about 3 hours long and very info dense (I made 1.5x videos of each and loaded them on my phone to watch during my commute). Part 1 is focused on the basics of Deep Learning—you’ll more likely get more out of Part 2 as they talk about more artist-friendly concepts, but you’ll need Part 1 to make sense of Part 2.
Fast AI Deep Learning for Coders, Part 2
The second part of this class is more of a survey of Deep Learning techniques than a deep dive into the entire process. It assumes you have watched Part 1 and understand many of the concepts. I found this class to be less engaging than Part 1, although it did cover more of the topics I’m engaged in. Some of this comes from the fact that Jeremy isn’t an expert in many of these topics, so he often is trying to explain the papers and concepts but doesn’t show tricks to improve them. It’s still a great course, but I might recommend the ML4A classes as a better survey and the A-Z course as a better deep dive into a few of the concepts covered by this course.