Two years in the life of AI, ML, DL and Java

Citation

All the images in the post are owned by the respective owners/creators/authors. This post is a re-blog of my @JavaAdventCalendar post from https://www.javaadvent.com/2018/12/two-years-in-the-life-of-ai-ml-dl-and-java.html.

Introduction

AI, ML and DL are acronyms for Artificial Intelligence, Machine Learning and Deep Learning.

Now back to what I was going to write about. If you ask me, I’ll already admit that I have NOT even scraped the surface of these topics. What I share here is a glimpse of what’s out there and each one of you might have discovered many more aspects of these topics as part of your daily professional and personal pursuits.

One of my motivations of putting this post and the links below together comes from the discussion we had during the LJC Unconference in November 2018, where Jeremie, Michael Bateman and I along with a number of LJC JUG members gathered at a session discussing a similar topic. And the questions raised by some were in the lines of where does Java stand in the world of AI-ML-DL. How do I do any of these things in Java? Which libraries and frameworks to use?

AI-ML-DL and Java and their outreach

Another confession, I didn’t spend too much time trying to gather and categorise these topics, thanks to Twitter and the Internet for helping me find them and use them. I hope whatever content has been put together here quantifies to more than the answer to the above questions. And in case you feel further improvements can be made to the content, categorisation, layout, please feel free to contribute, you can start by visiting the git repo and creating a pull request. Please watch, fork, start the repo to get updates of the changes to come.

Here’s a number of resources shared in the last two years (circa), categorised as best I could:

Business / General / Semi-technical

Classifier / decision trees

Correlated Cross Occurrence

Deep learning

Genetic Algorithms

Java projects/technologies

Natural Language Processing (aka NLP)

Neural Networks

Recommendation systems / Collaborative Filtering (CF)

Tools & Libraries, Cheatsheets, Resources

How-to / Deploy / DevOps / Serverless

Misc

Due to a large number of the links gathered, not all of them could be shown here and so I have created a git repo and to host them on GitHub, where you will find the rest of the links. Once again pull requests are very welcome.

From my several weeks to few months of intense experience I suggest if you want to get your hands dirty with Artificial Intelligence and it’s off-springs [2][3], don’t shy away from it, just because it is not Java / JVM based. It’s best to start high-level with whatever you have and when you have understood the subject enough to try to apply them in the languages you are at home with, be that Java or any other JVM language you may know. I’m not claiming I know them, but merely sharing my mileage.

One of the things we came up during our discussions was that AI, ML and DL have strong contributions from academia and they use tools and languages best known to them and sometimes most appropriate for the task in hand.

Follow the community and the tools that drive the innovation and inspiration, to become better at the subject of choice. In this case, it applies to Artificial Intelligence and its variants [2][3].

Quick shoutouts

Firstly, to @java for sharing many AI, ML, DL related resources with the wider community. And also to organisations like @skymindio (https://skymind.ai/) who are doing an awesome job in bridging the gap between the Java/JVM and AI/ML/DL worlds.

Also, would like to thank the good folks (Helen and team) behind the ML Study group in London — supported by @RWmeetamentor, who have been working hard to bring everyone together to learn ML and related topics. They may have even very indirectly influenced me to write this post. wink, wink

Summary

So to sum up, our discussion at the LJC Unconference 2018, we mentioned other languages like Python, R, Julia, Matlab and the likes, contribute more to AI, ML and DL than another programming language.

I know it is not going to make me popular by saying this but my humble request to all developers would be that not to think or expect everything possible from a single programming language. Any language and in the context of this post, Java and other JVM languages are meant and written for a purpose and no doubt we can replicate efforts made in other languages in Java/JVM languages. But at the end of the day they should all be treated as tools and be used where appropriate.

I hope the little shared in this post still will help inspire the Java / JVM community especially those who have strong interests in topics like Artificial Intelligence, Machine Learning and Deep Learning.

Please keep an eye on this space, and share your comments, feedback or any contributions which will help us all learn and grow to @theNeomatrix369, you can find more about me via the About me page.