PCG and Data Analysis - Two sides of the same coin? Also, GANs?


PCG stands for Procedural Content Generation. PCG is an area of AI that has appeared because of games (different than other areas of AI that appeared because of scientific research and ended up being used in games).

Data Analysis

Data Analysis comes from statistics. It has been widely studied and from a long time, people have started to apply computer algorithms to data analysis. In AI, many widely popular topics related to data analysis (neural networks, data mining, big data, etc..). What all the algorithms used have in common is that they effectively look at data, analyse it and try to infer or predict some information or behaviour from the data.


How do these 2 concepts relate? Well, first they are both related to AI.

Now let's analyse the etymology of PCG a little.

"Procedural" is an adjective with origin on the word procedure. In computer science, a procedure is normally associated with a function. It is a series of commands that will be executed in order to achieve something.

"Content" is basically anything. Synonym of "data".

"Generation" is a synonym of "create".

So, doing a little substitution, we can see that PCG is something similar to

   Procedural        Content     Generation
"Using functions"    "data"      "to create"

Or "Using functions to create data". Well, that is basically what PCG is. You try to model some data in term of procedures(functions) and then execute these functions with different parameters in order to create variations of that data that follow the given function. Normally it is used with some random number generation (which is actually pseudo-random and is just a Gaussian distribution of numbers).

Now, one of the most widely used technique for Data Analysis is called Regression. You have data and you try to create functions that represent this data in order to predict future data.

So, this is exactly the opposite process of PCG. In one, you use functions to create data and in the other, you use data to create functions.

I believe everyone who works with either can benefit from knowing a little about the other.

Also, in recent years, people have closely related both. The concept of GANs (Generative Adversarial Networks) was presented in order to use the data analysis from a neural network to generate more data that fits into that network. And that is just the beginning.


Popular posts from this blog

Unity3D/C# - Asynchronous Programming - Coroutines vs await/async

C# - Simple Graph Interfaces and a MeshGraph

Tools and Property Drawers