Answers.Body: <p>This is (even though it doesn't look like it at first glance) a deeply philosophical question about the nature of 'meaning'. This answer is necessarily limited in scope.</p>
  
  <p>There are many ways of representing knowledge, and countless formalisms have been developed since the early days of AI. Many of them are based on some kind of predicate calculus, ontologies, semantic networks (providing eg inheritance of features and part-of relationships), and they seem to work fine for limited domains.</p>
  
  <p>One problem is the grounding: if you have a predicate <em>isGreen(x)</em>, what does that actually mean? How is it related to <em>isBlue(x)</em>? Do you want to treat them similarly? If so, you need to represent this somehow. You quickly come to the point where you will need to encode all the world's knowledge in some generalised way. An impossible task.</p>
  
  <p>Linguists have struggled with this for decades: what is the meaning of a particular sentence? Apart from the fact that every individual human will interpret a given sentence differently (based on their own life experience and culture), there are many aspects to 'meaning' that need representing: the 'factual' meaning, but also pragmatic, evaluative, and all sorts of other nuances. An innocent utterance, <em>That's a nice Apple you've got there</em>, could have a whole raft of meanings packed into it, all implicit. For example, the person probably likes apples, that one in particular, that apple looks like a tasty piece of fruit, the other person is the owner of the apple, and it might also be a request which is intended to prompt the other person to offer it to you. How are you going to represent all that meaning?</p>
  
  <p>One area that interests me personally is representing narrative events. This can &mdash; up to a point &mdash; be done using <a href="https://en.wikipedia.org/wiki/Conceptual_dependency_theory" rel="nofollow noreferrer">Conceptual Dependency</a>, which uses a limited set of semantic primitives. While useful to encode basic stories, you cannot easily use it to represent the fact that grass is green. </p>
  
  <p>So the answer is: there is no answer. AI is too broad a field, and you need to look at a particular application to decide which knowledge is relevant to it, and then how it can best be represented. There is a reason why there are so many ways of representing knowledge.</p>
  
  <p>PS: You suggest this would be <em>more precise</em>. My personal view is that precision here is a red herring. The word <em>green</em> is not precise, as it covers a range of wave lengths, and <a href="https://en.wikipedia.org/wiki/Color_term#Cultural_differences" rel="nofollow noreferrer">different people would disagree on whether something is green or not</a>. So a predicate <em>isGreen(x)</em> is not any more precise than that. Hence the appeal of <a href="https://en.wikipedia.org/wiki/Fuzzy_logic" rel="nofollow noreferrer">fuzzy logic</a>, which allows computation to be based on less precision. </p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-12-02T09:00:45.977Z
Answers.Text: @ManuelRodriguez Manuel, I think you haven't really understood my answer. CD has got nothing to do with "agents in a computer game"; and I only provided this as one example to illustrate that knowledge representations exist with many different foci. If you have a "better idea", then write it up in an answer rather than just downvoting mine.
Answers.UserDisplayName: Oliver Mason
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-12-02T20:13:41.000Z
Answers.Text: Well I assume isGreen() would be related to the green photo-receptors of the eye being fired (or the expectation theorof). That's an easy one!
Answers.UserDisplayName: zooby
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-12-02T21:00:03.280Z
Answers.Text: @zooby on the contrary: which wavelength does it correspond to? https://en.wikipedia.org/wiki/Photoreceptor_cell#/media/File:1416_Color_Sensitivity.jpg
Answers.UserDisplayName: Oliver Mason
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-12-01T13:16:24.693Z
Answers.LastActivityDate: 2019-12-01T13:16:24.693Z
Answers.UserDisplayName: Oliver Mason
Answers.Body: <p>I think the first question you should answer is: "What questions should the AI be able to answer?" If the intend was that the AI should be able to answer any questions, then that is simply not doable (or at least currently it is not doable). Currently this is similar to asking for a program that can do anything. </p>
  
  <p>Currently the AI field is split between statistical approaches and logical approaches. In the early years AI was approached mainly from a logical perspective. Now statistical approaches are more popular. The main advantage of logical approaches is that answers can be explained, while the main advantage of statistical approaches is that given large enough data sets agents can be trained. There is definitely a drive in the AI community to merge statistical and logical approaches to AI, but these approaches are still in its infancy.</p>
  
  <p>I therefore will strongly suggest you first determine the kind of problems you will want to address with AI, then based on that, you determine the AI approach that is best suited for those problems.</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-12-02T19:47:59.433Z
Answers.LastActivityDate: 2019-12-02T19:54:53.183Z
Answers.LastEditDate: 2019-12-02T19:54:53.183Z
Answers.UserDisplayName: Henriette Harmse
Answers.Body: <p>From my perspective you should look at the concept of <strong>ontologies</strong>, which might briefly be described as a set of axioms that formalize concepts such as <code>{Grass, Water, Green}</code> and relations between those like <code>hasProperty(Grass, Green)</code> and <code>needs(Grass, Water)</code>. To describe such kind of knowledge the <a href="https://en.wikipedia.org/wiki/Web_Ontology_Language" rel="nofollow noreferrer">Web Ontology Language</a> was created. The theoretical framework on which it is built are different flavors of <em>description logics</em>, which all are fragments of first order predicate logic, but come with different tradeoffs  between expressiveness and computational complexity for <em>automatic reasoning</em>.</p>
  
  <p>As with other AI-topics this kind of stuff can get quite involved ‒ and interesting. I can recommend the open textbook: <a href="https://people.cs.uct.ac.za/~mkeet/OEbook/" rel="nofollow noreferrer">An introduction to ontology engineering</a> by Maria Keet (University of Cape Town).</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2020-04-28T09:44:50.560Z
Answers.LastActivityDate: 2020-04-28T09:44:50.560Z
Answers.UserDisplayName: cknoll
Body: <p>For an AI to represent the world, it would be good if it could translate human sentences into something more precise.</p>
  <p>We know, for example, that mathematics can be built up from set theory. So representing statement in language of set theory might be useful.</p>
  <p>For example</p>
  <blockquote>
  <p>All grass is green</p>
  </blockquote>
  <p>is something like:</p>
  <blockquote>
  <p><span class="math-container">$\forall x \in grass: isGreen(x)$</span></p>
  </blockquote>
  <p>But then I learned that set theory is built up from something more basic. And that theorem provers use a special form of higher-order logic of types. Then there is propositional logic.</p>
  <p>Basically what the AI would need would be some way representing statements, some axioms, and ways to manipulate the statements.</p>
  <p>Thus what would be a good language to use as an internal language for an AI?</p>
  
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2019-12-01T06:41:20.647Z
Comments.Text: @DuttaA Well it's true we don't know how the human brain works. But I was thinking more of a robot brain that we might like to make more logical in a way so it didn't make mistakes.
Comments.UserDisplayName: zooby
Tags: <knowledge-representation><programming-languages><language-model>
Title: What would be a good internal language for an AI?
UserDisplayName: zooby
ThreadText: # What would be a good internal language for an AI?
  
  (Asked by: username_0 on 2019-12-01)
  
  For an AI to represent the world, it would be good if it could translate human sentences into something more precise.
  
  We know, for example, that mathematics can be built up from set theory. So representing statement in language of set theory might be useful.
  
  For example
  
  > All grass is green
  
  is something like:
  
  > $\forall x \in grass: isGreen(x)$
  
  But then I learned that set theory is built up from something more basic. And that theorem provers use a special form of higher-order logic of types. Then there is propositional logic.
  
  Basically what the AI would need would be some way representing statements, some axioms, and ways to manipulate the statements.
  
  Thus what would be a good language to use as an internal language for an AI?
  
  **Tags:** knowledge-representation, programming-languages, language-model
  > **Comments:**
  > **username_0**: @DuttaA Well it's true we don't know how the human brain works. But I was thinking more of a robot brain that we might like to make more logical in a way so it didn't make mistakes.  
  
  ---
  
  ## 3 answers
  
  ### Answer by username_1 on 2019-12-01. Score: 2
  
  This is (even though it doesn't look like it at first glance) a deeply philosophical question about the nature of 'meaning'. This answer is necessarily limited in scope.
  
  There are many ways of representing knowledge, and countless formalisms have been developed since the early days of AI. Many of them are based on some kind of predicate calculus, ontologies, semantic networks (providing eg inheritance of features and part-of relationships), and they seem to work fine for limited domains.
  
  One problem is the grounding: if you have a predicate *isGreen(x)*, what does that actually mean? How is it related to *isBlue(x)*? Do you want to treat them similarly? If so, you need to represent this somehow. You quickly come to the point where you will need to encode all the world's knowledge in some generalised way. An impossible task.
  
  Linguists have struggled with this for decades: what is the meaning of a particular sentence? Apart from the fact that every individual human will interpret a given sentence differently (based on their own life experience and culture), there are many aspects to 'meaning' that need representing: the 'factual' meaning, but also pragmatic, evaluative, and all sorts of other nuances. An innocent utterance, *That's a nice Apple you've got there*, could have a whole raft of meanings packed into it, all implicit. For example, the person probably likes apples, that one in particular, that apple looks like a tasty piece of fruit, the other person is the owner of the apple, and it might also be a request which is intended to prompt the other person to offer it to you. How are you going to represent all that meaning?
  
  One area that interests me personally is representing narrative events. This can — up to a point — be done using [Conceptual Dependency](https://en.wikipedia.org/wiki/Conceptual_dependency_theory), which uses a limited set of semantic primitives. While useful to encode basic stories, you cannot easily use it to represent the fact that grass is green.
  
  So the answer is: there is no answer. AI is too broad a field, and you need to look at a particular application to decide which knowledge is relevant to it, and then how it can best be represented. There is a reason why there are so many ways of representing knowledge.
  
  PS: You suggest this would be *more precise*. My personal view is that precision here is a red herring. The word *green* is not precise, as it covers a range of wave lengths, and [different people would disagree on whether something is green or not](https://en.wikipedia.org/wiki/Color_term#Cultural_differences). So a predicate *isGreen(x)* is not any more precise than that. Hence the appeal of [fuzzy logic](https://en.wikipedia.org/wiki/Fuzzy_logic), which allows computation to be based on less precision.
  
  > **Comments:**
  > **username_1**: @ManuelRodriguez Manuel, I think you haven't really understood my answer. CD has got nothing to do with "agents in a computer game"; and I only provided this as one example to illustrate that knowledge representations exist with many different foci. If you have a "better idea", then write it up in an answer rather than just downvoting mine.  
  > **username_0**: Well I assume isGreen() would be related to the green photo-receptors of the eye being fired (or the expectation theorof). That's an easy one!  
  > **username_1**: @zooby on the contrary: which wavelength does it correspond to? https://en.wikipedia.org/wiki/Photoreceptor_cell#/media/File:1416_Color_Sensitivity.jpg  
  
  ---
  
  ### Answer by username_2 on 2019-12-02. Score: 2
  
  I think the first question you should answer is: "What questions should the AI be able to answer?" If the intend was that the AI should be able to answer any questions, then that is simply not doable (or at least currently it is not doable). Currently this is similar to asking for a program that can do anything.
  
  Currently the AI field is split between statistical approaches and logical approaches. In the early years AI was approached mainly from a logical perspective. Now statistical approaches are more popular. The main advantage of logical approaches is that answers can be explained, while the main advantage of statistical approaches is that given large enough data sets agents can be trained. There is definitely a drive in the AI community to merge statistical and logical approaches to AI, but these approaches are still in its infancy.
  
  I therefore will strongly suggest you first determine the kind of problems you will want to address with AI, then based on that, you determine the AI approach that is best suited for those problems.
  
  
  ---
  
  ### Answer by username_3 on 2020-04-28. Score: 1
  
  From my perspective you should look at the concept of **ontologies**, which might briefly be described as a set of axioms that formalize concepts such as `{Grass, Water, Green}` and relations between those like `hasProperty(Grass, Green)` and `needs(Grass, Water)`. To describe such kind of knowledge the [Web Ontology Language](https://en.wikipedia.org/wiki/Web_Ontology_Language) was created. The theoretical framework on which it is built are different flavors of *description logics*, which all are fragments of first order predicate logic, but come with different tradeoffs between expressiveness and computational complexity for *automatic reasoning*.
  
  As with other AI-topics this kind of stuff can get quite involved ‒ and interesting. I can recommend the open textbook: [An introduction to ontology engineering](https://people.cs.uct.ac.za/~mkeet/OEbook/) by Maria Keet (University of Cape Town).
  
  
  ---
  
  