Machine Learning (ML)

Machine Learning (ML) is a field of computer science which makes computers able to learn without being programmed explicitly.

Machine Learning is typically used with large datasets and computers are allowed to find patters, make predictions based on that data.

Types of Machine Learning Algorithms

  • Supervised Learning
  • Unsupervised Learning
  • Reinforcement Learning

In Supervised Learning, a specific attribute for a dataset is available. However that attribute is not available for rest of the datasets. Computer is expected to learn the datasets and find out or predict the lable for remaining datasets.

In Unsupervised Learning, no attribute or relationship about the dataset is available and computer is required to find that out.

Reinforcement Learning is somewhere in the middle of these two.

Machine Learning and Artificial Intelligence are closely related to each other. In fact, ML is part and essence of Artificial Intelligence. In Artificial Intelligence machines need to act smarter, which in itself involves lot of learning which we understand as Machine Learning.

Classification and Regression are two important parts of ML. In Classification, the dataset (files, objects, text data etc) are classified based on various observations about that dataset. Whereas in Regression, some prediction is made based on the observations about the dataset.

Examples Of ML:

  • Spam filters – spam filters train themselves to learn if a given email is to be classified as spam or not. Their learnings improve as they filter more and more emails. Spammers keep on trying to get past the filters and filters keep on learning to block spammers.
  • Recommendation Engines – based on your past history with a website, Machine Learning Algorithms can start predicting what will you do next – which essentially is a recommendation. Amazon pioneered in this field based on the huge amount of data they collected over a period of time.

Reference Links:

 

NLP (Natural Language Processing)

NLP i.e. Natural Language Processing is a field of computer science that deals with human languages and computers. Natural Language means languages that humans speak – English, Hindi, Japanese, Marathi etc, whereas artificial languages are C++, Java, PHP etc.

As computers evolved, humans were made to “speak” to computers in that language that computers understood. NLP is exactly opposite and hence is very complex. Human speech is not always precise and accurate and also keeps on changing (e.g. slang words). Humans are trying to program computers to learn and understand human languages. This field deals with the problems and providing solutions in this field.

Why NLP is important?

With the progress made in Artificial Intelligence, it is becoming important that machines understand and learn human languages. This will make interaction between humans and machines very productive. Also, it will help in taking the AI to masses and bring benefits to the human kind. NLP forms the core of progress in this direction.

NLP has several areas which are very complex, yet good progress has been made in those areas.

  • Speech to text
    • Understand the language and translate it correctly into text.
  • Optical Character Recognition
    • Identify written characters and convert them in computer understandable format to process further.
  • Question and Answers
    • Program machines to understand Questions and provide accurate answers which humans can understand.
  • Sentiment Analysis
    • Process large data and understand the emotions expressed in that data
  • Machine Translation
    • Automatically convert text from one human language to other human language

General History of NLP dates back to 1950. Since then various research and development has resulted into various algorithms which are helping machine learn faster and better. With advent of Cloud, innovations in NLP has resulted into several APIs available for NLP:

  • IBM Watson
  • Amazon Lex
  • Google Cloud Natural Language API
  • More

Reference Links:

Related Keywords:

Automatic Speech Recognition, Speech to Text, Machine Learning, Sentiment Analysis

Application Areas:

Search Engines, Fraud Detection, Sentiment Analysis, Bio-Medical field, Forensic Science and many more

 

Cryptocurrency

In simple terms, Cryptocurrency is digital currency that  uses cryptography to ensure security and to regulate the generation of currency.

Examples of Cryptocurrency:

Click here for full list

Blockchain forms the basis of the Cryptocurrency. In Blockchain, the data is stored in verifiable and non-tamperable chain of blocks. This data is stored in a decentralized format i.e. it is stored on multiple computers across the globe. As a result, unavailability of one computer doesn’t stop one from verifying the chain.

Cryptocurrency was invented with the need to have a decentralized system to manage / transact currency. People can use this currency using public key and private key pairs to make a transaction. The transaction is stored using blockchain technology, also referred as ledger. Due to it’s distributed nature and encrypted format, it is very difficult to tamper these transactions.

The algorithm used to generate the Cryptocurrency typically allow a finite sum of currency to be generated. This is different from physical currency which is controlled by governments and federal banks of various countries.

Even if strong encryption techniques have been used, cryptocurrency is not yet fully safe from theft or hacking attempts. Bitcoin itself has seen the theft of cryptocurrency multiple times. However, this technology still gives hope to many observers and experts to have a transportable currency which is outside the influence of governments and central banks across the world.

Exchange value of the cyrptocurrency is also determined by demand and supply. To facilitate the exchange of these currencies, several exchanges are now available across the globe.

Legal status of these currencies varies widely across the globe. Some countries have acknowledge its existence similar to property asset while some have banned. It would take few more years to have wide acceptability of this currency across the world.

Related Links:

Related keywords:

Cryptography, Bitcoin, Litecoin, Namecoin, Digital Currency

REST

Representational State Transfer or REST is a style of architecture in software and has been very popular in recent times. It allows developers to define web services which could accessed using URI (Uniform Resource Identifiers) and some standard verbs such as GET, PUT, DELETE, POST.

This is a stateless implementation of web services where server doesn’t maintain the state of the operations. However, client can retain the state through the session and same could be passed on by the server to other components, if required. The clients request the URL along with the operation and server sends out the response using a standard and well-defined format.

The client requests each resource using URI and represents the action required on the resource using standard verbs. This results in moving the action from URL to HTTP request method. The response could be XML, JSON or any other defined format.

REST
REST – Source – https://www.slideshare.net/david.krmpotic/rest-david-krmpotic

Characteristics of REST:

  • Client – Server Architecture
  • Statelessness
  • Cacheability
  • Layered System
  • Uniform Interface

Another popular choice in this category is SOAP (Simple Object Access Protocol) which is dependent on XML for request and response. Such protocol turns out to be heavy for several applications and in those cases REST is a right choice. SOAP provides built-in error handling, which makes life easy for developers. REST does not have any defined standard and hence there is no well defined way for built-in error handling. SOAP provides clear definitions of the web service using WSDL (Web Services Description Language), whereas there is no such thing in REST architecture. It is pretty much driven by the implementation team.

Since there is no “official” standard for RESTful web APIs, this is referred as architectural style and not “standard” or “protocol”, unlike SOAP.

Related Keywords

SOAP, Software Architecture

Reference Links:

Microservices Architecture

As the name suggests, Microservices Architecture bundles multiple smaller, independent and clearly scoped services together. One can deploy these services independently and they can interact with each other through well defined APIs. This improves the maintainability and scaling of the overall architecture.

While designing a microservice, one should consider end-to-end business capability as criteria and not size of the service. If this breaking of overall functionality into smaller services is not done correctly, it leads to dependent services. It in turn results in loss of inherent advantages of this architecture.

Advantages of Microservices Architecture:

  • Separate teams can maintain each service separately. This brings faster turn around by the teams as they have very clear and well defined scope and gives them full control over deliverable.
  • It is very easy for developers to make changes to one service without affecting other services as long as the intercommunication protocol is maintained. This gives much required independence to the development teams and brings in accountability to maintain their own work.
  • Only a single service or a set of services could be scaled up if business needs. This avoids a single portion of software becoming a bottleneck as is the case with monolithic architecture.
  • Improved fault tolerance. In case any service fails, others can continue providing rest of the services, resulting in higher availability. e.g. If movie recommendation service fails, streaming service or category browsing service can continue.
Microservices Architecture
Microservices Architecture – Source – http://microservices.io/patterns/microservices.html

Drawbacks:

  • If services depend on each other, they could introduce bottlenecks and thus failure of overall architecture. Services need to use other services and fault tolerance needs to be built-in.
  • Since each service is a separate process, they need to communicate with each other over network, adding to the latency. System architects need to consider this aspect while developing services that need very fast response times.

Reference Links:

Related Keywords:

Monolithic Architecture, Cloud