Live data from Hacker News

AI Expert Roadmap

i.am.ai

61–70 of 92 posts

Re: AI Expert Roadmap

#61
post #59

Earlier quoted context omitted.

I don't want to dismiss automated provers, as they are often quality, useful tools (SAT solvers in particular), but if you're interested in learning AI , traditional approaches are no longer more than briefly and tangentially relevant. That's my point, that you don't need to learn woodworking to build a car, even if wooden carts still have occasional uses, and some cars have wood trim or wooden trailers. > If I am pe…

I'm happy to see we're still in healthy disagreement. However, I have to apologise for confusing you by describing my field as "program learning" which is admittedly vague, but I didn't want to go into the particulars. My field is not program synthesis, which is constructing programs from complete, formal specifications. Rather, it's Inductive Programming and more specifically Inductive Logic Programming (ILP), which…

> Rather, it's Inductive Programming and more specifically Inductive Logic Programming (ILP), which is learning programs from examples, i.e. "incomplete specifications". I'm not familiar with the General Program Synthesis Benchmark Suite, but the problem you list (test three strings are ordered by length) is trivial for ILP approaches.

The General Program Synthesis Benchmark Suite works from input-output examples, not “complete, formal specifications”.

How would you tackle this with ILP?

> However, I have to say that even so, if something is a difficult problem for program synthesis approaches, then it's very unlikely that neural networks will do any better at it. For instance, do you know how well deep neural nets perform on this benchmark?

I'm not aware of any serious at-scale attempts. Your option is basically to try few-shot with GPT-3.

OTOH, learning these trivial programs from 100 examples is a largely artificial framing used to support a field which hadn't worked its way up to meaningful problems, and in the more general sense, large networks are promising; eg. the GitHub-trained GPT:

https://www.youtube.com/watch?v=y5-wzgIySb4

or any of the GPT-3 programming demos:

https://twitter.com/sharifshameem/status/1284103765218299904 https://twitter.com/sharifshameem/status/1284815412949991425 https://www.reddit.com/r/commandline/comments/jl8jyr/the_nlc...

> These approaches are still state of the art for their respective tasks and there is no other approach that has been shown to do any better, including deep neural networks. In what sense are they "no longer more than briefly and tangentially relevant" as you say?

“if you're interested in learning AI

These techniques were invented from the field of AI, but that does not mean they remain in the field of AI.

> You clearly have a strong opinion on GOFAI and the AI winter of the '80s, but what knowledge does this opinion come from? Can you say?

I can argue why ML approaches are good and promising and point at that. I can argue why ML approaches make conceptual sense whereas GOFAI does not, though I don't see us resolving that short-term so I'd rather not. But what I can't so easily do is point to the non-existence of GOFAI AI successes. It's just not there.

You do have tools Watson and WolframAlpha which use GOFAI techniques for fact search over a large set of human-built knowledge repositories (trivia q's / math tools), but Watson is mostly considered a stunt, and I'm not aware of anyone calling WolframAlpha AI.

> the ability for reasoning (despite big claims to the contrary)

The nebulousness of the term ‘reasoning’ is pulling a lot of weight here. It's clearly doing sophisticated computations of some sort, beyond brute memorization.

> or arithmetic (ditto)

http://gptprompts.wikidot.com/logic:math#toc6

There are more examples too, this is just addressing the one point people get wrong most often. BPEs are an interim performance hack, not an indictment on the approach in general.

> or generation of novel programs

Is clearly false.

> For instance, the append() example you show above is clearly memorised: you haven't given the model any examples of append(), so it can't possibly learn its definition from examples.

This is true, but it's mostly just an artifact of me having to prompt it through FitnessAI. Unlike smaller models, few-shot learning works, it just takes more space than I have to prompt with.

See the GitHub-trained example for something that integrates with more arbitrary code. There are many other examples, like the database prompt below (all bold is human input), or see some of the examples I linked above.

https://www.gwern.net/GPT-3#the-database-prompt

Or I can ask

Q: “If z(str) = str + " " + str + " z" (for example, z("dumbell") = "dumbell dumbell z"), and g(str) = "k " + str + " j" then what is g("run")?”

A: “g("run") = "k run j"”

(The inverse problem doesn't work so well, giving “g(str) = "k run j"” for one example (valid but vapid) and “g(str) = "k str j"” for two (close but no banana), and confusion for more complex prompts, though I suspect the format is partially to blame. I can list other failure cases. But my point isn't that GPT-3 is reliable here; it's a language model.)

> btw, why do you need to give it the list "a"? What happens if this is ommitted from the prompt?

That example was from me trying to emulate an example I saw on Twitter I've since lost, which was a similar thing but multi-step, where each step GPT-3 returned all three lists, modified or queried per the given commands.

Omitting `a`, I get

Q: “b = ["lifting", "curls", "squats"], c = ["running", "jogging"], so what is b after b.append("pushups")?”

A: “lifting,curls,squats,pushups”

I had to change the prompt a bit because initially the result was truncated (FitnessAI is not made for this), or said “b.append("pushups") will add the string "pushups" to the end of b.”, which is correct but not what I wanted.

Few-shot would fix formatting inconsistencies; right now the model is just guessing.

Re: AI Expert Roadmap

#62
post #61

Earlier quoted context omitted.

I'm happy to see we're still in healthy disagreement. However, I have to apologise for confusing you by describing my field as "program learning" which is admittedly vague, but I didn't want to go into the particulars. My field is not program synthesis, which is constructing programs from complete, formal specifications. Rather, it's Inductive Programming and more specifically Inductive Logic Programming (ILP), which…

> Rather, it's Inductive Programming and more specifically Inductive Logic Programming (ILP), which is learning programs from examples, i.e. "incomplete specifications". I'm not familiar with the General Program Synthesis Benchmark Suite, but the problem you list (test three strings are ordered by length) is trivial for ILP approaches. The General Program Synthesis Benchmark Suite works from input-output examples, no…

In the interest of pruning this conversation a bit I will not continue the discussion about GPT-3. Apologies, but this thread is growing too fast and I don't have the time to give your comments the attention they deserve. I am happy for you to have the last word in that matter.

>> These techniques were invented from the field of AI, but that does not mean they remain in the field of AI.

Like I say above, it is pretty uncontroversial that these approaches are part of the field of AI research. You can consult wikipedia or e.g. the calls for papers from major AI conferences, AAAI and IJCAI, if in doubt.

So I have to ask again, why do you say these approaches are are not in the field of AI research? According to whom? And based on what?

I would please like an answer to the above question.

Further, I can certainly point you to successes of symbolic AI, which you say don't exist. For one thing, the entire fields of automated theorem proving, planning, search, game playing, knowledge representation and reasoning, etc. that you say are "not AI", but are like I say still active and still state of the art in their respective tasks. These are certainly successful- they have produced systems and techniques that still work best than any alternative and actually quite well.

For examples of specific systems that were successful in their time, see Logic Theorist [1] that proved 38 of the first 52 theorems in Principia Mathematica; Chinook [2], the first computer program to win a world championship against humans (in checkers/draughts); Deep Blue [3], the first AI system to defeat a human grandmaster (Garry Kasparov) in chess; MYCIN [4] the first AI system to outperform human experts in disease diagnosis (specifically, diagnosis of infections); and so on.

Of course these systems have been superseded - but they were successes nonetheless. Another reason to learn the history of AI is to become aware of those systems- they, indeed, were "there".

Again I have to ask you- where does your knowledge of AI come from? When you make such strong statements about what works and what doesn't, what failed and what succeeded, are you sure you are well informed? Do you draw your knowledge from primary sources, or are you trusting the opinions of others who claim to be experts- but may not be (like in the article above)?

>> How would you tackle this with ILP?

Below I've defined the problem in the format expected by Louise [5]:

  ?- list_mil_problem(ordered/3).
  Positive examples
  -----------------
  ordered([a],[b,c],[d,e,f]).
  
  Negative examples
  -----------------
  []
  
  Background knowledge
  --------------------
  shorter/2:
  shorter(A,B):-length(A,C),length(B,D),C
Given this problem definition, Louise can learn the following (Prolog) program:

  ?- learn(ordered/3).
  ordered(A,B,C):-shorter(A,B),shorter(B,C).
  true.
To explain, shorter/2 is a predicate defined as background knowledge by me. triadic_chain is a metarule, a second-order clause that provides inductive bias. length/2 is an ISO Prolog predicate.

Like I say, this is a trivial problem, not least because its solution is easy to figure out and the background knowledge and metarules are trivial to define by hand. Louise can also perform predicate invention to define new background knowledge (kind of like inventing new features) and also new metarules. That is to say, Louise can learn the shorter/2 and length/2 programs, also from very few examples- and then reuse them as background knowledge. But showing how to do that would make for a larger example. I'm happy to oblige if you are curious.

I should point out that there exists no neural net approach that can learn the same (or a similar) program from a single positive example- not least because neural nets cannot make use of background knowledge (i.e. a library of programs from which to build other programs).

__________________

[1] https://en.wikipedia.org/wiki/Logic_Theorist

[2] https://en.wikipedia.org/wiki/Chinook_(computer_program)

[3] https://en.wikipedia.org/wiki/Deep_Blue_versus_Garry_Kasparo...

[4] https://en.wikipedia.org/wiki/Mycin

[5] https://github.com/stassa/louise/

Re: AI Expert Roadmap

#63
post #61

Earlier quoted context omitted.

> Rather, it's Inductive Programming and more specifically Inductive Logic Programming (ILP), which is learning programs from examples, i.e. "incomplete specifications". I'm not familiar with the General Program Synthesis Benchmark Suite, but the problem you list (test three strings are ordered by length) is trivial for ILP approaches. The General Program Synthesis Benchmark Suite works from input-output examples, no…

In the interest of pruning this conversation a bit I will not continue the discussion about GPT-3. Apologies, but this thread is growing too fast and I don't have the time to give your comments the attention they deserve. I am happy for you to have the last word in that matter. >> These techniques were invented from the field of AI, but that does not mean they remain in the field of AI. Like I say above, it is pretty…

> You can consult wikipedia or e.g. the calls for papers from major AI conferences, AAAI and IJCAI, if in doubt.

As to Wikipedia, see the second paragraph. The sections where it mentions, eg., symbolic or sub-symbolic approaches are prefixed with “Researchers in the 1960s and the 1970s” or “By the 1980s”. Kind'a telling.

Like, my point is not about whether you can find the odd person trying to solve intelligence with grammars, or what were GOFAI conferences still harbour GOFAI research in the corners, my point is that a) these approaches don't work as a way to actually tackle AI, the problem, b) the vast majority of the field does not take them as seriously as a method of doing so, regardless of other uses, and c) therefore it's natural, not ‘impossible’, to gain AI expertise without having much care for those parts of the field.

> Further, I can certainly point you to successes of symbolic AI, which you say don't exist. For one thing, the entire fields of automated theorem proving, planning, search, game playing, knowledge representation and reasoning, etc. that you say are "not AI", but are like I say still active and still state of the art in their respective tasks.

Yes, but there's a reason I suffixed that comment with “(again, in an AI context)”. GOFAI is great if you ignore the last two letters of the name, and how it failed almost all its major promises.

These used to be considered AI because it was thought that you could build a useful reasoning agent out of a combination of these techniques, given appropriate developments. Now (almost) nobody does that; Google Map's pathfinding is just a pathfinder, not a general reasoner.

> Below I've defined the problem in the format expected by Louise

Right, OK, I figured it'd be something like this, when you said it was trivial, but this is just another perspective on my original criticism. You wrote the program you wanted it to generate as the background knowledge.

It must be so, because your examples don't specify, even roughly approximately, the program you wanted generated. Another valid solution would be (among many)

    ordered(A,B,C):-shorter(A,B),shorter(A,C).
and the only reason it didn't choose this is because you gave it the program you wanted it to generate (obfuscated a little, yet still, there was only one application available). It didn't ‘learn’ anything.

> I should point out that there exists no neural net approach that can learn the same (or a similar) program from a single positive example- not least because neural nets cannot make use of background knowledge (i.e. a library of programs from which to build other programs).

This is not true, but as you wanted to prune, I'll leave it there.

Re: AI Expert Roadmap

#64
post #63

Earlier quoted context omitted.

In the interest of pruning this conversation a bit I will not continue the discussion about GPT-3. Apologies, but this thread is growing too fast and I don't have the time to give your comments the attention they deserve. I am happy for you to have the last word in that matter. >> These techniques were invented from the field of AI, but that does not mean they remain in the field of AI. Like I say above, it is pretty…

> You can consult wikipedia or e.g. the calls for papers from major AI conferences, AAAI and IJCAI, if in doubt. As to Wikipedia, see the second paragraph. The sections where it mentions, eg., symbolic or sub-symbolic approaches are prefixed with “Researchers in the 1960s and the 1970s” or “By the 1980s”. Kind'a telling. Like, my point is not about whether you can find the odd person trying to solve intelligence with…

>> Like, my point is not about whether you can find the odd person trying to solve intelligence with grammars, or what were GOFAI conferences still harbour GOFAI research in the corners, my point is that a) these approaches don't work as a way to actually tackle AI, the problem, b) the vast majority of the field does not take them as seriously as a method of doing so, regardless of other uses, and c) therefore it's natural, not ‘impossible’, to gain AI expertise without having much care for those parts of the field.

>> Yes, but there's a reason I suffixed that comment with “(again, in an AI context)”. GOFAI is great if you ignore the last two letters of the name, and how it failed almost all its major promises.

>> These used to be considered AI because it was thought that you could build a useful reasoning agent out of a combination of these techniques, given appropriate developments. Now (almost) nobody does that; Google Map's pathfinding is just a pathfinder, not a general reasoner.

I keep asking- how do you know these things to be true? Are they just your opinion?

Can you please satisfy my curiousity on this?

Re: AI Expert Roadmap

#65
post #63

Earlier quoted context omitted.

In the interest of pruning this conversation a bit I will not continue the discussion about GPT-3. Apologies, but this thread is growing too fast and I don't have the time to give your comments the attention they deserve. I am happy for you to have the last word in that matter. >> These techniques were invented from the field of AI, but that does not mean they remain in the field of AI. Like I say above, it is pretty…

> You can consult wikipedia or e.g. the calls for papers from major AI conferences, AAAI and IJCAI, if in doubt. As to Wikipedia, see the second paragraph. The sections where it mentions, eg., symbolic or sub-symbolic approaches are prefixed with “Researchers in the 1960s and the 1970s” or “By the 1980s”. Kind'a telling. Like, my point is not about whether you can find the odd person trying to solve intelligence with…

Apologies for splitting the thread, but I thought it'd be easier to read this way.

This comment addresses your concerns about me writing the program I wanted Louise to generate. I like to see background knowledge ("BK", e.g. shorter/2) as a library of sub-programs from which the learner can select the ones necessary to compose a target program. The example above is trivial because I've defined a BK predicate that is necessary and sufficient to learn, so the learner was indeed served the solution "on a plate".

However, as I said in my previous comment, Louise can learn its own background knowledge. This can be done by predicate invention, or more simply, by incrementally learning necessary sub-programs.

Below is a problem definition and learning session that first learns length/2 (renamed llength/2 to avoid name clashes with the built-in) and shorter/2 from list and numeric function primitives, before using the learned predicates as BK for ordered/2. Like I say in my previous comment, it's a little larger than the previous one:

  ?- list_mil_problem([llength/2,shorter/2,ordered/3]).
  Positive examples
  -----------------
  llength([],0).
  llength([a],s(0)).
  shorter([a],[b,c]).
  shorter([1,2],[3,4,5]).
  ordered([a],[b,c],[d,e,f]).
  
  Negative examples
  -----------------
  :-ordered([a],[b],[c]).
  :-ordered([a,b,c],[a,b],[c]).
  
  Background knowledge
  --------------------
  tail/2:
  tail([A|B],B).
  
  p/2:
  p(s(A),A).
  
  s/2:
  s(A,s(A)).
  
  Metarules
  ---------
  abduce metarule 'P(X,Y)'.
  list_rec_func metarule 'P(x,y):- Q(x,z),R(y,u),P(z,u)'.
  list_comp metarule 'P(x,y):- Q(x,z), R(y,u), S(z,u)'.
  triadic_chain metarule 'P(x,z,y):- Q(x,z), R(z,y)'.
  true.

  ?- time(learn_dynamic([llength/2,shorter/2,ordered/3])).
  llength([],0).
  llength(A,B):-tail(A,C),p(B,D),llength(C,D).
  shorter(A,B):-llength(A,C),llength(B,D),s(C,D).
  ordered(A,B,C):-shorter(A,B),shorter(B,C).
  % 20,928 inferences, 0.000 CPU in 0.007 seconds (0% CPU, Infinite Lips)
  true.
The BK for this problem consists of tail/2, similar to "car" in Lisp (i.e. matches the head of a list) and the pair of p/2 and s/2, that act as "dereferencers" to Peano number functions. These are bog-standard Prolog programs and useful whenever a target program must manipulate a list, or perform numerical reasoning. In other words, they're pretty much generic, like a standard library of sorts.

I've added the full source of the experiment file for the learning task on pastebin. It includes a few more detailed comments and a set of constraints to clean up the learned hypothesis, mostly for aesthetic reasons:

https://pastebin.com/nPYFKKpx

Of course this is still a toy problem and we know the solution. But I hope it demonstrates the principle. On the other hand, you'd still not be able to solve this with alternative approaches, e.g. I see that the benchmark suite you pointed to is used for genetic programming. I'm also not aware of neural approaches that build programs incrementally, from a couple of examples of each sub-program.

That is to say, this is a toy problem for ILP. For other approaches it's unsolvable.

Re: AI Expert Roadmap

#66
post #63

Earlier quoted context omitted.

> You can consult wikipedia or e.g. the calls for papers from major AI conferences, AAAI and IJCAI, if in doubt. As to Wikipedia, see the second paragraph. The sections where it mentions, eg., symbolic or sub-symbolic approaches are prefixed with “Researchers in the 1960s and the 1970s” or “By the 1980s”. Kind'a telling. Like, my point is not about whether you can find the odd person trying to solve intelligence with…

>> Like, my point is not about whether you can find the odd person trying to solve intelligence with grammars, or what were GOFAI conferences still harbour GOFAI research in the corners, my point is that a) these approaches don't work as a way to actually tackle AI, the problem, b) the vast majority of the field does not take them as seriously as a method of doing so, regardless of other uses, and c) therefore it's n…

Because GOFAI just observably doesn't work. The ideas are brittle, can't generalize and abstract the way is needed, has made very little progress recently (if any) an AI context, and you just _don't see_ anything that would argue otherwise.

In contrast, ML methods do work, observably and clearly, and they work in a ridiculously general way, to a degree larger than almost anyone thought (or even thinks) is reasonable for them to.

And it's not just my opinion; there's a reason AI conference attendance has shot up a factor of 10 or so in the last few years, why NeurIPS is the leading one (and even historically GOFAI conferences are majority NNs), why the big AI labs with big AI cash are all doing NNs, and why all of a sudden AI is a popular topic outside academia.

If this doesn't answer your question, perhaps answer the opposite; how do you know that it's wrong?

Re: AI Expert Roadmap

#67
post #63

Earlier quoted context omitted.

> You can consult wikipedia or e.g. the calls for papers from major AI conferences, AAAI and IJCAI, if in doubt. As to Wikipedia, see the second paragraph. The sections where it mentions, eg., symbolic or sub-symbolic approaches are prefixed with “Researchers in the 1960s and the 1970s” or “By the 1980s”. Kind'a telling. Like, my point is not about whether you can find the odd person trying to solve intelligence with…

Apologies for splitting the thread, but I thought it'd be easier to read this way. This comment addresses your concerns about me writing the program I wanted Louise to generate. I like to see background knowledge ("BK", e.g. shorter/2) as a library of sub-programs from which the learner can select the ones necessary to compose a target program. The example above is trivial because I've defined a BK predicate that is…

You've just kicked the can down the road; what you've given there cannot solve, for instance, the same problem but with I checked by running with

    positive_example(ordered/3,ordered(S1,S2,S3)):-
        member([S1,S2,S3],[[[a],[b,c],[d,e,f]]
                          ,[[a,b],[c,d],[e,f,g]]
                          ,[[a],[c],[e,f,g,h,i]]
                          ]
              ).

    negative_example(ordered/3,ordered(S1,S2,S3)):-
        member([S1,S2,S3],[[[a],[],[c]]
     ,[[a,b,c],[a,b],[c]]
     ]
              ).
and just got

    ordered([a,b],[c,d],[e,f,g]).
    ordered([a],[c],[e,f,g,h,i]).
    ordered(A,B,C):-shorter(A,B),shorter(B,C).
Heck, I don't think it even got `shorter` right; it gave

    shorter(A,B):-llength(A,C),llength(B,D),s(C,D).
which means len(A) + 1 == len(B), not len(A) So again, it's only trivial because it isn't learning the program, it's learning to put fit the puzzle pieces of the program together, after you wrote the program and then chopped it up.

Re: AI Expert Roadmap

#68
post #67

Earlier quoted context omitted.

Apologies for splitting the thread, but I thought it'd be easier to read this way. This comment addresses your concerns about me writing the program I wanted Louise to generate. I like to see background knowledge ("BK", e.g. shorter/2) as a library of sub-programs from which the learner can select the ones necessary to compose a target program. The example above is trivial because I've defined a BK predicate that is…

You've just kicked the can down the road; what you've given there cannot solve, for instance, the same problem but with I checked by running with positive_example(ordered/3,ordered(S1,S2,S3)):- member([S1,S2,S3],[[[a],[b,c],[d,e,f]] ,[[a,b],[c,d],[e,f,g]] ,[[a],[c],[e,f,g,h,i]] ] ). negative_example(ordered/3,ordered(S1,S2,S3)):- member([S1,S2,S3],[[[a],[],[c]] ,[[a,b,c],[a,b],[c]] ] ). and just got ordered([a,b],[c,…

>> Heck, I don't think it even got `shorter` right; it gave

    shorter(A,B):-llength(A,C),llength(B,D),s(C,D).
>> which means len(A) + 1 == len(B), not len(A) Oops. Haha well spotted @^_^

This is correct for

  ?- list_mil_problem([llength/2,shorter/2,ordered/3]).
  Positive examples
  -----------------
  llength([],0).
  llength([a],s(0)).
  shorter([a],[b,c]).
  shorter([1,2],[3,4,5]).
  ordered([a],[b,c],[d,e,f]).
  
  Negative examples
  -----------------
  :-ordered([a],[b],[c]).
  :-ordered([a,b,c],[a,b],[c]).
  
  Background knowledge
  --------------------
  tail/2:
  tail([A|B],B).
  
  p/2:
  p(s(A),0):-ground_peano(A).
  p(s(A),A).
  p(s(A),s(B)):-ground_peano(A),p(A,B).
  
  s/2:
  s(0,s(A)):-ground_peano(A).
  s(A,s(A)).
  s(s(A),s(B)):-ground_peano(B),s(A,B).
  
  ground_peano/1:
  ground_peano(A):-ground(A),\+is_list(A).
  
  Metarules
  ---------
  abduce metarule 'P(X,Y)'.
  list_rec_func metarule 'P(x,y):- Q(x,z),R(y,u),P(z,u)'.
  list_comp metarule 'P(x,y):- Q(x,z), R(y,u), S(z,u)'.
  triadic_chain metarule 'P(x,z,y):- Q(x,z), R(z,y)'.
  true.


  ?- time(learn_dynamic([llength/2,shorter/2,ordered/3])).
  llength([],0).
  llength(A,B):-tail(A,C),p(B,D),llength(C,D).
  shorter(A,B):-llength(A,C),llength(B,D),s(C,D).
  ordered(A,B,C):-shorter(A,B),shorter(B,C).
  % 29,554 inferences, 0.000 CPU in 0.011 seconds (0% CPU, Infinite Lips)
  true.
Paste that in a file and consult it to test it:

  ?- ordered:ordered([1],[1,2,3],[1,2,3,4,5,6,7,8]).
  true .
Regarding reasoning "that far" Louise can learn the complete successor / predecessor relation (/2) on its own and only from the primitives s(N,s(N)) and p(s(N), N):

  ?- list_mil_problem([s/2,p/2]).
  Positive examples
  -----------------
  s(0,s(A)).
  s(0,s(0)).
  s(s(0),s(s(s(s(0))))).
  p(s(A),0).
  p(s(0),0).
  p(s(s(s(s(0)))),s(0)).
  
  Negative examples
  -----------------
  []
  
  Background knowledge
  --------------------
  s_/2:
  s_(A,s(A)).
  
  p_/2:
  p_(s(A),A).
  
  Metarules
  ---------
  identity metarule 'P(x,y):- Q(x,y)'.
  chain metarule 'P(x,y):- Q(x,z), R(z,y)'.
  true.
  
  ?- learn(s/2).
  s(0,s(A)).
  s(A,B):-s_(A,B).
  s(A,B):-s_(A,C),s(C,B).
  true.
  
  ?- learn(p/2).
  p(s(A),0).
  p(A,B):-p_(A,B).
  p(A,B):-p_(A,C),p(C,B).
  true.
However, in the ordered/3 problem I define p/2 and s/2 by hand so that I can put in ground_peano/1 to avoid infinite recursion when Louise tries to pass two lists to s/2 or p/2 (at that point, their termination conditions never obtain, so they keep recursing).

You can chalk the potential for infinite recursion up as a limitation, you're very welcome- but there are techniques to avoid this and guarantee termination (Knuth-Bendix ordering of the Herbrand base, see ref [1]) which I haven't come round to implementing yet (because they are not necessary given a bit of common sense in defining BK, as above). On the other hand that's actually a feature, in the sense that earlier systems required more specific language bias than the metarules, that would avoid this kind of type-unsafety, but also demanded more expert knowledge from the user. In any case, there's outs.

>> You've just kicked the can down the road; what you've given there cannot solve, for instance, the same problem but with That's a different problem. Off we go:

  ?- list_mil_problem([llength/2,shorter/2,ordered_leq/3]).
  Positive examples
  -----------------
  llength([],0).
  llength([a],s(0)).
  shorter([a],[b,c]).
  shorter([1,2],[3,4,5]).
  ordered_leq([a],[b],[d]).
  ordered_leq([a],[b,c],[d,e,f]).
  ordered_leq([a],[c],[e,f,g,h,i]).
  
  Negative examples
  -----------------
  :-ordered([a,b,c],[a,b],[c]).
  
  Background knowledge
  --------------------
  tail/2:
  tail([A|B],B).
  
  p/2:
  p(s(A),0):-ground_peano(A).
  p(s(A),A).
  p(s(A),s(B)):-ground_peano(A),p(A,B).
  
  s/2:
  s(0,s(A)):-ground_peano(A).
  s(A,s(A)).
  s(s(A),s(B)):-ground_peano(B),s(A,B).
  
  leq/2:
  leq(A,A):-ground_peano(A).
  leq(A,B):-s(A,B).
  
  ground_peano/1:
  ground_peano(A):-ground(A),\+is_list(A).
  
  Metarules
  ---------
  abduce metarule 'P(X,Y)'.
  list_rec_func metarule 'P(x,y):- Q(x,z),R(y,u),P(z,u)'.
  list_comp metarule 'P(x,y):- Q(x,z), R(y,u), S(z,u)'.
  triadic_chain metarule 'P(x,z,y):- Q(x,z), R(z,y)'.
  true.
  
  ?- learn_dynamic([llength/2,shorter/2,ordered_leq/3]).
  llength([],0).
  llength(A,B):-tail(A,C),p(B,D),llength(C,D).
  shorter(A,B):-llength(A,C),llength(B,D),leq(C,D).
  ordered_leq(A,B,C):-shorter(A,B),shorter(B,C).
  true.
Or I could have added an eq(X,X) predicate instead of leq/2.

Note that I didn't declare leq/2 as BK for shorter/2 this time around:

  ?- background_knowledge(shorter/2, BK).
  BK = [s/2].
I didn't even change its examples:

  ?- positive_example(shorter/2, E).
  E = shorter([a], [b, c]) ;
  E = shorter([1, 2], [3, 4, 5]).
It picked it up on its own, because it's the best way to define shorter/2 as a sub-program for ordered_leq/3. Aaaw. Isn't it smart?

Pastebins for the source files:

ordered/3 and ordered_leq/3: https://pastebin.com/6NH0VTKK

s/2 and p/2: https://pastebin.com/0d0YWMfV

You'll let me know if I've done something else dumb, yes? :)

________________________

[1] https://www.doc.ic.ac.uk/~atn/papers/metagol_mlj.pdf

See section 4.1 "Ordering the Herbrand Base".

Edit: You know, it just struck me but when you say that only ML has ever worked out of all AI, that probably means you don't recognise Louise as a machine learning system... because it's not deep learning. That's just another instance of the strange synechdoche I was talking about in my first comment in this thread, where to some peoples' knowledge only deep learning is machine learning because that's all some people know of machine learning. A bit like thinking that chicken is the only thing one can eat because all one has ever had is chicken.

Re: AI Expert Roadmap

#69
post #66

Earlier quoted context omitted.

>> Like, my point is not about whether you can find the odd person trying to solve intelligence with grammars, or what were GOFAI conferences still harbour GOFAI research in the corners, my point is that a) these approaches don't work as a way to actually tackle AI, the problem, b) the vast majority of the field does not take them as seriously as a method of doing so, regardless of other uses, and c) therefore it's n…

Because GOFAI just observably doesn't work. The ideas are brittle, can't generalize and abstract the way is needed, has made very little progress recently (if any) an AI context, and you just _don't see_ anything that would argue otherwise. In contrast, ML methods do work, observably and clearly, and they work in a ridiculously general way, to a degree larger than almost anyone thought (or even thinks) is reasonable…

>> If this doesn't answer your question, perhaps answer the opposite; how do you know that it's wrong?

I know the literature. It's my job.

>> And it's not just my opinion; there's a reason AI conference attendance has shot up a factor of 10 or so in the last few years, why NeurIPS is the leading one (and even historically GOFAI conferences are majority NNs), why the big AI labs with big AI cash are all doing NNs, and why all of a sudden AI is a popular topic outside academia.

That's still an opinion- "it's not just my opinion, everyone says so". A.k.a. "It is known", in Dothraki. And of course it is of no consequence who's spending money on what and who's submitting papers where. The volume of research was never a criterion for its quality. Heed thee well the legend of our Lord Geoff Hinton's years in the academic wilderness and how he emerged victorious with the laws of deep learning in his hands.

I think what you've said so far has convinced me you're expressing a personal opinion that is strongly held without a good reason to do so. You make sweeping statements with great certainty, but you don't really seem to know how you know the things you know, so you end up "knowing" some things that you don't really know. For instance, you claimed that "GOFAI" successes just "aren't there" but I listed a few, like Deep Blue or MYCIN - and you didn't seem to have heard of these before (I'm more surprised about not knowning of Deep Blue than MYCIN).

You also claim that "these approaches are not AI". That's a "No True Scottsman" right there. Except there really is no True Scottsman (i.e. "AI" in the sense you use it)- ask Yoshua Bengio:

Bengio: In terms of how much progress we’ve made in this work over the last two decades: I don’t think we’re anywhere close today to the level of intelligence of a two-year-old child. But maybe we have algorithms that are equivalent to lower animals, for perception. And we’re gradually climbing this ladder in terms of tools that allow an entity to explore its environment.

Spectrum: Will any of these ideas be used in the real world anytime soon?

Bengio: No. This is all very basic research using toy problems. That’s fine, that’s where we’re at. We can debug these ideas, move on to new hypotheses. This is not ready for industry tomorrow morning.

https://spectrum.ieee.org/tech-talk/artificial-intelligence/...

Or, you know, ask any AI researcher :)

Edit: Which "GOFAI" conferences are majority NNs? What period are we talking about?

Re: AI Expert Roadmap

#70
post #67

Earlier quoted context omitted.

You've just kicked the can down the road; what you've given there cannot solve, for instance, the same problem but with I checked by running with positive_example(ordered/3,ordered(S1,S2,S3)):- member([S1,S2,S3],[[[a],[b,c],[d,e,f]] ,[[a,b],[c,d],[e,f,g]] ,[[a],[c],[e,f,g,h,i]] ] ). negative_example(ordered/3,ordered(S1,S2,S3)):- member([S1,S2,S3],[[[a],[],[c]] ,[[a,b,c],[a,b],[c]] ] ). and just got ordered([a,b],[c,…

>> Heck, I don't think it even got `shorter` right; it gave shorter(A,B):-llength(A,C),llength(B,D),s(C,D). >> which means len(A) + 1 == len(B), not len(A) Oops. Haha well spotted @^_^ This is correct for ?- list_mil_problem([llength/2,shorter/2,ordered/3]). Positive examples ----------------- llength([],0). llength([a],s(0)). shorter([a],[b,c]). shorter([1,2],[3,4,5]). ordered([a],[b,c],[d,e,f]). Negative examples -…

I don't think you've understood my point. At every step of the way you've put in more effort than writing the program and specifying the examples. Clearly this is not trivial.

If you're actually inferring programs and not just doing a sort of guided line-by-line generalization of a program you had already written, the only things you would need would be

  Positive examples
  -----------------
  ordered([a],[b,c],[d,e,f]).
  
  Negative examples
  -----------------
  ordered([a],[b],[c]).
  ordered([a,b,c],[a,b],[c]).
I was never in doubt that it was possible to write a different program which would ‘solve’ <=. My criticism was that “it's a different problem”.
Post reply on HN