The Trouble with Cognitive Computing
Today I read an interesting article from Nicole Hemsoth. To summarize the article’s main points:
- Cognitive computing platforms are integrating a lot of complex technologies that are not well understood.
- Up to 80% of the work is discarded.
- Only very large companies such as IBM, Google and Microsoft can afford to pay smart people to “throw everything at the wall to see what sticks”.
In other words, if you are not a major technology giant then you can’t afford to play the cognitive computing game. This is a rather depressing observation, and there is a degree of truth to it. Hemsoth has keyed into one of the most perverse and I feel damaging cycles in modern technology development. A cycle that Knowm is keen to break out of. As Hemsoth points out, the cognitive computing field moves forward through a tremendous amount of trial-and-error work. If you do not have the ability to fund large groups of smart people all collaborating toward a unified goal–then you just can’t deliver a solution. Hemsoth then concludes that only a small number of large participants can afford to play the game. I know this only too well. When I went to DC in 2006 to find funding for an AHaH processor, my ideas skipped the “seedling” level, where I could compete, and went straight to a nine-figure funded program. Dozens of the largest government contractors submitted proposals and IBM was one of three prime contractors selected (HP and HRL being the others). IBM won the contract because it is a very capable organization. It has remarkable facilities and people and I was pleased when they narrowly won. While I did not get funding to pursue the AHaH solution, I did witness how the government spent its money. It recognized the strong need for a new type of learning processor and immediately allocated many millions of dollars to highly capable organizations to address it. What else could be done? Although none of the primes found a solution as called for in the solicitation, the mistake was unavoidable.
Innovation is the Ability to Learn from Mistakes
Innovation is a messy process. Anybody who says they can assess a fundamentally new problem, determine the optimal strategy for solving it, and deliver a solution without making a ton of mistakes is either lying or lacks experience solving genuinely new problems. When you are exploring a new frontier there are no instruction manuals, nothing to guide you but your own experience. You are constrained by your tools and the problems of the real-world and you must assemble the pieces from the near combinatorial infinite number of possibilities. As mistakes are made, intuition is built up and a solution path becomes clear. One could say that making mistakes is learning. Indeed, it is worth pointing out the name of one of the most successful machine learning algorithms ever invented: back-propagation of error. In other words, “learning from mistakes”. The best innovators and software developers know the importance and value of a mistake. If you are working in a large scientific team that shares each other’s mistakes then innovation happens rapidly. 10 researchers working together toward a common goal can be more that ten times as effective as 10 independent researches competing for the same goal. The caveat of course being that the goal must be well-defined. I am reminded of two Einstein quotes that get to the heart of the problem of innovation:
“Anyone who has never made a mistake has never tried anything new.” –Einstein
“Insanity: doing the same thing over and over again and expecting different results.” –Einstein
In other words, mistakes are an integral part of innovation–but only if you can learn from them. Hundreds or thousands of small companies each competing to solve the problems of cognitive computing is, in a sense, a form of insanity. The key problem for the little guy is market competition, which favors economies of scale and larger organizations in most domains.
You Can’t Beat Goliath if You Play by His Rules
The story of Goliath is not one of triumph over incredible odds against the little guy. Its a story about recognizing that the rules need not apply to you. You can drastically change the odds in your favor if you understand the rules — and then consciously make the choice to change them. So while Hemsoth is correct that Cognitive Computing does have a (very) serious problem, it is only correct from the perspective that everybody play by the rules of the Goliath. The solution to democratizing cognitive computing is simple to state but much harder to realize: we must find a way to work together. There is something much bigger than IBM or Google or Microsoft. Its called “everybody else”. The solution to the problem of Cognitive Computing is to find a mechanism for many individuals and smaller companies to work together, share resources and not duplicate efforts, to share a common goal and to learn from each others mistakes.
Open Source Is Half the Solution
Knowm has benefited tremendously from open-source software, and through a number of projects like XChange, XChart, Yank and more we have given back to the community. Open source software managed through distributed revision control systems like Git are a tremendously powerful way to develop software. Multiple eyes on code insures quality. Bugs are found and fixed. Code becomes modular and clear. Developers around the world keep the torch of innovation burning 24-hours a day, passing the project from one time-zone to another as dawn sweeps across the earth. Modern decentralized open-source software development is one of the most spectacular innovations in human history. Unfortunately, there is a very big problem. How the heck do you get paid?!?
Proponents of open-source software (of which Knowm Inc. is one) will be quick to list a number of possibilities. Sell a service on top of the software. Make part of it free but charge for extensions. Charge for hosting. Make a closed-source enterprise edition. Sell technical support. Dual license. I’ve heard of many of them, and none of them sit well with me. They are a patch to a problem, not a robust solution. They are all indirect or require trust in a world where nobody really trusts each other. The one and only problem with open source software is that people need to earn money to survive. Software development is creative, focused, and hard work. The people who develop useful code should be rewarded for it. What we need is a new type of open-source development, one where we can keep the parts of open-source that are amazing and fix the one part that doesn’t work. We need a new type of organization were we can share resources and common goals and all learn from our mistakes, where contributions are tracked, quantified, and rewarded automatically.
Collaborative Cognitive Computing
Developers working on low-level computing modules should not be expected to solve the problems of commercialization. The talents of low-level programmers are not congruent with marketing or even application development. The technology stack is massive, and there is no individual (that I know of) who is an expert at all levels. However, if a low-level software module created by a developer finds its way into a product as a dependency, that developer should receive a piece of the profits. Everybody who contributes to the final product should be rewarded, no matter how big their contribution or where in the world they live.
Our intention with the Knowm Development Community is to create a global innovation engine, a place where individuals and companies can join forces in empowering themselves and the world with machine intelligence. To create a place where innovation never stops, and the David’s of the world stop solving the same problems over and over again and start working together. Most of all, the Knowm Development Community is a place where everybody gets a quantifiably fair piece of the pie they helped to bake.
Finding the Rules
The Knowm Development Community is an experiment in Collaborative Cognitive Computing. To solve the problem of cognitive computing we must redefine the rules. Specifically, we must solve the problem of how to distribute money from the sale of a software application to the developers who’s work made it possible–all the way down the dependency hierarchy. Toward that goal, we are soliciting feedback from the community for help on defining and refining the rules that will govern the Knowm Development Community. Please take a look and offer your comments, suggestions, criticisms and point us in the direction of any other group that may also be attempting something similar.
Why We Think We Can Do It
There is a big ‘gotcha’ in the fields of machine learning and machine intelligence and its called the Adaptive Power Problem. Learning is a memory-processing operation, and the separation of memory and processing leads to massive inefficiencies when we are simulating large numbers of interacting adaptive elements. Neuromemristive processors like kT-RAM, operating under the principles of AHaH Computing is a potential solution to this problem. In fact, it is the only practical solution that we are aware of–and we have acquired a large patent portfolio around it.