Developing a Synthetic Organism-Enterprise: lessons learned
The project is nearing completion which is a good time to take a step back and reflect. About a year ago I watched a clip on cryptocurrency (subtitles available) that talks about fully autonomous vending machines that manage their own inventory and funds. I thought that was a pretty cool idea and I wanted to build one. A researcher called Matthew Gladden described the concept in depth (pdf) which gave me the scientific ground to do so under his supervision.
Lesson 1: completing the business cycle without supervision is not the hardest part
In fact, there are tons of revenue generating schemes out there that require no further supervision, as made popular by the passive income community. This community consists of people who build web-based assets by exploiting quirks in search engines or jumping into niches where little competition exists. Less benign examples are spam bots. I have yet to find an example where unsupervised businesses survive in highly competitive markets when pitted against human creativity, so generally the stakes are low.
I made an affiliate marketing web application that sells watering cans. All moving parts could be automated or outsourced. No system is in place to drive traffic, but, you know, first things first.
Lesson 2: don't use genetic programming if you're dealing with continuous variables
Many strategies exist for continuous optimization. I'm very fond of set-and-forget tools that relieve you from worrying about one component of your business. Or your life for that matter.Take for example this excellent blog on a set and forget approach to split testing. It's clever and simple: all you have to do is add another version of your webpage to the pool and the best version will emerge eventually. It works, it's easy to implement and the maths is simple to grasp.
I used an evolutionary computation module called deap in combination with a selection mechanism of my own design to drive learning over generations. I'm not particularly proud of this part because I made some mistakes.
Kind of a no-brainer in hindsight but I still want to mention it. It's super inefficient to pick a random boundary over and over again and see how it performs when the search space is likely to have a curved fitness landscape. The next iteration would have a drastically reduced search space and I would dedicate much more time to creating a clever encoding.
Think that shit through people. Don't be like me.
Lesson 3: artificial life lives in simulations
Artificial life is a field that's dedicated to understanding life by creating it. Typical a-life research generates agents in a roster that have a strategy for gathering food, run five billion generations and proceed to describe changes in the gene pool.
I wanted to build upon this work because I was going to build artificial life. That's how Gladden's model defined it. However, nobody does that. It's not well understood how to create artificial life outside simulation. The reproduction algorithms are not suitable for constraints like super steep fitness evaluation costs. They are designed to approach biological life as closely as possible.
I designed a non-generational selection scheme. Each unit has internal energy that varies during its lifetime by interacting with the environment. In my case, the interactions were serving a page (-), converting to a third party seller (+++) and birthing a new instance (-----). Pretty clever, no? This approach does not appear in the literature as far as I know, so to this day I'm busy trying to understand its properties.
The real lesson for myself is I should not try to tackle too many hard problems at the same time. Hard for me, that is, not necessarily fundamentally hard. It would've been wise to stick to well understood techniques to create an SOE rather than creating technology on the fly without the time or the knowledge to really understand its dynamics. That's hard enough in itself.
Lesson 4: not everybody wants to set and forget
At least it's a more subtle value proposition than I imagined. This is more of a hunch than a lesson that did not emerge from the project itself but from thinking about how to get ungodly rich off of my newly acquired knowledge.
In general, we don't like to trust machines when the stakes are high. We are too fond of micromanaging stuff to surrender ourselves to automation, even when the gains are obvious. The author of the split testing article I mentioned before notices the same thing.
I haven't worked much in the industry but given the discourse I follow online and with my peers, the situation in the data science field is as follows: we have the technology to automate almost every process. We don't want to. We build dashboards instead so humans can make the last 5% of the decisions.
Hunch: SOE's will make their mark before the arrival of Strong AI
When building this thing I expected to encounter fundamental objections to the concept. It didn't happen.
Will we have machine governed businesses that translate and adapt high level policies during their lifetime? It's a challenge, but I can't see why this couldn't be. Will we have bots generating and pitching ideas at your next hackathon? Not tomorrow perhaps. Entrepreneurial opportunities are very hard to model. However, techniques like the lean startup approach give us the means to validate business ideas efficiently through an iterative process of testing and pivoting. If there's a recipe, a machine can do it.
Generating business ideas? Maybe not in the sense we like to think of young guns developing stuff in the after hours in their dorm rooms. Machines do excel at spotting trends in massive torrents of streaming data. Starting a business in market X is not fundamentally different from an algorithmic trading system placing a put option based on changes in the environment. As long as the environment can be quantified and there's a recipe for starting the business. Think for example of franchises. Are their indicators of a growing demand for fast food in this region? Plunk down a McDonalds. There's no need for periodic human research if the parameters for success are well understood. Create a learning system for managing said franchise by adapting to changes in the local market through well-researched heuristics. Suddenly, you have a SOE governing a large part of the business process. Far from impossible. It's up to you whether you find it desirable.