***
For example if generic predicate uses value to verify whether object
is "red", then what it expects from value is pair of doubles (mean,
confidence). If our value returns such pair of doubles it forgets all
computation graph which led to this result. It means that we are not
able to propagate an error back through the calculation graph and
improve next result.

As far as I see such unification is not possible without changing
predicate logic or introducing outer system to calculate predicates
and keep computation graph.
***

It seems analogous to what is done in Haskell to support backtracking
and Prolog-type cut and so forth.  There one does use an "external"
system to manage historical records, but this external system is
hidden behind the monadic interface,

http://okmij.org/ftp/papers/LogicT.pdf

http://hackage.haskell.org/package/logict

This is all using continuations behind the scenes, and related to some
discussions Linas and I had earlier about making Atomspace schema
processing support continuations.   If one is manipulating
continuations rather than just functions, then maintaining and
manipulating the external computation graph is "just" an efficient
shorthand for computing what the continuations denote...

-- Ben


On Sat, May 18, 2019 at 9:00 PM Linas Vepstas <[email protected]> wrote:
>
>
>
> On Fri, May 17, 2019 at 10:23 AM Vitaly Bogdanov <[email protected]> wrote:
>>
>> Hi Linas,
>>
>>> The intended design is that there is a well-known Value that is attached to 
>>> red-cube.  That Value is knows how to obtain the correct 3D location from 
>>> the SpaceServer (or some other server, e.g. your server). That Value ONLY 
>>> fetches the location when it is asked for it, and ONLY THEN.   This is the 
>>> code that Misgana wrote. Twice. You should NEVER directly shove 3D 
>>> positions into the atomspace!!
>>
>>
>> Am I right that implementation of this design is still not merged?
>
>
> It was merged half-a-year-ago, a year-ago.
>
>> In current atomspace/opencog code I can find OctoMapValue only which 
>> inherits FloatValue (and keeps vector of doubles in it) + has update() 
>> method which updates the value using OctoMapNode. So value should be updated 
>> before using it.
>
>
> Yes, but I think you misunderstand how it works. It is updated only when the 
> value is asked for. If no one asks for the value, it is never updated.  This 
> design allows the current value to be managed externally, in some other 
> component, and it is then brought into the atomspace "on demand", only when 
> some user of the atomspace tries to look at the value.   Think of it as a 
> "smart value" -- when the user asks the value "what number are you holding?", 
> the value isn't holding anything; instead, it goes to the external server, 
> gets the latest, and returns that.
>
> In this case, OctoMapValue never changes, until you ask for it's current 
> value; then it goes to the space-server, gets the current value, and returns 
> that.
>
> The examples directory contains a much simpler example: "RandomValue" -- 
> which uses `random()` as the "external system".  You're supposed to 
> cut-n-paste that code, replace `random()` by your server, and that's it -- 
> done.  That's all that  OctoMapValue is - just a small, simple wrapper.
>
> Also - right now, OctoMapValue only holds a 3D position, I think. We need an 
> API for size, width, height, orientation.  Maybe not all of that, right away, 
> but at least a basic-size API.  So that natural language expressions like 
> "See that small thing on the table? Point your finger at it" work.
>
> Having these other attributes does not change the overall design. The Values 
> don't update until they are accessed.
>
>>
>>>
>>> That way, we can have a common, uniform API for all visual-processing and 
>>> 3D spatial reasoning systems.  (for example, some 3D spatial reasoning 
>>> might be done on imaginary, pretend objects. The sizes, colors, locations 
>>> of those objects will not come from your vision server; they will come in 
>>> through some other subsystem.  However, the API will be the same.
>>>
>>> I should be able to tell the robot "Imagine that there is a six-foot red 
>>> cube directly in front of Joel.  Would Joel still be visible?" and get the 
>>> right answer to that. When the robot imagines this, it would not use the 
>>> space-server, or your server, or the ROS-SLAM code for that imagination. 
>>> However, since the access style/access API is effectively the same, it can 
>>> still perform that spatial reasoning and get correct answers.
>>
>>
>> Yes, I think I see your point. We could wrap NN by value and return its 
>> results on demand to be analyzed by generic predicates. Such approach allows 
>> getting results from visual features on demand. But back propagation seems 
>> to not work with this approach.
>
>
> Yes, not everything can work with generic predicates. But it will work with 
> two important cases: traditional robotics sensory subsystems, and with 
> imagined (virtual?) worlds e.g. from a blue-print, engineering drawing, 
> math-textbook figure or similar abstract system that provides spatial info, 
> without being "visual" in the usual sense.
>>
>>
>> For example if generic predicate uses value to verify whether object is 
>> "red", then what it expects from value is pair of doubles (mean, 
>> confidence). If our value returns such pair of doubles it forgets all 
>> computation graph which led to this result. It means that we are not able to 
>> propagate an error back through the calculation graph and improve next 
>> result.
>
>
> ? I don't understand. What do you need to propagate back?
>
>>
>> As far as I see such unification is not possible without changing predicate 
>> logic or introducing outer system to calculate predicates and keep 
>> computation graph.
>
>
> Yes, it's fine to *also* have externally-calculated predicates, and that is 
> what you have, more-or-less.  Having generic predicates that work with the 
> space server would also be nice to have (and then, to have the space server 
> hooked up to ROS, which it isn't, right now)
>
> Oh, and finally, of course, to hook up the predicates (generic, or external) 
> to language (ghost). For this last step, we need the ghost maintainers -- 
> Amen, Man Hin, others, to look at think about and comment about what 
> predicates they could actually use and support easily and quickly.   It's 
> easy to make a list of prepositional and comparative phrases -- there are 
> about 100 of them (above, below, behind, next-to, bigger-then, taller, .. 
> etc) and we should start with some reasonable subset of these, hook them into 
> the chatbot, and get things like question-answering going.  As far as I know, 
> no one has begun any of this work yet, right?
>
> -- Linas
>
>
> --
> 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 [email protected].
> To post to this group, send email to [email protected].
> 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/CAHrUA34Jt4H16rGeqyfdwF2kHRX8nSme0zk7im8tuR%2BBpbMnsQ%40mail.gmail.com.
> For more options, visit https://groups.google.com/d/optout.



-- 
Ben Goertzel, PhD
http://goertzel.org

"Listen: This world is the lunatic's sphere,  /  Don't always agree
it's real.  /  Even with my feet upon it / And the postman knowing my
door / My address is somewhere else." -- Hafiz

-- 
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 [email protected].
To post to this group, send email to [email protected].
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/CACYTDBf5by0X3rpiPu1zy0O-GOhm07uLOOH07Lnp6F%3DXw31t%3DQ%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to