Citation
All the images in the post are owned by the respective owners/creators/authors.
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
– 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
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.
Author: Mani Sarkar
I have been posting articles on the Java Advent calendar for some years.
A passionate developer mainly in the Java/JVM space, based out of London, UK. A JCP Member, OpenJDK contributor, involved with LJC and other developer communities, @adoptopenjdk and other F/OSS projects. Writes code, not just in Java/JVM hence likes to call himself a polyglot developer. He sees himself working in the areas of core Java, JVM, JDK, Hotspot, Graal, GraalVM, Truffle, VMs, and Performance Tuning. An advocate of a number of agile and software craftsmanship practices and a regular at many talks, conferences and hands-on-workshops – speaks, participates, organises and helps out at many of them. Expresses his thoughts often via blog posts, microblogs (tweets) and other forms of social media.
—–
Twitter: @theNeomatrix369
Slideshare: http://www.slideshare.net/neomatrix369/
—–
6 Pingbacks