Nowadays people love to talk about Artificial Intelligence and Machine Learning. But what do these buzzwords mean exactly?
According to Wikipedia: "In computer science, AI research is defined as the study of "intelligent agents": any device that perceives its environment and takes actions that maximize its chance of successfully achieving its goals. Colloquially, the term "artificial intelligence" is applied when a machine mimics 'cognitive' functions that humans associate with other human minds, such as 'learning' and 'problem-solving'."
Machine learning is part of an AI; it can be described as progressively improve the performance of doing a specific task. This technology can be used in many areas of today's world. For example, recommendation systems can suggest the perfect product or content at the perfect time. There are several aspects of this topic; this article is mostly about deep learning and how Scala can help achieve results more effectively.
So what is deep learning? It is used in the development of computer vision, speech recognition and natural language processing algorithms. An example: hundreds of thousands or millions of input and output pair of pictures are given to the algorithm, and it basically "learns the way" of creating the given output from the corresponding input. Such deep learning algorithm can be a face detection or an object recognition.
"But how does Scala fit into all this?" - you may ask. Python can use the GPU to perform the millions of calculations for a deep learning algorithm, and the programming language has many libraries to support this kind of development. The simple reason is that lots of applications currently in production will most likely need deep learning in the near future. Many of these applications run on Java Virtual Machine (JVM) and Scala is based on this runtime environment. Furthermore, Scala is an excellent choice for developing distributed systems and it can help much in data preparation. A reactive system can scale up big time within a matter of seconds, which is another bonus point for Scala. Software libraries are created constantly for Scala to help implement deep learning algorithms and neural networks.
As mentioned in the title, the future is ahead of us. Many possibilities are in this area of technology and it is in its early stages. It takes time for such an algorithm to learn what it is supposed to do, but when it finish learning, the results are fascinating. Not to mention the process of refining the result, to increase the chance of successful recognition of objects in pictures or speech. This is also time-consuming. But as computers evolve, these things will be part of our daily life without us noticing.