I hope you can read the below. It took me a while to type it in.
I think maybe I'm the victim of some kind of google A/B testing
today, because for me, my own emails are totally unreadable.
Let me know if you suspect you didn't receive everything I sent ...

--linas

On Tue, Mar 13, 2018 at 12:05 AM, Linas Vepstas <linasveps...@gmail.com> wrote:
> OK, trying again. Maybe the third time it will work right.
>
> -- Linas
>
> On Tue, Mar 13, 2018 at 12:04 AM, Linas Vepstas <linasveps...@gmail.com> 
> wrote:
>> Resending. My email agent is formatting and indenting bizarrely.
>> I don't understand why its 2018 and something as simple as email
>> has ugly and unreliable formating.  Is this what the heat death of
>> the universe looks like?
>>
>> --linas
>>
>> On Mon, Mar 12, 2018 at 11:55 PM, Linas Vepstas <linasveps...@gmail.com> 
>> wrote:
>>> Hi,
>>>
>>> To repeat my earlier remarks, and add a few more:
>>>
>>> On Mon, Mar 12, 2018 at 3:42 PM, Alexey Potapov <pas.a...@gmail.com> wrote:
>>>>
>>>> Yes. But Pattern Matcher compares all pairs of bounding boxes making it
>>>> quadratic.
>>
>>> Yes, there is supposed to be a space-server that is supposed to be optimized
>>> for these kinds of searches. There is one, but its super-minimal, and not 
>>> at all
>>> integrated with the pattern matcher, or anything else for that matter.  
>>> Smart
>>> searches on bounding boxes is completely green-field development, for the
>>> atomspace. We've kind of got very nearly nothing for this.
>>
>>
>>>>> Yes, but keep in mind that the PM is also Turing complete because you can
>>>>> call any function within a query (including the PM itself).
>>>>
>>>>
>>>> This is quite problematic. Basic processes should not execute anything
>>>> dangerous that can take too much time or loop forever and cannot be
>>>> interrupted. Thus, we should either not treat PM as a basic process, or
>>>> should restrict its capabilities (and shift responsibility for evaluating
>>>> arbitrary code to other processes).
>>
>>
>>> This is misleading or a mis-understanding. Its not the correct way to think
>>> about it.  The current pattern matcher is 2 or three or 4 things matched 
>>> into
>>> one:
>>>
>>> A) A generic subgraph isomorphism solver. Since this is an NP complete
>>> problem, it's certainly possible to create pathologically slow queries.
>>>
>>> B) A way of combining subgraphs using a crisp-logic boolean algebra
>>> (actually a Heyting algebra) which we have very vague intentions of
>>> promoting into something probabilistic.  Which, of course, if this was done,
>>> would layer on an additional combinatoric explosion.  It would be fruitful 
>>> to
>>> discuss the wisdom or stupidity of this particular task. Or alternative 
>>> designs
>>> for it.
>>>
>>> C) The ability to perform subgraph isomorphism with so-called "axiom 
>>> schemata".
>>> An "axiom schemata" is roughly an infinite collection of relations, for 
>>> example
>>> "less than" over the integers or rationals or reals.   This means that the 
>>> pattern
>>> matcher is kind-of-like-ish a "satisfiability modulo theories" (SMT) 
>>> solver.  The
>>> API for specifying a theory at this point is rather very simplistic. The 
>>> "virtual link"
>>> is  that API. It says, basically "implement your model theory here, as C++ 
>>> code,
>>> and we will automatically do the satisfiability modulo your theory for you"
>>>
>>> Currently supported theories are the equational theory (EqualLink) and 
>>> numeric
>>> inequaltiy (GreaterThanLink)  An example of a nice-to-have theory would be
>>> linear algebra - done right, this could  solve your space-time bounding box 
>>> problem
>>> for starters, and linear programming type problems if anyone cared about 
>>> that.
>>> Maybe matroids. Whatever. Dunno.  Another nice-to-have would be naive set 
>>> theory
>>> which could help lay a cornerstone of probability done right (TM) but this 
>>> would be
>>> a long and difficult but veryinteresting discussion.
>>>
>>> D) Once a matching subgraph is found, you can launch arbitrary 
>>> C++/scheme/python
>>> code to do something with that subgraph. So that's unbounded.
>>
>>
>>>>> So, the first thing you should do is build a good benchmark tool, then we,
>>>>> you and the rest of opencog community, can supply it with a collection of
>>>>> critical tests.
>>>>
>>>> How do you see such tool?
>>
>>> Unclear. I am interested in a tool that tells me if performance got worse 
>>> after
>>> a particular code change or bug fix.  Some of our fixes accidentally slow 
>>> things
>>> down (by a lot) and no one noticies for months or half a year.
>>
>>>> We have some datasets of varying sizes and
>>>> queries, and simply run PM on these queries and measure the time. What can
>>>> be unified/automated?
>>
>>> Yes!?
>>
>>>> Running all tests and writing log files with
>>>> computation times? Anything else?
>>
>>> I don't care about log files.
>>
>>>> I agree that we need several (many?) tests to be sure that some changes
>>>> didn't affect any types of queries, but isn't it just a script? Or do you
>>>> have something much more complicated in mind?
>>
>>> Take a look at 3D graphics performance: there are two types of benchmark:
>>> triangles per second, lines per second, texture maps per second.
>>
>>> The other type is "for game XYZ, frames per second".
>>
>>> We need both types of benchmarks.  Probably the first more than the second,
>>> because it helps developers more.  The second kind just tells you how 
>>> screwed
>>> up the system is today, without telling you why, or where to look.
>>
>>
>>>> In our case, the query processing time becomes unrealistically large for a
>>>> one-minute video.  If we consider the problem of search in the entire
>>>> episodic memory, it should be even not linear, but logarithmic. Low degree
>>>> polynomial complexity is ok for the task dimensions ~1000, not millions or
>>>> billions...
>>
>>> No clue what you are searching here.  Logarithmic searches mean binary tree,
>>> quad-tree, octree.  The space-time sever is an octree, but its not 
>>> integrated with
>>> the pattern matcher, and has a super-naive API.
>>
>>
>>> We have binary-trees and hash tables for atoms-by-name, by-type, but zero
>>> sophistication for numeric values. See above comments about "satisfiability
>>> modulo theories".
>>
>>
>>> Linas
>>>
>>>
>>> --
>>> cassette tapes - analog TV - film cameras - you
>>
>>
>>
>> --
>> cassette tapes - analog TV - film cameras - you
>
>
>
> --
> cassette tapes - analog TV - film cameras - you



-- 
cassette tapes - analog TV - film cameras - you

-- 
You received this message because you are subscribed to the Google Groups 
"opencog" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to opencog+unsubscr...@googlegroups.com.
To post to this group, send email to opencog@googlegroups.com.
Visit this group at https://groups.google.com/group/opencog.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/opencog/CAHrUA379JFcMy5OwYOcya-rBxYagFuk6OzdMjFYGbt0ch%3D7mzQ%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to