What are the practical outcomes of those hypotheses being true or false?

 

My editorial on You Tube

 

This is one of those moments when I need to reassess what the hell I am doing. Scientifically, I mean. Of course, it is good to reassess things existentially, too, every now and then, but for the moment I am limiting myself to science. Simpler and safer than life in general. Anyway, I have a financial scheme in mind, where local crowdfunding platforms serve to support the development of local suppliers in renewable energies. The scheme is based on the observable difference between prices of electricity for small users (higher), and those reserved to industrial scale users (lower). I wonder if small consumers would be ready to pay the normal, relatively higher price in exchange of a package made of: a) electricity and b) shares in the equity of its suppliers.

I have a general, methodological hypothesis in mind, which I have been trying to develop over the last 2 years or so: collective intelligence. I hypothesise that collective behaviour observable in markets can be studied as a manifestation of collective intelligence. The purpose is to go beyond optimization and to define, with scientific rigour, what are the alternative, essentially equiprobable paths of change that a complex market can take. I think such an approach is useful when I am dealing with an economic model with a lot of internal correlation between variables, and that correlation can be so strong that it turns into those variables basically looping on each other. In such a situation, distinguishing independent variables from the dependent ones becomes bloody hard, and methodologically doubtful.

On the grounds of literature, and my own experimentation, I have defined three essential traits of such collective intelligence: a) distinction between structure and instance b) capacity to accumulate experience, and c) capacity to pass between different levels of freedom in social cohesion. I am using an artificial neural network, a multi-layer perceptron, in order to simulate such collectively intelligent behaviour.

The distinction between structure and instance means that we can devise something, make different instances of that something, each different by some small details, and experiment with those different instances in order to devise an even better something. When I make a mechanical clock, I am a clockmaker. When I am able to have a critical look at this clock, make many different versions of it – all based on the same structural connections between mechanical parts, but differing from each other by subtle details – and experiment with those multiple versions, I become a meta-clock-maker, i.e. someone who can advise clockmakers on how to make clocks. The capacity to distinguish between structures and their instances is one of the basic skills we need in life. Autistic people have a big problem in that department, as they are mostly on the instance side. To a severely autistic person, me in a blue jacket, and me in a brown jacket are two completely different people. Schizophrenic people are on the opposite end of the spectrum. To them, everything is one and the same structure, and they cannot cope with instances. Me in a blue jacket and me in a brown jacket are the same as my neighbour in a yellow jumper, and we all are instances of the same alien monster. I know you think I might be overstating, but my grandmother on the father’s side used to suffer from schizophrenia, and it was precisely that: to her, all strong smells were the manifestation of one and the same volatile poison sprayed in the air by THEM, and every person outside a circle of about 19 people closest to her was a member of THEM. Poor Jadwiga.

In economics, the distinction between structure and instance corresponds to the tension between markets and their underpinning institutions. Markets are fluid and changeable, they are like constant experimenting. Institutions give some gravitas and predictability to that experimenting. Institutions are structures, and markets are ritualized manners of multiplying and testing many alternative instances of those structures.

The capacity to accumulate experience means that as we experiment with different instances of different structures, we can store information we collect in the process, and use this information in some meaningful way. My great compatriot, Alfred Korzybski, in his general semantics, used to designate it as ‘the capacity to bind time’. The thing is not as obvious as one could think. A Nobel-prized mathematician, Reinhard Selten, coined up the concept of social games with imperfect recall (Harsanyi, Selten 1988[1]). He argued that as we, collective humans, accumulate and generalize experience about what the hell is going on, from time to time we shake off that big folder, and pick the pages endowed with the most meaning. All the remaining stuff, judged less useful on the moment, is somehow archived in culture, so as it basically stays there, but becomes much harder to access and utilise. The capacity to accumulate experience means largely the way of accumulating experience, and doing that from-time-to-time archiving. We can observe this basic distinction in everyday life. There are things that we learn sort of incrementally. When I learn to play piano – which I wish I was learning right now, cool stuff – I practice, I practice, I practice and… I accumulate learning from all those practices, and one day I give a concert, in a pub. Still, other things, I learn them sort of haphazardly. Relationships are a good example. I am with someone, one day I am mad at her, the other day I see her as the love of my life, then, again, she really gets on my nerves, and then I think I couldn’t live without her etc. Bit of a bumpy road, isn’t it? Yes, there is some incremental learning, but you become aware of it after like 25 years of conjoint life. Earlier on, you just need to suck ass and keep going.

There is an interesting theory in economics, labelled as « semi – martingale » (see for example: Malkiel, Fama 1970[2]). When we observe changes in stock prices, in a capital market, we tend to say they are random, but they are not. You can test it. If the price is really random, it should fan out according to the pattern of normal distribution. This is what we call a full martingale. Any real price you observe actually swings less broadly than normal distribution: this is a semi-martingale. Still, anyone with any experience in investment knows that prediction inside the semi-martingale is always burdened with a s**tload of error. When you observe stock prices over a long time, like 2 or 3 years, you can see a sequence of distinct semi-martingales. From September through December it swings inside one semi-martingale, then the Ghost of Past Christmases shakes it badly, people panic, and later it settles into another semi-martingale, slightly shifted from the preceding one, and here it goes, semi-martingaling for another dozen of weeks etc.

The central theoretical question in this economic theory, and a couple of others, spells: do we learn something durable through local shocks? Does a sequence of economic shocks, of whatever type, make a learning path similar to the incremental learning of piano playing? There are strong arguments in favour of both possible answers. If you get your face punched, over and over again, you must be a really dumb asshole not to learn anything from that. Still, there is that phenomenon called systemic homeostasis: many systems, social structures included, tend to fight for stability when shaken, and they are frequently successful. The memory of shocks and revolutions is frequently erased, and they are assumed to have never existed.

The issue of different levels in social cohesion refers to the so-called swarm theory (Stradner et al 2013[3]). This theory studies collective intelligence by reference to animals, which we know are intelligent just collectively. Bees, ants, hornets: all those beasts, when acting individually, as dumb as f**k. Still, when they gang up, they develop amazingly complex patterns of action. That’s not all. Those complex patterns of theirs fall into three categories, applicable to human behaviour as well: static coupling, dynamic correlated coupling, and dynamic random coupling.

When we coordinate by static coupling, we always do things together in the same way. These are recurrent rituals, without much room for change. Many legal rules, and institutions they form the basis of, are examples of static coupling. You want to put some equity-based securities in circulation? Good, you do this, and this, and this. You haven’t done the third this? Sorry, man, but you cannot call it a day yet. When we need to change the structure of what we do, we should somehow loosen that static coupling and try something new. We should dissolve the existing business, which is static coupling, and look for creating something new. When we do so, we can sort of stay in touch with our customary business partners, and after some circling and asking around we form a new business structure, involving people we clearly coordinate with. This is dynamic correlated coupling. Finally, we can decide to sail completely uncharted waters, and take our business concept to China, or to New Zealand, and try to work with completely different people. What we do, in such a case, is emitting some sort of business signal into the environment, and waiting for any response from whoever is interested. This is dynamic random coupling. Attracting random followers to a new You Tube channel is very much an example of the same.

At the level of social cohesion, we can be intelligent in two distinct ways. On the one hand, we can keep the given pattern of collective associations behaviour at the same level, i.e. one of the three I have just mentioned. We keep it ritualized and static, or somehow loose and dynamically correlated, or, finally, we take care of not ritualizing too much and keep it deliberately at the level of random associations. On the other hand, we can shift between different levels of cohesion. We take some institutions, we start experimenting with making them more flexible, at some point we possibly make it as free as possible, and we gain experience, which, in turn, allows us to create new institutions.

When applying the issue of social cohesion in collective intelligence to economic phenomena, we can use a little trick, to be found, for example, in de Vincenzo et al (2018[4]): we assume that quantitative economic variables, which we normally perceive as just numbers, are manifestations of distinct collective decisions. When I have the price of energy, let’s say, €0,17 per kilowatt hour, I consider it as the outcome of collective decision-making. At this point, it is useful to remember the fundamentals of intelligence. We perceive our own, individual decisions as outcomes of our independent thinking. We associate them with the fact of wanting something, and being apprehensive regarding something else etc. Still, neurologically, those decisions are outcomes of some neurons firing in a certain sequence. Same for economic variables, i.e. mostly prices and quantities: they are fruit of interactions between the members of a community. When I buy apples in the local marketplace, I just buy them for a certain price, and, if they look bad, I just don’t buy. This is not any form of purposeful influence upon the market. Still, when 10 000 people like me do the same, sort of ‘buy when price good, don’t when the apple is bruised’, a patterned process emerges. The resulting price of apples is the outcome of that process.

Social cohesion can be viewed as association between collective decisions, not just between individual actions. The resulting methodology is made, roughly speaking, of three steps. Step one: I put all the economic variables in my model over a common denominator (common scale of measurement). Step two: I calculate the relative cohesion between them with the general concept of a fitness function, which I can express, for example, as the Euclidean distance between local values of variables in question. Step three: I calculate the average of those Euclidean distances, and I calculate its reciprocal, like « 1/x ». This reciprocal is the direct measure of cohesion between decisions, i.e. the higher the value of this precise « 1/x », the more cohesion between different processes of economic decision-making.

Now, those of you with a sharp scientific edge could say now: “Wait a minute, doc. How do you know we are talking about different processes of decision making? Who do you know that variable X1 comes from a different process than variable X2?”. This is precisely my point. The swarm theory tells me that if I can observe changing a cohesion between those variables, I can reasonably hypothesise that their underlying decision-making processes are distinct. If, on the other hand, their mutual Euclidean distance stays the same, I hypothesise that they come from the same process.

Summing up, here is the general drift: I take an economic model and I formulate three hypotheses as for the occurrence of collective intelligence in that model. Hypothesis #1: different variables of the model come from different processes of collective decision-making.

Hypothesis #2: the economic system underlying the model has the capacity to learn as a collective intelligence, i.e. to durably increase or decrease the mutual cohesion between those processes. Hypothesis #3: collective learning in the presence of economic shocks is different from the instance of learning in the absence of such shocks.

They look nice, those hypotheses. Now, why the hell should anyone bother? I mean what are the practical outcomes of those hypotheses being true or false? In my experimental perceptron, I express the presence of economic shocks by using hyperbolic tangent as neural function of activation, whilst the absence of shocks (or the presence of countercyclical policies) is expressed with a sigmoid function. Those two yield very different processes of learning. Long story short, the sigmoid learns more, i.e. it accumulates more local errors (this more experimental material for learning), and it generates a steady trend towards lower a cohesion between variables (decisions). The hyperbolic tangent accumulates less experiential material (it learns less), and it is quite random in arriving to any tangible change in cohesion. The collective intelligence I mimicked with that perceptron looks like the kind of intelligence, which, when going through shocks, learns only the skill of returning to the initial position after shock: it does not create any lasting type of change. The latter happens only when my perceptron has a device to absorb and alleviate shocks, i.e. the sigmoid neural function.

When I have my perceptron explicitly feeding back that cohesion between variables (i.e. feeding back the fitness function considered as a local error), it learns less and changes less, but not necessarily goes through less shocks. When the perceptron does not care about feeding back the observable distance between variables, there is more learning and more change, but not more shocks. The overall fitness function of my perceptron changes over time The ‘over time’ depends on the kind of neural activation function I use. In the case of hyperbolic tangent, it is brutal change over a short time, eventually coming back to virtually the same point that it started from. In the hyperbolic tangent, the passage between various levels of association, according to the swarm theory, is super quick, but not really productive. In the sigmoid, it is definitely a steady trend of decreasing cohesion.

I want to know what the hell I am doing. I feel I have made a few steps towards that understanding, but getting to know what I am doing proves really hard.

I am consistently delivering good, almost new science to my readers, and love doing it, and I am working on crowdfunding this activity of mine. As we talk business plans, I remind you that you can download, from the library of my blog, the business plan I prepared for my semi-scientific project Befund  (and you can access the French version as well). You can also get a free e-copy of my book ‘Capitalism and Political Power’ You can support my research by donating directly, any amount you consider appropriate, to my PayPal account. You can also consider going to my Patreon page and become my patron. If you decide so, I will be grateful for suggesting me two things that Patreon suggests me to suggest you. Firstly, what kind of reward would you expect in exchange of supporting me? Secondly, what kind of phases would you like to see in the development of my research, and of the corresponding educational tools?

[1] Harsanyi, J. C., & Selten, R. (1988). A general theory of equilibrium selection in games. MIT Press Books, 1.

[2] Malkiel, B. G., & Fama, E. F. (1970). Efficient capital markets: A review of theory and empirical work. The journal of Finance, 25(2), 383-417.

[3] Stradner, J., Thenius, R., Zahadat, P., Hamann, H., Crailsheim, K., & Schmickl, T. (2013). Algorithmic requirements for swarm intelligence in differently coupled collective systems. Chaos, Solitons & Fractals, 50, 100-114.

[4] De Vincenzo, I., Massari, G. F., Giannoccaro, I., Carbone, G., & Grigolini, P. (2018). Mimicking the collective intelligence of human groups as an optimization tool for complex problems. Chaos, Solitons & Fractals, 110, 259-266.

Joseph et le perceptron

 

Mon éditorial sur You Tube

 

Voilà que mon idée d’appliquer l’intelligence artificielle pour simuler des décisions collectives – et plus particulièrement l’implémentation possible d’un schéma financier participatif à l’échelle locale – prend des couleurs. Je viens de travailler un peu sur l’idée de cohésion mutuelle entre les décisions collectives, bien dans l’esprit de ces articles que j’avais cité dans « Si je permets plus d’extravagance ». J’ai inclus la composante de cohésion dans le perceptron que je décris sur ce blog et applique dans ma recherche depuis à peu près 2 mois. Ça commence à donner des résultats intéressants : un perceptron qui prend en compte la cohésion relative de ses propres variables acquiert une certaine noblesse d’apprentissage profond. Vous avez pu lire les premiers résultats de cette approche dans « How can I possibly learn on that thing I have just become aware I do? ».

Depuis cette dernière mise à jour je me suis avancé un peu dans l’application de cette idée de cohésion et de la théorie d’essaims dans ma propre recherche. J’ai remarqué une différence nette entre la cohésion générée par le perceptron suivant la façon d’observer cette cohésion. Je peux adopter deux stratégies de simulation en ce qui concerne le rôle de la cohésion mutuelle entre variables. Stratégie no. 1 : je calcule la cohésion mutuelle entre les décisions représentées par les variables et je m’en arrête à l’observation. Le perceptron n’utilise donc pas la fonction d’adaptation comme paramètre dans le processus d’apprentissage : le réseau neuronal ne sait pas quel degré de cohésion il rend. J’ajoute donc une dimension additionnelle à l’observation de ce que fait le réseau neuronal mais je ne change pas la structure logique de réseau. Stratégie no. 2 : j’inclus les valeurs locales de la fonction d’adaptation – donc de la mesure de cohésion entre variables – comme paramètre utilisé par le perceptron. La cohésion mesurée dans la ronde d’expérimentation « k – 1 » est utilisée comme donnée dans la ronde « k ». La cohésion entre variables modifie la structure logique du réseau de façon récurrente. Je crée donc une composante d’apprentissage profond : le perceptron, initialement orienté sur l’expérimentation pure, commence à prendre en compte la cohésion interne entre ses propres décisions.

Cette prise en compte est indirecte. La cohésion des variables observée dans la ronde « k – 1 » s’ajoute, comme information additionnelle, aux valeurs de ces variables prise en compte dans la ronde « k ». Par conséquent, cette mesure de cohésion modifie l’erreur locale générée par le réseau et ainsi influence le processus d’apprentissage. Le mécanisme d’apprentissage sur la base de cohésion entre variables est donc identique au mécanisme de base de ce perceptron : la fonction d’adaptation, dont la valeur est inversement proportionnelle à la cohésion entre variables est une source d’erreur de plus. Le perceptron tend à minimiser l’erreur locale, donc il devrait, logiquement, minimiser la fonction d’adaptation aussi et ainsi maximiser la cohésion. Ça semble logique à première vue.

Eh bien, voilà que mon perceptron me surprend et il me surprend de façons différentes suivant la fonction d’activation qu’il utilise pour apprendre. Lorsque l’apprentissage se fait à travers la fonction sigmoïde, le perceptron rend toujours moins de cohésion à la fin des 5000 rondes d’expérimentation qu’il en rendait au début. Le sigmoïde à l’air de gonfler systématiquement la distance Euclidienne entre ses variables, quelle stratégie d’apprentissage que ce soit, la no. 1 ou bien la no. 2. Lorsque c’est la no. 2 (donc la cohésion est explicitement prise en compte) le perceptron génère une significativement moindre erreur cumulative et une plus grande cohésion à la fin. Moins d’erreur cumulative veut dire moins d’apprentissage : un perceptron apprend à travers l’analyse de ses propres erreurs. En même temps le sigmoïde qui doit activement observer sa propre cohésion devient un peu moins stable. La courbe d’erreur cumulative – donc la courbe essentielle d’apprentissage – devient un peu plus accidentée, avec des convulsions momentanées.

En revanche, lorsque mon perceptron s’efforce d’être intelligent à travers la tangente hyperbolique , il ne change pas vraiment la cohésion fondamentale entre variables. Il se comporte de façon typique à la tangente hyperbolique – donc il s’affole localement sans que ça change beaucoup à la longue – mais à la fin de la journée la cohésion générale entre variables diffère peu ou pas du tout par rapport à la position de départ. Pendant que le sigmoïde à l’air d’apprendre quelque chose à propos de sa cohésion – et ce quelque chose semble se résumer à dire qu’il faut vraiment la réduire, la cohésion – la tangente hyperbolique semble être quasi-inapte à apprendre quoi que ce soit de significatif. En plus, lorsque la tangente hyperbolique prend explicitement en compte sa propre cohésion, son erreur cumulative devient un peu moindre mais surtout son comportement devient beaucoup plus aléatoire, dans plusieurs dimensions. La courbe d’erreur locale acquiert beaucoup plus d’amplitude et en même temps l’erreur cumulative après 5000 rondes d’expérimentation varie plus d’une instance de 5000 à l’autre. La courbe de cohésion est tout aussi affolée mais à la fin de la journée y’a pas beaucoup de changement niveau cohésion.

J’ai déjà eu plusieurs fois cette intuition de base à propos de ces deux fonctions d’activation neurale : elles représentent des sentiers d’apprentissage fondamentalement différents. Le sigmoïde est comme un ingénieur enfermé à l’intérieur d’une capsule blindée. Il absorbe et amortit les chocs locaux tout en les menant gentiment dans une direction bien définie. La tangente hyperbolique quant à elle se comporte comme un chimpanzé névrotique : ça gueule à haute voix à la moindre dissonance, mais ça ne tire pas beaucoup de conclusions.  Je suis tenté de dire que le sigmoïde est comme intellect et la tangente hyperbolique représente les émotions. Réaction pesée et rationnelle d’une part, réaction vive et paniquarde d’autre part.

Je m’efforce de trouver une représentation graphique pour tout ce bazar, quelque chose qui soit à la fois synthétique et pertinent par rapport à ce que j’ai déjà présenté dans mes mises à jour précédentes. Je veux vous montrer la façon dont le perceptron apprend sous des conditions différentes. Je commence avec l’image. Ci-dessous, vous trouverez 3 graphes qui décrivent la façon dont mon perceptron apprend sous des conditions différentes. Plus loin, après les graphes, je développe une discussion.

 

Bon, je discute. Tout d’abord, les variables. J’en ai quatre dans ces graphes. La première, marquée comme ligne bleue avec des marques rouges discrètes, c’est l’erreur accumulée générée avec sigmoïde. Une remarque : cette fois, lorsque je dis « erreur accumulée », elle est vraiment accumulée. C’est la somme des toutes les erreurs locales, accumulées à mesure des rondes consécutives d’expérimentation. C’est donc comme ∑e(k) où « e(k) » est l’erreur locale – donc déviation par rapport aux valeurs initiales – observée sur les variables de résultat dans la k-tième ronde d’expérimentation. La ligne orange donne le même, donc l’erreur accumulée, seulement avec la fonction de tangente hyperbolique.

L’erreur accumulée, pour moi, elle est la mesure la plus directe de l’apprentissage compris de façon purement quantitative. Plus d’erreur accumulée, plus d’expérience mon perceptron a gagné. Quel que soit le scénario représenté sur les graphes, le perceptron accumule de l’apprentissage de manière différente, suivant la fonction neurale. Le sigmoïde accumule de l’expérience sans équivoque et d’une façon systématique. Avec la tangente hyperbolique, c’est différent. Lorsque j’observe cette courbe accidentée, j’ai l’impression intuitive d’un apprentissage par à-coups. Je vois aussi quelque chose d’autre, que j’ai même de la peine à nommer de manière précise. Si la courbe d’erreur accumulée – donc d’expérience rencontrée – descend abruptement, qu’est-ce que ça signifie ? Ce qui vient à mon esprit, c’est l’idée d’expériences contraires qui produisent de l’apprentissage contradictoire. Un jour, je suis très content par la collaboration avec ces gens de l’autre côté de la rue (l’autre côté de l’océan, de l’idéologie etc.) et je suis plein de conclusions comme « L’accord c’est mieux que la discorde » etc. Le jour suivant, lorsque j’essaie de reproduire cette expérience positive, ‘y-a du sable dans l’engrenage, tout à coup. Je ne peux pas trouver de langage commun avec ces mecs, ils sont nuls, ça ne semble aller nulle part de travailler ensemble. Chaque jour, je fais face à la possibilité équiprobable de me balancer dans l’un ou l’autre des extrêmes.

Je ne sais pas comme vous, mais moi je reconnais ce genre d’apprentissage. C’est du pain quotidien, en fait. Á moins d’avoir une méthode progressive d’apprendre quelque chose – donc le sigmoïde – nous apprenons fréquemment comme ça, c’est-à-dire en développant des schémas comportementaux contradictoires.

Ensuite, j’introduis une mesure de cohésion entre les variables du perceptron, comme l’inverse de la fonction d’adaptation, donc comme « 1/V(x) ». J’ai décidé d’utiliser cet inverse, au lieu de la fonction d’adaptation strictement dite, pour une explication plus claire. La fonction d’adaptation strictement dite est la distance Euclidienne entre les valeurs locales des variables de mon perceptron. Interprétée comme telle, la fonction d’adaptation est donc le contraire de la cohésion. Je me réfère à la théorie d’essaims, telle que je l’avais discutée dans « Si je permets plus d’extravagance ». Lorsque la courbe de « 1/V(x) » descend, cela veut dire moins de cohésion : l’essaim relâche ces associations internes. Lorsque « 1/V(x) » monte, une rigidité nouvelle s’introduit dans les associations de ce même essaim.

Question : puis-je légitimement considérer mes deux tenseurs – donc une collection structurée des variables numériques – comme un essaim social ? Je pense que je peux les regarder comme le résultat complexe d’activité d’un tel essaim : des décisions multiples, associées entre elles de manière changeante, peuvent être vues comme la manifestation d’apprentissage collectif.

Avec cette assomption, je vois, encore une fois – deux façons d’apprendre à travers les deux fonctions neurales différentes. Le sigmoïde produit toujours de la cohésion décroissante progressivement. L’essaim social qui marche selon ce modèle comportemental apprend progressivement (il accumule progressivement de l’expérience cohérente) et à mesure d’apprendre il relâche sa cohésion interne de façon contrôlée. L’essaim qui se comporte plutôt tangente hyperbolique fait quelque chose de différent : il oscille entre des niveaux différents de cohésion, comme s’il testait ce qui se passe lorsqu’on se permet plus de liberté d’expérimenter.

Bon, ça, ce sont mes impressions après avoir fait bosser mon perceptron sous des conditions différentes. Maintenant, puis-je trouver des connexions logiques entre ce que fait mon perceptron et la théorie économique ? Je dois me rappeler, encore et encore, que le perceptron, ainsi que tout le bazar d’intelligence collective, ça me sert à prédire l’absorption possible de mon concept financier dans le marché d’énergies renouvelables.

L’observation du perceptron suggère que le marché, il est susceptible de réagir à cette idée nouvelle de deux façons différentes : agitation d’une part et changement progressif d’autre part. En fait, en termes de théorie économique, je vois une association avec la théorie des cycles économiques de Joseph Schumpeter. Joseph, il assumait que changement technologique s’associe avec du changement social à travers deux sentiers distincts et parallèles : la destruction créative, qui fait souvent mal au moment donné, oblige la structure du système économique à changer de façon progressive.

Je continue à vous fournir de la bonne science, presque neuve, juste un peu cabossée dans le processus de conception. Je vous rappelle que vous pouvez télécharger le business plan du projet BeFund (aussi accessible en version anglaise). Vous pouvez aussi télécharger mon livre intitulé “Capitalism and Political Power”. Je veux utiliser le financement participatif pour me donner une assise financière dans cet effort. Vous pouvez soutenir financièrement ma recherche, selon votre meilleur jugement, à travers mon compte PayPal. Vous pouvez aussi vous enregistrer comme mon patron sur mon compte Patreon . Si vous en faites ainsi, je vous serai reconnaissant pour m’indiquer deux trucs importants : quel genre de récompense attendez-vous en échange du patronage et quelles étapes souhaitiez-vous voir dans mon travail ?

How can I possibly learn on that thing I have just become aware I do?

 

My editorial on You Tube

 

I keep working on the application of neural networks to simulate the workings of collective intelligence in humans. I am currently macheting my way through the model proposed by de Vincenzo et al in their article entitled ‘Mimicking the collective intelligence of human groups as an optimization tool for complex problems’ (2018[1]). In the spirit of my own research, I am trying to use optimization tools for a slightly different purpose, that is for simulating the way things are done. It usually means that I relax some assumptions which come along with said optimization tools, and I just watch what happens.

Vincenzo et al propose a model of artificial intelligence, which combines a classical perceptron, such as the one I have already discussed on this blog (see « More vigilant than sigmoid », for example) with a component of deep learning based on the observable divergences in decisions. In that model, social agents strive to minimize their divergences and to achieve relative consensus. Mathematically, it means that each decision is characterized by a fitness function, i.e. a function of mathematical distance from other decisions made in the same population.

I take the tensors I have already been working with, namely the input tensor TI = {LCOER, LCOENR, KR, KNR, IR, INR, PA;R, PA;NR, PB;R, PB;NR} and the output tensor is TO = {QR/N; QNR/N}. Once again, consult « More vigilant than sigmoid » as for the meaning of those variables. In the spirit of the model presented by Vincenzo et al, I assume that each variable in my tensors is a decision. Thus, for example, PA;R, i.e. the basic price of energy from renewable sources, which small consumers are charged with, is the tangible outcome of a collective decision. Same for the levelized cost of electricity from renewable sources, the LCOER, etc. For each i-th variable xi in TI and TO, I calculate its relative fitness to the overall universe of decisions, as the average of itself, and of its Euclidean distances to other decisions. It looks like:

 

V(xi) = (1/N)*{xi + [(xi – xi;1)2]0,5 + [(xi – xi;2)2]0,5 + … + [(xi – xi;K)2]0,5}

 

…where N is the total number of variables in my tensors, and K = N – 1.

 

In a next step, I can calculate the average of averages, thus to sum up all the individual V(xi)’s and divide that total by N. That average V*(x) = (1/N) * [V(x1) + V(x2) + … + V(xN)] is the measure of aggregate divergence between individual variables considered as decisions.

Now, I imagine two populations: one who actively learns from the observed divergence of decisions, and another one who doesn’t really. The former is represented with a perceptron that feeds back the observable V(xi)’s into consecutive experimental rounds. Still, it is just feeding that V(xi) back into the loop, without any a priori ideas about it. The latter is more or less what it already is: it just yields those V(xi)’s but does not do much about them.

I needed a bit of thinking as for how exactly should that feeding back of fitness function look like. In the algorithm I finally came up with, it looks differently for the input variables on the one hand, and for the output ones. You might remember, from the reading of « More vigilant than sigmoid », that my perceptron, in its basic version, learns by estimating local errors observed in the last round of experimentation, and then adding those local errors to the values of input variables, just to make them roll once again through the neural activation function (sigmoid or hyperbolic tangent), and see what happens.

As I upgrade my perceptron with the estimation of fitness function V(xi), I ask: who estimates the fitness function? What kind of question is that? Well, a basic one. I have that neural network, right? It is supposed to be intelligent, right? I add a function of intelligence, namely that of estimating the fitness function. Who is doing the estimation: my supposedly intelligent network or some other intelligent entity? If it is an external intelligence, mine, for a start, it just estimates V(xi), sits on its couch, and watches the perceptron struggling through the meanders of attempts to be intelligent. In such a case, the fitness function is like sweat generated by a body. The body sweats but does not have any way of using the sweat produced.

Now, if the V(xi) is to be used for learning, the perceptron is precisely the incumbent intelligent structure supposed to use it. I see two basic ways for the perceptron to do that. First of all, the input neuron of my perceptron can capture the local fitness functions on input variables and add them, as additional information, to the previously used values of input variables. Second of all, the second hidden neuron can add the local fitness functions, observed on output variables, to the exponent of the neural activation function.

I explain. I am a perceptron. I start my adventure with two tensors: input TI = {LCOER, LCOENR, KR, KNR, IR, INR, PA;R, PA;NR, PB;R, PB;NR} and output TO = {QR/N; QNR/N}. The initial values I start with are slightly modified in comparison to what was being processed in « More vigilant than sigmoid ». I assume that the initial market of renewable energies – thus most variables of quantity with ‘R’ in subscript – is quasi inexistent. More specifically, QR/N = 0,01 and  QNR/N = 0,99 in output variables, whilst in the input tensor I have capital invested in capacity IR = 0,46 (thus a readiness to go and generate from renewables), and yet the crowdfunding flow K is KR = 0,01 for renewables and KNR = 0,09 for non-renewables. If you want, it is a sector of renewable energies which is sort of ready to fire off but hasn’t done anything yet in that department. All in all, I start with: LCOER = 0,26; LCOENR = 0,48; KR = 0,01; KNR = 0,09; IR = 0,46; INR = 0,99; PA;R = 0,71; PA;NR = 0,46; PB;R = 0,20; PB;NR = 0,37; QR/N = 0,01; and QNR/N = 0,99.

Being a pure perceptron, I am dumb as f**k. I can learn by pure experimentation. I have ambitions, though, to be smarter, thus to add some deep learning to my repertoire. I estimate the relative mutual fitness of my variables according to the V(xi) formula given earlier, as arithmetical average of each variable separately and its Euclidean distance to others. With the initial values as given, I observe: V(LCOER; t0) = 0,302691788; V(LCOENR; t0) = 0,310267104; V(KR; t0) = 0,410347388; V(KNR; t0) = 0,363680721; V(IR ; t0) = 0,300647174; V(INR ; t0) = 0,652537097; V(PA;R ; t0) = 0,441356844 ; V(PA;NR ; t0) = 0,300683099 ; V(PB;R ; t0) = 0,316248176 ; V(PB;NR ; t0) = 0,293252713 ; V(QR/N ; t0) = 0,410347388 ; and V(QNR/N ; t0) = 0,570485945. All that stuff put together into an overall fitness estimation is like average V*(x; t0) = 0,389378787.

I ask myself: what happens to that fitness function when as I process information with my two alternative neural functions, the sigmoid or the hyperbolic tangent. I jump to experimental round 1500, thus to t1500, and I watch. With the sigmoid, I have V(LCOER; t1500) =  0,359529289 ; V(LCOENR; t1500) =  0,367104605; V(KR; t1500) =  0,467184889; V(KNR; t1500) = 0,420518222; V(IR ; t1500) =  0,357484675; V(INR ; t1500) =  0,709374598; V(PA;R ; t1500) =  0,498194345; V(PA;NR ; t1500) =  0,3575206; V(PB;R ; t1500) =  0,373085677; V(PB;NR ; t1500) =  0,350090214; V(QR/N ; t1500) =  0,467184889; and V(QNR/N ; t1500) = 0,570485945, with average V*(x; t1500) =  0,441479829.

Hmm, interesting. Working my way through intelligent cognition with a sigmoid, after 1500 rounds of experimentation, I have somehow decreased the mutual fitness of decisions I make through individual variables. Those V(xi)’s have changed. Now, let’s see what it gives when I do the same with the hyperbolic tangent: V(LCOER; t1500) =   0,347752478; V(LCOENR; t1500) =  0,317803169; V(KR; t1500) =   0,496752021; V(KNR; t1500) = 0,436752021; V(IR ; t1500) =  0,312040791; V(INR ; t1500) =  0,575690006; V(PA;R ; t1500) =  0,411438698; V(PA;NR ; t1500) =  0,312052766; V(PB;R ; t1500) = 0,370346458; V(PB;NR ; t1500) = 0,319435252; V(QR/N ; t1500) =  0,496752021; and V(QNR/N ; t1500) = 0,570485945, with average V*(x; t1500) =0,413941802.

Well, it is becoming more and more interesting. Being a dumb perceptron, I can, nevertheless, create two different states of mutual fitness between my decisions, depending on the kind of neural function I use. I want to have a bird’s eye view on the whole thing. How can a perceptron have a bird’s eye view of anything? Simple: it rents a drone. How can a perceptron rent a drone? Well, how smart do you have to be to rent a drone? Anyway, it gives something like the graph below:

 

Wow! So this is what I do, as a perceptron, and what I haven’t been aware so far? Amazing. When I think in sigmoid, I sort of consistently increase the relative distance between my decisions, i.e. I decrease their mutual fitness. The sigmoid, that function which sorts of calms down any local disturbance, leads to making a decision-making process like less coherent, more prone to embracing a little chaos. The hyperbolic tangent thinking is different. It occasionally sort of stretches across a broader spectrum of fitness in decisions, but as soon as it does so, it seems being afraid of its own actions, and returns to the initial level of V*(x). Please, note that as a perceptron, I am almost alive, and I produce slightly different outcomes in each instance of myself. The point is that in the line corresponding to hyperbolic tangent, the comb-like pattern of small oscillations can stretch and move from instance to instance. Still, it keeps the general form of a comb.

OK, so this is what I do, and now I ask myself: how can I possibly learn on that thing I have just become aware I do? As a perceptron, endowed with this precise logical structure, I can do one thing with information: I can arithmetically add it to my input. Still, having some ambitions for evolving, I attempt to change my logical structure, and I risk myself into incorporating somehow the observable V(xi) into my neural activation function. Thus, the first thing I do with that new learning is to top the values of input variables with local fitness functions observed in the previous round of experimenting. I am doing it already with local errors observed in outcome variables, so why not doubling the dose of learning? Anyway, it goes like: xi(t0) = xi(t-1) + e(xi; t-1) + V(xi; t-1). It looks interesting, but I am still using just a fraction of information about myself, i.e. just that about input variables. Here is where I start being really ambitious. In the equation of the sigmoid function, I change s = 1 / [1 + exp(∑xi*Wi)] into s = 1 / [1 + exp(∑xi*Wi + V(To)], where V(To) stands for local fitness functions observed in output  variables. I do the same by analogy in my version based on hyperbolic tangent. The th = [exp(2*∑xi*wi)-1] / [exp(2*∑xi*wi) + 1] turns into th = {exp[2*∑xi*wi + V(To)] -1} / {exp[2*∑xi*wi + V(To)] + 1}. I do what I know how to do, i.e. adding information from fresh observation, and I apply it to change the structure of my neural function.

All those ambitious changes in myself, put together, change my pattern of learing as shown in the graph below:

When I think sigmoid, the fact of feeding back my own fitness function does not change much. It makes the learning curve a bit steeper in the early experimental rounds, and makes it asymptotic to a little lower threshold in the last rounds, as compared to learning without feedback on V(xi). Yet, it is the same old sigmoid, with just its sleeves ironed. On the other hand, the hyperbolic tangent thinking changes significantly. What used to look like a comb, without feedback, now looks much more aggressive, like a plough on steroids. There is something like a complex cycle of learning on the internal cohesion of decisions made. Generally, feeding back the observable V(xi) increases the finally achieved cohesion in decisions, and, in the same time, it reduces the cumulative error gathered by the perceptron. With that type of feedback, the cumulative error of the sigmoid, which normally hits around 2,2 in this case, falls to like 0,8. With hyperbolic tangent, cumulative errors which used to be 0,6 ÷ 0,8 without feedback, fall to 0,1 ÷ 0,4 with feedback on V(xi).

 

The (provisional) piece of wisdom I can have as my takeaway is twofold. Firstly, whatever I do, a large chunk of perceptual learning leads to a bit less cohesion in my decisions. As I learn by experience, I allow myself more divergence in decisions. Secondly, looping on that divergence, and including it explicitly in my pattern of learning leads to relatively more cohesion at the end of the day. Still, more cohesion has a price – less learning.

 

I am consistently delivering good, almost new science to my readers, and love doing it, and I am working on crowdfunding this activity of mine. As we talk business plans, I remind you that you can download, from the library of my blog, the business plan I prepared for my semi-scientific project Befund  (and you can access the French version as well). You can also get a free e-copy of my book ‘Capitalism and Political Power’ You can support my research by donating directly, any amount you consider appropriate, to my PayPal account. You can also consider going to my Patreon page and become my patron. If you decide so, I will be grateful for suggesting me two things that Patreon suggests me to suggest you. Firstly, what kind of reward would you expect in exchange of supporting me? Secondly, what kind of phases would you like to see in the development of my research, and of the corresponding educational tools?

[1] De Vincenzo, I., Massari, G. F., Giannoccaro, I., Carbone, G., & Grigolini, P. (2018). Mimicking the collective intelligence of human groups as an optimization tool for complex problems. Chaos, Solitons & Fractals, 110, 259-266.

Si je permets plus d’extravagance

 

Mon éditorial sur You Tube

 

Je continue ma petite aventure intellectuelle avec l’application des réseaux neuronaux – donc de l’intelligence artificielle – à la simulation de l’intelligence collective des sociétés humaines. J’ai découvert un créneau de recherche – documenté dans la littérature – qui s’occupe presque exclusivement du sujet de l’intelligence collective en général. Voici donc un article par Stradner et al. (2013[1]) qui étudie les algorithmes afférents à la théorie d’essaims ou intelligence distribuée. Nous, les humains, nous hésitons toujours en ce qui concerne notre propre intelligence collective mais nous avons des idées bien arrêtées en ce qui concerne celle d’abeilles ou des fourmis. La théorie d’essaims est une approche behavioriste à l’intelligence collective : elle assume que l’action en général, intelligente ou pas tout à fait, peut être considérée comme collective si elle est coordonnée. L’intelligence collective d’un ensemble d’entités plus ou moins autonomes peut être observée comme coordination et plus exactement comme association. Nous pouvons percevoir toute action comme mouvement et alors nous pouvons juger de la coordination dans cette action par le degré d’association entre mouvements individuels.

 

Il y a trois classes d’association : dynamique aléatoire, dynamique corrélée et statique. La distinction se fait en fonction d’interactions observées entre les entités qui font l’ensemble donné. Si les interactions sont des contacts aléatoires, dépourvus des schémas habituels – sans ritualisation, si vous voulez – nous parlons d’association aléatoire. On s’associe, de temps à l’autre, mais on ne fait pas d’amis dans le processus. S’il y a échange d’information dans l’association aléatoire, nous perdons une part significative du contenu communiqué puisque nous n’avons pas de rituels sociaux pour le codage et décodage, ainsi que pour la reconnaissance de source. Si je suis un petit investisseur boursier, parmi une foule d’autres petits investisseurs que je ne croise que de façon accidentelle, c’est largement un cas d’association dynamique aléatoire.

 

L’intelligence dans association dynamique aléatoire, où est-elle ? Y-a-t-il une intelligence quelconque dans ce type d’interaction ? Une annonce publicitaire dans la télé c’est un message jeté en l’air dans l’espoir que quelqu’un l’attrape. Lorsqu’une nouvelle version de Renault Mégane est lancée, c’est un concept technologique introduit dans une population hétérogène, dans l’espoir de trouver un intérêt suffisamment prononcé de la part de certaines personnes dans cette population. Ce sont des cas d’interaction basée sur des associations dynamiques aléatoires. C’est un cas d’intelligence collective basée sur la méthode d’essai et erreur. On produit quelque changement et on sait que dans la plupart d’interactions sociales ce changement va être sans conséquence majeure, néanmoins on compte que d’une perspective probabiliste certaines interactions vont traduire de changement local en quelque chose de plus durable.

 

Dans l’expression « dynamique aléatoire » le mot « dynamique » veut dire que chaque entité dans l’essaim entre dans un nombre changeant d’interactions avec d’autres entités. Si je suis dans un essaim dynamique, je peux interagir avec 5 autres entités ou bien avec 50 autres, ça dépend. Lorsque « ça dépend » prend une forme récurrente, avec un schéma visible, ma position dans l’essaim devient dynamique corrélée. Le fait d’interagir avec entité A entraîne, avec une probabilité possible à définir, l’interaction avec l’entité B etc. Ce schéma répétitif permet de ritualiser la communication et de la faire plus efficiente, avec moins de pertes niveau contenu. Je retourne à l’exemple de la nouvelle version de Renault Mégane. Les agissements d’un concessionnaire Renault bien établi dans une communauté locale, lorsque ledit contacte ses clients fidèles locaux, c’est-à-dire ceux dont il sait que vu leur histoire de service prêté aux bagnoles Renault qu’ils ont maintenant les prédispose à acheter cette nouvelle bête bien attractive : ça c’est du dynamique corrélé.

 

Lorsque le schéma récurrent d’interaction devient rigide, donc lorsque chaque entité dans l’essaim interagit dans un réseau fixe d’autres entités – comme dans une structure cristalline – alors nous parlons d’association statique. Les interactions rigides sont hautement formalisées, y compris le mode de communication. Ce qui se passe dans un Parlement – enfin ce qui s’y passe officiellement – est ce type d’interaction.

 

Ces distinctions fondamentales peuvent être appliquées aux réseaux neuronaux et à l’intelligence artificielle qui s’ensuit. Les réseaux probabilistes, qui créent des agglomérations des phénomènes sur la base des traits distinctifs définis par observation, sans assomptions à priori, sont des formes d’association dynamique aléatoire. On se groupe autour de quelque chose qui émerge, dans cette situation précise, comme le truc le plus évident pour se grouper autour. L’algorithme appelé BEECLUST est un exemple de ce type d’intelligence collective. A l’autre extrémité nous avons des algorithmes pour simuler des relations plus ou moins statiques. L’un d’eux est le Réseau d’Hormones Artificielles. Imaginez un essaim d’abeilles – donc un BEECLUST – qui au lieu de s’agglomérer de façon tout à fait spontanée et spécifique à la situation donnée s’agrège autour d’un agent chimique, comme des phéromones. Si j’ai un petit univers fait des phénomènes décrits avec des variables quantitatives, je peux inclure un agent artificiel d’agglomération, comme une hormone artificielle. Dans un marché, je peux introduire une fonction qui distribue les actifs financiers parmi les agents économiques et imposer une règle d’agglomération autour de ces actifs financiers. L’idée générale est que si dans une structure associée aléatoirement j’introduis un agent d’agglomération contrôlé, je peux transformer des associations aléatoires en des associations corrélées ou même des associations statiques.

 

Le truc intéressant est de définir quel type d’association est le plus approprié pour le cas donné. Il y a une classe d’algorithmes qui suivent le modèle d’Embryogénèse Virtuelle (Thenius et al. 2009[2]). Dans cette approche, chaque entité dans l’essaim définit et redéfinit ses associations avec d’autres entités à mesure que l’essaim change de taille et/ou en fonction des conditions externes à l’essaim. C’est tout comme les cellules d’un embryon, qui redéfinissent leurs associations avec d’autres cellules au fur et à mesure de la croissance de l’organisme entier.

 

J’ai trouvé un autre article, par Kolonin et al. (2016[3]), qui va dans une direction tout à fait différente dans l’étude de l’intelligence collective. Kolonin et al assument qu’une structure intelligente – le cerveau humain par exemple – est d’habitude une structure complexe, composée des sous-structures distinctes. L’intelligence est l’interaction aussi bien entre ces sous-unités qu’à l’intérieur de chaque entité séparément. Une collectivité est habituellement formée de sous-groupes culturels qui se distinguent l’un de l’autre par leurs systèmes respectifs des croyances. La formation de ces sous-groupes suit un schéma quasi-colloïdal : un système des croyances a une frontière sémantique – comme une membrane cellulaire – qui définit la compatibilité relative de ce système avec d’autres systèmes.

Kolonin et al ont conduit une expérience avec la participation de 2784 utilisateurs des réseaux sociaux. L’expérience visait à étudier la manière dont cette population choisie de façon aléatoire se structurerait en des sous – groupes avec des systèmes distincts des croyances. La méthode expérimentale consistait à créer des conditions pour que ces 2784 individus se communiquent entre eux de façon typique à un réseau social, avec l’introduction des contraintes possibles.

La première découverte intéressante est qu’à mesure que de l’information nouvelle était mise en circulation dans le réseau expérimental, elle était utilisée par les participants pour former des systèmes des croyances de plus en plus distincts et divergents. La vitesse de divergence tend à croître avec le temps : l’utilité marginale de chaque nouvelle unité d’information est croissante. En plus, la divergence survenait de façon la plus dynamique lorsque la population expérimentale ne rencontrait aucune contrainte significative. Lorsque des contraintes contrôlées étaient imposées sur le groupe – manque relatif de ressources, par exemple – les sous – groupes commençaient à chercher des manières de combler les différences des croyances et de créer des liens intergroupes.

Alors là, si cette expérience par Kolonin et al était robuste en termes de rigueur scientifique, c’est toute une théorie nouvelle qui en émerge. On se pose des questions au sujet de cette violence verbale bizarroïde qui survient dans aussi bien que par l’intermédiaire des réseaux sociaux. L’expérience citée montre que c’est absolument normal. On prend une collectivité, on lui assure des conditions de vie décentes et on lui donne un medium de communication qui facilite le partage d’information. Cette collectivité semble être condamnée à se scinder en des sous-groupes qui vont développer des dissonances de plus en plus prononcées dans leurs systèmes des croyances. Seulement une pression environnementale sentie comme significative peut inciter à chercher l’accord.

J’essaie d’associer les deux lignes différentes de raisonnement dans les deux articles que je viens de citer. Y-a-t-il un lien entre la théorie d’essaims et les types possibles d’association dans un essaim, d’une part, et le phénomène découvert dans l’expérience de Kolonin et al ? Je me dis qu’une disparité de plus en plus poussée d’une collectivité, en des sous-groupes distincts avec des systèmes distincts des croyances, veut dire de moins en moins d’aléatoire dans les associations d’individus et de plus en plus de corrélation prévisible. Si je tends à faire copain avec un groupe des gens qui démontrent des croyances similaires aux miennes, et en même temps je crée une distance vis-à-vis de ces-mecs-qui-se-gourent-complétement-dans-leur-vision-du-monde, mes associations se ritualisent et deviennent plus rigides. Dans un cas extrême, une divergence très poussée des systèmes des croyances peut créer un essaim rigide, où chaque entité suit un protocole très strict dans ses relations avec les autres et chacun a peur d’aller au-delà de ce protocole.

Voilà encore un autre article, par de Vicenzo et al (2018[4]) avec lequel je reviens vers les algorithmes d’intelligence artificielle. L’algorithme général – ou plutôt le modèle d’algorithme – que Vicenzo et al présentent est un exemple d’apprentissage profond, spécifiquement orienté comme représentation des décisions humaines collectives. Il y a donc une partie perceptron, similaire à ce que j’utilise couramment dans ma recherche sur le marché de l’énergie, et une partie qui utilise la théorie d’essaims pour évaluer la qualité des solutions préalablement définies de façon expérimentale par le perceptron. Je sens que je vais y passer quelque temps, avec cet article. Pour le moment, cette lecture particulière me pousse à poser une question à la frontière de maths et de la philosophie : comment les nombres aléatoires existent-ils dans une structure intelligente ?

J’explique. Voilà un perceptron simple, comme celui que j’ai discuté dans « De la misère, quoi » où les variables d’entrée, groupées dans un tenseur, reçoivent des coefficients de pondération aléatoires. Tout logiciel, les langages de programmation compris, génèrent les nombres aléatoires comme, en fait, des nombres quasi-aléatoires. Le logiciel se réfère à une bibliothèque des nombres compris entre 0 et 1 et y conduit quelque chose comme tirage au sort. Les nombres que le logiciel rend après la commande du type « random » sont donc des nombres prédéfinis dans la bibliothèque. La pondération des variables d’entrée avec des coefficients aléatoires consiste donc, mathématiquement, à créer une combinaison locale entre le tenseur des variables en question avec un tenseur, beaucoup plus complexe, des nombres quasi-aléatoires. Comment est-ce que ça reflète l’intelligence humaine ? Lorsque quelqu’un me demande de dire un nombre au hasard, comme ça, par surprise, est-ce que mon cerveau crée ce nombre ou bien puise-je dans une bibliothèque des nombres dont l’existence même est au-delà de ma conscience momentanée ?

Vicenzo et al présentent une façon intéressante d’utiliser un perceptron pour simuler les décisions collectives : les variables d’entrée du perceptron peuvent être présentées comme autant des décisions distinctes. Lorsque dans ma recherche j’ai ce tenseur d’entrée fait des prix d’énergie, ainsi que de son coût lissé LCOE et du capital investi, ces variables composantes peuvent être vues comme autant des décisions. Si nous prenons plusieurs décisions distinctes, il est important de comprendre leurs liens mutuels. Pour le faire, Vincenzo et al utilisent une procédure communément appelée « NK » ou bien « paysage adaptatif ». Si j’ai N décisions variables dans mon tenseur d’entrée, chacune d’elles peut entrer en K = N – 1 interactions avec les K = N – 1 autres.

Pour chaque décision « di » de parmi l’ensemble de N = {d1, d2, …, dN} décisions je peux définir une fonction d’adaptation V(di). La fonction d’adaptation, à son tour, repose sur l’assomption que des décisions distinctes peuvent former un tout fonctionnel si elles sont mutuellement cohérentes. Je peux exprimer la cohérence mutuelle de quoi que ce soit avec deux opérations mathématiques de base : la distance Euclidienne ou la division. La distance Euclidienne c’est tout simplement de la soustraction qui a peur des minus, donc au lieu de calculer d1 – d2, je fais [(d1 – d2)2]0,5 , juste en cas où d2 > d1.

Ma fonction d’adaptation peut donc se présenter comme V(di) = {[(di – d1)2]0,5 + [(di – d2)2]0,5 + … + [(di – dK)2]0,5} ou bien comme V(di) = (di/d1 + di/d2 + … + di/dK). Laquelle de ces deux formes choisir pour un problème donné ? En théorie, la distance Euclidienne reflète la différence pendant que la division représente une proportion. Allez voir ce qui est plus approprié pour votre problème. Si nous appréhendons la différence d’opinion, par exemple, comme chez Kolonin et al, cité plus haut, la distance Euclidienne semble être plus appropriée. En revanche, lorsque je prends en compte la magnitude des résultats des décisions distinctes – comme des taux de rendement sur un portefeuille d’investissements distincts – je peux essayer la proportion, donc la division. En pratique, essayez voir ce qui marche niveau computation. Mon expérience personnelle avec les réseaux neuronaux est celle d’un néophyte, mais j’ai déjà appris un truc : un réseau neuronal c’est comme un mécanisme d’horlogerie. Y’a des combinaisons d’équations qui marchent et celles qui ne marchent pas, point à la ligne. Vous remplacez la tangente hyperbolique avec le sinus hyperbolique, avec le même ensemble des valeurs initiales, et le perceptron se cale.

Un autre truc que j’ai appris : les perceptrons, ça marche bien avec des valeurs numériques relativement petites et lissées. Je prends donc V(di) = {[(di – d1)2]0,5 + [(di – d2)2]0,5 + … + [(di – dK)2]0,5} et je lui fais faire deux pas de danse. Pas no. 1 : inclure di dans ce tenseur. La fonction d’adaptation d’une décision c’est la décision-même plus la somme de ses différences par rapport aux autres K décisions du lot. Ça donne V(di) = {di + [(di – d1)2]0,5 + [(di – d2)2]0,5 + … + [(di – dK)2]0,5}. Ensuite, je réduis la valeur de V(di) en la divisant par N, le nombre total des décisions dans le jeu. J’ai alors donne V(di) = {di + [(di – d1)2]0,5 + [(di – d2)2]0,5 + … + [(di – dK)2]0,5} / N et c’est à peu de choses près la version de travail en ce qui concerne la fonction d’adaptation. C’est suffisamment complexe pour refléter la structure du problème et c’est suffisamment simplifié pour être utilisé dans un algorithme.

Le temps est venu de mettre cette mise à jour en ligne, sur mon blog. C’est donc le temps de conclure. Comme je passe en revue la littérature sur le phénomène d’intelligence collective, je vois un dénominateur commun à toutes ces lignes de recherche extrêmement diverses : une intelligence collective est une culture et en tant que telle elle se caractérise par une certaine cohésion interne. Haute cohésion veut dire efficacité aux dépens de la découverte. Lorsque je relâche la cohésion et je permets plus d’extravagance, je peux découvrir plus mais la culture devient difficile à diriger et peut générer des conflits.

Je continue à vous fournir de la bonne science, presque neuve, juste un peu cabossée dans le processus de conception. Je vous rappelle que vous pouvez télécharger le business plan du projet BeFund (aussi accessible en version anglaise). Vous pouvez aussi télécharger mon livre intitulé “Capitalism and Political Power”. Je veux utiliser le financement participatif pour me donner une assise financière dans cet effort. Vous pouvez soutenir financièrement ma recherche, selon votre meilleur jugement, à travers mon compte PayPal. Vous pouvez aussi vous enregistrer comme mon patron sur mon compte Patreon . Si vous en faites ainsi, je vous serai reconnaissant pour m’indiquer deux trucs importants : quel genre de récompense attendez-vous en échange du patronage et quelles étapes souhaitiez-vous voir dans mon travail ?

[1] Stradner, J., Thenius, R., Zahadat, P., Hamann, H., Crailsheim, K., & Schmickl, T. (2013). Algorithmic requirements for swarm intelligence in differently coupled collective systems. Chaos, Solitons & Fractals, 50, 100-114.

[2] Thenius R, Bodi M, Schmickl T, Crailsheim K. (2009) Evolving virtual embryogenesis to structure complex controllers. PerAdaMagazine; 2009.

[3] Kolonin, A., Vityaev, E., & Orlov, Y. (2016). Cognitive architecture of collective intelligence based on social evidence. Procedia Computer Science, 88, 475-481.

[4] De Vincenzo, I., Massari, G. F., Giannoccaro, I., Carbone, G., & Grigolini, P. (2018). Mimicking the collective intelligence of human groups as an optimization tool for complex problems. Chaos, Solitons & Fractals, 110, 259-266.

More vigilant than sigmoid

My editorial on You Tube

 

I keep working on the application of neural networks as simulators of collective intelligence. The particular field of research I am diving into is the sector of energy, its shift towards renewable energies, and the financial scheme I invented some time ago, which I called EneFin. As for that last one, you can consult « The essential business concept seems to hold », in order to grasp the outline.

I continue developing the line of research I described in my last update in French: « De la misère, quoi ». There are observable differences in the prices of energy according to the size of the buyer. In many countries – practically in all the countries of Europe – there are two, distinct price brackets. One, which I further designated as PB, is reserved to contracts with big consumers of energy (factories, office buildings etc.) and it is clearly lower. Another one, further called PA, is applied to small buyers, mainly households and really small businesses.

As an economist, I have that intuitive thought in the presence of price forks: that differential in prices is some kind of value. If it is value, why not giving it some financial spin? I came up with the idea of the EneFin contract. People buy energy from a local supplier, in the amount Q, who sources it from renewables (water, wind etc.), and they pay the price PA, thus generating a financial flow equal to Q*PA. That flow buys two things: energy priced at PB, and participatory titles in the capital of their supplier, for the differential Q*(PA – PB). I imagine some kind of crowdfunding platform, which could channel the amount of capital K = Q*(PA – PB).

That K remains in some sort of fluid relationship to I, or capital invested in the productive capacity of energy suppliers. Fluid relationship means that each of those capital balances can date other capital balances, no hard feelings held. As we talk (OK, I talk) about prices of energy and capital invested in capacity, it is worth referring to LCOE, or Levelized Cost Of Electricity. The LCOE is essentially the marginal cost of energy, and a no-go-below limit for energy prices.

I want to simulate the possible process of introducing that general financial concept, namely K = Q*(PA – PB), into the market of energy, in order to promote the development of diversified networks, made of local suppliers in renewable energy.

Here comes my slightly obsessive methodological idea: use artificial intelligence in order to simulate the process. In classical economic method, I make a model, I take empirical data, I regress some of it on another some of it, and I come up with coefficients of regression, and they tell me how the thing should work if we were living in a perfect world. Artificial intelligence opens a different perspective. I can assume that my model is a logical structure, which keeps experimenting with itself and we don’t the hell know where exactly that experimentation leads. I want to use neural networks in order to represent the exact way that social structures can possibly experiment with that K = Q*(PA – PB) thing. Instead of optimizing, I want to see that way that possible optimization can occur.

I have that simple neural network, which I already referred to in « The point of doing manually what the loop is supposed to do » and which is basically quite dumb, as it does not do any abstraction. Still, it nicely experiments with logical structures. I am sketching its logical structure in the picture below. I distinguish four layers of neurons: input, hidden 1, hidden 2, and output. When I say ‘layers’, it is a bit of grand language. For the moment, I am working with one single neuron in each layer. It is more of a synaptic chain.

Anyway, the input neuron feeds data into the chain. In the first round of experimentation, it feeds the source data in. In consecutive rounds of learning through experimentation, that first neuron assesses and feeds back local errors, measured as discrepancies between the output of the output neuron, and the expected values of output variables. The input neuron is like the first step in a chain of perception, in a nervous system: it receives and notices the raw external information.

The hidden layers – or the hidden neurons in the chain – modify the input data. The first hidden neuron generates quasi-random weights, which the second hidden neuron attributes to the input variables. Just as in a nervous system, the input stimuli are assessed as for their relative importance. In the original algorithm of perceptron, which I used to design this network, those two functions, i.e. generating the random weights and attributing them to input variables, were fused in one equation. Still, my fundamental intent is to use neural networks to simulate collective intelligence, and intuitively guess those two functions are somehow distinct. Pondering the importance of things is one action and using that ponderation for practical purposes is another. It is like scientist debating about the way to run a policy, and the government having the actual thing done. These are two separate paths of action.

Whatever. What the second hidden neuron produces is a compound piece of information: the summation of input variables multiplied by random weights. The output neuron transforms this compound data through a neural function. I prepared two versions of this network, with two distinct neural functions: the sigmoid, and the hyperbolic tangent. As I found out, the way they work is very different, just as the results they produce. Once the output neuron generates the transformed data – the neural output – the input neuron measures the discrepancy between the original, expected values of output variables, and the values generated by the output neuron. The exact way of computing that discrepancy is made of two operations: calculating the local derivative of the neural function, and multiplying that derivative by the residual difference ‘original expected output value minus output value generated by the output neuron’. The so calculated discrepancy is considered as a local error, and is being fed back into the input neuron as an addition to the value of each input variable.

Before I go into describing the application I made of that perceptron, as regards my idea for financial scheme, I want to delve into the mechanism of learning triggered through repeated looping of that logical structure. The input neuron measures the arithmetical difference between the output of the network in the preceding round of experimentation, and that difference is being multiplied by the local derivative of said output. Derivative functions, in their deepest, Newtonian sense, are magnitudes of change in something else, i.e. in their base function. In the Newtonian perspective, everything that happens can be seen either as change (derivative) in something else, or as an integral (an aggregate that changes its shape) of still something else. When I multiply the local deviation from expected values by the local derivative of the estimated value, I assume this deviation is as important as the local magnitude of change in its estimation. The faster things happen, the more important they are, so do say. My perceptron learns by assessing the magnitude of local changes it induces in its own estimations of reality.

I took that general logical structure of the perceptron, and I applied it to my core problem, i.e. the possible adoption of the new financial scheme to the market of energy. Here comes sort of an originality in my approach. The basic way of using neural networks is to give them a substantial set of real data as learning material, make them learn on that data, and then make them optimize a hypothetical set of data. Here you have those 20 old cars, take them into pieces and try to put them back together, observe all the anomalies you have thus created, and then make me a new car on the grounds of that learning. I adopted a different approach. My focus is to study the process of learning in itself. I took just one set of actual input values, exogenous to my perceptron, something like an initial situation. I ran 5000 rounds of learning in the perceptron, on the basis of that initial set of values, and I observed how is learning taking place.

My initial set of data is made of two tensors: input TI and output TO.

The thing I am the most focused on is the relative abundance of energy supplied from renewable sources. I express the ‘abundance’ part mathematically as the coefficient of energy consumed per capita, or Q/N. The relative bend towards renewables, or towards the non-renewables is apprehended as the distinction between renewable energy QR/N consumed per capita, and the non-renewable one, the QNR/N, possibly consumed by some other capita. Hence, my output tensor is TO = {QR/N; QNR/N}.

I hypothesise that TO is being generated by input made of prices, costs, and capital outlays. I split my price fork PA – PB (price for the big ones minus price for the small ones) into renewables and non-renewables, namely into: PA;R, PA;NR, PB;R, and PB;NR. I mirror the distinction in prices with that in the cost of energy, and so I call LCOER and LCOENR. I want to create a financial scheme that generates a crowdfunded stream of capital K, to finance new productive capacities, and I want it to finance renewable energies, and I call KR. Still, some other people, like my compatriots in Poland, might be so attached to fossils they might be willing to crowdfund new installations based on non-renewables. Thus, I need to take into account a KNR in the game. When I say capital, and I say LCOE, I sort of feel compelled to say aggregate investment in productive capacity, in renewables, and in non-renewables, and I call it, respectively, IR and INR. All in all, my input tensor spells TI = {LCOER, LCOENR, KR, KNR, IR, INR, PA;R, PA;NR, PB;R, PB;NR}.

The next step is scale and measurement. The neural functions I use in my perceptron like having their input standardized. Their tastes in standardization differ a little. The sigmoid likes it nicely spread between 0 and 1, whilst the hyperbolic tangent, the more reckless of the two, tolerates (-1) ≥ x ≥ 1. I chose to standardize the input data between 0 and 1, so as to make it fit into both. My initial thought was to aim for an energy market with great abundance of renewable energy, and a relatively declining supply of non-renewables. I generally trust my intuition, only I like to leverage it with a bit of chaos, every now and then, and so I ran some pseudo-random strings of values and I chose an output tensor made of TO = {QR/N = 0,95; QNR/N = 0,48}.

That state of output is supposed to be somehow logically connected to the state of input. I imagined a market, where the relative abundance in the consumption of, respectively, renewable energies and non-renewable ones is mostly driven by growing demand for the former, and a declining demand for the latter. Thus, I imagined relatively high a small-user price for renewable energy and a large fork between that PA;R and the PB;R. As for non-renewables, the fork in prices is more restrained (than in the market of renewables), and its top value is relatively lower. The non-renewable power installations are almost fed up with investment INR, whilst the renewables could still do with more capital IR in productive assets. The LCOENR of non-renewables is relatively high, although not very: yes, you need to pay for the fuel itself, but you have economies of scale. As for the LCOER for renewables, it is pretty low, which actually reflects the present situation in the market.

The last part of my input tensor regards the crowdfunded capital K. I assumed two different, initial situations. Firstly, it is virtually no crowdfunding, thus a very low K. Secondly, some crowdfunding is already alive and kicking, and it is sort of slightly above the half of what people expect in the industry.

Once again, I applied those qualitative assumptions to a set of pseudo-random values between 0 and 1. Here comes the result, in the table below.

 

Table 1 – The initial values for learning in the perceptron

Tensor Variable The Market with virtually no crowdfunding   The Market with significant crowdfunding
Input TI LCOER         0,26           0,26
LCOENR         0,48           0,48
KR         0,01   <= !! =>         0,56    
KNR         0,01            0,52    
IR         0,46           0,46
INR         0,99           0,99
PA;R         0,71           0,71
PA;NR         0,46           0,46
PB;R         0,20           0,20
PB;NR         0,37           0,37
Output TO QR/N         0,95           0,95
QNR/N         0,48           0,48

 

The way the perceptron works means that it generates and feeds back local errors in each round of experimentation. Logically, over the 5000 rounds of experimentation, each input variable gathers those local errors, like a snowball rolling downhill. I take the values of input variables from the last, i.e. the 5000th round: they have the initial values, from the table above, and, on the top of them, there is cumulative error from the 5000 experiments. How to standardize them, so as to make them comparable with the initial ones? I observe: all those final output values have the same cumulative error in them, across all the TI input tensor. I choose a simple method for standardization. As the initial values were standardized over the interval between 0 and 1, I standardize the outcoming values over the interval 0 ≥ x ≥ (1 + cumulative error).

I observe the unfolding of cumulative error along the path of learning, made of 5000 steps. There is a peculiarity in each of the neural functions used: the sigmoid, and the hyperbolic tangent. The sigmoid learns in a slightly Hitchcockian way. Initially, local errors just rocket up. It is as if that sigmoid was initially yelling: ‘F******k! What a ride!’. Then, the value of errors drops very sharply, down to something akin to a vanishing tremor, and starts hovering lazily over some implicit asymptote. Hyperbolic tangent learns differently. It seems to do all it can to minimize local errors whenever it is possible. Obviously, it is not always possible. Every now and then, that hyperbolic tangent produces an explosively high value of local error, like a sudden earthquake, just to go back into forced calm right after. You can observe those two radically different ways of learning in the two graphs below.

Two ways of learning – the sigmoidal one and the hyper-tangential one – bring interestingly different results, just as differentiated are the results of learning depending on the initial assumptions as for crowdfunded capital K. Tables 2 – 5, further below, list the results I got. A bit of additional explanation will not hurt. For every version of learning, i.e. sigmoid vs hyperbolic tangent, and K = 0,01 vs K ≈ 0,5, I ran 5 instances of 5000 rounds of learning in my perceptron. This is the meaning of the word ‘Instance’ in those tables. One instance is like a tensor of learning: one happening of 5000 consecutive experiments. The values of output variables remain constant all the time: TO = {QR/N = 0,95; QNR/N = 0,48}. The perceptron sweats in order to come up with some interesting combination of input variables, given this precise tensor of output.

 

Table 2 – Outcomes of learning with the sigmoid, no initial crowdfunding

 

The learnt values of input variables after 5000 rounds of learning
Learning with the sigmoid, no initial crowdfunding
Instance 1 Instance 2 Instance 3 Instance 4 Instance 5
cumulative error 2,11 2,11 2,09 2,12 2,16
LCOER 0,7617 0,7614 0,7678 0,7599 0,7515
LCOENR 0,8340 0,8337 0,8406 0,8321 0,8228
KR 0,6820 0,6817 0,6875 0,6804 0,6729
KNR 0,6820 0,6817 0,6875 0,6804 0,6729
IR 0,8266 0,8262 0,8332 0,8246 0,8155
INR 0,9966 0,9962 1,0045 0,9943 0,9832
PA;R 0,9062 0,9058 0,9134 0,9041 0,8940
PA;NR 0,8266 0,8263 0,8332 0,8247 0,8155
PB;R 0,7443 0,7440 0,7502 0,7425 0,7343
PB;NR 0,7981 0,7977 0,8044 0,7962 0,7873

 

 

Table 3 – Outcomes of learning with the sigmoid, with substantial initial crowdfunding

 

The learnt values of input variables after 5000 rounds of learning
Learning with the sigmoid, substantial initial crowdfunding
Instance 1 Instance 2 Instance 3 Instance 4 Instance 5
cumulative error 1,98 2,01 2,07 2,03 1,96
LCOER 0,7511 0,7536 0,7579 0,7554 0,7494
LCOENR 0,8267 0,8284 0,8314 0,8296 0,8255
KR 0,8514 0,8529 0,8555 0,8540 0,8504
KNR 0,8380 0,8396 0,8424 0,8407 0,8369
IR 0,8189 0,8207 0,8238 0,8220 0,8177
INR 0,9965 0,9965 0,9966 0,9965 0,9965
PA;R 0,9020 0,9030 0,9047 0,9037 0,9014
PA;NR 0,8189 0,8208 0,8239 0,8220 0,8177
PB;R 0,7329 0,7356 0,7402 0,7375 0,7311
PB;NR 0,7891 0,7913 0,7949 0,7927 0,7877

 

 

 

 

 

Table 4 – Outcomes of learning with the hyperbolic tangent, no initial crowdfunding

 

The learnt values of input variables after 5000 rounds of learning
Learning with the hyperbolic tangent, no initial crowdfunding
Instance 1 Instance 2 Instance 3 Instance 4 Instance 5
cumulative error 1,1 1,27 0,69 0,77 0,88
LCOER 0,6470 0,6735 0,5599 0,5805 0,6062
LCOENR 0,7541 0,7726 0,6934 0,7078 0,7257
KR 0,5290 0,5644 0,4127 0,4403 0,4746
KNR 0,5290 0,5644 0,4127 0,4403 0,4746
IR 0,7431 0,7624 0,6797 0,6947 0,7134
INR 0,9950 0,9954 0,9938 0,9941 0,9944
PA;R 0,8611 0,8715 0,8267 0,8349 0,8450
PA;NR 0,7432 0,7625 0,6798 0,6948 0,7135
PB;R 0,6212 0,6497 0,5277 0,5499 0,5774
PB;NR 0,7009 0,7234 0,6271 0,6446 0,6663

 

 

Table 5 – Outcomes of learning with the hyperbolic tangent, substantial initial crowdfunding

 

The learnt values of input variables after 5000 rounds of learning
Learning with the hyperbolic tangent, substantial initial crowdfunding
Instance 1 Instance 2 Instance 3 Instance 4 Instance 5
cumulative error -0,33 0,2 -0,06 0,98 -0,25
LCOER (0,1089) 0,3800 0,2100 0,6245 0,0110
LCOENR 0,2276 0,5681 0,4497 0,7384 0,3111
KR 0,3381 0,6299 0,5284 0,7758 0,4096
KNR 0,2780 0,5963 0,4856 0,7555 0,3560
IR 0,1930 0,5488 0,4251 0,7267 0,2802
INR 0,9843 0,9912 0,9888 0,9947 0,9860
PA;R 0,5635 0,7559 0,6890 0,8522 0,6107
PA;NR 0,1933 0,5489 0,4252 0,7268 0,2804
PB;R (0,1899) 0,3347 0,1522 0,5971 (0,0613)
PB;NR 0,0604 0,4747 0,3306 0,6818 0,1620

 

The cumulative error, the first numerical line in each table, is something like memory. It is a numerical expression of how much experience has the perceptron accumulated in the given instance of learning. Generally, the sigmoid neural function accumulates more memory, as compared to the hyper-tangential one. Interesting. The way of processing information affects the amount of experiential data stored in the process. If you use the links I gave earlier, you will see different logical structures in those two functions. The sigmoid generally smoothes out anything it receives as input. It puts the incoming, compound data in the negative exponent of the Euler’s constant e = 2,72, and then it puts the resulting value as part of the denominator of 1. The sigmoid is like a bumper: it absorbs shocks. The hyperbolic tangent is different. It sort of exposes small discrepancies in input. In human terms, the hyper-tangential function is more vigilant than the sigmoid. As it can be observed in this precise case, absorbing shocks leads to more accumulated experience than vigilantly reacting to observable change.

The difference in cumulative error, observable in the sigmoid-based perceptron vs that based on hyperbolic tangent is particularly sharp in the case of a market with substantial initial crowdfunding K. In 3 instances on 5, in that scenario, the hyper-tangential perceptron yields a negative cumulative error. It can be interpreted as the removal of some memory, implicitly contained in the initial values of input variables. When the initial K is assumed to be 0,01, the difference in accumulated memory, observable between the two neural functions, significantly shrinks. It looks as if K ≥ 0,5 was some kind of disturbance that the vigilant hyperbolic tangent attempts to eliminate. That impression of disturbance created by K ≥ 0,5 is even reinforced as I synthetically compare all the four sets of outcomes, i.e. tables 2 – 5. The case of learning with the hyperbolic tangent, and with substantial initial crowdfunding looks radically different from everything else. The discrepancy between alternative instances seems to be the greatest in this case, and the incidentally negative values in the input tensor suggest some kind of deep shakeoff. Negative prices and/or negative costs mean that someone external is paying for the ride, probably the taxpayers, in the form of some fiscal stimulation.

I am consistently delivering good, almost new science to my readers, and love doing it, and I am working on crowdfunding this activity of mine. As we talk business plans, I remind you that you can download, from the library of my blog, the business plan I prepared for my semi-scientific project Befund  (and you can access the French version as well). You can also get a free e-copy of my book ‘Capitalism and Political Power’ You can support my research by donating directly, any amount you consider appropriate, to my PayPal account. You can also consider going to my Patreon page and become my patron. If you decide so, I will be grateful for suggesting me two things that Patreon suggests me to suggest you. Firstly, what kind of reward would you expect in exchange of supporting me? Secondly, what kind of phases would you like to see in the development of my research, and of the corresponding educational tools?

De la misère, quoi

 

Mon éditorial sur You Tube

 

Je reviens vers ma recherche sur le marché d’énergie et – pour la n-ième fois – j’essaie de formaliser de façon scientifiquement rigoureuse mon concept EneFin, donc celui de solution financière pour promouvoir le développement d’énergies renouvelables. L’année dernière, j’avais déjà beaucoup tourné autour du sujet et il y a un je ne sais quoi d’obscur, là. Quelque chose qui me bloque intellectuellement. Vous pouvez consulter, par exemple, « Alois in the middle » pour en savoir plus sur mes contorsions conceptuelles à ce sujet.

Alors, une approche de plus. J’ouvre de façon canonique, par les prémisses, donc par les raisons pour quiconque de ne pas s’en foutre éperdument de tout ce bazar. Dans un rapport sur le secteur d’énergie, publié par IRENA (International Renewable Energy Agency), deux observations me donnent un peu de démangeaison (économique). D’une part, le coût de génération d’énergies renouvelables, le soi-disant LCOE (Levellized Cost of Electricity), a chuté abruptement ces dernières années. D’autre part, l’investissement en des nouvelles capacités de génération en renouvelables a chuté aussi. Les énergies renouvelables ont la particularité de ne coûter rien en tant que telles ; ce qui coûte du pognon c’est la mise en place et la maintenance des technologies. Voyez « Ce que le prof en moi veut dire sur LCOE » pour en savoir plus. De tout en tout, les technologies d’énergies renouvelables ont l’air d’entrer dans la phase de banalisation. La technologie coûte de moins en moins, elle perd de valeur de plus en plus vite, et son produit final est de plus en plus bon marché aussi. D’autre part, les marchés bien structurés d’énergie ont une tendance à développer deux zones de prix : ceux relativement bas pour les gros consommateurs institutionnels et ceux plus élevés pour les petits consommateurs individuels (ainsi que petits institutionnels). Vous pouvez consulter « Deux cerveaux, légèrement différents l’un de l’autre »  pour en savoir plus.

Il y a un autre truc, qui commence à se dessiner dans ma recherche récente. Le développement quantitatif du secteur d’énergie en général semble prendre lieu plutôt en des chocs abrupts de court terme qu’en des tendances longues. A ce sujet précis, j’ai pondu récemment un article et j’essaie de convaincre quelqu’un que ça a du sens. Ce brouillon est intitulé « Apprehending Energy Efficiency ».

Je continue canonique, toujours. L’objectif de ma recherche est de mettre au point un mécanisme de financement des petites installations locales d’énergies renouvelables, qui utiliserait précisément ces deux phénomènes : la disparité des prix, qui se manifeste à mesure que le marché se développe et se structure, et la prédisposition de l’industrie à réagir aux chocs plutôt qu’à des stimuli gentils et patients. Mon hypothèse de travail est que la disparité observable dans les prix d’énergie peut être utilisée pour créer des chocs financiers contrôlés et locaux, qui à leur tour peuvent stimuler le développement desdites petites installations locales.

La méthode générale pour l’exploration et la vérification de cette hypothèse consiste à tester, sous plusieurs angles différents, un schéma financier qui exploite, précisément, la disparité des prix. Un fournisseur local d’énergie vend une certaine quantité Q d’énergie à des consommateurs tout aussi locaux à un prix relativement élevé, le PA, typique pour le marché des petits consommateurs, mais il la vend en paquets complexes, qui contiennent de l’énergie strictement dite, au prix PB, relativement bon marché, normalement réservé aux gros consommateurs industriels, plus des titres participatifs dans le capital du fournisseur. Ces titres participatifs représentent un ensemble des droits aux actifs du fournisseur et la valeur comptable de ces droits est K. La valeur-marché de l’énergie vendue est de Q*PB = E. La marge agrégée Q*(PA – PB), crée par la vente de la quantité Q d’énergie, est donc équivalente à du capital K investi dans le bilan du fournisseur d’énergie. Logiquement, la valeur-marché que l’énergie Q aurait aux prix petit consommateur PA est égale à la somme du capital K et de la valeur-marché E. Dans les équations ci-dessous je donne l’idée générale.

 

Q*(PA – PB) = K

Q*PB = E

Q*PA = K + E

PA > PB

PB  ≥  LCOE

Mon idée suivante est d’explorer les conditions de faisabilité de ce schéma financier, ainsi que de l’optimiser. La structure générale du coût de production d’énergie, donc du LCOE, dit que la quantité d’énergie produite est une fonction du capital investi dans les capacités de production. Le capital K dans mes équations demeure dans une certaine proportion au capital I investi dans les actifs productifs. Par conséquent, K a une influence fonctionnelle sur Q et c’est ainsi que la fonction f1, telle que f1(K) = Q, entre dans le jeu. La même structure logique du LCOE suggère que les prix d’énergie sont des manifestations de la façon dont le capital K est utilisé, puisqu’ils dépendent du coefficient K/Q et en même temps ils dépendent de la structure compétitive du marché ainsi que de sa structure institutionnelle. Seulement ça, ce serait trop simple. La logique Keynésienne suggère que ça marche aussi dans le sens inverse : le capital I investi dans la capacité de production, ainsi que sa fraction K collectée à travers le schéma financier que je viens d’esquisser dépendent toutes les deux des prix et des quantités produites d’énergie.

J’ai donc là un joli petit nœud logique : des variables qui dépendent mutuellement l’une de l’autre. Voilà aussi une belle occasion de faire un pas de plus hors de ma caverne d’économiste classique Smithonien et se tourner vers l’intelligence artificielle et les réseaux neuronaux. J’assume donc que le secteur d’énergie est une structure intelligente qui est capable de s’adapter aux impératifs de la civilisation humaine – survivre et avoir accès à Netflix – et cette adaptation peut se faire à travers deux chemins qu’emprunte toute intelligence digne de ce nom : expérimentation et abstraction.

J’imagine donc une structure intelligente plus ou moins conforme à ces équations là-dessus. Ce que je veux c’est une fourniture abondante d’énergie renouvelable. « Abondante » est un aspect de la chose, « renouvelable » en et une autre. En ce qui concerne l’abondance d’énergie, la consommation finale annuelle par tête d’habitant, fréquemment mesurée en kilogrammes (ou bien en tonnes) d’équivalent pétrole, semble être une mesure à forte assise empirique. Je structure cette abondance relative en deux types : renouvelable et non-renouvelable. Ici, je répète une remarque à propos de cette classification, une remarque que j’avais déjà faite dans « Les 2326 kWh de civilisation » : formellement, lorsqu’on brûle des bio-fuels, comme de la paille ou de la sciure de bois, c’est du renouvelable dans le sens que ce n’est ni du fossile ni de la fission nucléaire. Encore, faut venir là où j’habite, moi, pour comprendre que ce type précis de renouvelable n’est pas précisément soutenable à la longue. Vous voulez littéralement voir ce que vous respirez, sans être capable de voir grand-chose d’autre ? Eh bien, venez à Krakow, Pologne, en saison de chauffage. Vous verrez par vous-mêmes ce que veut dire l’usage abondant des bio-fuels.

En tout cas, ma structure intelligente distingue deux sous-catégories de Q (je sais, le jeu de mots, avançons SVP) : QR/N pour la consommation d’énergie renouvelable par tête d’habitant et QNR/N pour les non-renouvelables par la même tête d’habitant. Enfin, pas tout à fait la même, puisque la tête d’habitant qui roule sa vie sur les renouvelables démontre, très probablement, des schémas de comportement différents de celle qui s’en tient encore aux fossiles lorsqu’il s’agit d’alimenter le frigo. Je veux QR/N et mettre le QNR/N gentiment en veilleuse, juste en cas où une autre glaciation serait à venir et il y aurait besoin de chauffer la planète, juste un tantinet.

En tout cas, j’ai deux variables de résultat : [QR/N] et [QNR/N]. Ma structure intelligente peut suivre quatre sentiers alternatifs de changement. Le plus désirable des quatre est celui où [QR/N] croît et [QNR/N] décroit, en corrélation négative. Par ordre de désirabilité, le second sentier est celui de Les trois autres sont les suivants : i) [QR/N] décroit et [QNR/N] croît en corrélation négative ii) [QR/N] et [QNR/N] décroissent tous les deux et enfin le cas iii) où [QR/N] et [QNR/N] croissent en concours.

Mes variables d’entrée sont tout d’abord les prix d’énergie PA et PB, possiblement sous-catégorisés en des prix d’énergie renouvelable et non-renouvelable. L’un des trucs que je voudrais voir joliment simulé par un réseau neuronal est précisément ce « possiblement sous-catégorisés ». Quel sentier d’essai et erreur conduit à la convergence entre les prix de renouvelables et celui des fossiles ? Quel autre sentier peut conduire vers la divergence ? Quelles fourchettes de convergence ou divergence peuvent apparaître le long de ces sentiers ? Quelle relation avec le LCOE ? Voilà des choses intéressantes à explorer.

Deux autres variables d’entrée sont celles pertinentes au capital : le capital I investi dans la capacité productrice et son sous-ensemble K, collecté à travers le schéma financier que j’ai présenté quelques paragraphes plus tôt.

Somme toute, voilà que j’atterris avec deux tenseurs : celui de résultat TS et celui d’entrée TE. Le tenseur d’entrée se décompose comme TE = [(LCOER), [(LCOENR), (KR), (KNR), (IR), (INR), (PA;R), (PA;NR), (PB;R), (PB;NR)] et celui de résultat c’est TS = [(QR/N), (QNR/N)]. L’action niveau TE produit un résultat niveau TS. Un réseau neuronal peut connecter les deux tenseurs à travers deux sortes de fonction : expérimentation et abstraction.

L’expérimentation, ça peut prendre lieu à travers un perceptron à couches multiples. Je reprends le même, simple algorithme que j’avais déjà mentionné dans « Ce petit train-train des petits signaux locaux d’inquiétude ». Je prends donc mes deux tenseurs je crée un premier ensemble de valeurs empiriques, une valeur par variable. Je les standardise dans l’intervalle entre 0 et 1. Cela veut dire que le prix (PB;R), par exemple, est exprimé comme le pourcentage du prix maximal observé dans le marché. Si j’écris PB;R = 0,16, c’est un prix local qui est égal à 16% du prix maximal jamais observé dans ce marché précis. D’autres variables sont standardisées de la même façon.

Maintenant, je fais une chose peu usuelle – pour autant que je sache – dans l’application des réseaux neuronaux. La pratique normale est de donner à notre algorithme un ensemble de données aussi large que possible dans la phase d’apprentissage – pour découvrir des intervalles les plus plausibles pour chaque variable – et ensuite optimiser le modèle sur la base de cet apprentissage. Moi, je veux observer la façon dont le perceptron va apprendre. Je ne veux pas encore optimiser dans le sens strict du terme.

Je prends donc ce premier ensemble des valeurs empiriques standardisées pour mes deux tenseurs. Les voilà, dans Tableau 1, ci-dessous :

 

Tableau 1

Tenseur Variable Valeur initiale standardisée
TE  LCOER         0,26
 LCOENR         0,48
 KR         0,56
 KNR         0,52
 IR         0,46
 INR         0,99
 PA;R         0,71
 PA;NR         0,46
 PB;R         0,20
 PB;NR         0,37
TS  QR/N         0,95
 QNR/N         0,48

 

La situation initiale que je simule est donc celle, où la consommation d’énergie renouvelable par tête d’habitant QR/N est près du maximum empiriquement observable dans le secteur, pendant que la consommation des non-renouvelables QNR/N est à peu près à la moitié (48%) de son max respectif. Les prix avantageux d’énergie, réservés aux grands consommateurs, sont respectivement à PB;R = 20% et PB;NR = 37% de leurs maximums observables. Les prix plus élevés, normalement payés par les petits utilisateurs, y compris les ménages, sont à PA;R = 71% du max pour les renouvelables et PA;NR = 46% pour les non-renouvelables. Les marges initiales PA – PB sont donc respectivement à PA;R – PB;R = 71% – 20% = 51% pour les renouvelables et  PA;NR – PB;NR = 46% – 37% = 9% en ce qui concerne les non-renouvelables.

Voilà donc un marché initial où une demande relativement élevée pour les énergies renouvelables crée une fourchette des prix particulièrement défavorable pour ceux parmi les petits clients qui veulent ne consommer que ce type d’énergie. En même temps, les non-renouvelables sont un peu moins en demande et par conséquent la même fourchette des prix PA – PB est beaucoup plus étroite dans leur cas.

Les quantités de capital collectées à travers des plateformes de financement participatifs, donc mes K, sont à KR = 56% du max pour les fournisseurs d’énergies renouvelables et KNR = 52% dans le marché des non-renouvelables. Maintenant, je reviens à mon modèle, plus particulièrement à l’équation Q*(PA – PB) = K. Avec les quantités et les prix simulés ici et avec l’assomption de population N = constante, KR devrait être à QR*(PA;R – PB;R) = 0,95*(0,71 – 0,2) = 0,4845, pendant que la valeur initiale arbitraire est de 0,56. Les renouvelables sont donc légèrement sur-financées à travers le mécanisme participatif. Pour les non-renouvelables, le même calcul se présente comme KNR = QNR*(PA;NR – PB;NR) = 0,48*(0,46 – 0,37) = 0,0432 donc bieeeen en-dessous du KNR = 52% fixés arbitrairement comme valeur initiale. Si les renouvelables sont légèrement sur-financées, les non-renouvelables nagent carrément dans du pognon déséquilibré.

En ce qui concerne l’investissement I en capacités productives, il est initialement fixé à IR = 0,46 pour les renouvelables et INR = 0,99 pour les non-renouvelables. Les renouvelables sont donc clairement sous-investis, pendant que les fossiles et les fissions nucléaires sont gâtés en termes d’actifs productifs.

Les coûts de production d’énergie, donc les LCOE, sont peut-être les plus durs à exprimer en valeurs standardisées. En effet, lorsqu’on observe la signification économique du LCOE, la façon dont ça bouge semble avoir plus d’importance que la façon do ça se tient en place. Les valeurs initiales que j’ai fixées, donc LCOER = 0,16 et LCOENR = 0,48 sont une tentative de recréer la situation présente dans le secteur de l’énergie, où le LCOE des renouvelables plonge carrément, la tête en avant, pendant que le LCOE des non-renouvelables suit une trajectoire descendante quoique beaucoup plus respectable dans sa descente.

Alors, mon petit perceptron. Il est fait de juste deux neurones, l’un après l’autre. Le premier o l’affaire directement au stimuli du tenseur d’entrée TE = [(LCOER), [(LCOENR), (KR), (KNR), (IR), (INR), (PA;R), (PA;NR), (PB;R), (PB;NR)] et il attribue à chaque variable de ce tenseur un coefficient de pondération. C’est comme ces neurones superficiels connectés à notre appareil sensoriel, qui décident s’il est plus important de s’occuper de cette grosse tâche brune qui grandit très vite (l’ours grizzly qui charge sur moi) ou bien de ce disque lumineux qui tourne progressivement de l’orange vers le jaune (soleil dans le ciel).

Je ne sais pas comme vous, mais moi, je m’occuperais plutôt de l’ours. Il a l’air comme un peu plus pressant, comme stimulation sensorielle. Encore que ce neurone de première couche, il a de la liberté d’expérimenter avec l’importance relative des choses. Il attribue des coefficients aléatoires de pondération à chaque variable du tenseur TE. Il produit un cocktail d’information de la forme : TE(transformé) = [(LCOER)*p1 + (LCOENR)*p2 + (KR)*p3 + (KNR)*p4 + (IR)*p5 +  (INR)*p6 + (PA;R)*p7 + (PA;NR)*p8 + (PB;R)*p9 + (PB;NR)*p10. Les « pi » sont précisément les coefficients de pondération que le premier neurone attribue aux variables d’entrée.

Le second neurone, qui consulte le premier neurone en matière de ce qui se passe, c’est l’intello du lot. Il dispose d’une fonction de transformation neuronale. Elle est basée, en règle générale, sur la fonction exponentielle. Le tenseur TE(transformé) produit par le premier neurone est tout d’abord mis en négatif, donc « – TE(transformé) » et ce négatif est ensuite mis en exposant de la constante e = 2,72 etc. On tourne donc autour de e – TE(transformé) . Ceci fait, l’intello a deux façons usuelles d’en faire un usage cognitif : en sigmoïde ou bien en tangente hyperbolique. Je viens de découvrir que cette distinction a de l’importance, dans ce cas précis. J’y reviendrai plus tard. En tout cas, cette fonction de transformation – sigmoïde ou tangente hyperbolique – sert à produire une valeur hypothétique des variables de résultat, donc du tenseur TS = [(QR/N), (QNR/N)]. Ceci fait, le neurone intello calcule la dérivée locale de ce résultat hypothétique ainsi que la déviation dudit résultat par rapport aux valeurs originales TS = [(QR/N) = 0,95 ; (QNR/N) = 0,48]. La dérivée multipliée par la déviation donne une erreur locale. La somme de ces erreurs locales en ensuite transmise au premier neurone, ce concierge à l’entrée du système, avec la commande « Ajoute ça, s’il te plaît, aux valeurs initiales du TE, puis transforme le une nouvelle fois et donne-moi la nouvelle valeur TE(transformé) ».

Ça se répète, encore et encore. J’ai opté pour 5000 tours de cet encore et j’ai observé le processus d’apprentissage de mes deux neurones. Plus précisément, j’ai observé la valeur de l’erreur cumulative (donc sur les deux variables de résultat) en fonction du temps d’apprentissage. Voilà que la première différence saute aux yeux en ce qui concerne la fonction neuronale appliquée. Je la présente sous forme de deux graphes, ci-dessous. Si le neurone intello de la famille utilise la fonction sigmoïde, le processus d’apprentissage tend à réduire l’erreur expérimentale plutôt vite, pour osciller ensuite dans un intervalle beaucoup plus petit. C’est un schéma du type « un choc suivi par une adaptation progressive ». En revanche, la tangente hyperbolique apprend à travers la création délibérée des chocs impressionnants, entrecoupés par des longues périodes d’accalmie.

 

Voilà donc deux sentiers d’apprentissage très différents et ils produisent des résultats très différents. Tableau 2, ci-dessous, présente les valeurs apprises par les deux versions de mon réseau. Le sigmoïde conseille de pomper la valeur relative de toutes les variables d’entrée, pendant que la tangente hyperbolique est d’avis que la seule variable du TE digne de maximisation est l’investissement en capacité productrice des non-renouvelables pendant que le reste, faut les discipliner. Le plus intriguant c’est les valeurs négatives de LCOER et de PB;R. Pour LCOER = – 0,11 cela veut probablement dire soit une stimulation fiscale forte, soit une situation où les fournisseurs d’énergies renouvelables vendent leurs actifs productifs en masse. Le PB;R = – 0,19 c’est sans doute un appel à la stimulation fiscale des prix d’énergie renouvelable.

Voilà donc que le sigmoïde devient libéral et la tangente hyperbolique tourne en étatiste – interventionniste. Encore un petit test avec l’équation Q*(PA – PB) = K. Les valeurs conseillées par le sigmoïde libéral donnent  QR*(PA;R – PB;R) = 0,95*(0,90 – 0,73) = 0,1615 et QNR*(PA;NR – PB;NR) = 0,48*(0,82 – 0,79) = 0,0144 , contre les K appris indépendamment comme KR = 0,85 et KNR = 0,84. Le sigmoïde libéral veut donc monétiser significativement le secteur d’énergie. Plus de capital liquide veut dire plus de flexibilité et un cycle de vie beaucoup plus court en ce qui concerne les technologies en place.

La tangente hyperbolique interventionniste préconise QR*(PA;R – PB;R) = 0,95*[0,56 – (-0,19)] = 0,7125 et QNR*(PA;NR – PB;NR) = 0,48*(0,19 – 0,06) = 0,0624 contre KR = 0,34 et KNR = 0,28. Définitivement moins de pognon collecté à travers du crowdfunding. De la misère, quoi.

 

Tableau 2

Tenseur Variable Valeur initiale standardisée Valeur apprise par le réseau basé sur la fonction sigmoïde Valeur apprise par le réseau basé la tangente hyperbolique
TE  LCOER         0,26         0,75       (0,11)
 LCOENR         0,48         0,83         0,23
 KR         0,56         0,85         0,34
 KNR         0,52         0,84         0,28
 IR         0,46         0,82         0,19
 INR         0,99         1,00         0,98
 PA;R         0,71         0,90         0,56
 PA;NR         0,46         0,82         0,19
 PB;R         0,20         0,73       (0,19)
 PB;NR         0,37         0,79         0,06
TS  QR/N         0,95    
 QNR/N         0,48    

 

Je continue à vous fournir de la bonne science, presque neuve, juste un peu cabossée dans le processus de conception. Je vous rappelle que vous pouvez télécharger le business plan du projet BeFund (aussi accessible en version anglaise). Vous pouvez aussi télécharger mon livre intitulé “Capitalism and Political Power”. Je veux utiliser le financement participatif pour me donner une assise financière dans cet effort. Vous pouvez soutenir financièrement ma recherche, selon votre meilleur jugement, à travers mon compte PayPal. Vous pouvez aussi vous enregistrer comme mon patron sur mon compte Patreon . Si vous en faites ainsi, je vous serai reconnaissant pour m’indiquer deux trucs importants : quel genre de récompense attendez-vous en échange du patronage et quelles étapes souhaitiez-vous voir dans mon travail ?

De la jugeotte artificielle

Mon éditorial sur You Tube

 

J’essaie de trouver des points communs entre ma recherche sur le marché de l’énergie et sur le concept d’entreprise que j’ai baptisé EneFin , d’une part, et le contenu éducatif d’autre part. La session d’examens, celle d’hiver, approche et je veux donner à mes étudiants un peu de contenu utile, tout en restant dans le flot de ma recherche.

Ledit flot de recherche a l’air comme un tout petit peu plus pressant, donc je cède. Je suis en train de faire un petit voyage dans le royaume de l’intelligence artificielle, afin de cueillir la fleur de sagesse qui me permettra de comprendre le phénomène d’intelligence collective chez nous, les êtres humains, ainsi que la déclinaison spécifique de cette intelligence collective dans le domaine de l’énergie. Je prends un petit détour sur ce chemin pour réfléchir, une fois de plus, sur le sujet des villes intelligentes. L’un des phénomènes les plus marqués dans la transition vers les énergies renouvelables est le rôle des villes. Les communautés urbaines deviennent des joueurs actifs dans cette transition énergétique et c’est une activité qui, je pense, est sans précèdent depuis le début du Moyen Age. Les villes font des transitions technologiques plus audacieuses que les grandes sociétés multinationales.

Je veux comprendre ce phénomène. J’approche la gestion, y compris la gestion d’une communauté urbaine, comme une manifestation d’intelligence collective. Pour comprendre le phénomène d’intelligence collective, j’apprends les rudiments d’intelligence artificielle (voir « Ce petit train-train des petits signaux locaux d’inquiétude » par exemple). C’est le sentier de recherche qui se définit comme intelligence artificielle générale. Tu veux comprendre comment marche une bagnole, je veux dire comprendre à fond ? Eh bien, bâtis-en une. Même chose pour la jugeotte : si je veux comprendre comment ça marche, être intelligent, je peux gagner en compréhension en essayant de faire une jugeotte artificielle.

Mon premier pas de compréhension réfère aux soi-disant perceptrons, donc aux réseaux neuronaux qui imitent aussi étroitement que possible le fonctionnement des neurones réels. Un perceptron est une structure logique qui produit un grand nombre d’instances locales d’elle-même et en faisant de la sorte, elle produit des petites erreurs (adaptations imparfaites) locales qui fournissent des informations pour apprentissage futur. Après un grand nombre d’itérations, un perceptron produit un modèle de réalité qui, à son tour, permet de prendre des décisions rationnelles.

Je viens d’utiliser le concept de perceptron pour inventer un mécanisme financier pour stimuler le développement intelligent d’une communauté urbaine. Bon, je sais, il faut que j’explique d’abord le concept de développement intelligent tel que je le comprends. Eh bien, c’est un développement façon perceptron : au lieu de créer et mettre en place une stratégie parfaitement cohérente, le genre qui a l’air bien dans une présentation Power Point, je développe une structure qui permet de mettre en place plusieurs solutions locales dont chacune est une expérimentation en soi. Il y a des trucs, dans le développement urbain, où quoi qu’on fasse, on avance à tâtons. C’est particulièrement vrai pour l’interaction entre une technologie et une population. Il y a ce phénomène désigné comme « déterminisme technologique ». Une technologie nouvelle et une structure sociale sont comme deux nuages : elles s’enveloppent en s’interpénètrent mutuellement. Lorsque nous introduisons une technologie nouvelle comme une infrastructure urbaine, la façon exacte dont ça marche est très dure à prédire et la même façon exacte a une importance capitale pour la viabilité économique de cette infrastructure. Au lieu d’essayer de le prédire nous pouvons expérimenter avec. Un mécanisme de développement intelligent est une structure capable de produire plusieurs petites expérimentations locales, par exemple sous forme d’un grand nombre d’entreprises startups relativement petites qui vont inévitablement commettre des erreurs et apprendre sur la base de ces erreurs.

Au lieu donc de créer une grande société infrastructurelle urbaine, on peut créer un mécanisme financier qui facilite la création des petites entreprises façon startup.  Ça marche pour des technologies aisément subdivisées en des projets locaux, par exemple des réseaux électriques intelligents de basse ou moyenne tension. En revanche, l’idée est hautement discutable pour des technologies qui requièrent beaucoup de coordination sur un territoire étendu, comme des réseaux de transport urbain. Nous pouvons aisément expérimenter avec des systèmes locaux de fourniture d’énergie à partir des turbines à vent ou à l’eau, pendant qu’il serait risqué de créer plusieurs petites startups locales pour un nouveau réseau ferroviaire. Toutefois, risqué ne veut pas dire impossible. C’est précisément là que réside tout le panache de développement intelligent : une expérimentation bien sécurisée côté risque peut apporter des solutions dont nous n’avions même pas soupçonné l’existence.

Alors, la finance. Les conseils municipaux ont fréquemment dans leurs budgets une catégorie de dépenses appelée « développement » ou bien « promotion et communication du développement » etc. Vous comprenez : c’est du pognon qu’on peut dépenser sur des trucs des plus fous, comme des stylos fluorescents avec le logotype de la ville imprimé dessus et encore, ça, c’est du timide et du pondéré en termes de la communication autour du développement.

Mon idée est de prendre comme 50% de ce fonds de développement et les investir dans le capital social d’un fonds strictement dit, que j’appelle provisoirement « le fonds de développement intelligent ». Si je fais un acronyme direct de cette appellation, ça fait FDI, donc le même qui désigne investissements étrangers directs en anglais (Foreign Direct Investment), je vais donc vers un acronyme syllabique : FODIN. Le FODIN est un fonds d’assurance : il garantit le capital social des startups locales en échange des primes d’assurance payées par celles-ci.

Assumons – conformément à ce qu’annonce le rapport intitulé « The 2017 Global Startup Ecosystem Report » – que le capital social initial d’une startup est égal, en moyenne, à €80 000 et que le coefficient de mortalité des startups est d’à peu près 30% sur les deux premières années d’exercice. Dans un ensemble de 100 startups il est donc pratiquement certain que 30 de parmi elles déposeront leurs bilans durant les deux premières années d’activité, ce qui veut dire 30 * €80 000 = €2 400 000 de capital social potentiellement perdu. Si je disperse cette perte agrégée sur l’ensemble entier de 100 startups, ceci fait €24 000 de prime d’assurance faillite qu’une startup paie au FODIN, en échange d’une garantie sur 100% du capital social engagé dans l’affaire.

Voilà donc un FODIN local qui dispose de €5 000 000 et qui engage à peu près 50% de cette somme dans les garanties pour les startups, les autres 50% demeurant libre de toute créance, conditionnelle ou pas. Tout ce capital social est investi en des actifs financiers à bas risque, genre obligations souveraines. Chaque année, ce FODIN paie entre €1 200 000 et €2 400 000 en dommages et intérêts aux actionnaires des startups en faillite (le taux de mortalité de 30% c’est sur deux ans), et reçoit €2 400 000 en primes d’assurance faillite. De tout en tout, notre petit FODIN local peut accumuler du capital à un taux d’à peu près 9% par an. En nombres absolus, 9% * €5 000 000 = €450 000 de plus, chaque année, ce qui veut dire, à son tour, €450 000 / €80 000 = 5 ÷ 6 startups locales de plus, à assurer contre la faillite.

Si nous transformons une dépense budgétaire locale en un fonds financier censé de réduire le risque d’expérimentation avec des business locaux, on peut produire un mécanisme de développement intelligent et ce mécanisme est capable de gérer son propre développement intelligent. ‘ttendez, c’est pas tout. L’autre partie de ce tout est une plateforme de financement participatif type « crowdfunding », où les startups locales, aussi bien que le FODIN, peuvent chercher du capital. Comme je passe en revue des différentes plateformes de crowdfunding, elles ont une faiblesse majeure : les titres participatifs qui y circulent ont peu de liquidité. Dans un réflexe tout à fait naturel, les participants du crowdfunding essaient de contourner les régulations légales en ce qui concerne la traite des valeurs financières, mais il y a un prix à payer pour cette absence d’entrave légale et ce prix est une entrave financière. L’histoire des marchés financiers est très claire sur ce point : si nous voulons un marché financier de prendre vraiment son envol, il faut que les droits et créances financières vendues sur ce marché soient aussi négociables que possible. Lorsqu’une participation type crowdfunding ne se traduit pas en un actif négociable, donc lorsque je ne peux pas la vendre quand je veux, ça bloque énormément.

Moi, je propose donc de liquéfier quelque peu cette plateforme de crowdfunding avec une cryptomonnaie interne. L’entité gérante de la plateforme émet une cryptomonnaie, suivant un algorithme plus ou moins déterministe du type « preuve d’enjeu » (« proof of stake » en anglais), donc sans compétition computationnelle au niveau de l’extraction. Lorsque j’investis via cette plateforme, j’ai le choix entre l’achat direct des titres participatifs d’entreprises où bien l’achat d’unités de cette cryptomonnaie d’abord, et l’échange de ces valeurs virtuelles contres des titres de participation ensuite. La cryptomonnaie en tant que telle est librement négociable à l’intérieur de la plateforme de crowdfunding, y compris des rachats occasionnels par l’entité émettrice elle-même.

On peut pomper cette liquidité même plus si on introduit des soi-disant « fixings » du taux d’échange de la cryptomonnaie interne en des valeurs financières « officielles » : euros, dollars etc. Les fixings apportent de la confiance, et la possibilité de négocier à l’intérieur du système, sans échanger la cryptomonnaie en quoi que ce soit d’autre, offrent la possibilité d’accomplir plusieurs transactions avec relativement peu d’argent « réel ».

Voilà donc comment l’étude des réseaux neuronaux du type perceptron conduit à formuler une nouvelle approche de stratégie de développement socio-économique. Au lieu de formuler un plan d’action traditionnel, nous créons des conditions pour l’expérimentation orientée sur les objectifs stratégiques généraux ainsi que des mécanismes de réduction de risque lié à chaque expérience particulière. Je suis en train de réfléchir sur l’utilisation de cette approche façon « intelligence artificielle » à la gestion du risque en général. Si je produis des petites erreurs locales de façon délibérée et contrôlée, je peux apprendre plus vite et donc m’adapter plus vite aux conditions changeantes de mon environnement, ce qui me permet d’éviter de façon plus adroite des grosses erreurs incontrôlées.

Un ami m’a demandé récemment si je suis partant pour co-écrire un livre sur la gestion des soins médicaux. Mon chapitre à moi serait dévoué à la gestion du risque opérationnel dans le secteur de la santé. Le risque opérationnel en général est le type de risque liée à l’occurrence d’erreurs humaines, actes de malveillance ou bien des défaillances systémiques. Je suis tenté de développer une approche façon perceptron de ce sujet particulier. « Je suis tenté » veut dire que j’hésite. Le risque opérationnel dans les soins médicaux c’est dans une large mesure du risque clinique, donc des situations où la vie et le bien-être des patients sont en jeu. Expérimentation délibérée et contrôlée à ce niveau-là ? Hmouais… Peut-être. C’est du terrain glissant, ça. Intéressant, aussi. Il faut que je rumine ça un peu plus longtemps.

L’apprentissage à travers l’erreur délibérée est l’une des fonctions neuronales essentielles, possibles à simuler avec les réseaux neuronaux artificiels. Il y en a une autre, celle de signification, qui, à son tour, repose sur la généralisation et la distinction. Je vois un truc brun, rugueux, qui comme saillit du sol et ça a comme une coiffure branchée et feuillie sur l’extrémité supérieure. J’en vois d’autres, un peu similaires. Ah, oui, c’est ce qu’on appelle « un arbre ». Lorsqu’il y en a beaucoup dans un endroit, il peut s’avérer utile de les grouper sous la catégorie de « bois » ou « forêt » et en même temps ça peut profiter de les distinguer en saules, peupliers, pins etc. Si vous venez de conclure que le langage est une manifestation de généralisation et distinction, vous avez deviné juste. Chaque mot que nous utilisons en est un exemple.

Voilà qu’un créneau de recherche émerge, à ce sujet précis, un créneau qui renverse beaucoup de théories acquises et qui rend une certaine catégorie de réseaux neuronaux, ceux appelés « apprentissage profond » (« deep learning » en anglais) particulièrement intéressants. Les théories acquises sont celles qui considèrent la signification sémantique comme une fonction strictement supérieure de notre système nerveux. C’est tout dans le lobe frontal, l’aristocrate sophistiqué de notre cervelle, c’est tout culturel, comme imprimé sur la peau de la bête naturelle qui s’est accroupie par-dessous.

Bien sûr, une bonne question s’impose : qu’est-ce que je présente comme de la science la plus récente ? Rien que dans le service Science Direct, sous le mot clé « Economics », l’année 2017 avait apportée 27 551 articles nouveaux, soit plus de 75 articles par jour. En 2018, ça a même accéléré et jusqu’à présent (15 Octobre 2018) 28 820 articles sont parus, donc presque 107 par jour. J’approche le même dépositoire sous un angle différent, avec le mot clé behavioriste à la mode : « social brain ». Ça donne 16 077 articles durant les 9 mois de l’année 2018, plus de 89 par jour. Voilà donc un seul dépositoire scientifique – Science Direct, donc essentiellement que des journaux de la maison d’édition Elsevier – et juste deux mots clés. Bien généraux, ces deux-là, mais juste deux quand même.

Pas question que je lise tout ça en temps réel, il faut que je trie. Je me concentre sur mes petites obsessions : le behaviorisme économique, l’intelligence collective, les systèmes monétaires et l’innovation. J’essaie de cerner les découvertes les plus intéressantes et mon choix subjectif tombe sur deux articles à propos des hiérarchies sociales et de la façon dont nous les percevons : « Know Your Place: Neural Processing of Social Hierarchy in Humans » par Caroline F. Zink et al. et « The Emergence and Representation of Knowledge about Social and Nonsocial Hierarchies » par Dharshan Kumaran et al. .

Je me suis intéressé à ces articles précis puisqu’ils mettent en question, bien qu’indirectement, les assomptions fondamentales de l’économie classique, ainsi qu’une bonne part de la théorie des jeux et il ne faut pas oublier la sociologie. Alors ces assomptions fondamentales disent que les êtres humains forment, tout d’abord, des réseaux de coopération et d’échange, et ce n’est qu’ensuite – et l’ensuite, il est tout à fait substantiel – que des hiérarchies sociales prennent forme. Le père fondateur de ma discipline, Adam Smith , présente une vision de changement social où un marché relativement grand, doté en plus des voies navigables abondamment accessibles, permet la spécialisation (division de travail) et il en résulte développement d’échange économique. Une fois l’échange établi, les villes peuvent se former, qui deviennent un moteur de même plus d’échange et tout ça, ça crée une assiette fiscale qui à son tour permet un souverain d’être un souverain, de se trouver des chevaliers de table – ronde, de préférence – et après, ça va droit vers l’état moderne.

En d’autres mots, l’approche classique des sciences sociales assume que les hiérarchies sociales sont une superstructure bâtie sur la base des réseaux préexistants de coopération et d’échange. Les hiérarchies, dans cette approche, sont donc des créations culturelles, basées sur tout un tas d’idées établies et l’établissement desdites idées se fait largement par le travail de main d’œuvre qualifiée à utiliser des armes.

Ces deux articles que je viens de citer convergent tous vers un point de vue opposé : la perception de la hiérarchie, dans les êtres humains, est quelque chose de primaire et naturel. Bien sûr, les hiérarchies sociales complexes sont de fabrication culturelle, mais leur construction a une base neurologique apparemment plus primaire que les relations d’échange et de coopération.

Je me permettrai de développer un peu sur cette recherche neurologique. Je commence par l’article « Know Your Place: Neural Processing of Social Hierarchy in Humans » par Caroline F. Zink et al. Dans une expérience de laboratoire, les participants jouaient un jeu interactif, où ils devaient exécuter des tâches spécifiques pour une récompense monétaire et ils voyaient leur résultat comparé avec celui d’un autre joueur. Les commentaires des animateurs de l’expérience ainsi que la façon de rapporter les résultats du jeu créaient un environnement fortement compétitif et renforçaient l’impression que lesdits résultats créaient une hiérarchie. Plus élevé est ton score, plus haut tu te trouves dans la hiérarchie : ce genre-là. Cet « autre joueur » était fictif mais au moment même du jeu les participants ne le savaient pas : ils étaient persuadés qu’ils rivalisent avec une personne réelle. La perception qu’ils avaient de leur position hiérarchique basée sur la performance au jeu était donc délibérément programmée par les animateurs.

Deux scénarios du jeu étaient mis en place. Dans le premier, la hiérarchie crée dans les tours successifs du jeu était stable : le feedback que chaque participant recevait à propos de sa performance était cohérent entre les tours successifs. Dans le deuxième, ça changeait. Après l’expérience, les participants répondaient à un questionnaire où ils devaient exprimer, entre autres, leur opinion sur les joueurs qu’ils percevaient respectivement comme supérieurs, égaux ou bien inférieurs à eux-mêmes. L’activité de leur cerveau était observée par le moyen de la résonnance magnétique fonctionnelle.

En général, l’activation neurale du cerveau était la plus importante dans la perception d’un joueur supérieur dans une hiérarchie instable, suivie par une excitation légèrement moindre lorsque les participants se référaient à un joueur perçu comme supérieur dans une hiérarchie stable, et ensuit dans la situation de référence à un joueur inférieur dans la hiérarchie stable. Se référer à un joueur perçu comme inférieur dans une hiérarchie stable ne provoquait apparemment pas d’excitation cérébrale particulière. Le résultat le plus surprenant est cependant la géographie exacte de cette excitation. Bien sûr, le cortex frontal et le préfrontal : c’est là que toute notre culture réside. Le cortex occipital, ça s’excitait aussi, mais là non plus il n’y a pas de surprise : c’est la perception visuelle. Seulement, profondément en-dessous du Monsieur Cortex, il y a un humble laboureur neural appelé « ventrum striatum », responsable, entre autres de la perception olfactive, de la cicatrisation des plaies, des fonctions motrices etc. Chaque fois qu’il faut du jus neural, donc du neurotransmetteur, Monsieur Cortex passe la commande à ventrum striatum. C’est comme une usine à hormones.

Pourquoi c’est tellement important ? Eh bien, imaginez que dans un meeting d’affaires, tous vos muscles se mettent en alerte chaque fois que vous percevez quelqu’un comme gagnant de supériorité hiérarchique sur vous. Ça n’arrive pas ? Eh ben si, justement, ça arrive au niveau neural sans que nous nous en rendions compte. Avant que nous ayons le temps de cogiter consciemment toutes les subtilités culturelles des relations hiérarchiques, une perception très primaire du type « ce mec-là, il est supérieur à moi » survient. Dans cet article par Caroline F. Zink et al. il y a une série des graphes intéressants (page 275). Ils montrent la magnitude d’excitation neurale dans chaque partie du cerveau engagée dans la réaction générale. L’excitation la plus forte survient dans le cortex occipital (perception visuelle) et dans le ventru, striatum (usine à hormones, perception olfactive). L’excitation du cortex frontal et préfrontal est un peu moins prononcée. C’est aussi dans le cortex occipital et dans le ventrum striatum que la différence à observer dans la magnitude d’excitation, entre la perception de supériorité hiérarchique et celle d’infériorité était la plus visible.

Quelle connexion entre tout ce bazar neurophysiologique et les réseaux artificiels d’apprentissage profond ? Ces réseaux-là prennent le mécanisme général du perceptron, que j’avais déjà survolé un peu plus tôt, et y ajoutent la fonction de généralisation et distinction. La formalisation la plus simple de cette fonction est celle de distance Euclidienne. Chaque point de données est représenté avec deux coordonnées, et chaque paire des points se caractérise par une distance calculée façon Pythagore : A -> B = [(xB – xA)2 + (yB – yA)2]0,5. Les points de données sont groupés sur la base de leur distance Euclidienne respective, en des grappes distinctes, et ces grappes sont la base empirique de généralisation et distinction.

La distance Euclidienne peut être remplacée par la fonction Gaussienne mais la vraie sophistication est à trouver dans l’application du noyau mathématique.  En général, chaque collection des données numériques peut être soit représentée directement comme une matrice soit transformée en telle et cette matrice peut être, à son tour, représentée avec un nombre unique, un noyau. Les déterminants des matrices, que certains de parmi nous ont étudié à l’école, sont un exemple des noyaux algébriques.

Je continue à vous fournir de la bonne science, presque neuve, juste un peu cabossée dans le processus de conception. Je vous rappelle que vous pouvez télécharger le business plan du projet BeFund (aussi accessible en version anglaise). Vous pouvez aussi télécharger mon livre intitulé “Capitalism and Political Power”. Je veux utiliser le financement participatif pour me donner une assise financière dans cet effort. Vous pouvez soutenir financièrement ma recherche, selon votre meilleur jugement, à travers mon compte PayPal. Vous pouvez aussi vous enregistrer comme mon patron sur mon compte Patreon . Si vous en faites ainsi, je vous serai reconnaissant pour m’indiquer deux trucs importants : quel genre de récompense attendez-vous en échange du patronage et quelles étapes souhaitiez-vous voir dans mon travail ?

The point of doing manually what the loop is supposed to do

My editorial on You Tube

OK, here is the big picture. The highest demographic growth, in absolute numbers, takes place in Asia and Africa. The biggest migratory flows start from there, as well, and aim at and into regions with much less of human mass in accrual: North America and Europe. Less human accrual, indeed, and yet much better conditions for each new homo sapiens. In some places on the planet, a huge amount of humans is born every year. That huge amount means a huge number of genetic variations around the same genetic tune, namely that of the homo sapiens. Those genetic variations leave their homeland, for a new and better homeland, where they bring their genes into a new social environment, which assures them much more safety, and higher odds of prolonging their genetic line.

What is the point of there being more specimens of any species? I mean, is there a logic to increasing the headcount of any population? When I say ‘any’, is ranges from bacteria to us, humans. After having meddled with the most basic algorithm of a neural network (see « Pardon my French, but the thing is really intelligent » and « Ce petit train-train des petits signaux locaux d’inquiétude »), I have some thoughts about what intelligence is. I think that intelligence is a class, i.e. it is a framework structure able to produce many local, alternative instances of itself.

Being intelligent consists, to start with, in creating alternative versions of itself, and creating them purposefully imperfect so as to generate small local errors, whilst using those errors to create still different versions of itself. The process is tricky. There is some sort of fundamental coherence required between the way of creating those alternative instances of oneself, and the way that resulting errors are being processed. Fault of such coherence, the allegedly intelligent structure can fall into purposeful ignorance, or into panic.

Purposeful ignorance manifests as the incapacity to signal and process the local imperfections in alternative instances of the intelligent structure, although those imperfections actually stand out and wave at you. This is the ‘everything is just fine and there is no way it could be another way’ behavioural pattern. It happens, for example, when the function of processing local errors is too gross – or not sharp enough, if you want – to actually extract meaning from tiny, still observable local errors. The panic mode of an intelligent structure, on the other hand, is that situation when the error-processing function is too sharp for the actually observable errors. Them errors just knock it out of balance, like completely, and the function signals general ‘Error’, or ‘I can’t stand this cognitive dissonance’.

So, what is the point of there being more specimens of any species? The point might be to generate as many specific instances of an intelligent structure – the specific DNA – as possible, so as to generate purposeful (and still largely unpredictable) errors, just to feed those errors into the future instantiations of that structure. In the process of breeding, some path of evolutionary coherence leads to errors that can be handled, and that path unfolds between a state of evolutionary ‘everything is OK, no need to change anything’ (case mosquito, unchanged for millions of years), and a state of evolutionary ‘what the f**k!?’ (case common fruit fly, which produces insane amount of mutations in response to the slightest environmental stressor).

Essentially, all life could be a framework structure, which, back in the day, made a piece of software in artificial intelligence – the genetic code – and ever since that piece of software has been working on minimizing the MSE (mean square error) in predicting the next best version of life, and it has been working by breeding, in a tree-like method of generating variations,  indefinitely many instances of the framework structure of life. Question: what happens when, one day, a perfect form of life emerges? Something like TRex – Megalodon – Angelina Jolie – Albert Einstein – Jeff Bezos – [put whatever or whoever you like in the rest of that string]? On the grounds of what I have already learnt about artificial intelligence, such a state of perfection would mean the end of experimentation, thus the end of multiplying instances of the intelligent structure, thus the end of births and deaths, thus the end of life.

Question: if the above is even remotely true, does that overarching structure of life understand how the software it made – the genetic code – works? Not necessarily. That very basic algorithm of neural network, which I have experimented with a bit, produces local instances of the sigmoid function Ω = 1/(1 + e-x) such that Ω < 1, and that 1 + e-x > 1, which is always true. Still, the thing does it just sometimes. Why? How? Go figure. That thing accomplishes an apparently absurd task, and it does so just by being sufficiently flexible with its random coefficients. If Life In General is God, that God might not have a clue about how the actual life works. God just needs to know how to write an algorithm for making actual life work. I would even say more: if God is any good at being one, he would write an algorithm smarter than himself, just to make things advance.

The hypothesis of life being one, big, intelligent structure gives an interesting insight into what the cost of experimentation is. Each instance of life, i.e. each specimen of each species needs energy to sustain it. That energy takes many forms: light, warmth, food, Lexus (a form of matter), parties, Armani (another peculiar form of matter) etc. The more instances of life are there, the more energy they need to be there. Even if we take the Armani particle out of the equation, life is still bloody energy-consuming. The available amount of energy puts a limit to the number of experimental instances of the framework, structural life that the platform (Earth) can handle.

Here comes another one about climate change. Climate change means warmer, let’s be honest. Warmer means more energy on the planet. Yes, temperature is our human measurement scale for the aggregate kinetic energy of vibrating particles. More energy is what we need to have more instances of framework life, in the same time. Logically, incremental change in total energy on the planet translates into incremental change in the capacity of framework life to experiment with itself. Still, as framework life could be just the God who made that software for artificial intelligence (yes, I am still in the same metaphor), said framework life could not be quite aware of how bumpy could the road be, towards the desired minimum in the Mean Square Error. If God is an IT engineer, it could very well be the case.

I had that conversation with my son, who is graduating his IT engineering studies. I told him ‘See, I took that algorithm of neural network, and I just wrote its iterations out into separate tables of values in Excel, just to see what it does, like iteration after iteration. Interesting, isn’t it? I bet you have done such thing many times, eh?’. I still remember that heavy look in my son’s eyes: ‘Why the hell should I ever do that?’ he went. ‘There is a logical loop in that algorithm, you see? This loop is supposed to do the job, I mean to iterate until it comes up with something really useful. What is the point of doing manually what the loop is supposed to do for you? It is like hiring a gardener and then doing everything in the garden by yourself, just to see how it goes. It doesn’t make sense!’. ‘But it’s interesting to observe, isn’t it?’ I went, and then I realized I am talking to an alien form of intelligence, there.

Anyway, if God is a framework life who created some software to learn in itself, it could not be quite aware of the tiny little difficulties in the unfolding of the Big Plan. I mean acidification of oceans, hurricanes and stuff. The framework life could say: ‘Who cares? I want more learning in my algorithm, and it needs more energy to loop on itself, and so it makes those instances of me, pumping more carbon into the atmosphere, so as to have more energy to sustain more instances of me. Stands to reason, man. It is all working smoothly. I don’t understand what you are moaning about’.

Whatever that godly framework life says, I am still interested in studying particular instances of what happens. One of them is my business concept of EneFin. See « Which salesman am I? » as what I think is the last case of me being like fully verbal about it. Long story short, the idea consists in crowdfunding capital for small, local operators of power systems based on renewable energies, by selling shares in equity, or units of corporate debt, in bundles with tradable claims on either the present output of energy, or the future one. In simple terms, you buy from that supplier of energy tradable claims on, for example, 2 000 kWh, and you pay the regular market price, still, in that price, you buy energy properly spoken with a juicy discount. The rest of the actual amount of money you have paid buys you shares in your supplier’s equity.

The idea in that simplest form is largely based on two simple observations about energy bills we pay. In most countries (at least in Europe), our energy bills are made of two components: the (slightly) variable value of the energy actually supplied, and a fixed part labelled sometimes as ‘maintenance of the grid’ or similar. Besides, small users (e.g. households) usually pay a much higher unitary price per kWh than large, institutional scale buyers (factories, office buildings etc.). In my EneFin concept, a local supplier of renewable energy makes a deal with its local customers to sell them electricity at a fair, market price, with participations in equity on the top of electricity.

That would be a classical crowdfunding scheme, such as you can find with, StartEngine, for example. I want to give it some additional, financial spin. Classical crowdfunding has a weakness: low liquidity. The participatory shares you buy via crowdfunding are usually non-tradable, and they create a quasi-cooperative bond between investors and investees. Where I come from, i.e. in Central Europe, we are quite familiar with cooperatives. At the first sight, they look like a form of institutional heaven, compared to those big, ugly, capitalistic corporations. Still, after you have waved out that first mist, cooperatives turn out to be very exposed to embezzlement, and to abuse of managerial power. Besides, they are quite weak when competing for capital against corporate structures. I want to create highly liquid a transactional platform, with those investments being as tradable as possible, and use financial liquidity as a both a shield against managerial excesses, and a competitive edge for those small ventures.

My idea is to assure liquidity via a FinTech solution similar to that used by Katipult Technology Corp., i.e. to create some kind of virtual currency (note: virtual currency is not absolutely the same as cryptocurrency; cousins, but not twins, so to say). Units of currency would correspond to those complex contracts « energy plus equity ». First, you create an account with EneFin, i.e. you buy a certain amount of the virtual currency used inside the EneFin platform. I call them ‘tokens’ to simplify. Next, you pick your complex contracts, in the basket of those offered by local providers of energy. You buy those contracts with the tokens you have already acquired. Now, you change your mind. You want to withdraw your capital from the supplier A, and move it to supplier H, you haven’t considered so far. You move your tokens from A to H, even with a mobile app. It means that the transactional platform – the EneFin one – buys from you the corresponding amount of equity of A and tries to find for you some available equity in H. You can also move your tokens completely out of investment in those suppliers of energy. You can free your money, so to say. Just as simple: you just move them out, even with a movement of your thumb on the screen. The EneFin platform buys from you the shares you have moved out of.

You have an even different idea. Instead of investing your tokens into the equity of a provider of energy, you want to lend them. You move your tokens to the field ‘lending’, you study the interest rates offered on the transactional platform, and you close the deal. Now, the corresponding number of tokens represents securitized (thus tradable) corporate debt.

Question: why the hell bothering about a virtual currency, possibly a cryptocurrency, instead of just using good old fiat money? At this point, I am reaching to the very roots of the Bitcoin, the grandpa of all cryptocurrencies (or so they say). Question: what amount of money you need to finance 20 transactions of equal unitary value P? Answer: it depends on how frequently you monetize them. Imagine that the EneFin app offers you an option like ‘Monetize vs. Don’t Monetize’. As long as – with each transaction you do on the platform – you stick to the ‘Don’t Monetize’ option, your transactions remain recorded inside the transactional platform, and so there is recorded movement in tokens, but there is no monetary outcome, i.e. your strictly spoken monetary balance, for example that in €, does not change. It is only when you hit the ‘Monetize’ button in the app that the current bottom line of your transactions inside the platform is being converted into « official » money.

The virtual currency in the EneFin scheme would serve to allow a high level of liquidity (more transactions in a unit of time), without provoking the exactly corresponding demand for money. What connection with artificial intelligence? I want to study the possible absorption of such a scheme in the market of energy, and in the related financial markets, as a manifestation of collective intelligence. I imagine two intelligent framework structures: one incumbent (the existing markets) and one emerging (the EneFin platform). Both are intelligent structures to the extent that they technically can produce many alternative instances of themselves, and thus intelligently adapt to their environment by testing those instances and utilising the recorded local errors.

In terms of an algorithm of neural network, that intelligent adaptation can be manifest, for example, as an optimization in two coefficients: the share of energy traded via EneFin in the total energy supplied in the given market, and the capitalization of EneFin as a share in the total capitalization of the corresponding financial markets. Those two coefficients can be equated to weights in a classical MLP (Multilayer Perceptron) network, and the perceptron network could work around them. Of course, the issue can be approached from a classical methodological angle, as a general equilibrium to assess via « normal » econometric modelling. Still, what I want is precisely what I hinted in « Pardon my French, but the thing is really intelligent » and « Ce petit train-train des petits signaux locaux d’inquiétude »: I want to study the very process of adaptation and modification in those intelligent framework structures. I want to know, for example, how much experimentation those structures need to form something really workable, i.e. an EneFin platform with serious business going on, and, in the same time, that business contributing to the development of renewable energies in the given region of the world. Do those framework structures have enough local resources – mostly capital – for sustaining the number of alternative instances needed for effective learning? What kind of factors can block learning, i.e. drive the framework structure either into deliberate an ignorance of local errors or into panic?

Here is an example of more exact a theoretical issue. In a typical economic model, things are connected. When I pull on the string ‘capital invested in fixed assets’, I can see a valve open, with ‘Lifecycle in incumbent technologies’, and some steam rushes out. When I push the ‘investment in new production capacity’ button, I can see something happening in the ‘Jobs and employment’ department. In other words, variables present in economic systems mutually constrain each other. Just some combinations work, others just don’t. Now, the thing I have already discovered about them Multilayer Perceptrons is that as soon as I add some constraint on the weights assigned to input data, for example when I swap ‘random’ for ‘erandom’, the scope of possible structural functions leading to effective learning dramatically shrinks, and the likelihood of my neural network falling into deliberate ignorance or into panic just swells like hell. What degree of constraint on those economic variables is tolerable in the economic system conceived as a neural network, thus as a framework intelligent structure?

There are some general guidelines I can see for building a neural network that simulates those things. Creating local power systems, based on microgrids connected to one or more local sources of renewable energies, can be greatly enhanced with efficient financing schemes. The publicly disclosed financial results of companies operating in those segments – such as Tesla[1], Vivint Solar[2], FirstSolar[3], or 8Point3 Energy Partners[4] – suggest that business models in that domain are only emerging, and are far from being battle-tested. There is still a way to pave towards well-rounded business practices as regards such local power systems, both profitable economically and sustainable socially.

The basic assumptions of a neural network in that field are essentially behavioural. Firstly, consumption of energy is greatly predictable at the level of individual users. The size of a market in energy changes, as the number of users change. The output of energy needed to satisfy those users’ needs, and the corresponding capacity to install, are largely predictable on the long run. Consumers of energy use a basket of energy-consuming technologies. The structure of this basket determines their overall consumption, and is determined, in turn, by long-run social behaviour. Changes over time in that behaviour can be represented as a social game, where consecutive moves consist in purchasing, or disposing of a given technology. Thus, a game-like process of relatively slow social change generates a relatively predictable output of energy, and a demand thereof. Secondly, the behaviour of investors in any financial market, crowdfunding or other, is comparatively more volatile. Investment decisions are being taken, and modified at a much faster pace than decisions about the basket of technologies used in everyday life.

The financing of relatively small, local power systems, based on renewable energies and connected by local microgrids, implies an interplay of the two above-mentioned patterns, namely the relatively slower transformation in the technological base, and the quicker, more volatile modification of investors’ behaviour in financial markets.

I am consistently delivering good, almost new science to my readers, and love doing it, and I am working on crowdfunding this activity of mine. As we talk business plans, I remind you that you can download, from the library of my blog, the business plan I prepared for my semi-scientific project Befund  (and you can access the French version as well). You can also get a free e-copy of my book ‘Capitalism and Political Power’ You can support my research by donating directly, any amount you consider appropriate, to my PayPal account. You can also consider going to my Patreon page and become my patron. If you decide so, I will be grateful for suggesting me two things that Patreon suggests me to suggest you. Firstly, what kind of reward would you expect in exchange of supporting me? Secondly, what kind of phases would you like to see in the development of my research, and of the corresponding educational tools?

[1] http://ir.tesla.com/ last access December, 18th, 2018

[2] https://investors.vivintsolar.com/company/investors/investors-overview/default.aspx last access December, 18th, 2018

[3] http://investor.firstsolar.com/ last access December, 18th, 2018

[4] http://ir.8point3energypartners.com/ last access December, 18th, 2018

Pardon my French, but the thing is really intelligent

My editorial on You Tube

And so I am meddling with neural networks. It had to come. It just had to. I started with me having many ideas to develop at once. Routine stuff with me. Then, the Editor-in-Chief of the ‘Energy Economics’ journal returned my manuscript of article on the energy-efficiency of national economies, which I had submitted with them, with a general remark that I should work both on the clarity of my hypotheses, and on the scientific spin of my empirical research. In short, Mr Wasniewski, linear models tested with Ordinary Least Squares is a bit oldie, if you catch my drift. Bloody right, Mr Editor-In-Chief. Basically, I agree with your remarks. I need to move out of my cavern, towards the light of progress, and get acquainted with the latest fashion. The latest fashion we are wearing this season is artificial intelligence, machine learning, and neural networks.

It comes handy, to the extent that I obsessively meddle with the issue of collective intelligence, and am dreaming about creating a model of human social structure acting as collective intelligence, sort of a beehive. Whilst the casting for a queen in that hive remains open, and is likely to stay this way for a while, I am digging into the very basics of neural networks. I am looking in the Python department, as I have already got a bit familiar with that environment. I found an article by James Loy, entitled “How to build your own Neural Network from scratch in Python”. The article looks a bit like sourcing from another one, available at the website of ProBytes Software, thus I use both to develop my understanding. I pasted the whole algorithm by James Loy into my Python Shell, made in run with an ‘enter’, and I am waiting for what it is going to produce. In the meantime, I am being verbal about my understanding.

The author declares he wants to do more or less the same thing that I, namely to understand neural networks. He constructs a simple algorithm for a neural network. It starts with defining the neural network as a class, i.e. as a callable object that acts as a factory for new instances of itself. In the neural network defined as a class, that algorithm starts with calling the constructor function ‘_init_’, which constructs an instance ‘self’ of that class. It goes like ‘def __init__(self, x, y):’. In other words, the class ‘Neural network’ generates instances ‘self’ of itself, and each instance is essentially made of two variables: input x, and output y. The ‘x’ is declared as input variable through the ‘self.input = x’ expression. Then, the output of the network is defined in two steps. Yes, the ‘y’ is generally the output, only in a neural network, we want the network to predict a value of ‘y’, thus some kind of y^. What we have to do is to define ‘self.y = y’, feed the real x-s and the real y-s into the network, and expect the latter to turn out some y^-s.

Logically, we need to prepare a vessel for holding the y^-s. The vessel is defined as ‘self.output = np.zeros(y.shape)’. The ‘shape’ function defines a tuple – a table, for those mildly fond of maths – with given dimensions. What are the dimensions of ‘y’ in that ‘y.shape’? They have been given earlier, as the weights of the network were being defined. It goes as follows. It starts, thus, right after the ‘self.input = x’ has been said, ‘self.weights1 = np.random.rand(self.input.shape[1],4)’ fires off, closely followed by ‘self.weights2 =  np.random.rand(4,1)’. All in all, the entire class of ‘Neural network’ is defined in the following form:

class NeuralNetwork:

    def __init__(self, x, y):

        self.input      = x

        self.weights1   = np.random.rand(self.input.shape[1],4)

        self.weights2   = np.random.rand(4,1)                

        self.y          = y

        self.output     = np.zeros(self.y.shape)                

The output of each instance in that neural network is a two-dimensional tuple (table) made of one row (I hope I got it correctly), and four columns. Initially, it is filled with zeros, so as to make room for something more meaningful. The predicted y^-s are supposed to jump into those empty sockets, held ready by the zeros. The ‘random.rand’ expression, associated with ‘weights’ means that the network is supposed to assign randomly different levels of importance to different x-s fed into it.

Anyway, the next step is to instruct my snake (i.e. Python) what to do next, with that class ‘Neural Network’. It is supposed to do two things: feed data forward, i.e. makes those neurons work on predicting the y^-s, and then check itself by an operation called backpropagation of errors. The latter consists in comparing the predicted y^-s with the real y-s, measuring the discrepancy as a loss of information, updating the initial random weights with conclusions from that measurement, and do it all again, and again, and again, until the error runs down to very low values. The weights applied by the network in order to generate that lowest possible error are the best the network can do in terms of learning.

The feeding forward of predicted y^-s goes on in two steps, or in two layers of neurons, one hidden, and one final. They are defined as:

def feedforward(self):

        self.layer1 = sigmoid(np.dot(self.input, self.weights1))

        self.output = sigmoid(np.dot(self.layer1, self.weights2))

The ‘sigmoid’ part means sigmoid function, AKA logistic function, expressed as y=1/(1+e-x), where, at the end of the day, the y always falls somewhere between 0 and 1, and the ‘x’ is not really the empirical, real ‘x’, but the ‘x’ multiplied by a weight, ranging between 0 and 1 as well. The sigmoid function is good for testing the weights we apply to various types of input x-es. Whatever kind of data you take: populations measured in millions, or consumption of energy per capita, measured in kilograms of oil equivalent, the basic sigmoid function y=1/(1+e-x), will always yield a value between 0 and 1. This function essentially normalizes any data.

Now, I want to take differentiated data, like population as headcount, energy consumption in them kilograms of whatever oil equals to, and the supply of money in standardized US dollars. Quite a mix of units and scales of measurement. I label those three as, respectively, xa, xb, and xc. I assign them weights ranging between 0 and 1, so as the sum of weights never exceeds 1. In plain language it means that for every vector of observations made of xa, xb, and xc I take a pinchful of  xa, then a zest of xb, and a spoon of xc. I make them into x = wa*xa + wb*xb + wc*xc, I give it a minus sign and put it as an exponent for the Euler’s constant.

That yields y=1/(1+e-( wa*xa + wb*xb + wc*xc)). Long, but meaningful to the extent that now, my y is always to find somewhere between 0 and 1, and I can experiment with various weights for my various shades of x, and look what it gives in terms of y.

In the algorithm above, the ‘np.dot’ function conveys the idea of weighing our x-s. With two dimensions, like the input signal ‘x’ and its weight ‘w’, the ‘np.dot’ function yields a multiplication of those two one-dimensional matrices, exactly in the x = wa*xa + wb*xb + wc*xc drift.

Thus, the first really smart layer of the network, the hidden one, takes the empirical x-s, weighs them with random weights, and makes a sigmoid of that. The next layer, the output one, takes the sigmoid-calculated values from the hidden layer, and applies the same operation to them.

One more remark about the sigmoid. You can put something else instead of 1, in the nominator. Then, the sigmoid will yield your data normalized over that something. If you have a process that tends towards a level of saturation, e.g. number of psilocybin parties per month, you can put that level in the nominator. On the top of that, you can add parameters to the denominator. In other words, you can replace the 1+e-x with ‘b + e-k*x’, where b and k can be whatever seems to make sense for you. With that specific spin, the sigmoid is good for simulating anything that tends towards saturation over time. Depending on the parameters in denominator, the shape of the corresponding curve will change. Usually, ‘b’ works well when taken as a fraction of the nominator (the saturation level), and the ‘k’ seems to be behaving meaningfully when comprised between 0 and 1.

I return to the algorithm. Now, as the network has generated a set of predicted y^-s, it is time to compare them to the actual y-s, and to evaluate how much is there to learn yet. We can use any measure of error, still, most frequently, them algorithms go after the simplest one, namely the Mean Square Error MSE = [(y1 – y^1)2 + (y2 – y^2)2 + … + (yn – y^n)2]0,5. Yes, it is Euclidean distance between the set of actual y-s and that of predicted y^-s. Yes, it is also the standard deviation of predicted y^-s from the actual distribution of empirical y-s.

In this precise algorithm, the author goes down another avenue: he takes the actual differences between observed y-s and predicted y^-s, and then multiplies it by the sigmoid derivative of predicted y^-s. Then he takes the transpose of a uni-dimensional matrix of those (y – y^)*(y^)’ with (y^)’ standing for derivative. It goes like:

    def backprop(self):

        # application of the chain rule to find derivative of the loss function with respect to weights2 and weights1

        d_weights2 = np.dot(self.layer1.T, (2*(self.y – self.output) * sigmoid_derivative(self.output)))

        d_weights1 = np.dot(self.input.T,  (np.dot(2*(self.y – self.output) * sigmoid_derivative(self.output), self.weights2.T) * sigmoid_derivative(self.layer1)))

        # update the weights with the derivative (slope) of the loss function

        self.weights1 += d_weights1

        self.weights2 += d_weights2

    def sigmoid(x):

    return 1.0/(1+ np.exp(-x))

    def sigmoid_derivative(x):

     return x * (1.0 – x)

I am still trying to wrap my mind around the reasons for taking this specific approach to the backpropagation of errors. The derivative of a sigmoid y=1/(1+e-x) is y’ =  [1/(1+e-x)]*{1 – [1/(1+e-x)]} and, as any derivative, it measures the slope of change in y. When I do (y1 – y^1)*(y^1)’ + (y2 – y^2)*(y^2)’ + … + (yn – y^n)*(y^n)’ it is as if I were taking some kind of weighted average. That weighted average can be understood in two alternative ways. Either it is standard deviation of y^ from y, weighted with the local slopes, or it is a general slope weighted with local deviations. Now I take the transpose of a matrix like {(y1 – y^1)*(y^1)’ ; (y2 – y^2)*(y^2)’ ; … (yn – y^n)*(y^n)’}, it is a bit as if I made a matrix of inverted terms, i.e. 1/[(yn – y^n)*(y^n)’]. Now, I make a ‘.dot’ product of those inverted terms, so I multiply them by each other. Then, I feed the ‘.dot’ product into the neural network with the ‘+=’ operator. The latter means that in the next round of calculations, the network can do whatever it wants with those terms. Hmmweeellyyeess, makes some sense. I don’t know what exact sense is that, but it has some mathematical charm.

Now, I try to apply the same logic to the data I am working with in my research. Just to give you an idea, I show some data for just one country: Australia. Why Australia? Honestly, I don’t see why it shouldn’t be. Quite a respectable place. Anyway, here is that table. GDP per unit of energy consumed can be considered as the target output variable y, and the rest are those x-s.

Table 1 – Selected data regarding Australia

Year GDP per unit of energy use (constant 2011 PPP $ per kg of oil equivalent) Share of aggregate amortization in the GDP Supply of broad money, % of GDP Energy use (tons of oil equivalent per capita) Urban population as % of total population GDP per capita, ‘000 USD
  y X1 X2 X3 X4 X5
1990 5,662020744 14,46 54,146 5,062 85,4 26,768
1991 5,719765048 14,806 53,369 4,928 85,4 26,496
1992 5,639817305 14,865 56,208 4,959 85,566 27,234
1993 5,597913126 15,277 56,61 5,148 85,748 28,082
1994 5,824685357 15,62 59,227 5,09 85,928 29,295
1995 5,929177604 15,895 60,519 5,129 86,106 30,489
1996 5,780817973 15,431 62,734 5,394 86,283 31,566
1997 5,860645225 15,259 63,981 5,47 86,504 32,709
1998 5,973528571 15,352 65,591 5,554 86,727 33,789
1999 6,139349354 15,086 69,539 5,61 86,947 35,139
2000 6,268129418 14,5 67,72 5,644 87,165 35,35
2001 6,531818805 14,041 70,382 5,447 87,378 36,297
2002 6,563073754 13,609 70,518 5,57 87,541 37,047
2003 6,677186947 13,398 74,818 5,569 87,695 38,302
2004 6,82834791 13,582 77,495 5,598 87,849 39,134
2005 6,99630318 13,737 78,556 5,564 88 39,914
2006 6,908872246 14,116 83,538 5,709 88,15 41,032
2007 6,932137612 14,025 90,679 5,868 88,298 42,022
2008 6,929395465 13,449 97,866 5,965 88,445 42,222
2009 7,039061961 13,698 94,542 5,863 88,59 41,616
2010 7,157467568 12,647 101,042 5,649 88,733 43,155
2011 7,291989544 12,489 100,349 5,638 88,875 43,716
2012 7,671605162 13,071 101,852 5,559 89,015 43,151
2013 7,891026044 13,455 106,347 5,586 89,153 43,238
2014 8,172929207 13,793 109,502 5,485 89,289 43,071

In his article, James Loy reports the cumulative error over 1500 iterations of training, with just four series of x-s, made of four observations. I do something else. I am interested in how the network works, step by step. I do step-by-step calculations with data from that table, following that algorithm I have just discussed. I do it in Excel, and I observe the way that the network behaves. I can see that the hidden layer is really hidden, to the extent that it does not produce much in terms of meaningful information. What really spins is the output layer, thus, in fact, the connection between the hidden layer and the output. In the hidden layer, all the predicted sigmoid y^ are equal to 1, and their derivatives are automatically 0. Still, in the output layer, when the second random distribution of weights overlaps with the first one from the hidden layer. Then, for some years, those output sigmoids demonstrate tiny differences from 1, and their derivatives become very small positive numbers. As a result, tiny, local (yi – y^i)*(y^i)’ expressions are being generated in the output layer, and they modify the initial weights in the next round of training.

I observe the cumulative error (loss) in the first four iterations. In the first one it is 0,003138796, the second round brings 0,000100228, the third round displays 0,0000143, and the fourth one 0,005997739. Looks like an initial reduction of cumulative error, by one order of magnitude at each iteration, and then, in the fourth round, it jumps up to the highest cumulative error of the four. I extend the number to those hand-driven iterations from four to six, and I keep feeding the network with random weights, again and again. A pattern emerges. The cumulative error oscillates. Sometimes the network drives it down, sometimes it swings it up.

F**k! Pardon my French, but just six iterations of that algorithm show me that the thing is really intelligent. It generates an error, it drives it down to a lower value, and then, as if it was somehow dysfunctional to jump to conclusions that quickly, it generates a greater error in consecutive steps, as if it was considering more alternative options. I know that data scientists, should they read this, can slap their thighs at that elderly uncle (i.e. me), fascinated with how a neural network behaves. Still, for me, it is science. I take my data, I feed it into a machine that I see for the first time in my life, and I observe intelligent behaviour in something written on less than one page. It experiments with weights attributed to the stimuli I feed into it, and it evaluates its own error.

Now, I understand why that scientist from MIT, Lex Fridman, says that building artificial intelligence brings insights into how the human brain works.

I am consistently delivering good, almost new science to my readers, and love doing it, and I am working on crowdfunding this activity of mine. As we talk business plans, I remind you that you can download, from the library of my blog, the business plan I prepared for my semi-scientific project Befund  (and you can access the French version as well). You can also get a free e-copy of my book ‘Capitalism and Political Power’ You can support my research by donating directly, any amount you consider appropriate, to my PayPal account. You can also consider going to my Patreon page and become my patron. If you decide so, I will be grateful for suggesting me two things that Patreon suggests me to suggest you. Firstly, what kind of reward would you expect in exchange of supporting me? Secondly, what kind of phases would you like to see in the development of my research, and of the corresponding educational tools?