08 September 2017

Talking the language of Softwarization: towards Service2Vectors (part 2)

SDI functions and services modularization can be achieved through Network and Service Primitives NSP: this will increase the level of flexibility, programmability and resilience of the SDI, for example improving agility in software development and operations when using DevOps approaches. On the other hand, there is a cost to pay: it increases the level of complexity of the SDI.

Then, management, control and orchestration (and in general all the OSS/BSS processes) of a SDI should deal with an enormous number of NSP which have to be interconnected/hooked and operated to implement (the logics of) network services and functions. Moreover said NSP should be continuously updated and released.

This can be simplified and above all automated by using a dynamic multi-dimensional services space where coding a distributed representations of all NSP of a SDI. Remeber what is done, for example, in the approaches adopted for the word embedding in Natural Language Processing (NLP). For example see this tutorial on the word2vec model by Mikolov et al. This model is used for learning vector representations of words.

Leveraging on this thinking, I’ve invented a method (service2Vectors) for the distributed representation of NSP with a vector of several elements, each of which is capturing the relationships with other NSP. So, each NSP is represented by a distribution of weights across those elements of the vector, which comes to represent in some abstract way the ‘meaning’ of a NSP. Said NSP vectors can be seen as single points in a high dimensional service space This multi-dimensional space can be created and continuously updated by using Artificial Intelligence (A.I.) learning methods (e.g., recurrent neural networks).

In a SDI there might be thousands or even more different NSPs: all of them create a sort of vocabulary whose terms can be used for expressing  the SDI services (for example through an intent-based language, example below). Let’s assume for example that this vocabulary of NSP has 1000 elements, then each vector representing an NSP will have V = 1000 elements, then the NSP can be represented by a point in a space of 1000 dimensions.

This distributed representations of NSP in a multi-dimensional services space allow A.I. learning algorithms to process the “language” (e.g., intent-based language, example below) used by Application and Users to formulate service requests to the SDI. In fact, NSP vectors can be given as inputs to a recurrent neural network which can be trained, for example, in order to predict a certain service context given a NSP and/or vice-versa a NSP given a certain service context. The learning algorithm could go, for example, through sets of thousands of services context (existing compositions of NSP).

Once the recurrent neural network is trained to make said predictions to some level of accuracy, the output is the so-called space matrix of the trained neural network, capable of projecting any NSP vectors into the space. NSPs with similar context tend to cluster in this space; for example this matrix can be queried to find relationships between NSPs, or the level of similarity between them.

Another alternative is providing distributed representation of SDI service (instead of the single NSP) with a vector of several elements, each of which is capturing the relationships with other SDI services. So, each SDI service is represented by a distribution of weights across those elements of the vector. Said SDI service vectors can be seen as single points in a high dimensional service space This multi-dimensional space can be created and continuously updated by using Artificial Intelligence (A.I.) learning methods (e.g., recurrent neural networks).

This reminds what Prof. Geoff Hinton argued by introducing the term "thought vector": “it is possible to embed an entire thought or sentence — including actions, verbs, subjects, adjectives, adverbs etc. — as a single point (i.e., vector) in a high dimensional space. Then if thought vector structure of human language encodes the key primitives used in human intelligence then SDI services vector structure could encode the key primitives used by “applications intelligence”.

Moreover thought vectors have been observed empirically to possess some properties: on for example is known as "Linear Structure": i.e.,  certain directions in thought-space can be given semantic meaning, and consequently the whole thought vector is geometrical sum of a set of directions or primitives. In the same way certain directions in the SDI service space can be given a context meaning, and consequently whole SDI services vector can be seen geometrical sum of a set of directions or primitive.

Hopefully this will pave the way for  Humans and not-human Users (apps, avatars, smart or cognitive objects, processes, A.I. entities, ....) "to talk" with Softwarised Infrastructures, with a common, quasi-natural language.