Every mind must have some system of KR, but the system could be highly complex and dynamic ... or it could be simple, static, and easy to describe.
KR and AGI
It is controversial whether KR is something that the AGI designer should be thinking about, on a direct and detailed level.
One perspective is that an AGI should be supplied with learning algorithms, which enable it to learn appropriate representations for various contexts. The KR is then implicit in the learning algorithms and the basic infrastructure of the system, but there is no way to tell from these things, in advance, how a given piece of knowledge will be represented.
Another perspective is that KR and learning go hand in hand, so that
- an AGI should be supplied with a base KR that is compatible with its Learning Algorithms, in which it is possible to see how simple pieces of knowledge will be represented
- the AGI should then use this to construct specialized KR's for representing complex knowledge that may arise in particular situations, where the specialized KR's are built out of the primitives provided by the base KR, and the nature of the specialized KR's may be difficult to foresee in advance
Another perspective is that an AGI should just be supplied with an all-purpose KR from the start, in which the designer can see precisely how each piece of knowledge the system will acquire in future is going to be represented. This would seem to be the idea underlying Cyc, for example.
KR in AGI Projects
- Logic Based AGI Projects use some form of logic as a KR, but vary in terms of how much of context-specific specialized KR is supposed to be learned via reasoning versus being supplied in advance
- Neural Net Based AGI Projects generally do not build in any explicit high-level KR but require most of the details of KR to be learned
- Integrative AGI Projects may use multiple KR's, and differ in terms of how compatible the KR's utilized by different subcomponents must be. For example,
- LIDA uses fairly different, not-easily-interconvertible KR's in different components
- OpenCog Cognition Engine uses only two base-level KR's, one for Declarative Memory and one for Procedural Memory, and converting between the two is very easy; but there is a major emphasis on using these base-level KR's to build higher-level context-specific specialized KR's