Two Years In The Life of AI, Machine Learning, Deep Learning and Java

Where does Java stand in the world of artificial intelligence, machine learning, and deep learning? Learn more about how to do these things in Java, and the libraries and frameworks to use.



By Mani Sarkar, Java champion, polyglot, software craftsperson.

What I share here is a glimpse of what’s out there and each one of you might have discovered many more aspects of Artificial Intelligence, Machine Learning, and Deep Learning as part of your daily professional and personal pursuits.

One of my motivations for 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
– Extract business value from DS (Tweet)
– Why Java and the JVM Will Dominate the Future of Machine Learning, AI, and Big Data (Tweet)
– Machine Learning Made More Accessible During Businesses’ Learning Curve (Tweet)
– (more links)

Classifier / decision trees
– Email Spam Detector java Application with ApacheSpark (Tweet)
– Guide to Artificial Intelligence: Automating Decision-Making (Tweet)

Correlated Cross Occurrence
– Multi-domain predictive AI or how to make one thing predict another (Tweet)

Deep learning
– Deep learning with java (Tweet)
– Free AI Training – Java-based deep-learning tools to analyze and train data, then send the resulting changes back to the server (Tweet)

Genetic Algorithms
– Jenetics is an advanced Genetic Algorithm, respectively an Evolutionary Algorithm, library written in java (Tweet)

Java projects / technologies
– Project Panama and fast MachineLearning computation (Tweet)
– GraalVM + Machine Learning (Tweet)
– Deploying Bespoke AI using fnproj – KADlytics by Miminal (Tweet)

Natural Language Processing (aka NLP)
– An introduction to natural language processing and a demo using opensource libraries (Tweet)
– Implementing NLP Attention Mechanisms with DeepLearning4J (Tweet)
– How Stanford CoreNLP, a popular Java natural language tool can help you perform Natural Language Processing tasks(Tweet)
– FREE AI talk on Natural Language Processing NLP using Java with deeplearning4j (Tweet)

Neural Networks
– Introduction to Neural Network Architectures (Tweet)
– Neural Networks explained by MIT (Tweet)
– Implementing an Artificial Neural Network in Pure Java (No external dependencies) (Tweet)
– (more links)

Recommendation systems / Collaborative Filtering (CF)
– Tutorial on Collaborative Filtering (CF) in Java – a machine learning technique used by recommendation systems(Tweet)

Tools & Libraries, Cheatsheets, Resources
– Best AI tools and libraries (Tweet)
– Cheat Sheets for AI, Neural Networks, MachineLearning, Deep Learning & Big Data (Tweet)
– Overview of AI Libraries in Java (Tweet)
– (more links)

How-to / Deploy / DevOps / Serverless
– Learn how to deploy and manage machine learning models (Tweet)
– How to prepare unstructured data for BI and data analytics AI and MachineLearning (Tweet)
– Machine Learning Model Deployment Made Simple: 1 2 (Tweet)
– (more links)

Misc
– Introduction to interactive Data Lake Queries (Tweet)
– A Simple Introduction To Data Structures (Tweet)

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

First, 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, I 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.

 

Original. Reposted with permission.

Bio: Mani Sarkar is a Java champion, polyglot, software craftsperson through @adoptopenjdk, @graalvm, and @truffleruby. Mani is also involved in the developer communities, #containers, #DevOps, #AI #ML #DL, as well as a speaker and blogger.

Related: