Any sufficiently advanced technology is equivalent to magic.
-Sir Arthur C. Clarke
This quote by Sir Arthur C. Clarke accurately depicts how advanced technology is, at times confused with magic. Introducing my parents to Siri was one such experience. In their mind, Siri was the equivalent to a human, where conversations where to be had and tasks resolved. Even though a smart assistant understands and can complete a wide range of tasks, it is not really as smart as you may think.
What is Language
First, I should begin by explaining how languages are divided up. To generalize languages, I will divide them into three categories: low-level, high-level, and natural language.
As you may know, computers are only able to understand machine language. Machine language is the lowest-level language out there, it consists of a series of 1’s and 0’s. Low-level languages are, in nature, tough to read and understand as they are as far as you can get from natural language (if you are unsure of what natural language is it will be coming up). Below I have included an image of Assembly Code.
This code runs the most common beginner code, “Hello World”. To explain the code in layman’s terms, we begin by setting constants which we use throughout the labels(labels are basically the equivalent to methods, but which are actually memory addresses, this will be clearer by the end of the program). From there we manipulate the machines internal registers to hold value while we perform arithmetics to print out the desired word, in this case, “Hello World”. When the program finishes it calls “_end” a label which points to its own memory address. The average person would not be able to understand what the code is doing on his own (truthfully I had to beg my brother to teach me, and frustrate him with my lack of understanding). For these reasons, programmers created high-level languages in an attempt to relate closer to the natural language.
High-level languages were created in an attempt to write more readable code. The goal was to create a language that beginners could quickly pick up due to its similarities with natural language. Still, issues would arise because of the ambiguity in natural language. Human’s are capable of understanding abstract ideas, whereas machines are not. High-level language requires the programmer to use specific vocabulary (keywords) and highly structured conventions. The code written in a high-level language will only run if written 100% in conjunction with the language requirements. Of course, this is very different from how humans communicate. A computer would only be able to understand code if it were written with the correct format.
For example in Ruby we write :
Even if you have no programming background in ruby this code should be very simple to follow. This code would be the equivalent of saying:
“If there’s a fire, pull the fire alarm”
However, the following would not work:
This code would be the equivalent of saying:
“Pull the fire alarm, if there’s a fire”
A human would be able to understand what was meant with those instructions. Even though, you told him to pull the fire alarm he was able to deduce you meant only if there was a fire. A computer, on the other hand, would not be able to process this. Firstly, this will result in a compiling or runtime error, as it is not in conjunction with the language syntactical requirements. If the machine could somehow compile this, it would read and follow the instructions directly as it is administered. Therefore, in this example, the computer would pull the fire alarm first and then check if there is indeed a fire.
Natural language consists of all the languages spoken in the world. As you can imagine with language: idioms, slangs, and new words are present. However, unlike machines, humans can deduce the meaning of unknown words based on the context of the sentence.
For example, a casket means two drastically different things in British English and American English. In Britain, a casket refers to a jewelry box whereas in America a casket is another word for a coffin. However, if an American were to tell a British man, “We got an oak casket for my grandpa’s funeral,” they would be able to deduce that you are not referring to a jewelry box.
Why is Natural Language so Hard
Teaching a computer natural language currently is near impossible. Humans, when expressing themselves are not always explicit. However, the ability to infer and deduce information based on context is a skill humans have that computer’s lack.
In the English language the same word is used frequently to express different things, for example, we can say “I am going to the school ball” or we can say “Can you pass me the ball” both are correct phrases, however, the word “ball” means two very different things in those examples. A machine would be incapable of deciphering what a ball is in the context.
This leads us into the issues with implementing Natural Language. In spoken language, it is common for words to have multiple meanings and speakers can have strong accents, speak multiple languages, mispronounce words, grammar mistakes and express the same ideas in multiple ways. Even with all these challenges, humans are still capable of understanding and overcoming these issues. As you can imagine, however, calculating and adjusting the computer to overcome every one of these challenges is near impossible.
How does Natural Language Processing Manage these Challenges
As in the example above the word ball can have multiple meanings. Giving computer access to an online dictionary is not enough for a computer to understand exactly what you are referring to. For these reasons, we have to create a phrase structure.
A phrase structure is a set of rules that languages follow. For example, we know that all sentences must contain a noun and a verb. For this reason, we know “Tall John,” is not a complete sentence in the same way “John ran,” is. We use these phrase structures to separate sentences into smaller bits which a computer is more capable of processing. These bits are combined into a parse tree.
The parse tree is essential because it reveals how a sentence is constructed. From the example above, we now know that the sentence is about a dog and what he did. By parsing sentences into these smaller building blocks, computers have become quite adept at solving tasks. Limitation still exists as extremely long and complex sentences are beyond current computers reach.
What does the future of Smart Assistants look like
For those out there that fear the rise of Skynet remember the drastic limitations computers currently have, and do not be fooled by the facade “Smart Technology” display. Currently, the A.I. the smart assistant display is called Artificial Narrow Intelligence (Weak A.I.), this level of A.I. is able to mimic human intelligence and behavior to a very narrow extent. This is why smart assistants struggle to understand you as commands become more and more intricate. The next levels of A.I. are Artificial General Intelligence and Artificial Super Intelligence.
Artificial General Intelligence
Artificial General Intelligence (Strong A.I.) is the next step in A.I. development. With Strong A.I. computers would be able to mimic human intelligence and behaviors. Ultimately being able to pass as a human by passing the Turing test. This is what is most frequently represented in movies such as Terminator.
Artificial Super Intelligence
Artificial Super Intelligence( Super A.I.) is the final level of A.I. It is hard to imagine what it could do, but the possibilities are endless. With the computer capabilities, it would be able to exponentially increase its knowledge on its own. This is the level of A.I. that humans fear the most, where computers would be able to acquire so much knowledge so rapidly that humans would be incapable of keeping up with them.
The Bright Side
Even though Artificial General Intelligence is speculated to be possible, current technological limitations and human knowledge make the development of Strong A.I. near impossible at this point. For Strong A.I. to be possible computers need to have consciousness of themselves, but even humans have yet to understand what consciousness is, so if we are not able to understand consciousness how can we teach it to a computer?