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

Ce petit train-train des petits signaux locaux d’inquiétude

Mon éditorial sur You Tube

Dans ma dernière mise à jour en anglais, celle intitulée « Pardon my French, but the thing is really intelligent », j’ai commencé à travailler avec un algorithme tout simple de réseau neuronal. Tout simple veut dire six équations en tout. Mon but était d’observer chaque fonction logique de cet algorithme dans son application à des données réelles. Les données réelles en question c’est l’Australie et son efficience énergétique. Les détails de l’algorithme et les données empiriques testées sont spécifiées dans cette mise à jour en anglais. En gros, j’avais posé l’hypothèse implicite que ma variable de résultat est l’efficience énergétique de l’économie Australienne, mesurée avec le coefficient de Produit Intérieur Brut par kilogramme d’équivalent pétrole de consommation finale d’énergie. Cette variable est en quelque sorte la réaction produite par ce système nerveux hypothétique que les équations du réseau neuronal représentent de façon analytique. L’hypothèse sujette à l’examen est que cette réaction est produite par l’action de cinq variables d’entrée : la consommation d’énergie par tête d’habitant, le PIB par (probablement la même) tête d’habitant, le pourcentage de la population urbaine dans la population totale, et enfin la proportion entre, respectivement, l’amortissement agrégé d’actifs fixes et l’offre d’argent, comme numérateurs, et le Produit Intérieur Brut comme dénominateur.

Maintenant je me concentre sur la façon dont cet algorithme apprend. L’apprentissage se fait en trois pas essentiels. Tout d’abord, les données d’entrée sont transformées, à travers une double multiplication par des coefficients aléatoires de pondération. C’est l’équivalent de l’imagination. L’algorithme crée une distribution alternative des données d’entrée, comme une version imaginaire légèrement décalée de la réelle. Ensuite, sur la base de cette distribution alternative, une valeur espérée de la variable de résultat est calculée. Cette valeur espérée est calculée avec l’aide de la fonction sigmoïde Ω =1/(1+e-x), où le « x » est en fait une sommation des variables d’entrée dans cette version alternative, donc x1*w1 + x2*w2 + x3*w3 + x4*w4 + x5*w5, où les « w » sont ces coefficients de pondération. J’utilise le

Le truc intéressant à propos de la fonction sigmoïde est que dans la grande majorité des cas ça donne une sortie Ω = 1, avec une dérivée locale Ω’= 0. Mon « » réel est toujours plus grand que 1, donc cette prédiction est évidemment fausse. Elle génère une erreur locale E = y – Ω. Seulement, ce réseau neuronal fait de six équations assume que lorsque la prédiction Ω égale exactement 1, donc quand sa dérivée Ω’ égale exactement 0, c’est comme si rien ne se passait côté connaissance. Juste dans certains cas, avec une combinaison aléatoire des coefficients de pondération parmi plusieurs autres, Ω est très légèrement en-dessous de 1 et sa dérivée Ω’ est très légèrement plus grande que 0.

Le cas de Ω < 1 c’est comme si le neurone ne pouvait pas produire une réponse routinière. Si vous voulez, c’est comme le système nerveux ne pouvait pas recevoir la combinaison des stimuli qui l’autorise à signaler comme d’habitude. La dérivée locale Ω’, qui est normalement Ω’ = 0, prend alors la forme de Ω’ > 0. A ce point-ci, la dérivée Ω’ est interprétée de la façon qui est probablement la plus profonde et la plus philosophique, qu’Isaac Newton considérait comme le rôle cognitif le plus fondamental de la dérivée d’une fonction. La dérivée donne la mesure de vitesse de changement dans les phénomènes qui composent la réalité. Tout ce qui se passe se passe comme une fonction dérivée de la fonction sous-jacente de l’état des choses.

Alors, lorsque mon neurone produit Ω = 1 et Ω’ = 0, cette réponse neuronale, tout en étant évidemment fausse par rapport à mes données réelles y – dont ce Ω est supposé d’estimer la valeur espérée – est une réponse routinière et il n’y a pas de quoi faire un fromage. L’erreur locale E = y – Ω est donc considérée comme insignifiante, même si sa valeur arithmétique est substantielle. En revanche, lorsque le neurone produit une réponse très légèrement Ω < 1, c’est pas normal. Le neurone rend une dérivée Ω’ > 0, donc un signal d’inquiétude. Celui-ci est une raison pour considérer cette erreur locale particulière E = y – Ω comme significative. Le produit (y – Ω)*Ω’ est alors transmis dans la ronde consécutive d’itération comme un coefficient de plus, non-aléatoire cette fois-ci, qui modifié les données réelles d’entrée. Ces dernières, dans l’itération suivante de ces équations, prennent donc la forme x1*[w1+(y – Ω)*Ω’] + x2*[w2+(y – Ω)*Ω’] + x3*[w3+(y – Ω)*Ω’] + x4*[w4+(y – Ω)*Ω’] + x5*[w5+(y – Ω)*Ω’].

Je récapitule. Ce réseau neural tout simple produit donc deux phénomènes : une vision alternative de la réalité ainsi qu’une réaction d’inquiétude lorsque cette réalité alternative force le neurone à une réaction pas tout à fait comme espérée. L’apprentissage consiste à utiliser les signaux d’inquiétude comme matériel cognitif. Cette utilisation a une forme spécifique. C’est comme si moi, en face de quelque chose d’inhabituel et légèrement inquiétant, je prenais ce facteur de stress et produisais une vision de la réalité encore plus inquiétante.

Ça m’intrigue. Tout ce que j’ai appris jusqu’alors, en termes de psychologie, me dit que les êtres humains ont une tendance presque innée à réduire la dissonance cognitive. Ces équations-là font le contraire : elles amplifient les dissonances cognitives locales et les transmettent dans le processus d’apprentissage. Ceci me rend conscient de la distinction fondamentale entre deux attitudes vis-à-vis de l’inhabituel : la peur et l’apprentissage. La peur dit d’éviter à tout prix une autre exposition au facteur d’inquiétude. Si ce réseau neuronal avait peur de l’inhabituel, il éliminerait les cas de Ω’ > 0 de toute utilisation ultérieure. Alors mathématiquement, il n’apprendrait rien. Il convergerait vers une situation où toutes les réponses neuronales sont rigoureusement Ω = 1 et donc toutes les erreurs de jugement (y – Ω) sont ignorées, car avec Ω’ = 0, (y – Ω)*Ω’ = 0 aussi. Seulement, ce réseau fait le contraire : il prend ces cas de Ω’ > 0 et simule des situations où ces Ω’ > 0 modifient la réalité pour du bon.

Question : qu’est-ce que ça donne en pratique, avec le cas de l’Australie ? Est-ce que le fait de produire une vision alternative d’Australie génère de l’inquiétude et cette inquiétude, contribue-t-elle à produire des visions même plus alternatives ? Eh bien voilà, c’est justement la question que je m’avais posée et qui m’a poussé à faire quelque chose que les informaticiens considèrent comme une horreur d’insanité : au lieu de faire cet algorithme travailler en boucle jusqu’il produise une erreur minimale, j’avais simulé, dans un fichier Excel, des rondes consécutives d’itération « imagination >> réalité alternative >> erreur de jugement >> inquiétudes locales >> réalité encore plus alternative etc. ». Autrement dit, j’avais fait par moi-même ce qu’un algorithme aurait dû faire pour moi. J’avais produit trois distributions alternatives de ces coefficients initiaux de pondération, pour modifier les données réelles d’entrée. Ensuite, pour chacune de ces distributions alternatives, il m’eût suffi de patience pour faire six rondes d’itération surveillée d’équations qui composent ce réseau neuronal tout simple.

Pour chaque ronde d’itération surveillée, dans chacune de ces réalités alternatives, j’observais l’erreur cumulée – donc la somme des (y – Ω)*Ω’ générées pour par des incidents de Ω’ > 0 – ainsi que les années particulières, dans ma fenêtre générale d’observation 1990 – 2014, où ces incidents locaux Ω’ > 0 se produisent. Tableau 1, ci-dessous, rend compte ce cette expérience. Je développe ce raisonnement plus loin en-dessous :

Tableau 1 – Application d’algorithme de réseau neuronal aux données sur l’efficience énergétique de l’Australie

Distributions aléatoires des coefficients de pondération
Rondes consécutives Distribution  1 Distribution  2 Distribution  3
Ronde 1
Années avec erreur significative, pour apprentissage dans des rondes prochaines 1999; 2002; 2003; 2006 1990; 1994; 1998 – 99; 2009; 2012 – 13; 1990 – 91; 1996 – 97; 1999; 2001; 2007; 2009 – 11;
Erreur cumulative 5,53241E-09 7,0537E-05 0,000916694
Ronde 2
Années avec erreur significative, pour apprentissage dans des rondes prochaines 1992; 1993; 1999; 2002; 2006 1996; 1999; 2006; 2012 – 13; 1991 – 92; 1996; 2004; 2007; 2011;
Erreur cumulative 6,45047E-12 2,93896E-07 0,035447255
Ronde 3
Années avec erreur significative, pour apprentissage dans des rondes prochaines 1990; 1996; 1999; 2002; 2006 1991; 1997; 1999; 2010; 2012 – 14 1991; 1996; 1999; 2002 – 2004; 2007; 2009 – 2012;
Erreur cumulative 2,34651E-13 4,39246E-06 0,00056026
Ronde 4
Années avec erreur significative, pour apprentissage dans des rondes prochaines 1990 – 92; 1994 – 95; 1997; 2001 – 2002; 2006 – 2007; 2012 1990; 1992; 1996; 1999; 2012 – 13; 1990 – 91; 1994 – 96; 1999; 2007; 2009 – 11;
Erreur cumulative 0,000171883 0,000741233 6,27817E-05
Ronde 5
Années avec erreur significative, pour apprentissage dans des rondes prochaines 1993; 1999; 2002; 2003; 2006 1997; 1999; 2007; 2012 – 13; 1990 – 91; 1996; 2003; 2007 – 2009; 2011;
Erreur cumulative 3,46206E-05 0,000548987 0,001532496
Ronde 6
Années avec erreur significative, pour apprentissage dans des rondes prochaines 1991 – 94; 1996 – 97; 2000; 2005; 2007; 2013 1991 – 94; 1995 – 96; 2000; 2005; 2007; 2013; 1991 – 94; 1996 – 97; 2000; 2005; 2007; 2013
Erreur cumulative 3,07871E-08 3,07871E-08 3,07871E-08

Ce que j’observe dans ce tableau est tout d’abord une convergence progressive du cadre d’apprentissage. Dans les rondes 1 – 5, chaque distribution alternative générait des erreurs significatives, donc suffisamment inquiétantes pour être utilisées, pour des années visiblement différentes. La ronde 6 apporte un changement : les trois réalités alternatives convergent presque parfaitement l’une vers l’autre. Chaque réalité alternative produit des signaux d’inquiétude pour virtuellement les mêmes années et rend la même erreur cumulée. Avec ça, il faut se rendre compte que 6 itérations, dans un réseau neuronal artificiel, c’est comme deux fois rien. Ce réseau précis minimise son erreur cumulée après environ 1500 itérations.

J’ai donc une structure cognitive de base – les équations du réseau neuronal – qui commence son apprentissage par imaginer trois versions alternatives de la réalité et ensuite converge très vite vers un chemin commun pour toutes les trois. J’avais continué d’expérimenter avec ce réseau en remplaçant dans l’algorithme d’origine la fonction sigmoïde Ω =1/(1+e-x) par une autre, fréquemment utilisée dans les réseau neuronaux, c’est-à-dire la tangente hyperbolique tan h = (e2x – 1)/(e2x + 1) ainsi que sa dérivée tan h’. Le « x » c’est comme avant, donc une moyenne pondérée des données réelles d’entrée, modifiées avec des coefficients aléatoires de pondération.    Normalement, lorsque je lis de la littérature à propos des réseaux neuronaux, la tangente hyperbolique est présentée comme une structure d’apprentissage plus rapide et plus légère que le sigmoïde. Seulement voilà, ici, la tangente hyperbolique, elle n’apprend pas, au moins pas dans les 6 rondes surveillées. Elle ne génère que des tan h = 1 avec des tan h’ rigoureusement nulles. Officiellement, l’erreur cumulative de jugement est toujours rigoureusement E = 0.

En d’autres mots, pendant que la structure logique basée sur le sigmoïde générait des petites inquiétudes à reprendre pour l’apprentissage ultérieur, sa mutation basée sur la tangente hyperbolique ne fait qu’éteindre et étouffer toute inquiétude possible. Elle agit comme un réducteur systématique de dissonance cognitive. Les valeurs espérées de la variable de résultat sont toutes égales à 1, donc évidemment tout aussi fausses que celles générées par le sigmoïde, seulement avec la tangente hyperbolique c’est vraiment toujours tan h = 1 et tan h = 0, donc quelle que soit l’erreur de jugement y – tan h(x), le réseau l’ignore et prétend que tout va bien. Ce même réseau, avec la tangente hyperbolique au lieu du sigmoïde, est donc comme une personne qui (apparemment) se fout de commettre erreur après erreur et fait tout pour étouffer toute dissonance cognitive. Par conséquent, cette personne n’apprend rien.

Je traduis ces observations pour les besoins de mes études sur l’intelligence collective. Ces deux structures logiques – celle basée sur le sigmoïde et celle basée sur la tangente hyperbolique – diffèrent par leur capacité de produire, ça et là, des dérivées locales non-nulles. Nous avons une fonction du quotidien, une façon de vivre de jour au jour. Une dérivée non-nulle de cette fonction, générée comme réponse à une vision imaginaire de la réalité (données d’entrée modifiées avec des coefficients aléatoires) veut dire que nous sommes capables de produire du changement dans notre fonction du quotidien en réponse à une idée de ce que notre réalité pourrait être, avec un peu d’imagination. En revanche, une dérivée toujours rigoureusement nulle veut dire qu’un tel changement est bloqué.

Je continue d’expérimenter avec l’algorithme. Je modifie la façon originelle de générer la version alternative de réalité. Je modifie donc l’imagination de mon réseau neuronal. Originellement, les coefficients aléatoires étaient produits avec la fonction « random.rand » du langae Python, dans l’intervalle entre 0 et 1. Maintenant, je la remplace par une contrainte « erandom.rand », donc mes coefficients aléatoires sont produits comme des puissances aléatoires de la constante d’Euler e ≈ 2,7188. Avec cette imagination exponentielle, les neurones basés sur la fonction sigmoïde arrêtent d’apprendre. Ils se comportent de façon « rien ne se passe qui nous intéresse », donc ils rendent toujours Ω = 1 et Ω’ = 0 et pas question qu’il en soit autrement.

En revanche, les neurones basés sur la tangente exponentielle se comportent en mode panique. Dans la couche neuronale cachée du réseau (elle n’est pas vraiment cachée, c’est juste du jargon informatique ; elle est tout simplement intermédiaire entre la couche d’entrée et celle de résultat, voilà tout), certaines années produisent des dérivées locales nulles pendant que certaines autres rendent « opération impossible » lorsqu’ils doivent calculer ces tangentes locales.

Je modifie encore une fois l’imagination du réseau. Dans la couche neuronale cachée la réalité d’entrée est modifiée de façon similaire à celle que j’ai déjà utilisé dans mon travail de recherche sur l’efficience énergétique. Pour chaque « xi » je produis un coefficient wi = ln(xi)/(t – 1989), donc une mesure de la distance entre l’année donnée et 1989. Dans la couche de résultat, je garde la méthode initiale, donc celle de pondération avec un coefficient aléatoire rendu par la fonction « random.rand ». Le réseau basé sur le neurone sigmoïde commence par générer une erreur cumulative énorme dans la première ronde – E > 20 – mais dans les rondes consécutives ça descend vers les niveaux observés dans Tableau 1. Les neurones qui utilisent la tangente hyperbolique se comportent d’une façon similaire.

Voilà donc une autre observation utile. Pour qu’un réseau neuronal soit capable d’apprentissage, il doit y avoir cohérence entre son imagination – donc la méthode de produire des visions alternatives de la réalité – et le mode de traitement des stimuli alternatifs ainsi produits. L’apprentissage survient lorsque l’imagination rend possible un tel traitement des stimuli qui génère, à son tour, des petits signaux locaux d’inquiétude et ceux-ci sont repris comme matériel cognitif de valeur. L’apprentissage se présente comme un sentier étroit entre l’ignorance délibérée d’une part (étouffement de dissonance cognitive) et la panique d’autre part. Un réseau neuronal capable d’avancer le long de ce sentier peut utiliser même une imagination des plus sauvages, qui initialement produit une erreur de jugement de taille galactique, car il peut la traduire très vite en ce petit train-train des petits signaux locaux d’inquiétude.

Une question me saisit : que se passerait-il si un être humain aurait la capacité de voir la réalité exactement comme elle est, sans aucune distorsion ? Selon mon expérience avec cet algorithme de réseau neuronal, cela voudrait dire la fin de tout apprentissage. Cette forme particulière d’intelligence, écrite dans les équations de cet algorithme, exige une vision distordue de la réalité, pour que celle-là génère des erreurs de jugement possibles à utiliser dans l’avenir. Pas de distorsion veut dire absence d’erreur de jugement et sans celui-ci, pas d’apprentissage. Désolé, les mecs, mais apparemment, il faut être ne serait-ce qu’un tout petit peu bête pour apprendre quoi que ce soit.

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 ?

Trzy koty w moim ogródku i sieć neuronalna

Mój wstępniak na You Tube

W moim ostatnim wpisie (patrz Pardon my French, but the thing is really intelligent ) opisałem moją pierwszą przygodę z programowaniem sieci neuronalnej. Wyszukałem w Internecie jeden z najprostszych możliwych algorytmów w języku Python (znalazłem go w artykule How to build your own Neural Network from scratch in Python ) i zastosowałem do niewielkiej próbki danych na temat efektywności energetycznej w skali makroekonomicznej. Sieciami neuronalnymi zajmuję się z dwóch powodów. Po pierwsze, w mojej branży, czyli w naukach społecznych, estymacja modeli ekonometrycznych przy pomocy regresji liniowej testowanej metodą najmniejszych kwadratów zaczyna już trącić myszką. Modele oparte na sztucznej inteligencji albo przynajmniej testowane przy pomocy sieci neuronalnych zaczynają wypierać to, co można już dzisiaj określić jako tradycyjną statystykę probabilistyczną. Redaktor naczelny czasopisma „Energy Economics” właśnie zwrócił mi manuskrypt artykułu, z grzeczną lecz stanowczą sugestią, że w dziedzinie badań empirycznych nad efektywnością energetyczną warto wreszcie wyjść z jaskini i zacząć stosować nowsze metody badawcze. Święta prawda, Herr Redaktor, staram się nadgonić.

Po drugie, mam taką małą, prywatną i jednocześnie uogólnioną obsesję badawczą: staram się badać działanie naszych ludzkich struktur społecznych jako przejawu zbiorowej inteligencji. No dobra, może nie zawsze jesteśmy szczególnie bystrzy jako zbiorowość, ale jednak jakoś dajemy radę. No weźmy na przykład wynalezienie koła. Gdyby dzisiaj ktoś się pojawił, z tryumfalną miną, dzierżąc świeżo wynalezione koło, zaraz spotkałby się z krytyką: „Jedno koło ? A co Ty chcesz zrobić z jednym kołem ? Maszynę losującą ? Przecież trzeba co najmniej dwóch kół, no i jakiejś ośki. Z jednym kołem to nawet hulajnogi nie wynajdziemy”. W sumie racja, ale patrzcie: kiedyś ktoś wynalazł jedno koło i potem wszyscy pozostali mieli wystarczająco dużo cierpliwości, żeby wynaleźć drugie, potem oś łączącą oba, jeszcze później wynaleźli woły do ciągnięcia tego czegoś na tych dwóch kołach. To wszystko wymagało dalekowzrocznej i cierpliwej pracy, czyli przejawu zbiorowej inteligencji.

Wracam do opisu mojego pierwszego doświadczenia z algorytmem sieci neuronalnej. Wiem, że dla czytającego ten wpis informatyka moje zachwyty neofity mogą być żałosne, jednak cóż: to jest mój dziennik naukowy. Opisuję w nim uczciwie moją intelektualną podróż, a w każdej podróży po prostu trzeba przejść przez kolejne punkty i już. Moje podejście do tego konkretnego algorytmu było nieco odmienne od tego, jakie pokazał autor cytowanego przeze mnie artykułu. On sprawdził, ile iteracji potrzeba tej sieci neuronalnej dla zminimalizowania błędu w estymacji wartości wyjściowych z prostego zbioru wartości wejściowych. Interesowała go skuteczność. Ja z mojej strony obserwuję przede wszystkim sposób działania sieci neuronowej i jej strukturę tak, żebym mógł te obserwacje uogólnić na działanie czegokolwiek inteligentnego. Ja wziąłem więc ten prościutki algorytm sieci neuronalnej, przełożyłem go na powtarzalną sekwencję obliczeń i ręcznie wykonywałem kolejne rundy tychże obliczeń w Excelu, na niewielkiej próbce moich danych empirycznych na temat efektywności energetycznej w skali makro. Głupie ? Po co wykonywać obliczenia ręcznie, kiedy w algorytmie wpisana jest pętla i jej zadaniem jest automatyczne powtarzanie obliczeń ? No właśnie po to, żeby zrozumieć dokładnie jak to działa, krok po kroku.

Działa to w sposób, od którego szczęka mi opadła. Układ czterech (no, sześciu) równań, wykonywanych w zapętlonej sekwencji, najpierw generuje błędy w predykcji wartości zmiennej wyjściowej, potem zmniejsza skalę tych błędów, a następnie znowu ją zwiększa po to, aby potem znowu ją zmniejszyć. To coś – w sensie ten układ równań – generował błędy, na podstawie których następnie zmniejszał błędy, ale potem znowu generował kolejne błędy, jakby eksperymentował z dostępnym zbiorem danych. Układ równań, który mógłby być na rozszerzonej maturze z matematyki zachowywał się jak inteligentny organizm !

Kiedy patrzyłem na skumulowany błąd predykcji, jaki tworzył ten układ równań, przyszedł mi do głowy obraz kotów moich sąsiadów, kiedy łażą po moim ogródku (koty, nie sąsiedzi). W ciepłe i słoneczne dni (czyli raczej nie teraz), dach mojej szopy na narzędzia to taka plaża dla VIP-ów. Okoliczne koty uwielbiają się tam wygrzewać, ale uwaga: mimo że dach jest spory (jak dla kota), w sensie moralnym jest tam miejsce tylko dla jednego. Każdy kot, który wtedy wejdzie do mojego ogrodu, rozgląda się i buduje rodzaj optymalnej trasy tak, żeby rozpatrzeć sytuację („Czy ten czarny kulawy skurwiel z kretyńskim medalikiem na szyi przypadkiem nie podchodzi od strony krzaku forsycji ?”). Kot idzie trochę w lewo, trochę w prawo, eksperymentuje, potem w kolejnym dniu ustala trochę prostszą trasę, jednak – jakby niezadowolony ze zbytniego uproszczenia sytuacji – w kolejnych dniach znowu eksperymentuje, tylko nieco inaczej. Ten układ równań zachowywał się bardzo podobnie.

Staram się zrozumieć ten mechanizm, żeby go uogólnić. Najpierw potrzebne jest coś, co generuje błędy, na których można się uczyć czyli błędy, które określam dalej jako „znaczące” (w sensie, że mają znaczenie jako informacja). W tym układzie równań generowanie znaczących błędów polegało na połączeniu trzech elementów: składnika losowego, odchyleń generowanych przez składnik losowy oraz lokalnej pochodnej predykcji. Dobra, po kolei. Układ równań generował jakieś przewidywane wartości zmiennej wyjściowej – mojego igreka, czyli efektywności energetycznej gospodarki – na podstawie wartości pięciu zmiennych wejściowych: udziału zagregowanej amortyzacji (x1) oraz podaży pieniądza (x2) w PKB, średniej konsumpcji energii per capita (x3), udziału ludności miejskiej w populacji ogólnej (x4) oraz PKB per capita (x5). Dla wygody wklejam poniżej tabelę z danymi – dla Australii – na których eksperymentowałem.

Tabela 1 – Wybrane dane na temat efektywności energetycznej w Australii

Rok PKB na jednostkę spożycia energii (USD PPP 2011 na kilogram równoważnika ropy naftowej) Udział zagregowanej amortyzacji w PKB [%] Udział podaży pieniądza w PKB [%] Finalne spożycie energii per capita (tony równoważnika ropy naftowej) 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

Obróbka danych z tabeli przez sieć neuronalną (układ równań) zaczynała się od czegoś, czego sens zrozumiałem dopiero zaobserwowawszy działanie sieci w praktyce i czego początkowo nie rozumiałem do końca: dla każdego iksa algorytm generował dwa kolejne iloczyny „x*współczynnik losowy”. Pierwszy raz to było w warstwie ukrytej sieci neuronalnej – tam było właśnie „x*współczynnik losowy” – drugi zaś raz w warstwie wyjściowej i tam było już „x*współczynnik losowy*zupełnie inny współczynnik losowy”. W oryginalnym algorytmie współczynniki losowe są generowane funkcją „random.rand” języka Python. Kiedy testowałem kolejne kroki algorytmu w Excelu, używałem zamiast tego funkcji „los()”.

Na początku tego nie rozumiałem. Potem mnie olśniło. Jestem kotem sąsiadów w moim ogródku, w słoneczny dzień i chcę się uwalić na dachu szopy, nie wdając się przy tym w (przesadną) awanturę. Próbuję przewidzieć ruchy innych kotów. Kiedy jestem zwykłym kotem, to eksperymentuję wyłącznie metodą rzeczywistych prób oraz ich równie rzeczywistych skutków. Kiedy jednak jestem kotem wyposażonym z inteligencję, wyobrażam sobie różne alternatywne sytuacje. Generowanie wartości hipotetycznych iksa, czyli „x*współczynnik losowy*zupełnie inny współczynnik losowy” to właśnie wyobraźnia. Mój układ równań wyobrażał sobie, jakie mogłyby być te iksy, gdyby im trochę wina dolać. W każdej rundzie iteracji na temat każdego rzeczywistego iksa powstawały dwie hipotezy na temat tego, czym (kim?) ten iks mógłby być przy odrobinie probabilistycznej fantazji.

Predykcja wartości oczekiwanych zmiennej y – dla wygody będę je dalej określał jako „y^” – odbywała się w oparciu o te hipotetyczne, wstrząśnięte wartości iksów, przy pomocy funkcji logistycznej, zwanej w informatyce funkcją sigmoidalną unipolarną. Wtedy, obserwując krok po kroku działanie algorytmu, zaobserwowałem coś, co dotychczas znałem tylko z teorii: przy tych konkretnych wartościach iksów, mój przewidywany igrek y^ był z reguły równy 1, a jego lokalna pochodna była w związku z tym równa zero. Innymi słowy mój neuron zwracał z reguły informację że coś się dzieje (sygnał wyjściowy „1”), ale w sumie to dzieje się rutynowo (zawsze „1”), więc w sumie nie ma co się podniecać i przesadnie aktywować (pochodna „0”).

Innymi słowy, moje y^ były prawie zawsze równe 1, czyli oczywiście różne od rzeczywistych igreków z tabeli, a lokalne pochodne y^’ były prawie zawsze równe „0”. Lokalny błąd estymacji był prawie zawsze równy „y minus 1”. Prawie nie oznacza jednak naprawdę zawsze. W warstwie ukrytej sieci, czyli tam gdzie iksy miały tylko trochę wyobraźni, nie działo się nic. Jednak w warstwie wyjściowej, gdzie iksy już były dwukrotnie pomnożone przez czynnik losowy, pojawiały się drobne, lokalne odchylenia sigmoidu od „1” i ty samym, w niektórych latach z mojego okienka obserwacji 1990 – 2014, pojawiały się lokalne pochodne tego sigmoidu trochę większe od zera. W niektórych latach lokalny błąd estymacji wynosił więc „y minus trochę mniej niż 1” i niezerowa pochodna oznaczała, że coś się dzieje.

To jest stara, jeszcze Newtonowska interpretacja pochodnej funkcji. Wszystko co się dzieje, jest funkcją pochodną od jakiejś innej funkcji, czyli wszystko co się dzieje jest zmianą wartości jakiejś całki. Kiedy idę, zmienia się moja odległość od jakiegoś punktu. Odległość to całka mojego marszu, a tempo w jakim maszeruję to pochodna od niej.

W tym konkretnym algorytmie założono, że dla każdej lokalnej predykcji y^ obliczamy współczynnik znaczenia tego błędu jako iloczyn odchylenia od wartości rzeczywistej igreka, czyli (y – y^), pomnożonej przez pochodną wartości przewidywanej. W sumie to jest (y – y^)*y^’. Chwilę mi zajęło, zanim zrozumiałem logikę tej metody. Błąd ma znaczenie tylko wtedy, kiedy – matematycznie rzecz biorąc – coś się dzieje, czyli kiedy pochodna wartości przewidywanej jest różna od zera. Pochodna (nieznacznie) różna od zera pojawia się wtedy, kiedy wartość oczekiwana y^ jest nieznacznie mniejsza od 1. Innymi słowy, neuron uznaje że coś się dzieje kiedy nie ma podstaw do wygenerowania pełnego sygnału wyjściowego równego 1, tylko sygnał nieznacznie słabszy. W sumie, ten neuron oparty na funkcji sigmoidalnej reaguje, w sensie że czegoś się na serio uczy wtedy, kiedy jest jakby odcięty od pełnego sygnału.

Jest więc tak, w tym algorytmie, że dwukrotnie wstrząsnąwszy moje oryginalne iksy przy pomocy dwóch kolejnych mnożeń przez czynnik losowy, w niektórych latach otrzymuję sytuację na tyle niepokojącą dla mojej sieci neuronalnej, że generuje lokalne niezerowe pochodne, a więc lokalne znaczące błędy. Po pierwszej rundzie obliczeń – czyli pierwszej iteracji mojej funkcji – zaczynam wykorzystywać te błędy. W żargonie informatycznym mówimy wtedy o wstecznej propagacji błędu. Matematycznie to wygląda tak (w tym konkretnym przypadku), że do moich już wstrząśniętych iksów w rundy pierwszej dodaję lokalne błędy wygenerowane w rundzie pierwszej. Wyliczam więc „x*współczynnik losowy*[zupełnie inny współczynnik losowy + (y – y^)*y^’ z poprzedniej rundy]”. Moje wyobrażone, alternatywne stany rzeczywistości koryguję o wnioski z poprzedniej rundy eksperymentu.

W większości lokalnych zdarzeń z mojej wyjściowej tabeli na temat Australii te wnioski są zerowe, tylko w niektórych przypadkach wyrażenie (y – y^)*y^’ daje coś tam nieznacznie różnego od zera. Algorytm jest skonstruowany tak, żeby te pojedyncze, znaczące błędy wykorzystywać jako materiał do nauki.

W podstawowym arkuszu Excela, gdzie rozpisałem sześć rund powtarzania tego algorytmu sieci neuronowej (neuronalnej ? a cholera wie), losowe wartości wag są ciągle losowe. Przy każdym otwarciu pliku losują się na nowo. Zrobiłem trzy „zamrożone” wersje tych wag, czyli zaraz po ich rozlosowaniu zmieniłem funkcje w komórkach na sztywne wartości. Zrobiłem trzy koty sąsiadów, które na raz wchodzą do mojego ogródka. Dla każdego z nich Australia z tabeli powyżej to jak ścieżka na dach szopy na narzędzia. Każdy kot to kot, czyli ma powtarzalną strukturę (no, może z wyjątkiem tego z wisiorkiem na szyi). Każdy kot wchodzi jednak do mojego ogródka ze swoimi przekonaniami i uprzedzeniami. Dla jednego z nich koty szare są zawsze wyżej postawione od tych czarnych. Oczywiście, on jest szary. Dla drugiego dokładnie odwrotnie. Jeden z nich wyznaje religię słońca na niebie, inny religię michy z karmą Purina, a jeszcze inny jest ateistą, czyli torba z jedzeniem to torba z jedzeniem, a nie żadna tam łaska z wysoka.

No więc te trzy koty wchodzą do mojego ogródka. Każdy z nich startuje z innego punktu (inny rozkład losowych współczynników tworzących wyobraźnię kota), jednak każdy z nich uczy się według tego samego schematu, w sześciu rundach. Tabela 2, poniżej, rozpisuje tą metaforę w sposób analityczny. Dla każdej z sześciu rund rozpisałem lata, w których algorytm generuje znaczące lokalne błędy, do propagacji wstecznej. W każdej rundzie wpisałem skumulowaną wartość lokalnych błędów. Widać, że pierwsze 5 rund każdy z kotów przechodzi inaczej. W szóstej stają się prawie identyczne.

Tabela 2

Losowe rozkłady początkowych wag dla wartości “x”
Kolejne rundy (iteracje) algorytmu Rozkład 1 Rozkład 2 Rozkład 3
Runda 1
Lata wykazujące znaczące błędy, do propagacji wstecznej 1999; 2002; 2003; 2006 1990; 1994; 1998 – 99; 2009; 2012 – 13; 1990 – 91; 1996 – 97; 1999; 2001; 2007; 2009 – 11;
Skumulowana wartość błędów 5,53241E-09 7,0537E-05 0,000916694
Runda 2
Lata wykazujące znaczące błędy, do propagacji wstecznej 1992; 1993; 1999; 2002; 2006 1996; 1999; 2006; 2012 – 13; 1991 – 92; 1996; 2004; 2007; 2011;
Skumulowana wartość błędów 6,45047E-12 2,93896E-07 0,035447255
Runda 3
Lata wykazujące znaczące błędy, do propagacji wstecznej 1990; 1996; 1999; 2002; 2006 1991; 1997; 1999; 2010; 2012 – 14 1991; 1996; 1999; 2002 – 2004; 2007; 2009 – 2012;
Skumulowana wartość błędów 2,34651E-13 4,39246E-06 0,00056026
Runda 4
Lata wykazujące znaczące błędy, do propagacji wstecznej 1990 – 92; 1994 – 95; 1997; 2001 – 2002; 2006 – 2007; 2012 1990; 1992; 1996; 1999; 2012 – 13; 1990 – 91; 1994 – 96; 1999; 2007; 2009 – 11;
Skumulowana wartość błędów 0,000171883 0,000741233 6,27817E-05
Runda 5
Lata wykazujące znaczące błędy, do propagacji wstecznej 1993; 1999; 2002; 2003; 2006 1997; 1999; 2007; 2012 – 13; 1990 – 91; 1996; 2003; 2007 – 2009; 2011;
Skumulowana wartość błędów 3,46206E-05 0,000548987 0,001532496
Runda 6
Lata wykazujące znaczące błędy, do propagacji wstecznej 1991 – 94; 1996 – 97; 2000; 2005; 2007; 2013 1991 – 94; 1995 – 96; 2000; 2005; 2007; 2013; 1991 – 94; 1996 – 97; 2000; 2005; 2007; 2013
Skumulowana wartość błędów 3,07871E-08 3,07871E-08 3,07871E-08

A więc tak działa jedna z wielu możliwych form inteligencji: niezależnie od wyjściowych poglądów na BARDZO WAŻNE SPRAWY (no bo kto by się tam wysilał na inteligencję w sprawach błahych ), w skończonej liczbie kroków ta forma inteligencji tworzy spójny system uczenia się.

Tyle tej prawie nowej metody naukowej na dzisiaj. Serio, prawie nowa, mało jeżdżona.

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?

Auto-régression : je reprends depuis le début

Mon éditorial sur You Tube

Je retourne, une fois de plus, à l’étude scientifique de mon concept d’entreprise que j’avais baptisé « EneFin » : une plateforme transactionnelle qui combinerait du crowdfunding avec l’utilisation d’une cryptomonnaie pour financer le développement des installations locales d’énergies renouvelables. Je veux créer un business plan pour ce concept d’entreprise et il y a une petite voix perfectionniste dans ma tête qui demande une compréhension profonde de la façon dont une telle idée serait acceptée par le marché. Voilà donc pourquoi je ressens le besoin de développer une approche scientifique à tout ce projet. Oui, le fait que je sois prof d’université et que ma discipline de base c’est l’économie, ça peut jouer un rôle.

Comme je cercle cette idée, je me suis rendu compte que LA science que je veux développer à cette occasion c’est la question d’intelligence collective, plus spécialement appliquée aux systèmes économiques, y compris le marché d’énergie. Il y a quelque temps, j’avais regardé, sur You Tube, l’interview avec un chercheur de nom de Lex Fridman, spécialisé dans l’intelligence artificielle. Il a dit une chose simple : « Je travaille sur l’intelligence artificielle car je veux comprendre l’esprit humain. Lorsque je veux comprendre comment quelque chose marche, j’essaie de bâtir quelque chose de pareil, par moi-même ». J’y avais médité, sur ce sujet et je me suis rendu compte que c’est précisément le chemin que je suis en train de suivre par moi-même quoi que, soyons francs, beaucoup plus à tâtons que le fait Lex Fridman.

Ah oui, et en plus, l’application des réseaux neuronaux, c’est la dernière mode dans les méthodes quantitatives des sciences économiques. Eh bien, Wasniewski, faut se rendre à l’évidence et apprendre à utiliser les réseaux neuronaux. Je m’y engage donc, en utilisant ce que j’ai déjà appris en termes des langages de programmation, surtout Python et Pragma Solidity. Comme je commence à étudier la théorie des réseaux neuronaux, je vois déjà un paradoxe. D’une part, la théorie des réseaux neuronaux est vaste, diversifiée et en train de se développer d’une façon exponentielle. D’autre part, les réseaux qui marchent en pratique, tout en ne représentant qu’un petit fragment de cette théorie, démontrent des caractéristiques surprenantes et inattendues qui, à leur tour, donnent naissance à même plus de théorie.

Dans ma recherche à moi, je veux construire un réseau neuronal qui imiterait une intelligence collective possible d’êtres humains. En fait, c’est comme représenter la culture comme un réseau neuronal. Dans ce paysage, il y a une bête qui m’intéresse plus particulièrement : la mémoire collective. Être intelligent, ça s’apprend – je veux dire ça implique de l’apprentissage et l’apprentissage, ça exige une mémoire pour stocker l’information assemblée durant ledit apprentissage.

Un réseau neuronal a besoin de neurones. Dans la construction de tels réseaux, on commence modeste, avec la création mathématique de juste un neurone. Un neurone artificiel est une fonction mathématique qui transforme des données à l’entrée en un résultat qui, à son tour, devient un ensemble de données stimulantes pour le neurone suivant. Dans la nature, un neurone, ça ne pense pas tout seul. En fait, un seul neurone, c’est bête comme tout. Un neurone gagne ses titres de noblesse en créant des connexions synaptiques avec d’autres neurones. Alors voilà que ma petite obsession d’apprentissage et de mémoire entre en scène. La mémoire et l’apprentissage sont des phénomènes basées sur la création des connexions synaptiques. Ces connexions-là facilitent l’exécution des schémas complexes de comportement, préalablement appris.

Voilà donc un créneau de recherche passionnant. Dans un réseau neuronal artificiel, chaque neurone est une fonction mathématique. Une connexion synaptique veut dire que parmi tous les liens possibles avec d’autres fonctions, la fonction du neurone donné passe les données en préférence à une autre fonction de neurone, plutôt qu’à toutes les autres et vice versa, c’est-à-dire une fonction de neurone artificiel reçoit des données en préférence d’une fonction particulière de neurone artificiel plutôt de la part de toutes les autres.

Je veux donc construire un réseau neuronal artificiel qui simule la création des connexions synaptiques, donc qui bâtit sa propre structure. En bas, j’essaie de donner une expression graphique à cette idée.

 

L’idée mathématique que j’ai en tête est de commencer avec un ensemble non-structuré des fonctions neuronales, donc des neurones mathématiques, où la première connexion se fait sur la base de proximité. La puissance du signal initialement envoyé décroit avec le carré de la distance, où la distance est, bien sûr, mathématique et donc Euclidienne. Voilà l’idée de base et voilà que la vie me donne occasion de développer cette idée dans une direction que je pressentais un peu, mais où j’avais comme une petite peur de m’engager. Il s’agit de révision de ce manuscrit, intitulé « Apprehending energy efficiency : what is the cognitive value of hypothetical shocks ? », que j’avais soumis à l’évaluation chez « Energy Economics ».  Le rédacteur en chef m’a renvoyé le manuscrit avec une remarque générale qu’il faut que je travaille aussi bien sur la clarté de mes hypothèses que sur le niveau d’innovation mathématique dans mon traitement des données.

Honnêtement, ce rédacteur en chef, il a eu raison. Après avoir soumis ce manuscrit, quand je le revoyais pour moi-même, j’avais cette impression de manque. Un article scientifique de bonne qualité, ça requiert ce tremblement de terre Hitchcockien, dès le début. Mon article à moi, il manquait de ce cataclysme initial, précisément. Vous savez, quelque chose qui vraiment attire l’attention du lecteur.  Faut que j’en ajoute un, de cataclysme. En plus, il faut se rendre à l’évidence : dans les sciences économiques, la méthode des moindres carrés ordinaire c’est déjà un peu vieillot. Faut que je sois plus inventif côté maths.

Voilà donc une occasion de me rendre la vie un peu plus difficile qu’elle était jusqu’à maintenant. Je révise le manuscrit sur l’efficience énergétique d’économies nationales, j’essaie de le faire en utilisant la théorie des réseaux neuronaux, et en même temps j’espère d’acquérir une compréhension plus approfondie du marché d’énergie, ce qui ma me servir à développer scientifiquement et pratiquement mon concept EneFin.

Alors, le neurone. Lorsque j’étudie l’efficience énergétique d’un ensemble des pays, qu’est qui peut bien être un neurone, donc une cellule qui a pour fonction essentielle de transmettre un signal, avec modification possible ? La direction la plus évidente à suivre, à ce respect, et de construire un réseau imitateur, où chaque pays soumis à l’étude est un neurone. Direction no. 2, un peu plus abstraite : un neurone est une créature hypothétique qui traite les données empiriques. Dans ce cas, le réseau neuronal est une intelligence externe à cet univers. Je distingue donc des neurones de façon arbitraire, en puisant dans le catalogue des fonctions neurales « officiellement » reconnues : perceptrons, sigmoïdes, tangentes hyperboliques etc.

Le réseau imitateur, il peut faire l’une des deux choses : il peut s’activer et faire quelque chose de nouveau chaque fois qu’il reçoit du signal intéressant – donc il peut apprendre – ou bien il peut atténuer les variations du signal pour maintenir l’homéostasie. Pourquoi l’homéostasie ? J’ai deux raisons pour adopter cette ligne de recherche. D’une part, j’avais déjà fait de la recherche où j’avais utilisé, avec succès, la bonne vieille fonction de production – donc un état d’équilibre général – pour simuler l’adaptation des populations à leur base énergétique et nutritionnelle. D’autre part, dans notre cerveau, il y a des fonctions neurales qui se concentrent sur l’homéostasie. La catégorisation des phénomènes nouveaux dans des catégories préexistantes est un exemple. La chose aussi (apparemment) banale que le maintien d’une température constante du corps en est un autre.

En ce qui concerne le réseau neuronal externe à mon univers, sa fonction la plus évidente serait de cerner un modèle économétrique de changement au niveau d’efficience énergétique d’économies nationales. Encore, moi, je me suis un peu excité – comme ça arrive souvent aux néophytes – avec tout ce bazar des réseaux neuronaux et je pense à une intelligence externe qui ferait, à propos de mon univers empirique, une chose tout à fait fondamentale à toute intelligence : elle créerait de catégories significatives à des niveaux d’abstraction différents.

Quelle serait la différence entre un réseau neuronal imitateur qui apprend et un réseau externe qui résout ? La différence que je vois intuitivement est celle d’envergure. Lorsque j’apprends à l’intérieur d’un univers, le cadre des données que je traite est limité par ma position dans cet univers. Dans une forêt, je ne vois que certains arbres. Un neurone dans le réseau imitateur aurait pour une de ses fonctions de sélectionner des données. En revanche, quand je suis à l’extérieur de quelque chose, je vois la chose dans sa totalité : toutes les données me sont accessibles de la même façon.

Voilà, ci-dessous, le résumé de mes grands plans :

 

Le réseau imitateur avec apprentissage

 

 

Le réseau imitateur qui tend vers l’homéostasie

 

 

Le réseau externe qui résout un modèle économétrique

 

Le réseau externe qui crée des catégories significatives et les combine en catégories abstraites

 

 

Maintenant, je veux comprendre comment d’autres chercheurs approchent l’application des réseaux neuronaux dans l’étude des marchés d’énergie. Je trouve un article par Katić et al. (2018[1]). Ils ont utilisé les réseaux neuronaux pour étudier les schémas de comportement d’utilisateurs des systèmes de chauffage. Ce que je veux comprendre avant tout c’est le lien entre les données empiriques et l’application du réseau neuronal. Katic et al. avaient donc conduit une série de sessions expérimentales durant lesquelles deux femmes, indépendamment l’une de l’autre, avaient pour tâche de régler la température d’un poste de travail avec siège chauffant. Le réglage de la température était sujet uniquement à la subjective sensation de confort optimal. Chacune des deux femmes avait participé à 14 sessions expérimentales. Pendant chaque session, les chercheurs collectaient les données sur la température de la chaise ainsi que celle de toute la chambre de travail, l’humidité, la vitesse de circulation de l’air. Les mensurations correspondantes étaient faites chaque seconde et chaque session durait 4 heures avec une période initiale d’acclimatation d’environ 10 minutes. Chaque session était accompagnée d’une interview standardisée.

Katic et al. avaient utilisé le réseau neuronal du type NARX (ANG : AutoRegressive network with exogenous inputs), donc un réseau auto régressif avec entrée exogène des données. L’idée générale d’un tel modèle est que la valeur présente d’une variable dépend aussi bien de ses valeurs passées que des valeurs observées dans des variables exogènes. Le modèle général d’auto-régression assume que la valeur présente d’une variable, soit Xt, est la somme des deux composantes : une constante (c) et la moyenne pondérée des valeurs passées de la variable X, observées avec l’interférence du bruit blanc fait des variations aléatoires à impact prévisible. Des variables exogènes peuvent s’immiscer dans ce modèle général. Soit on ajoute la moyenne pondérée des valeurs passées des variables exogènes U, tout en gardant la constante dans l’équation ou bien… on remplace le terme constant avec cette moyenne pondérée des valeurs passées des variables exogènes U. Ci-dessous je donne une expression graphique de cette démarche.

Alors, Katic et al. avaient structurés leurs données en deux sous-ensembles. Treize session sur quatorze avaient été utilisées comme matériel d’entrainement pour le réseau neuronal. Les données d’une session choisie au hasard on servi comme base de prédiction proprement dite, donc le réseau était supposé apprendre avec 13 sessions et appliquer cet apprentissage à la quatorzième session.

J’ai trouvé un autre exemple d’application de cette logique, donc du modèle NARX, dans le business d’énergie. Boussaada et al. (2018[1]) démontrent l’application de NARX à la prédiction de la radiation solaire dans des installation photovoltaïques. L’avantage de cet article est une démonstration pas-à-pas de la façon de traduire la logique générale de NARX en la construction d’un réseau des perceptrons sigmoïdes à couches multiples. Cette traduction peut se faire suivant deux approches différentes : parallèle ou bien parallèle en série.

L’architecture parallèle en série, connue aussi comme boucle ouverte, assume que les données d’entrée du réseau comprennent les valeur réelles passées de toutes les variables, soit la variable à prédire et ces facteurs exogènes. Dans l’architecture parallèle, ou boucle fermée, au lieu des valeurs réelles de la variable à prédire, on nourrit les neurones avec les valeurs passées prédites de cette variable, donc les valeurs préalablement estimées. La boucle ouverte semble être plus avantageuse dans la phase d’apprentissage du réseau des perceptrons, pendant qu’une fois l’apprentissage effectué, il est apparemment plus utile de modifier l’architecture en une boucle fermée pour que le réseau fasse sa prédiction finale de la variable qui nous intéresse.

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] Boussaada, Z., Curea, O., Remaci, A., Camblong, H., & Mrabet Bellaaj, N. (2018). A Nonlinear Autoregressive Exogenous (NARX) Neural Network Model for the Prediction of the Daily Direct Solar Radiation. Energies, 11(3), 620

[1] Katić, K., Li, R., Verhaart, J., & Zeiler, W. (2018). Neural network based predictive control of personalized heating systems. Energy and Buildings, 174, 199-213.

Kalendarz z rokiem pierwszym, czyli pamięć sieci neuronalnej

Wstępniak video na You Tube

Po wielu tygodniach przerwy wracam do blogowania. W tym semestrze idę na mój dotychczasowy rekord dydaktyczny: w sumie 630 godzin zajęć w ciągu 4 miesięcy. Pierwsze dwa – październik i listopad – ciut mi przemieliły korę mózgową. Mam zwyczaj prowadzić zajęcia w sposób, który twórcy NLP (Neurolinguistic Programming) – Richard Bandler i John Grinder – nazywali „uptime”. Nie korzystam z notatek ani z prezentacji z Power Point, jeżeli już coś wyświetlam to raczej materiały źródłowe, na przykład raporty roczne spółek, a w wokalu jadę z pamięci oraz improwizuję. Fantastyczne uczucie dla mnie i mam nadzieję, że studentom też się podoba, ale synapsy to mam po tym kompletnie wyprane. Jednakowoż taki dydaktyczny freestyle sprzyja myśleniu na głos, przetwarzaniu własnych przemyśleń i krystalizacji nowych treści. Właśnie trochę skrystalizowałem tam pod sufitem i staram się tym podzielić na świeżo.

„Na świeżo” oznacza, że mam mnóstwo pomysłów na raz i wyzwaniem jest ułożyć i przekazać je w sposób zrozumiały dla odbiorcy. No więc tak: kilka rzeczy zbiegło się w czasie. Ja wiem: z reguły tak jest, że (co najmniej) kilka rzeczy zbiega się w czasie. Określamy to mianem rzeczywistości i to jest tak cholernie skomplikowane, że potrzebujemy uproszczonego obrazu tego czegoś i po to właśnie jest nam potrzebny język, jako struktura logiczna dla ogarnięcia tego wszystkiego.

Wracam do adremu. Od kilku miesięcy pracuję nad czymś, co jest jednocześnie koncepcją naukową i możliwym pomysłem na biznes. Nazwałem to coś EneFin. Jest to pomysł na finansowanie małych, lokalnych dostawców energii (najlepiej odnawialnych), wraz z finansowaniem lokalnych sieci dystrybucji energii. Zaobserwowałem, przynajmniej w krajach europejskich, że cena za 1 kWh energii płacona przez drobnych klientów, głównie przez gospodarstwa domowe, jest znacząco wyższa od ceny płaconej przez tych dużych. Wyobraźmy sobie sytuację, kiedy gospodarstwa domowe kupują energię z odnawialnych źródeł, od lokalnego dostawcy, na przykład od lokalnej, małej elektrowni wodnej. Za każdą kilowatogodzinę płacą tyle, ile by płacili dużemu dostawcy – a więc cenę stosunkowo wysoką – jednak w ramach tej opłaty energię ściśle pojętą dostają po niższej cenie, zarezerwowanej normalnie dla dużych odbiorców, a za różnicę „wysoka cena dla małych klientów minus niska cena dla dużych klientów” otrzymują udziały w kapitale swojego dostawcy, czy to jako ściśle pojęte udziały albo akcje, czy to jako papiery dłużne (weksle, obligacje itp.).

Między lokalnym operatorem małych turbin wodnych a jego lokalnymi klientami tworzy się w ten sposób układ na poły spółdzielczy. Każda megawatogodzina energii zakupionej przez odbiorców jednocześnie wzbogaca bazę kapitałową dostawcy, który dzięki temu może się rozwijać i modernizować. To jednak dopiero część mojego pomysłu. Druga część to stworzenie wirtualnej platformy transakcyjnej, na której te złożone kontrakty – gwarancja dostawy energii po określonej cenie plus udziały w kapitale dostawcy – mogą być kupowane i sprzedawane, np. jako jednostki specjalnie stworzonej w tym celu kryptowaluty. Tego typu projekt już jest uruchomiony w Estonii: nazywa się WePower. Staram się rozwinąć własną, autorską koncepcję czegoś podobnego.

Staram się rozwinąć ten pomysł na biznes i jednocześnie pracuję nad modelem teoretycznym, który pozwoliłby przewidzieć przyswajanie takiego pomysłu przez konkretny rynek energii złożony z konkretnych nabywców. Chcę zbadać i opracować naukowo sposób, w jaki lokalne rynki mogą reagować na możliwość tworzenia struktur biznesowych według mojego pomysłu. Postanowiłem walnąć z grubej rury, pójść za najnowszą modą w naukach ekonomicznych i zaprojektować – przynajmniej teoretycznie – sieć neuronalną, której uczenie się odzwierciedlałoby zachowanie takiego rynku. Stąd konieczność nauczenia się czegoś na temat sieci neuronalnych oraz sztucznej inteligencji. Tak, dopiero muszę się tego nauczyć.

Kiedy uczę się jakiejś nowej teorii, z reguły robię to z konkretnej potrzeby: mam do rozpracowania pomysł, który wymaga tej teorii. Mam więc swoje intuicje i konfrontuję je z ustaloną wiedzą teoretyczną. Teoria sieci neuronalnych zaczyna się od definicji pojedynczego neuronu. Jak na razie, znalazłem definicje dwóch rodzajów neuronów: perceptronów oraz neuronów sigmoidalnych (logistycznych). Te pierwsze odpalają tylko wtedy, kiedy sygnał jest taki jak trzeba, a jak nie, to śpią. Są zerojedynkowe. Matematycznie, perceptron to funkcja wyrażona jako układ dwóch implikacji logicznych. Jeżeli siła sygnału x przekracza poziom krytyczny, wtedy perceptron zwraca 1. Jeżeli sygnał pozostaje słabszy niż wartość krytyczna, perceptron daje 0. Sigmoidy są inne; ciągle są pobudzone, w sensie że ciągle zwracają jakiś wyjściowy sygnał, jednak natężenie tego sygnału wyjściowego zmienia się w zależności od natężenia i struktury sygnału wejściowego. Delta na wejściu daje deltę na wyjściu, tak żeby jak najprościej.

No i te neurony układa się w warstwy. Każda warstwa dostaje sygnał, przetwarza go perceptronowo albo sigmoidalnie, no i w ten sposób tworzy sygnał dla kolejnej warstwy. Aha, no i są jeszcze neurony tan h, czyli te oparte na funkcji tangensa hiperbolicznego. W sumie, z tymi teoretycznymi neuronami to jest jedna ciekawa rzecz. Jak czytam opracowania na ten temat, to wygląda tak, że ktokolwiek by się nie brał za matematyczne przedstawienie neuronu jako funkcji, prędzej czy później dochodzi do funkcji zawierającej komponent wykładniczy, czyli stałą Eulera e = 2,718281828459 podniesioną do potęgi odzwierciedlającej siłę lub obecność sygnału, jaki ten neuron ma przekazać dalej.

To ciekawe. Niedawno złożyłem do recenzji manuskrypt artykułu na temat efektywności energetycznej gospodarek narodowych, pod roboczym tytułem „Apprehending energy efficiency: what is the cognitive value of hypothetical shocks?”. W badaniach, które przedstawiłem w tym właśnie artykule wyszło mi, że największą moc wyjaśniającą w analizie statystycznej mogę uzyskać wtedy, kiedy dane empiryczne potraktuję jako prymitywne i ogólnie dépassé, a więc kiedy zamiast brać je takimi jakimi są, przekształcę je we współczynniki funkcji wykładniczej, czyli funkcji opartej na stałej Eulera. W ogóle najlepiej, jak ta funkcja odzwierciedla stosunkowo niedawny wstrząs, którego fala uderzeniowa rozprzestrzenia się z przeszłości w przyszłość.

Majaczę ? Nie da się tego wykluczyć. Rzeczywistość może być snem motyla. Postaram się jednak wyjaśnić, o co mi chodzi. Stała Eulera ma ciekawą własność: można ją wykorzystać do przedstawienia przebiegu w czasie takich zjawisk, gdzie każdy kolejny krok zależy od kroku poprzedniego. Biorę szereg czasowy liczb, które odzwierciedlają przebieg jakiegoś zjawiska w czasie. W ekonomii książkowym przykładem są szeregi czasowe cen: ropy naftowej, kursu akcji na giełdzie itp. Każdą cenę w szeregu wyrażam teraz jako potęgę stałej Eulera, czyli liczba obserwowana = en. Ta potęga liczby e to jest logarytm naturalny liczby obserwowanej.

Logarytmy naturalne są interesujące. W ekonomii i finansach już dawno odkryliśmy, że kiedy zamiast szeregu czasowego cen akcji na giełdzie weźmiemy szereg ich logarytmów naturalnych, to jakby uspokajamy grę. Eliminujemy doraźne odjazdy i łatwiej jest nam dostrzec długofalowy trend. Ja jednak o czym innym. Otóż ten logarytm naturalny liczby można jeszcze rozłożyć na dwie części, a dokładnie to idzie tak że liczba obserwowana = en = et*a , gdzie ‘t’ to numer kolejnego okresu, zaś ‘a’ to współczynnik wykładniczy.

W artykule, który właśnie popełniłem, tak właśnie podszedłem do danych empirycznych na temat efektywności energetycznej gospodarek narodowych (czyli do tego, ile Produktu Krajowego Brutto potrafimy wytworzyć średnio z jednego kilograma równoważnika ropy naftowej) oraz czynników warunkujących tą efektywność: wziąłem i ściąłem stałą Eulera, czyli przekształciłem w logarytmy naturalne, a potem te logarytmy jeszcze rozłożyłem na czynnik czasu z jednej strony i lokalny współczynnik wykładniczy z drugiej strony. „Lokalny” współczynnik wykładniczy oznacza przekształcenie, w którym liczba obserwowana = en = et*a(t) , czyli współczynnik wykładniczy jest charakterystyczny dla danego konkretnego momentu t.

Tu zaczyna się najciekawsza część. To, który mamy konkretnie moment zależy od tego, na kiedy ustaliliśmy moment początkowy całego szeregu. Każdy znany ludzkości kalendarz słoneczny (czyli taki, gdzie numerujemy po kolei lata) zawiera założenie, jak dawno temu był rok zerowy. W moich badaniach dane empiryczne obejmują okres lat 1990 – 2014. Przyjąłem dwa alternatywne kalendarze. W jednym z nich rokiem zerowym jest 1889, a więc wszystko zaczęło się sto lat przed początkiem obserwacji. Wtedy moja liczba obserwowana =  en  =     e(t-1889)*a(t-1889) . W drugim kalendarzu mój rok zerowy to 1989, czyli wszystko dzieje się w sumie na świeżo, a konkretnie liczba obserwowana = en = e(t-1989)*a(t-1989) .

Ktoś mógłby zadać pytanie: jaka to różnica ? Już wyjaśniam. Kiedy mój kalendarz zaczyna się 100 lat wcześniej, logarytmy naturalne moich kolejnych obserwacji dzielę kolejno przez liczby o stosunkowo niewielkim skoku: 1990 – 1889 = 101, 1991 – 1889 = 102 itd. Między 101 a 102 nie ma wielkiej różnicy. Kiedy dzielę logarytmy naturalne przez taki szereg współrzędnych czasu, to różnica między dzieleniem czegoś przez 101 a dzieleniem przez 102 nie powala na kolana. Jednakowoż, kiedy moja historia zaczyna się w 1989, to 1990 = 1990 – 1989 = 1, 1991 = 1990 – 1989 = 2 itd., czyli inna bajka. Logarytm naturalny obserwacji z roku 1990 dzielę przez 1, czyli nie dzielę w ogóle, logarytm naturalny obserwacji z roku 1991 tnę przez 2, kolejny dzielę na 3 itd. Tutaj każdy kolejny okres przynosi duży skok, wynikający ze struktury arytmetycznej mojego kalendarza.

Kalendarz z rokiem pierwszym w roku gregoriańskim 1989 intuicyjnie traktuję jako wyraz długoterminowego, stopniowego trendu zmian. Z kolei ten, który zaczyna się od roku 1989 traktuję jako matematyczne odzwierciedlenie jakiegoś hipotetycznego wstrząsu w roku 1989, gdzie kolejne lata są jak stopniowo słabnące wstrząsy wtórne. W badaniach empirycznych wykonanych na potrzeby artykułu wyszło mi, że właśnie takie przetworzenie danych empirycznych – czyli zrobienie z nich współczynników wykładniczych w gwałtownym procesie zmian zainicjowanym hipotetycznym wstrząsem w roku 1989 – pozwala zbudować model ekonometryczny o stosunkowo największej mocy wyjaśniającej. Wtłoczone w taki kalendarz, dane empiryczne nabierają jakby większego znaczenia i zaciera się biały szum, zawarty w każdym dużym zbiorze obserwacji.

Co to znaczy ? No właśnie staram się zrozumieć. Mam również nadzieję, że recenzent mojego artykułu też stara się to zrozumieć. Wracam teraz do sieci neuronalnych i sztucznej inteligencji. Przeglądając literaturę na temat funkcji matematycznych odzwierciedlających działanie pojedynczego neuronu – czyli tzw. funkcji transmisji sygnału – prędzej czy później znajduję ex albo e-x, gdzie e to oczywiście stała Eulera, a x to siła sygnału otrzymanego przez neuron. Ta funkcja wykładnicza siły sygnału jest z reguły wciśnięta do mianownika jakiegoś ułamka.

Teraz to ja myślę sobie tak: podnoszę stałą e do potęgi x równej sile sygnału otrzymanego przez neuron, czyli gdzieś tam w tle zakładam że siła sygnału x jest logarytmem naturalnym (tempem zmian) czegoś innego, jakiejś hipotetycznej liczby I = ex albo I = e-x. Wybrałem „I”, bo kojarzy mi się z inteligencją, ale może być równie dobrze „S” jak spryt. Tą hipotetyczną liczbę I mogę potraktować jako wyraz pamięci procesu, czyli wskaźnik siły sygnału nerwowego x mogę rozłożyć na dwa czynniki: parametr czasu ‘t’ oraz współczynnik wykładniczy ‘a’, który może być ogólny – po prostu ‘a’ – albo lokalny a(t). Poniżej staram się wyjaśnić mój tok rozumowania w sposób na poły graficzny.

No dobra, tylko po co ? Po co przekształcać funkcję aktywacyjną sieci neuronalnej tak, żeby wcisnąć do niej zmienną czasu ? Chodzi mi o pamięć. Moja głęboka intuicja na temat naszej inteligencji – indywidualnej i zbiorowej – opiera się na roli, jaką odgrywa pamięć. Jeżeli wkładam do sieci neuronalnej zmienną porządkową czasu (czyli numery kolejnych okresów), to zakładam że aktywacja neuronu z warstwy czasowej t – 1 jest w jakiś sposób odmienna od aktywacji neuronu z warstwy czasowej t + 1. Co więcej, jeżeli do takiej przekształconej funkcji neuronu sigmoidalnego włożę zmienną czasu w dwóch alternatywnych kalendarzach, jak to zrobiłem w badaniach zacytowanych powyżej. Jeden kalendarz to spokojny, długofalowy trend, taki gdzie np. t0 = 1889. Drugi kalendarz zakłada t0 = 2017, czyli od teraz wszystko zmienia się bardzo szybko. W jaki sposób zmieni to funkcjonowanie sieci neuronalnej ? No właśnie się zastanawiam.

Jeżeli przetestuję sieć neuronalną pod kątem zgodności jej wartości wyjściowych z wartościami obserwowanymi empirycznie, mogę dopasować kalendarz, czyli najlepiej pasującą sekwencję numeracji momentów t. Ciekawe…

Chodzi za mną pomysł eksperymentów behawioralnych na temat interakcji człowieka z nowymi technologiami. Być może sieć neuronalną, włącznie z elementami czasu i pamięci, można zastosować to projektowania takich eksperymentów, podobnie jak równania fizyki kwantowej stosuje się do projektowania eksperymentów w fizyce ? Taką metodę mógłbym również zastosować do symulowania sposobu, w jaki rynek energii oraz rynki finansowe przyjęłyby ten mój pomysł: EneFin.

 

Combinatorial meaning and the cactus

My editorial on You Tube

I am back into blogging, after over two months of pausing. This winter semester I am going, probably, for record workload in terms of classes: 630 hours in total. October and November look like an immersion time, when I had to get into gear for that amount of teaching. I noticed one thing that I haven’t exactly been aware of, so far, or maybe not as distinctly as I am now: when I teach, I love freestyling about the topic at hand. Whatever hand of nice slides I prepare for a given class, you can bet on me going off the beaten tracks and into the wilderness of intellectual quest, like by the mid-class. I mean, I have nothing against Power Point, but at some point it becomes just so limiting… I remember that conference, one year ago, when the projector went dead during my panel (i.e. during the panel when I was supposed to present my research). I remember that mixed, and shared feeling of relief and enjoyment in people present in the room: ‘Good. Finally, no slides. We can like really talk science’.

See? Once again, I am going off track, and that in just one paragraph of writing. You can see what I mean when I refer to me going off track in class. Anyway, I discovered one more thing about myself: freestyling and sailing uncharted intellectual waters has a cost, and this is a very clear and tangible biological cost. After a full day of teaching this way I feel as if my brain was telling me: ‘Look, bro. I know you would like to write a little, but sorry: no way. Them synapses are just tired. You need to give me a break’.

There is a third thing I have discovered about myself: that intense experience of teaching makes me think a lot. I cannot exactly put all this in writing on the spot, fault of fresh neurotransmitter available, still all that thinking tends to crystallize over time and with some patience I can access it later. Later means now, as it seems. I feel that I have crystallized enough and I can start to pull it out into the daylight. The « it » consists, mostly, in a continuous reflection on collective intelligence. How are we (possibly) smart together?

As I have been thinking about it, three events combined and triggered in me a string of more specific questions. I watched another podcast featuring Jordan Peterson, whom I am a big fan of, and who raised the topic of the neurobiological context of meaning. How our brain makes meaning, and how does it find meaning in sensory experience? On the other hand, I have just finished writing the manuscript of an article on the energy-efficiency of national economies, which I have submitted to the ‘Energy Economics’ journal, and which, almost inevitably, made me work with numbers and statistics. As I had been doing that empirical research, I found out something surprising: the most meaningful econometric results came to the surface when I transformed my original data into local coefficients of an exponential progression that hypothetically started in 1989. Long story short, these coefficients are essentially growth rates, which behave in a peculiar way, due to their arithmetical structure: they decrease very quickly over time, whatever is the source, raw empirical observation, as if they were representing weakening shock waves sent by an explosion in 1989.

Different types of transformed data, the same data, in that research of mine, produced different statistical meanings. I am still coining up real understanding of what it exactly means, by the way. As I was putting that together with Jordan Peterson’s thoughts on meaning as a biological process, I asked myself: what is the exact meaning of the fact that we, as scientific community, assign meaning to statistics? How is it connected with collective intelligence?

I think I need to start more or less where Jordan Peterson moves, and ask ‘What is meaning?’. No, not quite. The ontological type, I mean the ‘What?’ type of question, is a mean beast. Something like a hydra: you cut the head, namely you explain the thing, you think that Bob’s your uncle, and a new head pops up, like out of nowhere, and it bites you, where you know. The ‘How?’ question is a bit more amenable. This one is like one of those husky dogs. Yes, it is semi wild, and yes, it can bite you, but once you tame it, and teach it to pull that sleigh, it will just pull. So I ask ‘How is meaning?’. How does meaning occur?

There is a particular type of being smart together, which I have been specifically interested in, for like the last two months. It is the game-based way of being collectively intelligent. The theory of games is a well-established basis for studying human behaviour, including that of whole social structures. As I was thinking about it, there is a deep reason for that. Social interactions are, well, interactions. It means that I do something and you do something, and those two somethings are supposed to make sense together. They really do at one condition: my something needs to be somehow conditioned by how your something unfolds, and vice versa. When I do something, I come to a point when it becomes important for me to see your reaction to what I do, and only when I will have seen it, I will further develop on my action.

Hence, I can study collective action (and interaction) as a sequence of moves in a game. I make my move, and I stop moving, for a moment, in order to see your move. You make yours, and it triggers a new move in me, and so the story goes further on in time. We can experience it very vividly in negotiations. With any experience in having serious talks with other people, thus when we negotiate something, we know that it is pretty counter-efficient to keep pushing our point in an unbroken stream of speech. It is much more functional to pace our strategy into separate strings of argumentation, and between them, we wait for what the other person says. I have already given a first theoretical go at the thing in « Couldn’t they have predicted that? ».

This type of social interaction, when we pace our actions into game-like moves, is a way of being smart together. We can come up with new solutions, or with the understanding of new problems – or a new understanding of old problems, as a matter of fact – and we can do it starting from positions of imperfect agreement and imperfect coordination. We try to make (apparently) divergent points, or we pursue (apparently) divergent goals, and still, if we accept to wait for each other’s reaction, we can coordinate and/or agree about those divergences, so as to actually figure out, and do, some useful s**t together.

What connection with the results of my quantitative research? Let’s imagine that we play a social game, and each of us makes their move, and then they wait for the moves of other players. The state of the game at any given moment can be represented as the outcome of past moves. The state of reality is like a brick wall, made of bricks laid one by one, and the state of that brick wall is the outcome of the past laying of bricks.  In the general theory of science, it is called hysteresis. There is a mathematical function, reputed to represent that thing quite nicely: the exponential progression. On a timeline, I define equal intervals. To each period of time, I assign a value y(t) = et*a, where ‘t’ is the ordinal of the time period, ‘e’ is a mathematical constant, the base of natural logarithm, e = 2,7188, and ‘a’ is what we call the exponential coefficient.

There is something else to that y = et*a story. If we think like in terms of a broader picture, and assume that time is essentially what we imagine it is, the ‘t’ part can be replaced by any number we imagine. Then, the Euler’s formula steps in: ei*x = cos x + i*sin x. If you paid attention in math classes, at high school, you might remember that sine and cosine, the two trigonometric functions, have a peculiar property. As they refer to angles, at the end of the day they refer to a full circle of 360°. It means they go in a circle, thus in a cycle, only they go in perfectly negative a correlation: when the sine goes one unit one way, the cosine goes one unit exactly the other way round etc. We can think about each occurrence we experience – the ‘x’ –  as a nexus of two, mutually opposing cycles, and they can be represented as, respectively, the sine, and the cosine of that occurrence ‘x’. When I grow in height (well, when I used to), my current height can be represented as the nexus of natural growth (sine), and natural depletion with age (cosine), that sort of things.

Now, let’s suppose that we, as a society, play two different games about energy. One game makes us more energy efficient, ‘cause we know we should (see Settlement by energy – can renewable energies sustain our civilisation?). The other game makes us max out on our intake of energy from the environment (see Technological Change as Intelligent, Energy-Maximizing Adaptation). At any given point in time, the incremental change in our energy efficiency is the local equilibrium between those two games. Thus, if I take the natural logarithm of our energy efficiency at a given point in space-time, thus the coefficient of GDP per kg of oil equivalent in energy consumed, that natural logarithm is the outcome of those two games, or, from a slightly different point of view, it descends from the number of consecutive moves made (the ordinal of time period we are currently in), and from a local coefficient – the equivalent of ‘i’ in the Euler’s formula – which represents the pace of building up the outcomes of past moves in the game.

I go back to that ‘meaning’ thing. The consecutive steps ‘t’ in an exponential progression y(t) = et*a progression correspond to successive rounds of moves in the games we play. There is a core structure to observe: the length of what I call ‘one move’, and which means a sequence of actions that each person involved in the interaction carries out without pausing and waiting for the reaction observable in other people in the game. When I say ‘length’, it involves a unit of measurement, and here, I am quite open. It can be a length of time, or the number of distinct actions in my sequence. The length of one move in the game determines the pace of the game, and this, in turn, sets the timeframe for the whole game to produce useful results: solutions, understandings, coordinated action etc.

Now, where the hell is any place for ‘meaning’ in all that game stuff? My view is the following: in social games, we sequence our actions into consecutive moves, with some waiting-for-reaction time in between, because we ascribe meaning to those sub-sequences that we define as ‘one move’. The way we process meaning matters for the way we play social games.

I am a scientist (well, I hope), and for me, meaning occurs very largely as I read what other people have figured out. So I stroll down the discursive avenue named ‘neurobiology of meaning’, welcomingly lit by with the lampposts of Science Direct. I am calling by an article by Lee M. Pierson, and Monroe Trout, entitled ‘What is consciousness for?[1]. The authors formulate a general hypothesis, unfortunately not supported (yet?) with direct empirical check, that consciousness had been occurring, back in the day, I mean like really back in the day, as cognitive support of volitional movement, and evolved, since then, into more elaborate applications. Volitional movement is non-automatic, i.e. decisions have to be made in order for the movement to have any point. It requires quick assemblage of data on the current situation, and consciousness, i.e. the awareness of many abstract categories in the same time, could the solution.

According to that approach, meaning occurs as a process of classification in the neurologically stored data that we need to use virtually simultaneously in order to do something as fundamental as reaching for another can of beer. Classification of data means grouping into sets. You have a random collection of data from sensory experience, like a homogenous cloud of information. You know, the kind you experience after a particularly eventful party. Some stronger experiences stick out: the touch of cold water on your naked skin, someone’s phone number written on your forearm with a lipstick etc. A question emerges: should you call this number? It might be your new girlfriend (i.e. the girlfriend whom you don’t consciously remember as your new one but whom you’d better to if you don’t want your car splashed with acid), or it might be a drug dealer whom you’d better not call back.  You need to group the remaining data in functional sets so as to take the right action.

So you group, and the challenge is to make the right grouping. You need to collect the not-quite-clear-in-their-meaning pieces of information (Whose lipstick had that phone number been written with? Can I associate a face with the lipstick? For sure, the right face?). One grouping of data can lead you to a happy life, another one can lead you into deep s**t. It could be handy to sort of quickly test many alternative groupings as for their elementary coherence, i.e. hold all that data in front of you, for a moment, and contemplate flexibly many possible connections. Volitional movement is very much about that. You want to run? Good. It would be nice not to run into something that could hurt you, so it would be good to cover a set of sensory data, combining something present (what we see), with something we remember from the past (that thing on the 2 o’clock azimuth stings like hell), and sort of quickly turn and return all that information so as to steer clear from that cactus, as we run.

Thus, as I follow the path set by Pierson and Trout, meaning occurs as the grouping of data in functional categories, and it occurs when we need to do it quickly and sort of under pressure of getting into trouble. I am going onto the level of collective intelligence in human social structures. In those structures, meaning, i.e. the emergence of meaningful distinctions communicable between human beings and possible to formalize in language, would occur as said structures need to figure something out quickly and under uncertainty, and meaning would allow putting together the types of information that are normally compartmentalized and fragmented.

From that perspective, one meaningful move in a game encompasses small pieces of action which we intuitively guess we should immediately group together. Meaningful moves in social games are sequences of actions, which we feel like putting immediately back to back, without pausing and letting the other player do their thing. There is some sort of pressing immediacy in that grouping. We guess we just need to carry out those actions smoothly one after the other, in an unbroken sequence. Wedging an interval of waiting time in between those actions could put our whole strategy at peril, or we just think so.

When I apply this logic to energy efficiency, I think about business strategies regarding innovation in products and technologies. When we launch a new product, or implement a new technology, there is something like fixed patterns to follow. When you start beta testing a new mobile app, for example, you don’t stop in the middle of testing. You carry out the tests up to their planned schedule. When you start launching a new product (reminder: more products made on the same energy base mean greater energy efficiency), you keep launching until you reach some sort of conclusive outcome, like unequivocal success or failure. Social games we play around energy efficiency could very well be paced by this sort of business-strategy-based moves.

I pick up another article, that by Friedemann Pulvermüller (2013[2]). The main thing I see right from the beginning is that apparently, neurology is progressively dropping the idea of one, clearly localised area in our brain, in charge of semantics, i.e. of associating abstract signs with sensory data. What we are discovering is that semantics engage many areas in our brain into mutual connection. You can find developments on that issue in: Patterson et al. 2007[3], Bookheimer 2002[4], Price 2000[5], and Binder & Desai 2011[6]. As we use words, thus as we pronounce, hear, write or read them, that linguistic process directly engages (i.e. is directly correlated with the activation of) sensory and motor areas of our brain. That engagement follows multiple, yet recurrent patterns. In other words, instead of having one mechanism in charge of meaning, we are handling different ones.

After reviewing a large bundle of research, Pulvermüller proposes four different patterns: referential, combinatorial, emotional-affective, and abstract semantics. Each time, the semantic pattern consists in one particular area of the brain acting as a boss who wants to be debriefed about something from many sources, and starts pulling together many synaptic strings connected to many places in the brain. Five different pieces of cortex come recurrently as those boss-hubs, hungry for differentiated data, as we process words. They are: inferior frontal cortex (iFC, so far most commonly associated with the linguistic function), superior temporal cortex (sTC), inferior parietal cortex (iPC), inferior and middle temporal cortex (m/iTC), and finally the anterior temporal cortex (aTC). The inferior frontal cortex (iFC) seems to engage in the processing of words related to action (walk, do etc.). The superior temporal cortex (sTC) looks like seriously involved when words related to sounds are being used. The inferior parietal cortex (iPC) activates as words connect to space, and spatio-temporal constructs. The inferior and middle temporal cortex (m/iTC) lights up when we process words connected to animals, tools, persons, colours, shapes, and emotions. That activation is category specific, i.e. inside m/iTC, different Christmas trees start blinking as different categories among those are being named and referred to semantically. The anterior temporal cortex (aTC), interestingly, has not been associated yet with any specific type of semantic connections, and still, when it is damaged, semantic processing in our brain is generally impaired.

All those areas of the brain have other functions, besides that semantic one, and generally speaking, the kind of meaning they process is correlated with the kind of other things they do. The interesting insight, at this point, is the polyvalence of cortical areas that we call ‘temporal’, thus involved in the perception of time. Physicists insist very strongly that time is largely a semantic construct of ours, i.e. time is what we think there is rather than what really is, out there. In physics, what exists is rather sequential a structure of reality (things happen in an order) than what we call time. That review of literature by Pulvermüller indirectly indicates that time is a piece of meaning that we attach to sounds, colours, emotions, animal and people. Sounds come as logical: they are sequences of acoustic waves. On the other hand, how is our perception of colours, or people, connected to our concept of time? This is a good one to ask, and a tough one to answer. What I would look for is recurrence. We identify persons as distinct ones as we interact with them recurrently. Autistic people have frequently that problem: when you put on a different jacket, they have hard time accepting you are the same person. Identification of animals or emotions could follow the same logic.

The article discusses another interesting issue: the more abstract the meaning is, the more different regions of the brain it engages. The really abstract ones, like ‘beauty’ or ‘freedom’, are super Christmas-trees: they provoke involvement all over the place. When we do abstraction, in our mind, for example when writing poetry (OK, just good poetry), we engage a substantial part of our brain. This is why we can be lost in our thoughts: those thoughts, when really abstract, are really energy-consuming, and they might require to shut down some other functions.

My personal understanding of the research reviewed by Pulvermüller is that at the neurological level, we process three essential types of meaning. One consists in finding our bearings in reality, thus in identifying things and people around, and in assigning emotions to them. It is something like a mapping function. Then, we need to do things, i.e. to take action, and that seems to be a different semantic function. Finally, we abstract, thus we connect distant parcels of data into something that has no direct counterpart neither in the mapped reality, nor in our actions.

I have an indirect insight, too. We have a neural wiring, right? We generate meaning with that wiring, right? Now, how is adaptation occurring, in that scheme, over time? Do we just adapt the meaning we make to the neural hardware we have, or is there a reciprocal kick, I mean from meaning to wiring? So far, neurological research has demonstrated that physical alteration in specific regions of the brain impacts semantic functions. Can it work the other way round, i.e. can recurrent change in semantics being processed alter the hardware we have between our ears? For example, as we process a lot of abstract concepts, like ‘taxes’ or ‘interest rate’, can our brains adapt from generation to generation, so as to minimize the gradient of energy expenditure as we shift between levels of abstraction? If we could, we would become more intelligent, i.e. able to handle larger and more differentiated sets of data in a shorter time.

How does all of this translate into collective intelligence? Firstly, there seem to be layers of such intelligence. We can be collectively smart sort of locally – and then we handle those more basic things, like group identity or networks of exchange – and then we can (possibly) become collectively smarter at more combinatorial a level, handling more abstract issues, like multilateral peace treaties or climate change. Moreover, the gradient of energy consumed, between the collective understanding of simple and basic things, on the one hand, and the overarching abstract issues, is a good predictor regarding the capacity of the given society to survive and thrive.

Once again, I am trying to associate this research in neurophysiology with my game-theoretical approach to energy markets. First of all, I recall the three theories of games, co-awarded the economic Nobel prize in 1994, namely those by: John Nash, John (Yan) Harsanyi, and Reinhard Selten. I start with the latter. Reinhard Selten claimed, and seems to have proven, that social games have a memory, and the presence of such memory is needed in order for us to be able to learn collectively through social games. You know those situations of tough talks, when the other person (or you) keeps bringing forth the same argumentation over and over again? This is an example of game without much memory, i.e. without much learning. In such a game we repeat the same move, like fish banging its head against the glass wall of an aquarium. Playing without memory is possible in just some games, e.g. tennis, or poker, if the opponent is not too tough. In other games, like chess, repeating the same move is not really possible. Such games force learning upon us.

Active use of memory requires combinatorial meaning. We need to know what is meaningful, in order to remember it as meaningful, and thus to consider it as valuable data for learning. The more combinatorial meaning is, inside a supposedly intelligent structure, such as our brain, the more energy-consuming that meaning is. Games played with memory and active learning could be more energy-consuming for our collective intelligence than games played without. Maybe that whole thing of electronics and digital technologies, so hungry of energy, is a way that we, collective human intelligence, put in place in order to learn more efficiently through our social games?

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] Pierson, L. M., & Trout, M. (2017). What is consciousness for?. New Ideas in Psychology, 47, 62-71.

[2] Pulvermüller, F. (2013). How neurons make meaning: brain mechanisms for embodied and abstract-symbolic semantics. Trends in cognitive sciences, 17(9), 458-470.

[3] Patterson, K. et al. (2007) Where do you know what you know? The representation of semantic knowledge in the human brain. Nat. Rev. Neurosci. 8, 976–987

[4] Bookheimer,S.(2002) FunctionalMRIoflanguage:newapproachesto understanding the cortical organization of semantic processing. Annu. Rev. Neurosci. 25, 151–188

[5] Price, C.J. (2000) The anatomy of language: contributions from functional neuroimaging. J. Anat. 197, 335–359

[6] Binder, J.R. and Desai, R.H. (2011) The neurobiology of semantic memory. Trends Cogn. Sci. 15, 527–536

Coefficients explosifs court-terme

Mon éditorial sur You Tube

Je savais que ça allait arriver : pour moi, l’avènement du semestre d’hiver, à la fac, c’est inévitablement un changement profond de rythme de vie et de travail. Sur toute l’année académique, donc à partir du mois d’octobre jusqu’au mois de juin, plus de 70% de mon volume horaire d’enseignement prend lieu précisément entre le 1er Octobre et le 30 Janvier. Ce plus de 70%, cette année-ci, cela veut dire 630 heures de cours sur 4 mois.

Quoi qu’il en soit, je tiens à maintenir ne serait-ce qu’un rythme lent d’écriture sur mon blog. Un rythme lent vaut mieux que pas de rythme du tout. Je sais que le fait de blogger régulièrement me donne une sorte d’apprentissage additionnel, comme un processus supplémentaire de traitement d’information dans mon cerveau.

Les deux mois qui viennent de s’écouler m’ont amené à quelques réalisations capitales. Je pense que la première d’entre elles est que l’enseignement est vraiment mon élément. « Eh bien voilà qu’il vient de découvrir l’Amérique, le gars » vous rigolerez, « Il a été prof pour douze ans et voilà qu’il vient de découvrir qu’il aime le job. Vaut mieux tard que jamais ». Oui, ça me fait rigoler, moi aussi, donc j’explique. Les deux premières semaines avec ce plan de cours super chargé, à la fac, ça me faisait un peu irrité (et irritable, par ailleurs). C’était une matinée il y a à peu près dix jours que je m’étais rendu compte que la perspective de cinq heures de cours ce jours précis ça me branchait. Oui, ça me branchait. Je sentais ce flot extrêmement plaisant d’adrénaline et de sérotonine, le mélange d’excitation et de volonté d’action.

L’enseignement est donc ce qui met mon système nerveux en vitesse de compétition, en quelque sorte. Banal et fondamental en même temps. Je veux approcher la chose de façon scientifique. Objectivement, l’enseignement en classe c’est de la communication et c’est précisément ce qui met mon système nerveux central en cet état d’excitation plaisante. Subjectivement, lorsque j’y pense, la communication en classe me procure deux sensations majeures : celle de connecter très vite des parcelles d’information, en des phrases intelligibles, et celle de dire ces phrases à un public.

Puisque j’y suis à la connexion des parcelles d’information, je peux aussi bien me vanter d’en avoir connecté un peu. Je viens de pondre un article sur le marché d’énergie, sous un titre de travail « Apprehending energy efficiency : what is the cognitive value of hypothetical shocks ? ».  Je donne ce titre en lien hypertexte pour que vous puissiez accéder le brouillon que j’ai déposé comme proposition de publication chez « Energy Economics ».  Je donne ici un sommaire de mon raisonnement. J’avais commencé par connecter deux types de phénomènes : tous les trucs que j’eusse observés par rapport au marché d’énergie, durant ces deux dernières années, d’une part, avec un phénomène de toute autre nature, c’est-à-dire le fait que l’économie de notre planète est en train de traverser la plus longue période de croissance économique ininterrompue depuis 1960. En même temps, l’efficacité énergétique de l’économie mondiale – mesurée avec le coefficient de PIB par kilogramme d’équivalent pétrole de consommation finale d’énergie – continue de croître paisiblement. Je m’étais demandé : y-a-t-il un lien entre les deux ? Est-il concevable que l’accalmie présente du cycle macroéconomique vienne du fait que notre espèce avait appris quelque chose de plus en ce qui concerne l’exploitation des ressources énergétiques ?

Comme j’y pense, j’ai quelques intuitions (obsessions ?) qui reviennent encore et encore. Intuition no. 1 : l’intensité de consommation d’énergie est liée au niveau général de développement socio-économique, y compris développement institutionnel (stabilité politique etc.). Je l’ai déjà exprimée, celle-là, dans « Les 2326 kWh de civilisation ». Intuition no. 2 : la vitesse de changement technologique est plutôt une cadence rythmée dans un cycle qu’une vitesse proprement dite. En d’autres mots, les technologies, ça change de génération en génération. Toute technologie à un cycle de vie et ce cycle de vie se reflète dans son coefficient d’amortissement. Changement au niveau de l’efficience énergétique d’un système économique se passe au rythme d’un cycle de vie des technologies. Intuition no. 3 : les marchés financiers, y compris les systèmes monétaires, jouent un rôle similaire au système endocrinien dans un organisme vivant. L’argent, aussi bien que d’autres titres financiers, c’est comme des hormones. Ça transmet l’information, ça catabolise quelque chose et anabolise quelque chose d’autre. S’il y a quoi que ce soit d’important qui se passe niveau innovation, ça engage les marchés financiers.

Dans la science, il est bon de prendre en considération l’avis d’autres personnes, pas seulement mes propres intuitions. Je veux dire, c’est aussi une bonne habitude dans d’autres domaines de la vie. Après avoir donc fait ce qui s’appelle ‘revue de la littérature’, j’avais trouvé une corroboration partielle de mes propres intuitions. Il y a un modèle intéressant d’efficience énergétique au niveau macroéconomique appelé « MuSIASEM » qui appréhende la chose précisément comme s’il était question du métabolisme d’un organisme vivant (consultez, par exemple, Andreoni 2017[1] ou bien Velasco-Fernández et al. 2018[2]).

De tout en tout, j’avais formulé un modèle théorique que vous pouvez trouver, en détail, dans ce manuscrit brouillon. Ce que je voudrais discuter et explorer ici est une composante particulière de cette recherche, un truc que j’avais découvert un peu par hasard. Lorsque je fais de la recherche quantitative, j’aime bien jouer un peu avec les données et avec les façons de les transformer. D’autre part, en sciences économiques, lorsqu’on fait des tests économétriques sur des séries temporelles, l’une des choses les plus fondamentales à faire est de réduire les effets de la non-stationnarité ainsi que ceux de la différence entre des échelles de mesure. De ce fait, une procédure commune consiste à prendre ce qu’on appelle le moment d’observation au lieu de l’observation elle-même. La première dérivée est un moment, par exemple. Le moment est donc la dynamique de quelque chose. Pour ceux qui sont un peu familiers avec l’économie, les coefficients tels que la valeur marginale ou bien l’élasticité sont des moments.

Je voulais donc jouer un peu avec les moments de mes données empiriques. Entre temps, j’avais presque automatiquement calculé les logarithmes naturels de mes données, histoire de les calmer un peu et éliminer des variations accidentelles à court-terme. Le logarithme naturel c’est la puissance à laquelle il faut élever la constante mathématique e = 2,71828 pour obtenir le nombre donné. C’est alors que je m’étais souvenu d’une interprétation possible des logarithmes naturels et de la constante « e », celle de la progression exponentielle. Je peux construire une fonction mathématique de forme générale « y = et*a » où t est le numéro de série d’une période spécifique de temps et a est un paramètre. La progression exponentielle a la réputation de représenter particulièrement bien les phénomènes qui se déploient dans le temps comme la construction d’un mur, où chaque brique consécutive repose sur les briques posées auparavant. On appelle ce type de développement « hystérèse » et en général, cela veut dire que les résultats obtenus dans la période précédente forment une base pour les choses qui se passent dans la période suivante.

Normalement, dans la version scolaire de la progression exponentielle, le paramètre « a » est constant, seulement moi, je voulais jouer avec. Je me suis dit que si j’avais déjà calculé les logarithmes naturels de mes observations empiriques, je peux aussi bien assumer que chaque logarithme est l’exposante « t*a » de la fonction « y = et*a ». J’ai donc un « a » local pour chaque observation empirique et ce « a » local est un moment (une dynamique locale) de cette observation. Question : comment extraire le « t » et le « », séparément, du « t*a » ? La réponse était toute bête : comme je veux. Je peux créer une ligne temporelle arbitraire, donc assigner à chaque observation empirique une abscisse de période selon mon gré.

A ce moment-là, je me suis dit qu’il y a deux lignes temporelles alternatives qui m’intéressent particulièrement dans le contexte donné de recherche sur l’efficience énergétique des économies nationales. Il y a une ligne de changement lent et séculaire, la cadence de mûrissement des civilisations en quelque sorte et d’autre part il y a une ligne de changement explosif à court terme. Mes observations empiriques commençaient toutes en 1990 et continuaient jusqu’en 2014. Je pouvais donc simuler deux situations alternatives. Premièrement, je pouvais considérer tout ce qui s’était passé entre 1990 et 2014 comme partie d’un processus exponentiel initialisé il y a longtemps. Un siècle auparavant, c’est longtemps, tenez. Je pouvais donc prendre chaque abscisse temporelle entre 1990 et 2014 et lui assigner une coordonnée spéciale, égale à « année – 1889 ». L’année 1990 serait donc « 1990 – 1889 = 101 » pendant que 2014 correspondrait à « 2014 – 1889 = 125 » etc.

Deuxièmement, je pouvais assumer que ma période de 1990 à 2014 représente les conséquences de quelque évènement hypothétique qui venait d’avoir pris lieu, par exemple en 1989. L’année 1990 aurait alors l’abscisse temporelle t = 1990 – 1989 = 1, et 2014 serait t = 2014 – 1989 = 25. J’avais fait ces deux transformations : pour chaque observation empirique j’avais pris son logarithme naturel et ensuite je l’avais divisé, respectivement, par ces deux abscisses temporelles alternatives, l’une sur une ligne s’étendant depuis 1889 et l’autre initialisée en 1989. Comme je ruminais ces résultats, j’avais remarqué quelque chose que j’aurais dû prévoir si j’étais un mathématicien et non pas un économiste sauvage qui utilise les maths comme un Néanderthalien utiliserait une calculatrice. Lorsque j’assume que mon histoire commence en 1990, donc que t = 1990 – 1989 = 1 etc., chaque « t » consécutif est beaucoup plus grand que son prédécesseur, mais cette différence décroit très vite. Tenez, t(1991) = 1991 – 1989 = 2 et ça fait deux fois plus que t(1990) = 1990 – 1989 = 1. Cependant t(1995) = 1995 – 1989 = 6 et ça fait juste 20% de plus que t(1996) = 1994 – 1989 = 5. Si je divise donc mes logarithmes naturels par ces « t » qui grimpent vite, mes moments « a » locaux décroissent tout aussi vite et la cadence de cette décroissance ralentit tout aussi vite.

Quel genre de phénomène dans la vie réelle une telle progression mathématique pourrait bien représenter ? Je me suis dit que si un choc profond avait pris lieu en 1989 et avait envoyé des ondes de choc de force décroissante dans l’avenir, ce serait à peu près ça. C’est alors que vient le truc vraiment intéressant dans cette recherche que je viens de faire. Les données transformées en cette onde de choc relativement courte, se répandant depuis 1989, donnent le plus grand pouvoir explicatif dans mon modèle et lorsque je parle de « plus grand » cela veut dire un coefficient de détermination qui se balance vers R2 = 0,9 et un coefficient de signifiance statistique de p < 0,001.

Encore une fois. Je prends un modèle de changement niveau efficience énergétique d’économies nationales. Je veux dire mon modèle. Je le teste avec trois types de données transformées : les logarithmes naturels, genre de calmer le jeu, ensuite des coefficients exponentiels locaux long-terme, qui commencent leur histoire en 1889, et enfin des coefficients exponentiels qui racontent une histoire explosive à partir de 1989. Les derniers, je veux dire les explosifs court-terme, racontent l’histoire la plus cohérente en termes de pouvoir explicatif. Pourquoi ? Qu’y a-t-il de si exceptionnel dans cette représentation particulière des données quantitatives ? Honnêtement, je ne sais pas. Tout ce qui me vient à l’esprit est ce créneau de recherche sur l’innovation et le changement technologique qui perçoit ces phénomènes comme une série d’à-coups et de virages soudains plutôt qu’une ligne continue d’évolution progressive (consultez, par exemple, Vincenti 1994[3], Edgerton 2011[4]).

Je me suis dit que – puisque je discute le mécanisme de changement de l’efficience énergétique des économies nationales, mesurée en unités de PIB par unité d’énergie consommée – il est intéressant de regarder du côté des projections officielles à long terme. Ces derniers jours, deux rapports ont été largement publicisés à cet égard : celui d’OECD et celui de PriceWaterhouse Coopers. Niveau conclusions, ils sont tous les deux plutôt optimistes et semblent contredire les pronostics alarmants de certains économistes qui augurent une crise imminente. Ce qui m’intéresse le plus, toutefois, sont les méthodologies de prédictions utilisées dans les deux rapports. Celui de PriceWaterhouse Coopers se réfère au modèle classique de Solow de 1956[5] pendant qu’OECD vogue plutôt dans la direction de la fonction de production de Cobb-Douglas, transformée en logarithmes naturels. La différence entre les deux ? La fonction de production assume un état d’équilibre macroéconomique. En fait, la fonction de production en elle-même est un équilibre et cet équilibre sert comme point de repère pour prédire ce qui va se passer le plus probablement. En revanche, le modèle de Solow ne requiert pas nécessairement un équilibre. Enfin, ça gène pas, mais ce n’est pas absolument nécessaire. Quand j’y pense, la méthodologie que je viens d’employer dans mon article est plus proche de celle de Solow, donc du rapport de PriceWaterhouse Coopers que de celui d’OECD.

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 ?

Vous pouvez donner votre support financier à ce blog

€10.00

[1] Andreoni, V. (2017). Energy Metabolism of 28 World Countries: A Multi-scale Integrated Analysis. Ecological Economics, 142, 56-69

[2] Velasco-Fernández, R., Giampietro, M., & Bukkens, S. G. (2018). Analyzing the energy performance of manufacturing across levels using the end-use matrix. Energy, 161, 559-572

[3] Vincenti, W.G., 1994, The Retractable Airplane Landing Gear and the Northrop “Anomaly”: Variation-Selection and the Shaping of Technology, Technology and Culture, Vol. 35, No. 1 (Jan., 1994), pp. 1-33

[4] Edgerton, D. (2011). Shock of the old: Technology and global history since 1900. Profile books

[5] Solow, R. M. (1956). A contribution to the theory of economic growth. The quarterly journal of economics, 70(1), 65-94.