You can interpret what is stated in the article as follows::
-
In UML state diagrams, both the states themselves and the directed edges can be expressed as vectors.
-
These vectors are called as in RL reinforcement learning: state, action.
-
Such graphs can be either hypergraphs or multigraphs.
-
Graphs that maximize the uniqueness factor are objects.
-
Such objects can enter into control and hierarchy relationships.
The observed object is not always completely visible. This is due not only to the fact that there may be breaks in observation, such as the 17th or 40th entry in the data table. 1, but there are also indistinguishable values of individual characteristics throughout the entire observation period. The question, of course, arises of what is considered an object. It can be considered something that is predictable. Simply on the grounds that this approach makes it possible to plan while minimizing errors. The need for such an approach is justified by Ashby [с. 63-66, Введение в кибернетику]
The gist of what he said is as follows::
-
Refusal of unambiguity would lead to the impossibility of predicting events.
-
If the model is ambiguous, it should be redefined by considering other variables.
-
Sometimes the probabilities themselves need to be unambiguous.
-
We and only we determine what is considered similar to a machine in the cybernetic sense.
If the data below is allowed to be processed by the algorithm described in [1]then it will find two such objects: ((‘t2’,), (‘f2’,)) and ((‘f2’,), (‘f1’,)).
Table 1. Data
|
t2,f2,f1,t0,f0 |
|
t2,f2,f1,t0,f0 |
0 |
52,41,36,41,31 |
24 |
53, ,35,14,32 |
1 |
52.44, .52.31 |
25 |
54,45,36,15,32 |
2 |
53,44,35,14,32 |
26 |
54,44,36,14,31 |
3 |
53,44,35,14,32 |
27 |
53,41,34,15,31 |
4 |
54,44,36,14,31 |
28 |
52,45,36,52,32 |
5 |
53,41,34,15, |
29 |
52,44,34,44,32 |
6 |
52,45,36,52,32 |
thirty |
53,44,36,14,31 |
7 |
52,44,34,44,32 |
31 |
54,41,35, , |
8 |
53,44,36,14,31 |
32 |
52,41,34,52,32 |
9 |
54, ,35,15,31 |
33 |
52,45,34,45,32 |
10 |
52,41,34,52,32 |
34 |
52,45,35,14,32 |
eleven |
52,45,34,45,32 |
35 |
52,45,36,15,31 |
12 |
52,45,35,14,32 |
36 |
52,44,34,52,32 |
13 |
52,45,36,15,31 |
37 |
53,44,36,44,31 |
14 |
52,44,34,52,32 |
38 |
54,41,34,54,32 |
15 |
,44,36,44,31 |
39 |
52,45,34,44,31 |
16 |
54,41,34,54,32 |
40 |
, , , |
17 |
, , , |
41 |
53, ,34,15,31 |
18 |
52,44,34,52,31 |
42 |
52,45,36,52,32 |
19 |
53,44,35,14,32 |
43 |
52,44,34,44,32 |
20 |
54,45,36,15,32 |
44 |
53,44,36,14,31 |
21 |
, , , |
45 |
54,41,35,15,31 |
22 |
52,41,36,41,31 |
46 |
52,41,34,52,32 |
23 |
52,44,34,52,31 |
|
|
The corresponding columns are presented below. Expressed by a dictionary where the key is the current state and the value is a list [следующие состояния, действие].
sa = ((('t2',), ('f2',)), [(1.0, 8)])
('53.0',) : [[[('54.0',)], ('44.0',)], [[('52.0',)], ('41.0',)]]
('54.0',) : [[[('54.0',)], ('45.0',)], [[('53.0',)], ('44.0',)], [[('52.0',)], ('41.0',)]]
('52.0',) : [[[('52.0',)], ('45.0',)], [[('53.0',)], ('44.0',)], [[('52.0',)], ('41.0',)]]
sa = ((('f2',), ('f1',)), [(1.0, 9)])
('45.0',) : [[[('44.0',)], ('36.0',)], [[('45.0',)], ('34.0',)], [[('45.0',)], ('35.0',)]]
('44.0',) : [[[('45.0',)], ('35.0',)], [[('44.0',)], ('34.0',)], [[('41.0',)], ('36.0',)]]
('41.0',) : [[[('45.0',)], ('34.0',)], [[('44.0',)], ('36.0',)], [[('41.0',)], ('35.0',)]]
The states (’52’,), (’54’,), (’53’,) of the object ((‘t2’,), (‘f2′,)) change depending on the selected action (’45’,), (’44’,), (’41’,). In this case, the uniqueness coefficient ku is equal to one, and the number of transitions is eight. The states (’45’,), (’44’,), (’41’,) of the object ((‘f2’,), (‘f1′,)) change depending on the selected action (’36’,), (’35’,), (’34’,). The uniqueness coefficient is also equal to one, but the number of transitions is nine. As for ((‘t0’,), (‘f0’,)), finding such an object is more difficult
sa = ((('t0',), ('f0',)), [(1.0, 8)])
('14.0',) : [[[('15.0',)], ('32.0',)], [[('15.0',)], ('31.0',)]]
('t2',) : [[[('f2',)], ('32.0',)], [[('14.0',)], ('31.0',)]]
('f2',) : [[[('14.0',)], ('32.0',)], [[('t2',)], ('31.0',)]]
('15.0',) : [[[('14.0',)], ('32.0',)], [[('t2',)], ('31.0',)]]
The main part of this article will show how such an object can be found. The complexity and novelty of the search is that the objects ((‘t2’,), (‘f2’,)) and ((‘f2’,), (‘f1’,)) are nested in ((‘t0’,), (‘f0’,)). Issues of routing and indirect control over such objects will also be considered.
The calculation of the uniqueness coefficient ku, as a measure of predictability, is given below.
#Связь понятий "свобода перехода"
#https://www.youtube.com/watch?v=RU2T0OFJJB4
#и "коэффициента однозначности"
g = {("how",): [[[("to",), ("do",), ("many",), ("long",), ("are",)],
("action",)]],
("many",): [[[("people",), ("times",), ("countries",), ("states",)],
("action",)]],
("are",): [[[("you",)],
("action",)]]}
import math
def get_ku(g):
n=0; u=0; h=[]
for x in g:
for y in g[x]:
if y[0] != []:
u += len(y[0]) -1
h.append(round(math.log(len(y[0]), 2), 4))
print("Свобода перехода: ", round(2**h[-1], 2))
n +=1
if n != 0:
ku = round(n/(u+n),3 )
print("h =", h, "#биты переходов с неопределенностью")
print("n =", n, "#оценка познанной сложности (двойки: <f,x>)")
print("u+n =", u+n, "#количество переходов (тройки: <y,f,x>)")
print("ku = n/(u+n) =", ku)
print("ku == n/(sum([2**b for b in h]) - len(h) + n) is", \
round(ku, 3) == \
round(n/(sum([2**b for b in h]) - len(h) + n), 3) )
print()
return (n, u, h)
i = 1
for g in [g]:
print("\n i =", i)
r = get_ku(g)
i +=1
''' Вывод:
i = 1
Свобода перехода: 5.0
Свобода перехода: 4.0
Свобода перехода: 1
h = [2.3219, 2.0, 0] #биты переходов с неопределенностью
n = 3 #оценка познанной сложности (двойки: <f,x>)
u+n = 10 #количество переходов (тройки: <y,f,x>)
ku = n/(u+n) = 0.3
ku == n/(sum([2**b for b in h]) - len(h) + n) is True
'''
Main part
Initially ku=0.917 for ((‘t0’,), (‘f0′,)) because from the state (’52’,) with the action (’32’,) either the state (’45’,) follows state(’44’,), which is ambiguous.
sa = (('t0',), ('f0',)) [(0.917, 12)] kс_per = 0
('14.0',) : [[[('15.0',)], ('32.0',)], [[('15.0',)], ('31.0',)]]
('54.0',) : [[[('44.0',)], ('32.0',)]]
('45.0',) : [[[('14.0',)], ('32.0',)]]
('52.0',) : [[[('45.0',), ('44.0',)], ('32.0',)], [[('14.0',)], ('31.0',)]]
('44.0',) : [[[('14.0',)], ('32.0',)], [[('54.0',)], ('31.0',)]]
('41.0',) : [[[('52.0',)], ('31.0',)]]
('15.0',) : [[[('14.0',)], ('32.0',)], [[('52.0',)], ('31.0',)]]
Since there can be many competing hypotheses (regarding predictability by states), and preference, all other things being equal, should be given to hypotheses that are not only maximum in ku, but also minimum in length (over the length of the graph), the variable kc_per (percentage according to Kolmogorov complexity) is introduced. . As a result, longer hypotheses with the same ku, in the presence of a shorter one, are discarded.
As a result, first we find ((‘t2’,), (‘f2’,)), ((‘f2’,), (‘f1’,)) and only then ((‘t0’,), (‘f0 ‘,)).
V. Turchin in the chapter hierarchical structures [Феномен науки] writes that the concept in the cybernetic sense should be understood as a variety of situations. To paraphrase, we can say that this concept-variable will be the set of states of an object, replaced under the influence of an action.
In this sense: since ((‘t2’,), (‘f2’,)) is unique, in ((‘t0’,), (‘f0′,)) instead of states (’52’,), (’54 ‘,), (’53’,) is substituted by (‘t2’,). We do the same for the relation ((‘f2’,), (‘f1′,)). Instead of (’41’,), (’44’,), (’45’,) substitute (‘f2’,) into ((‘t0’,), (‘f0’,)). As a result, not only does ku increase from ku=0.917 to ku=1, but also the size of the graph in terms of the number of transitions decreases from 12 to 8.
sa = (('t0',), ('f0',)) [(1.0, 8)] kс_per = 100.0
('15.0',) : [[[('14.0',)], ('32.0',)], [[('t2',)], ('31.0',)]]
('t2',) : [[[('f2',)], ('32.0',)], [[('14.0',)], ('31.0',)]]
('14.0',) : [[[('15.0',)], ('32.0',)], [[('15.0',)], ('31.0',)]]
('f2',) : [[[('14.0',)], ('32.0',)], [[('t2',)], ('31.0',)]]
So, according to the identified objects:
-
All three have ku=1, i.e. 100\% unambiguous.
-
((‘f2’,), (‘f1’,)) controls ((‘t2’,), (‘f2’,)).
-
Both objects are nested in ((‘t0’,), (‘f0’,)).
-
You can create routes
Let’s say we need to lay a route in ((‘t0’,), (‘f0′,)) from state (’15’,) to state (’54’,). And there are rights to change actions (‘f0’,), (‘f1’,).
If you use, for example, depth-first traversal for ((‘t0’,), (‘f0′,)), then the state (’54’,) will not be there. This is explained by the fact that the object ((‘t2’,), (‘f2′,)) is in the state (’52’,). This can be seen in the last line of the data frame.
Only the object ((‘f2’,), (‘f1’,)) can change the state of the object ((‘t2’,), (‘f2’,)) due to the fact that (‘f2’,) is simultaneously both by the action of the object ((‘t2’,), (‘f2’,)), and by the state of the object ((‘f2’,), (‘f1’,)).
Given the above, the routing pseudocode would look like this:
-
We determine the membership of the target state by enumerating nested objects. For the data example, this is ((‘t2’,), (‘f2’,)).
-
We plot the optimal route from the current state (’52’,) in ((‘t2’,), (‘f2′,)) to the target state (’54’,). The program uses a reinforcement learning algorithm with the only difference that at the exploration stage, not a random direction is taken, but a choice with memory and, therefore, the direction that has been least explored is taken. The result will be [(’52’,), (’53’,) (’54’,)].
-
Knowing the route in ((‘t2’,), (‘f2′,)), the necessary actions are calculated. They correspond to the sequence [(’44’,), (’44’,)].
-
Since ((‘t2’,), (‘f2’,)) is controlled by ((‘f2’,), (‘f1’,)), the same algorithm from point 2 is repeated for the object ((‘f2’,) , (‘f1′,)) with the current state (’41’,).
-
Further, because ((‘f2’,), (‘f1’,)) is nested in ((‘t0’,), (‘f0’,)), then the route is laid in ((‘t0’,), (‘f0′, )) from (’15’,) to (‘f2’,).
-
The complete route for the state change is specified. And as soon as (’54’,) is selected as the current state in ((‘t2’,), (‘f2′,)), it will be possible to plot a route from (’15’,) to (’54’,) directly in ((‘t0’,), (‘f0’,)).
find_target
((('t0',), ('f0',)), [('15.0',), ('t2',), ('f2',)], [('31.0',), ('32.0',)])
((('f2',), ('f1',)), [('41.0',), ('44.0',), ('44.0',)], [('36.0',), ('34.0',)])
((('t2',), ('f2',)), [('52.0',), ('53.0',), ('54.0',)], [('44.0',), ('44.0',)])
The example above is a training example. On real data, the main problem will be the synchronization of actions between objects. The solution is easier if the objects have stable states [Введение в кибернетику, c. 110]. Such for the object ((‘t2’,), (‘f2′,)) is the equilibrium state (’52’,) under the action (’41’,), for example.
In conclusion, it is worth noting: it is not necessary to know all possible states and actions of objects in order to identify them. It is sufficient that subsequent observations do not increase the uncertainty about them. Otherwise, we will observe not a variety of objects, but only one thing – chaos. As a consequence, in order to identify a complexly composed object, it is enough to track several transitions of a complexly composed object, where its states are determined by several (not all) transitions of already nested objects. This creates shortcuts in making decisions on various layers.
conclusions
In machine learning, there is a branch of unsupervised learning. Here, this implicit teacher is one that resists the entropy of the input data stream, maximizing the uniqueness factor. The objects identified in this case (subsets of features with high predictability) allow planning. The calculation of routes for such objects, including nested ones, can be carried out using reinforcement learning tools. Or a more general view: the mechanism of self-assembly with complication is the search for novelty with high predictability from existing diversity /
PS [1] The article is a continuation of the article: Maximizing the uniqueness coefficient for objects consisting of many features. //Bulletin of DonNU. Series G: Technical Sciences. – 2022. No. 4
Acknowledgement and Usage Notice
The editorial team at TechBurst Magazine acknowledges the invaluable contribution of the author of the original article that forms the foundation of our publication. We sincerely appreciate the author’s work. All images in this publication are sourced directly from the original article, where a reference to the author’s profile is provided as well. This publication respects the author’s rights and enhances the visibility of their original work. If there are any concerns or the author wishes to discuss this matter further, we welcome an open dialogue to address potential issues and find an amicable resolution. Feel free to contact us through the ‘Contact Us’ section; the link is available in the website footer.