Tuesday, February 1, 2022

The AI Challenge: Feeling and Understanding

A key goal of AI is to reproduce human behavior at scale. AI seeks to reason on input and explain on output while improving (learning) with each experience.

Computers are very good at processing data to turn it into information through logic. Computer systems can then store this information at a global level and attempt to turn it into knowlege by applying it locally. But it's currently very challenging for computers to turn knowledge into wisdom in a personal context.

AI Challenge

The challenge with artificial intelligence (AI) is that computers are inherently thinking machines, trying to imitate humans. However, people are not thinking machines, we are feeling machines. Simply look at a baby which experiences life through feeling, not thinking. If a baby's hungry or tired, they cry. When a baby's entertained, they laugh.

Teaching a robot how to walk is vastly different than teaching a baby how to walk. Robots use precision (digital) logic to balance and walk while babies feel their way to becoming bipeds. I'm not advocating that people always go with gut feelings – there's an old saying, don't believe everything you think – but it seems that we need a more fundamental layer that's missing from AI.

Refactoring vs Porting vs Optimizing

I've heard people use these terms, interchangeably. Since good definitions make for clear ideas I wanted to explicitly define them.

Refactoring: Restructuring computer code (factors), without changing its external behavior (functionality), to make it more readable, or change its design, reduce complexity, etc.

Porting: Changing code so it’ll run in a different execution environment (language, operating system, CPU, etc) than originally designed for. This makes the code more "portable."

Optimizing: Modifying code to be more efficient without changing its functionality so it runs faster or uses less memory, etc.

Frequently, code changes focusing on one of these areas will have other benefits. For example, when porting code, it might also be optimized and refactored.