Thinking machines: Azure digital twins
- Posted on April 28, 2021
- Estimated reading time 5 minutes
Thinking machines are part of the journey to artificial general intelligence, where systems are assigned a task, self-solve, and then work on the task, all supported and supervised by a human.
What makes a machine think?
This is quite a deep question, which I imagine philosophers will be struggling with for a long time. For our purposes, a thinking machine is not machine learning.
Machine learning is a specific technique, of applying algorithms to a set of data to generate an output, and then iteratively providing scored feedback to update the algorithm.
Learning in this sense is about the changing of numerical weights - it isn't learning or even thinking as a layperson would consider this - although it could be a component that is part of a thinking machine.
A thinking machine for our purposes is bordering on general intelligence.
General intelligence for us means the ability to understand or learn any intellectual task that a human being can.
We are trying to create a machine that can be told a task, and then self-identify how to break that down into steps which it can undertake, to provide an output to or for a human, or another machine.
So - not quite general intelligence - but certainly more than an algorithm.
Our first approach to thinking machines - agents
As a research team, we reviewed different kinds of thinking machines and added constraints to our research:
- Humans should be in the loop – we want to support co-piloting and human ingenuity
- Must be traceable – we should be able to understand why a machine does something
- Can be autonomous – the thinking machine should be able to make a decision
- Not rigid - could expand to other use cases
- Could be reusable – we don’t want to tie our machine to a specific use case
- Thinking should be multi-process, or multi-threaded
We’ve taken an agent-based approach, where each agent focuses on a very specific task – memory, sensing, decisioning, etc - and can be orchestrated by other agents, within a constrained container, or bounds of the "machine brain."
Each agent can adopt a different approach to tasks - machine learning, rules-based approaches, graph approaches, or utilizing cognitive services.
This means we end up with a brain made up of an orchestrator, an agent selector, and then different agents that can have different goals and specialized brains - enabling us to focus on making each agent fit for its specific task.
An agent-based approach allows us to separate responsibilities and adopt a "black box" approach. Other agents don't need to know how other agents work, just the capabilities they have. Black box does not mean that the AI within each agent is not explainable to humans - only that we don't want to hard code this into agents.
Memory – using Azure Digital Twins (ADT)
We decided to use Azure Digital Twins (ADT) to provide memory for our thinking machines, to add context. ADT is an Intelligent Cloud platform provided by Microsoft that allows you to represent real-world things digitally. Every detail can be recorded, tracked, and inspected digitally to give an overview of the state of, places, devises, business processes, and people. At the heart of ADT is the spatial intelligence graphs used to model relationships and interactions between twins.
Why did we choose Azure Digital Twins?
Innovative AI solutions require innovative data storage solutions. In a multi agent world where lots of individual ‘thoughts’ are processing, sometimes simultaneously, it is easy to imagine that it gets difficult to keep track of data. ADT allows us to treat the agent system in an easy to visualise way which mimics the structure of biological brains. Events and actions taken by agents, result in ‘memories’ of data. This data may be useful, or it may be junk, but in order to ‘learn’ it is important for us to assess mistakes as well as successes. Events can be linked to one another, creating a logical pathway of events that occurred, and the data that was produced.
By then evaluating memories for useful data, we can expect clear patterns. Visual based agents for example will rarely produce useful output from an audio data input, so we can quickly establish trends allowing agents to identify which tasks they are individually better at. When an agent understands which tasks it is inherently better at, we can establish useful behaviours, like ignoring input data it has failed to process before.
This can be compared to a natural evolution of a brain. There is no biological advantage to building connections between the ear drums and visual cortex of the brain, it’s a waste of effort, so the paths are ignored and removed. After many iterations of this approach, the idea is to come up with the most efficient and logical organisation of data naturally, depending on how it is actually being used, rather than how it was arbitrarily designed at the start. Critically this could allow for adaptability, meaning the agents can re-organise as tasks develop in complexity over time, compared to a traditional AI approach that would need to be re-built every time the problem changed too much even if fundamentally it uses the same building blocks.
What alternatives did you consider?
ADT itself is a graph database, but it’s managed and standardized, allowing us to define specific ‘models’ like ‘memories’, ‘context’ and ‘events.’
We were clear from the beginning that we thought being able to flexibly relate records to each other would be important, akin to how humans relate their experiences to each other – we thought that a graph database would be a better fit than a relational database in this sense.
By using a graph database, we can also seed different approaches and test different combinations of agents – selecting them at random, storing how well they perform on a task, and then using the graph to “pathfind” to the best performing solution.
We’re working out on GitHub, using Azure Digital Twins to support the birth of thinking machines, to provide the memory to support context and computing power.
Our next focus is on “Human in the Loop” using ECG technologies like NextMind, to see if humans can interact with the robot using their own brainpower, delegating the physical control of the robot to platforms like rocos.io.
Some of our initial testing scenarios replicate what other technologies already do – if we can achieve parity with existing solutions, then we think the real power of our approach is the ability to generalize to new domains where no solutions currently exist.
See our Human in the Loop work on GitHub as we iterate, and feel free to get involved or find out more around the trends we’re seeing in Emerging Technology, including the rise of the (service) robots.