2
$\begingroup$

So, I have this huge amount of data, which has 7 vector features (float from 0 to 1). I am trying to build a kind of recommendation system, with a twist (it uses agents and negotiations and narratives; narratives meaning, that there will be temporal and partial order causal link dynamics, or "short term memory").

There is network effects in the data, since the more agents I have, the more potential there will be for match making; in simulation phase I will be just using randomness, instead of real data, but I believe the real dataset will also be more or less random: of course I think there will be nice clusters of correlations for the vectors, but I also want to understand the more general aspects of the problem, instead of just this specific use-case.

The agents will be generating a list of artifacts in co-operation and also evaluate how the generated list of artifacts match their preferences. The agents will be recommending items from their own list (and some times from a list of their related agents) and after each suggestion, there is negotiation.

If there would not be network effect in the data, I would use simple heuristics, which would measure the diff of each feature. However, in network effect world this does not work very well, because it will make many agents unable to co-operate.

I was thinking of something, where some features are preferred features by the agents in different circumstances (depending on the other agents), this will enable some elasticity to the system and IMO avoid the simple problems, of which many recommendation systems suffer (lack of context awareness; humans do not like the likes of other people, we have flexible preferences, which depend upon our mood).

Since this sounds like a very generic problem, it seems like I have just discovered a problem, which has been elegantly solved by someone else from the academia years ago, but I just don't know the name for this concept.

Instead of depending on strict evaluation criteria (only accept diff X per feature), how to choose evaluation function to make the agents more co-operative? I was thinking something, where diff has to be narrow for at least one feature, but may be big for three worst matching features; so that there would be essence of few features and diversity of several.

EDIT: As I have spent some more time with this problem, I have a hunch about which issues might be related:

  • In real world networks, which depend upon energy efficient co-operation and signaling, scale-free networks seem to emerge; effective Agent-Based Model in network effect scenario should probably form co-operation networks, which follows some kind of Fitness Function.
  • Due to scale-free networks, it should be assumed, that the Agents using essential features (which are common in data) should be ranked higher and Agents using diverse features (which are rare in data) should be ranked lower; in scale-free networks (like Facebook) it has been observed, that all but 3% of nodes form edges to more popular nodes: this makes signaling efficient.
  • As a reference, in deep learning Capsule Networks have had some state-of-the-art success with this similar hierarchical "recommendation for upper tiers" mentality (there are much more lower layer features, than upper layer features).

So, I have this idea, that when we use Agent-Based Models for solving problems with network effects, the evaluation function should evaluate Agents skill of passing the problem for more popular Agent, which could delegate it to the best Agent or attempt to solve it on it's own.

$\endgroup$

1 Answer 1

1
$\begingroup$

In a sense it seems like I am thinking some kind of "Deep Agent-Based Modeling", where it is okay to have network effects on the lowest layer (which would only evaluate the matching of the generated artifacts and their own preferences); the co-operation problem should be solved by a "Coach" layer, which would attempt to prevent situations, where some agents can not play well together.

The evaluation function of the "Coach" layer should be such, that it minimizes the amount of negotiation actions (energy efficient co-operation) required per artifact list generated and also minimizes the signaling distance regarding diversity (less popular artifacts / unorthodox solutions). The "Coach" layer should also be able to reorganize the lists contained by the Agents. The signaling distance can be easily evaluated in my use case, since the dataset has easily available popularity ranking per list artifact list item; the shorter the distance from popular artifact list to the least popular artifacts is, the better.

In practice this means, that I actually want to build composable Agents, which have lists of items (or other Agents), action space for generating artifacts from those items, evaluation functions and costs of specific actions, aggregateable popularity rank (which helps to evaluate delegation). All Agents would have generic default action space, which would help in solving the signaling problem; if the diameter of the co-operation network is too long (not within the scale-free network topology), the system should attempt to create a new layer or reorganize the existing layers (or do both).

All this might be computationally very expensive; however we tested a theory about building a "multi-dimensional" merge-sort algorithm by using entanglement / super dense encoding from quantum information theory and it would seem like it could work and be able to create a hash map, which would allow the Agents to reshape the scale-free network efficiently.

I might build some kind of demo out of this, since all this seems really interesting to me and complements nicely my past hobby projects.

I will not accept this answer until I get some verification, that this is a good answer. However, I will post this in hopes, that someone has already done similar work, gets inspired and can provide a better answer. This answer will probably be edited later, when I get to a more formal level with this.

$\endgroup$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .