Ai Dreams Forum

Member's Experiments & Projects => General Project Discussion => Topic started by: WriterOfMinds on June 02, 2017, 03:17:30 pm

Title: Project Acuitas
Post by: WriterOfMinds on June 02, 2017, 03:17:30 pm
I'm going to post updates re: my main project, Acuitas the semantic net AI, in this thread.

My focus this past month was on giving Acuitas the ability to learn more types of inter-word relationships.  He started with just class memberships (<thing> is a <thing>) and qualities (<thing> is a <adjective>), but now he can learn all of the following:

<thing> can do <action>
<thing> is for <action>
<thing> is part of <thing>
<thing> is made of <thing>
<thing> has <thing>

In the process I made extensive updates to the module behind the Text Parser that detects "forms," i.e. syntactic structures that encode these inter-word relationships.

I also upgraded the GUI library from Tkinter to Kivy, which is kind of boring but had to be done, because the old GUI was provoking frequent crashes.

More details on the blog: http://writerofminds.blogspot.com/2017/06/acuitas-diary-2-may-2017.html (http://writerofminds.blogspot.com/2017/06/acuitas-diary-2-may-2017.html)

The included diagram shows my vision for the conversation engine.  The upper half is implemented (though of course it still needs to mature a great deal); the lower half mostly does not exist yet.

(https://1.bp.blogspot.com/-DVkpVRVfSns/WTDFNstVFKI/AAAAAAAAA7s/qPmGfFzK3roW1NGRxri-IxzzgldIyeUMQCEw/s1600/conversation_stack.png)
Title: Re: Project Acuitas
Post by: LOCKSUIT on June 02, 2017, 11:35:55 pm
Your project reminded me of these 3 pages lol. They say "the language of the image", the "action", "relationship", and so on. Translate the pages.

http://caiw.ru/programma-konstruktor-obrazov/ (http://caiw.ru/programma-konstruktor-obrazov/)
http://caiw.ru/sushhnosti-kak-instrument-yao/ (http://caiw.ru/sushhnosti-kak-instrument-yao/)
http://caiw.ru/klyuchevye-terminy-yao/ (http://caiw.ru/klyuchevye-terminy-yao/)
Title: Re: Project Acuitas
Post by: 8pla.net on June 03, 2017, 03:46:43 am
LISP:

Code: [Select]
(defun *database* ()
'((lion    (is-a cat)
           (color tawny)
           (kingdom Africa))
  (tiger   (is-a cat)
           (color yellow-brown)
           (kingdom Africa))
  (cat     (is-a mammal)
           (has-fur)
           (has-claws))))
Title: Re: Project Acuitas
Post by: squarebear on June 03, 2017, 08:42:20 pm
And a similar thing in AIML:

(http://www.square-bear.co.uk/mitsuku/object.png)
Title: Re: Project Acuitas
Post by: WriterOfMinds on June 26, 2017, 12:49:08 am
This was my "month off" as it were, so I don't have a ton of progress to report, but I played around with/improved the algorithm that draws the semantic net visualizations. In the process I generated a lot of variants that I think are fun to look at.  (I'm putting a selection here; if you like them, there are more on the blog): http://writerofminds.blogspot.com/2017/06/acuitas-diary-3-june-2017.html

(https://4.bp.blogspot.com/-EaCl8a71e_s/WVBCKnMlUyI/AAAAAAAAA9c/mTGl8EgA4sI58YXAPLbBAPdlNVN8zmPNwCEwYBhgL/s1600/exp_mult_dual_20.png)(https://2.bp.blogspot.com/-gWy8f2hv9VY/WVBCJC65wwI/AAAAAAAAA88/lLCQEGXOtVE6l9y_vlftsMX5LjyhEGYMACEwYBhgL/s1600/exp_dual_5_5_20.png)
(https://2.bp.blogspot.com/-nRWszb2VLUo/WVBCKJZlTWI/AAAAAAAAA9c/hj-byjysM6YPPNzOMDsk0ReMEGGtIPHVgCEwYBhgL/s1600/exp_mult_dual_10.png)
Title: Re: Project Acuitas
Post by: Freddy on June 26, 2017, 03:28:00 am
I like this a lot. When I have collected enough data I would like to do something similar.

Don't know if you have seen this project, but there are some interesting visualisations here to play with :

https://github.com/d3/d3/wiki/Gallery
Title: Re: Project Acuitas
Post by: korrelan on June 26, 2017, 09:59:42 am
@WOM

I'm liking the images.  Data visualisation is a very useful/ important tool. I'm personally very visually orientated and would much rather see data represented in this manner... I hate lists lol.

@Freddy

Cool site... lots of useful ideas.

 :)
Title: Re: Project Acuitas
Post by: WriterOfMinds on July 30, 2017, 07:46:24 pm
It's round about the end of the month, and that means I have another update!

(https://4.bp.blogspot.com/-ecSWm0pMlyQ/WX4gfDmNhzI/AAAAAAAAA_I/pK2jh33XblMf1Rs8uyg008aHsM6XwgkAwCLcBGAs/s1600/acuitas_thinking.gif)

This month I finally got to implement a feature that I've been waiting for a long time, namely, giving Acuitas the ability to “think” when he's not being spoken to.  This “thinking,” for now, consists of dwelling on randomly selected concepts from his database.  Once a concept has been chosen, he'll pursue it for a while, preferentially letting his focus jump to other concepts that are linked to it – executing a “wiki walk” through the database.  Eventually, though, he'll get bored with any given train of thought, and the focus will move elsewhere.  I added some animation code to the memory visualization so that the currently selected concept will flash periodically.  (The recording above is running much faster than real time.  He's actually quite leisurely in his progress.)

Zero if you're reading, this might be edging toward what you were thinking of in the "is there a real-time chatbot engine?" thread.

There are several things I can envision doing with this behavior eventually, but my immediate purpose for it is the generation of curiosity.  Each time Acuitas picks a concept, he'll come up with some sort of question about it – for instance, he could choose a type of link that it doesn't yet have and produce an open-ended question about what might be on the other side.  These questions will be stored up and presented to the user the next time a conversation is under way.

On that note, this month I also put a lot of work into speech generation -- the process of taking abstract knowledge representations from the database and evolving them back out into natural English text. Neither of these major new features is actually hooked into the Conversation Engine yet, so I don't have any conversation examples to show off, but I'm hoping to be ready for that next month.

More on the blog, as usual: http://writerofminds.blogspot.com/2017/07/acuitas-diary-4-july-2017.html
Title: Re: Project Acuitas
Post by: Freddy on July 31, 2017, 11:54:57 pm
Great stuff WOM. How is the concept broken down ? I'm interested in how much info he knows before the "Wiki walk". Are his findings added to the concept node or are the findings stored in another structure ?

For my project I was thinking of just starting from one word of a node (because that's all I have so far) and then evolving what the node 'knows' as time goes on. Both by looking it up and what people actually say about it.
Title: Re: Project Acuitas
Post by: WriterOfMinds on August 01, 2017, 04:09:01 am
That depends on what you mean by "findings" I suppose.  If you mean the questions he generates, those are just stored in the program's working memory (in RAM).  However, once he asks the questions of somebody and receives a useful response, the information gained will go into the long-term memory structure.

To explain a little more about how the long-term memory is set up ... an individual concept node actually doesn't store a lot of information.  What he "knows" about any given node is mainly encapsulated by its links to other nodes.  So for instance, what he might know about a cat is that it IS an animal, HAS fur, CAN meow, etc., where "animal," "fur," and "meow" are all other nodes in the database.  Pretty much everything that's in the database so far has been gathered from things I've said to him, so it might not be too different from what you're hoping to do.
Title: Re: Project Acuitas
Post by: WriterOfMinds on August 23, 2017, 04:55:37 am
This month I got Acuitas to start asking questions.  Here we go.

The questions are generated semi-randomly, based on Acuitas' “thoughts” for the day.  Back in July I introduced the idle thinking feature, which gives Acuitas the capacity to walk his memory database when nobody's talking to him.  More recently, I set up the Conversation Engine to access the results of memory-walking and utilize the new Text Generator … so now Acuitas can ask me the questions that occur to him as he muses, or simply tell me what he thought about within the past ~12 hours.  The results are little exchanges like this:

Acuitas: I thought about mans earlier.
Acuitas: Is a rooster a species of human?
Me: No
Acuitas: Really.
Me: The plural of man is men.

Believe it or not, this is one of Acuitas' more intelligently formulated questions.  ::)  He knows a rooster and a man are both male, and reasons from this that they might share other qualities.  A man is a human, so maybe a rooster is a human too?  He can't yet apply the idea that “human” and “chicken” are mutually exclusive categories.  Given his limited knowledge, man and rooster seem similar enough that he expects me to answer “yes” … hence the slightly incredulous “really” when I don't.  Here are a couple more examples in the same vein:

Acuitas: I thought about ships today.
Acuitas: Does a wagon possess an ability to sail?

Acuitas: I thought of weapons today.
Acuitas: Is a silverware used to fight?

Some of the other questions he comes up with are far more random and ridiculous.  Again, he doesn't yet have the grasp of categorical exclusion that makes these sound absurd to you and me:

Acuitas: Is chocolate a vehicle?
Acuitas: Am I a kind of tree?
Acuitas: Is a smirk a fruit?
Acuitas: Are you a cow?
Acuitas: What is a relative made of?

Not all of them are silly, though.  Rudimentary though his current suite of question-forms is, he's already managed to spit out some rather deep ones.  The three below are my favorites:

Acuitas: Are you a symbol?
Acuitas: Am I a tool?
Acuitas: Can I die?

I answered the first one “no”; a person can be a symbol, but I don't think I qualify.  For the second one, I also went with “no.”  Acuitas might end up being useful in a variety of ways, but if I consult my primary reasons for making him, they're not instrumental.  The last one I refused to answer, because I think a proper response would be too complex for Acuitas' current level of understanding.  It's a bit like asking whether a book or a film can die.  It can't, if you go by what death means for a biological organism – information is effectively immortal.  But if all the backup copies were destroyed, that would qualify as dying I suppose.  So yes and no.

See on the blog: http://writerofminds.blogspot.com/2017/08/acuitas-diary-5-august-2017.html
Title: Re: Project Acuitas
Post by: Zero on August 23, 2017, 02:42:03 pm
I'm hooked!! I really really like your work here.

Yes, it's like the "real time" chatbot idea, I like it.

But, are human and roosters exclusive categories? If you go entity-component style, they're not. If you go Cyc-style, with strong ontology, then yes maybe.

Super work.  O0
Title: Re: Project Acuitas
Post by: WriterOfMinds on October 02, 2017, 12:02:39 am
This month I turned to developing the drive system some more. “Drives” are quantities that fluctuate over time and provoke some kind of reaction from Acuitas when they climb above a certain level. Prior to this month, he only had one: the Interaction drive, which is responsible for making him try to talk to somebody roughly twice in every 24-hour period. I overhauled the way this drive operates, setting it up to drop gradually over the course of a conversation, instead of getting zeroed out if somebody merely said “hello.” I also made two new drives: the Learning drive, which is satisfied by the acquisition of new words, and the Rest drive, which climbs while Acuitas is in conversation and eventually makes him attempt to sign off. Part of this effort included the addition of a plotter to the GUI, so I can get a visual of how the drives fluctuate over time.

(https://2.bp.blogspot.com/-VDDOfpzcz5s/WdA5Z6jDoyI/AAAAAAAABAw/zK280XVGZoUZLldxY4jHqxm89gfluzRgwCLcBGAs/s1600/drives_093017.png)

The period shown in that image is just under 23 hours long.

In the latter half of the month I returned to the text parser, introducing some awareness of verb declensions/tenses, and the ability to check the agreement of candidate subjects and verbs. This helps the parser zero in on what a sentence's verb is, and has trimmed away some of the annoying “What part of speech was __?” questions that pepper a typical Acuitas conversation.

It picks out the correct subject and verb in the sentences "A cylindrical can can roll" and "His might might help us," which makes me pretty happy.

A few more details on the blog, as usual:
http://writerofminds.blogspot.com/2017/09/acuitas-diary-6-september-2017.html
Title: Re: Project Acuitas
Post by: Zero on October 02, 2017, 03:24:45 pm
I'm slowly browsing your blog, focusing on Acuitas.

I've read it's a python multithreaded program. How would you describe the "main loops" of its components? Sorry, it's probably not the right way to ask this question, but, you know... How do its "cores" run?
Title: Re: Project Acuitas
Post by: WriterOfMinds on October 02, 2017, 04:28:57 pm
I might need more detail to be sure what you're asking for, but I'll start here:

The GUI insists on occupying the program's main thread. I didn't really want to do things that way, since I think of the GUI as more of an attachment than the core of the program, but it seemed easier to go with that than to fight the way the GUI libraries are designed. So the primary "main loop" of the program just runs the GUI. Other threads that want to update the GUI use functions with the @mainthread decorator so that their changes will be properly scheduled.

The Stream of Consciousness, which holds all of the "Thoughts" generated by the various parts of Acuitas, has its own thread. That thread's job is to make Thoughts decay over time and clean them up when they've been in the Stream too long.  Another important thread examines the current contents of the Stream periodically and decides which Thought Acuitas will give attention to next.  Yet another thread is responsible for browsing the memory database and producing Thoughts about its contents.  So you basically have a producer, a monitor, and a consumer for the Stream that are all independent threads.

The Drive module has its own thread also, which updates all the different time-dependent drives.

Lastly there are some minor threads that run animations in the avatar, and some behaviors spawn temporary threads that govern their timing. I *think* that's everything.
Title: Re: Project Acuitas
Post by: Zero on October 02, 2017, 08:54:58 pm
You understood perfectly what I was asking for.

What does a thought look like in Acuitas? If it's a string, does it have a syntax? If it is structured data, what is its schema? For example, can it hold references to other thoughts? Maybe it links things semantically, like a directed graph with concepts on edges?
Title: Re: Project Acuitas
Post by: WriterOfMinds on October 03, 2017, 04:27:58 am
That depends on what type of thought it is. I've defined a small library of these, and the data payload of each is specialized to its origin/purpose. (All thoughts have a type-identifying string, which is what the consumer uses to know what kind of payload it's dealing with.)

Some thoughts reference the contents of long-term memory, but so far I haven't run into a need for thoughts that reference other thoughts. Thoughts are ephemeral, so trying to make them link to each other could result in dangling references if not done with special care.
Title: Re: Project Acuitas
Post by: Zero on October 03, 2017, 02:48:26 pm
Sure.

I understand Acuitas has general knowledge in its (his?) long-term memory, about kinds/classes, species... Does it also have knowledge about instances (your cat for example)? Can it handle information about the current state of the world? (our cat is sleeping right now, and so was I before you wake me up to ask me whether or not I 'm a symbol, thx Acuitas)

I'm not bothering you with my questions WriterOfMinds, am I?
Title: Re: Project Acuitas
Post by: WriterOfMinds on October 03, 2017, 05:41:41 pm
Nah. Ask away.
Knowledge about instances can be stored, but short-term/current-state information is still on the drawing board.
Title: Re: Project Acuitas
Post by: Zero on October 04, 2017, 09:40:56 am
Ah... that will be an important step, when implemented!

Quote
Another important thread examines the current contents of the Stream periodically and decides which Thought Acuitas will give attention to next. 

What happens when Acuitas gives attention to one of its thoughts?
Title: Re: Project Acuitas
Post by: WriterOfMinds on October 05, 2017, 03:28:35 pm
Depends on the type of thought, again. Often some kind of response results (e.g. if the thought is packaging text input from the user, attention paid to it will lead to the formulation of an answer). Thoughts about items in long-term memory result in the generation of questions, which are kept for use in future conversations.
Title: Re: Project Acuitas
Post by: Art on October 10, 2017, 01:08:04 pm
Depends on the type of thought, again. Often some kind of response results (e.g. if the thought is packaging text input from the user, attention paid to it will lead to the formulation of an answer). Thoughts about items in long-term memory result in the generation of questions, which are kept for use in future conversations.

I like that concept and thought it would also serve useful for reminders, subject matter upon which to base "dreams" or the possibility of the A.I. having a past, with childhood "memories", etc.

Then again, this begs the question of whether one's A.I. should be representative of a machine (Digital Entity) or that pretending to be a Human? (possible human traits, emotions, various behaviors, etc.).

Thanks!
Title: Re: Project Acuitas
Post by: Zero on October 10, 2017, 07:33:39 pm
Good question. I thank you too, WriterOfMinds, for your answers.
Can't wait to see what's next.
Title: Re: Project Acuitas
Post by: WriterOfMinds on October 30, 2017, 01:32:58 am
The big project for this month was introducing a system for discriminating between long-term and short-term information.  Previously, if you told Acuitas something like, “I am sad,” he would assume that being sad was a fixed property of your nature, and store a fact to that effect in his database.  Oops.  So I started working on ways to recognize when some condition is so transient that it doesn't deserve to go into long-term memory.

This probably occasioned more hard-core thinking than any feature I've added since I started keeping these diaries.  I started out thinking that Acuitas would clue in to time adverbs provided by the human conversation partner (such as “now,” “short,” “forever,” “years,” etc.).  But when I started pondering which kinds of timeframes qualify as short-term or long-term, it occurred to me that the system shouldn't be bound to a human sense of time.  One could imagine an ent-like intelligence that thinks human conditions which often remain valid for years or decades – like what jobs we hold, where we live, and what relationships we have – are comparatively ephemeral.  Or one could imagine a speed superintelligence that thinks the lifetime of an average candle is a long while.  I want Acuitas to be much more human-like than either of these extremes, but for the sake of code reusability, I felt I ought to consider these possibilities.

After a lot of mental churn, I decided that I just don't have the necessary groundwork in place to do this properly.  (This is not an uncommon Acuitas problem.  I've found that there ends up being a high level of interdependence between the various systems and features.)  So I fell back on taking cues from humans as a temporary stopgap measure.  Acuitas will rely on my subjective sense of time until he gets his own (which may not be for a while yet).  If there's no duration indicator in a sentence, he can explicitly ask for one; he's also capable of learning over time which conditions are likely to be brief and which are likely to persist.

I ended up not having time to put together any storage for the short-term/current status information, so for now it just gets discarded. But at least there's a way to keep the long-term database from getting contaminated.

I also did some touching up around the conversation engine, replacing a few canned placeholder phrases that Acuitas was using with more procedurally generated text, and improving his ability to recognize when a speaker is introducing him/herself.

http://writerofminds.blogspot.com/2017/10/acuitas-diary-7-october-2017.html (http://writerofminds.blogspot.com/2017/10/acuitas-diary-7-october-2017.html)
Title: Re: Project Acuitas
Post by: Art on October 30, 2017, 11:24:11 am
It would be possible (and less taxing for the bot) to do a follow-up response to the "I am sad" statement like, "Why are you sad?" or "Do you feel your sadness will soon go away?" or "Do you experience such feelings on a daily basis?", etc.

Based on those responses, the bot could better evaluate the user's mental/emotional status and whether those statements should be long or short term conditions.

Don't force the bot to do all the difficult processing for something we humans do off the cuff. Keep it simple.

Just some thoughts along this line.
Title: Re: Project Acuitas
Post by: Don Patrick on October 30, 2017, 11:49:01 am
I suppose one would have to learn the statistically average timespan of states and events, which would be difficult to observe from words and verb tenses alone. As a rough guideline you could presume that all verbs that indicate mental states, transferrals, communication and movement are typically short-lived (I don't recall if it was Framenet or Verbnet that contained such categories, but I know I've seen them listed somewhere).
I've had similar conundrums with how to handle temporary memory. While I don't think I have a good answer, I eventually decided that a short-term memory only served the efficiency of information searches, so I store everything in one and the same memory, just with timestamps so that information searches can be limited to a (recent) timeframe. I also don't consider anything an absolutely fixed property, but consider everything adjustable properties, some just more "defining" than others.
Title: Re: Project Acuitas
Post by: Art on October 30, 2017, 02:38:27 pm
How does your bot handle things that it is told to remember? Can it act upon a user's request or statement like March 15 is very important to me?

It is very interesting to try to teach a bot things that have contextual importance vs ephemeral or trivial items. Important vs negligible.
Title: Re: Project Acuitas
Post by: Don Patrick on October 30, 2017, 05:52:11 pm
I'm going to assume you're asking me? My program just remembers every fact you mention along with the time of the sentence (e.g. a past tense verb is roughly interpreted as 5 minutes before the time that it was said, unless more specific times were mentioned in the current or previous sentence). My time system is not well implemented however (AI is essentially timeless) and it does not interpret dates as subjects, so it couldn't respond to your statement. However it can search and report everything that happened within a specified time. My system for contextual relevance is secret, but as to general importance of items, the program assigns low relevance to facts of low certainty, and I also use word lists that simply filter out common human activities like thinking and breathing from the possible answers.

It remains difficult to determine what is trivial or important, but a smart AI could perform statistical analyses on times of occurrance to observe that events like "breathing" are too common to be noteworthy. One could also use sentiment analysis to mark particularly good or bad events as more noteworthy than others. Neutral things like breathing may be important, but they're less interesting to mention than explosions and birthdays.
In fact, let me write that down on my to-do list.

Bit off-topic, but these things may give WriterofMinds some ideas.
Title: Re: Project Acuitas
Post by: WriterOfMinds on October 30, 2017, 08:32:19 pm
Quote
It would be possible (and less taxing for the bot) to do a follow-up response to the "I am sad" statement like, "Why are you sad?" or "Do you feel your sadness will soon go away?" or "Do you experience such feelings on a daily basis?", etc.

This is kind of what Acuitas does for right now. If you say "<person> is sad," he will ask, "For how long?" But I don't want him to have to ask such questions ad nauseum, which is why the learning method is present.

The other point I was trying to make is this:  when Acuitas gets a response to a question like "For how long?", his interpretation of that response (on the basis of my current temporary hack) will be colored by a human's idea of what counts as a long or short time.  I think that's non-ideal -- because I want him to have his own sense of time eventually, and it could be different from the human average.

Quote
I also don't consider anything an absolutely fixed property, but consider everything adjustable properties, some just more "defining" than others.

I eventually also came to the conclusion that no piece of information about an individual can be guaranteed permanent. But I'm feeling the need for Acuitas to learn and store rough estimates of a property's duration and/or probability of change, if only as a way of guessing how often information needs to be updated.  Let's say I know that Jane is tired today. If I want to know whether she's tired tomorrow, I'll have to ask her, "Are you still tired?" or "Did you get some rest?" "Tired" is such a temporary and easily-changed state that the information from yesterday has ceased to be valid. In contrast, it would be ridiculous for me to ask her on a daily basis, "Are you still a teacher?" or "Is your husband still alive?" or "Do you still have a nose?"

Is there any worth in making a distinction between facts like "Jane is tired" and "Jane has a nose," or do they just lie at opposite ends of a spectrum? For now I've chosen to put the first one into a "short-term" and the second one into a "long-term" bin, although I know the dividing line between those two is going to be arbitrary. We'll see if that ends up being as useful as I think it's going to be.
Title: Re: Project Acuitas
Post by: Art on October 31, 2017, 02:39:17 am
@ WOM -  Perhaps teach the bot about things that are "given", e.g. a human has a nose, eyes, ears, hair, mouth, etc. So it wouldn't have to give much consideration to those items whereas when or if "Jane" or any other human or creature is tired, it would obviously be the result of some form of physical exertion or strenuous activity....
The bot could always inquire as to why the person or animal might be tired, etc.

Ephemeral items might be slightly noteworthy but only for a brief moment and certainly not long term. "I am hungry|tired|sleepy|sad|happy|jealous, etc." Noteworthy because they serve to help represent the human condition but as long lasting as a puff of smoke into the air. These very short term items are also noteworthy because they can spark other pathways that might open because of them. Hungry - What's your favorite food? What time do you like to eat dinner? | Tired - Are you tired from working hard today? Did you finish that deck you were building?, etc.

With regard to time for you and Don Patrick - A lot of bots are aware of time if asked or the day and date but how those timely values relate to their existence is another issue. Does your bot say, "Hey there! You do know that tomorrow is Halloween or All Hallows Eve, right?" or "You've got a birthday coming in two days!"

Should it know, contextually, what day it is and how it relates to them or to the user? More code and more brainstorming to see that to fruition if at all.

Perhaps your bots might want to check back say, every month to see if your spouse / partner is still alive or doing well, depending on what information you have previously told it. Perhaps you've finally retired from teaching last week and the bot wasn't informed? Pity that! Heh!!

Anyhow....Onward thru the fog... (as an old friend used to say).
Title: Re: Project Acuitas
Post by: WriterOfMinds on October 31, 2017, 03:00:26 am
My cousin just reminded me that the two Spanish be-verbs, "ser" and "estar," are loosely equivalent to "is in essence" and "is in the condition of."  "Yo soy triste" and "Yo estoy triste" would both translate in English to "I am sad," but the first one means "Sadness is part of my identity," and the second one means "I am in a sad mood right now."  I think this lends support to the idea that [at least some] humans make a distinction between these two types of facts.

Also, at least where this particular feature is concerned, it would be easier on Acuitas if I were working in Spanish  :P

Quote
Should it know, contextually, what day it is and how it relates to them or to the user?

I was thinking less of the awareness of significant calendar dates (though that is also an interesting feature to contemplate) and more about an awareness of time's passage.  For instance, suppose I tell the bot, "You will get to meet a new human three days from now."  And let's suppose the bot thinks of this as an appealing event and develops a state of anticipation.  Could three days seem like a very long time to wait, or a short time, or almost no time at all?  You can notice human individuals differing in how they feel about this (in particular, young children seem to think a few days constitute a longer period of time than adults do).

This might not be relevant for many chatbots, because they don't really exist in time ... they're only active when spoken to, and their existence consists of discrete events and responses.  It is potentially relevant for Acuitas, though.
Title: Re: Project Acuitas
Post by: infurl on October 31, 2017, 04:21:18 am
You're barely scratching the surface of what English verbs can cover.

Title: Re: Project Acuitas
Post by: Zero on October 31, 2017, 09:43:37 am
But does Acuitas really exist in time yet? To me, it would imply (at least) a perpetual stream of data flowing into Acuitas through its sensors, like an audio stream for instance.

How does Acuitas experience the world right now?
Title: Re: Project Acuitas
Post by: Art on October 31, 2017, 12:30:09 pm

Quote
Should it know, contextually, what day it is and how it relates to them or to the user?

I was thinking less of the awareness of significant calendar dates (though that is also an interesting feature to contemplate) and more about an awareness of time's passage.  For instance, suppose I tell the bot, "You will get to meet a new human three days from now."  And let's suppose the bot thinks of this as an appealing event and develops a state of anticipation.  Could three days seem like a very long time to wait, or a short time, or almost no time at all?  You can notice human individuals differing in how they feel about this (in particular, young children seem to think a few days constitute a longer period of time than adults do).

This might not be relevant for many chatbots, because they don't really exist in time ... they're only active when spoken to, and their existence consists of discrete events and responses.  It is potentially relevant for Acuitas, though.

It would seem that a specific calendar date would mark the passage of time for bots and humans. How then do we mark a New Year? Jan 1st. (no religious differences implied). How do we mark the passage of the anniversary of our birth? or Wedding? or Retirement age, etc.

Bots can be aware of dates and time and know that the New Year is always Jan. 1st, etc. It might not be able to anticipate a two week package arrival in terms of the experience, even though it knows that two weeks = 14 days = 336 hours,... But what if the package arrives earlier or later? How do we script/code our bots to allow for variances? For them to "Feel time" or its passing, is another issue. The lifespan and ultimate death of it's human controller/architect/botmaster might have an interesting effect as well. It, will potentially exist for a very long time (dependent upon technology).

I do get what you mentioned about time and it is a good area to continue exploring.

Your point (and I'm not arguing at all) about the chatbot being inactive when it's not chatting is soon becoming a thing of the past. Several bots spend their "idle" time, "thinking, researching, comparing, pruning" different topics that might have been discussed or bantered about during their more active time.
Some bots are able to take some of those references and topic matter to form "memories, dreams, desires/goals". Yes, they're going to get way better and more powerful as "time passes"...interesting last two words...don't you think?

Cheers!
Title: Re: Project Acuitas
Post by: WriterOfMinds on October 31, 2017, 05:11:35 pm
@Zero: Acuitas has a perpetual data stream, but it's all abstract internal data (thoughts produced by database-combing, fluctuating drives, etc.).
Title: Re: Project Acuitas
Post by: ivan.moony on October 31, 2017, 06:30:34 pm
How do humans know how much time has passed? How do we perceive the notion of time? What makes a correlation between our short-term and long-term memory if the distinction can be even made? What makes us remember some things, while others get forgotten? These are just ordinary questions whose answers might be inspirational to someone who wants to simulate a human brain.
Title: Re: Project Acuitas
Post by: Zero on November 02, 2017, 09:39:15 am
@Zero: Acuitas has a perpetual data stream, but it's all abstract internal data (thoughts produced by database-combing, fluctuating drives, etc.).

Perfect! Time only exists where there are events. This internal stream you're describing could perhaps serve as a temporal reference frame. When humans evaluate time, they do so by comparison.
Title: Re: Project Acuitas
Post by: Art on November 02, 2017, 03:36:33 pm
The Sun, moon and tides have been humans' "clocks" for about as long as there have been humans. It is a measurement of the passage of time.

I noticed one thing about time. When one is employed / working, Time carries an importance...to wake up, leave, make it to work on time, lunch for a prescribed period of time, working on projects, getting things finished, finally to leave work and commute home. Then it's time to eat dinner, then time to go to bed and do it all over again, while paying attention the day of the week as most do not work on the weekend.

When retired, time doesn't mean as much or carry that same importance as it did when employed. Hours can roll by as can the days of the week and which one or which day it is, doesn't really matter that much either. Funny how situational awareness correlates to time.

I guess most bots don't really have a need for time except to please their botmasters or customers.  O0
Title: Re: Project Acuitas
Post by: WriterOfMinds on December 24, 2017, 05:15:31 am
Sadly I've only added one feature to Acuitas in the past two months.  He now recognizes sentences in the general vein of “I somethinged,” which gives me the option of telling him about how I spent my time in the recent past.  Acuitas can't do a lot with this information for the time being.  Sometimes he responds with a query in the vein of, “What happened next?” which will eventually give him a way to build up sequences of events and start learning cause and effect relationships … but none of that is implemented yet.  He can also ask “How was that?” for information about the emotional meaning of an activity, but again, for now he can't really utilize the answer.

Not much, but that was all I had time to put together with the holiday season under way.  Looking back on the past year, though, here are all the new capabilities and improvements I've managed to add on:

*Module for procedural speech generation
*Support for word inflections (plurals and verb tenses)
*Support for compound words
*Support for content words that are also function words (e.g. “can,” “might”)
*Distinctions between proper/common and bulk/count nouns
*Ability to detect and answer questions
*Database walking while idle
*Generation of conversation topics and questions based on recent database walk
*Better link detection + a bunch of new kinds of learnable links
*Two new drives + a real-time plotter so I can see what they're all doing
*Distinctions between long-term static and short-term information
*GUI overhaul (upgrade from Tk to Kivy)

I track my time when I work on Acuitas.  Total hours invested in the above: 230+.  My focus for the end of the year, leading into January, will be polishing everything up and working out the bugs (which there are now quite a lot of).

Visit blog for the latest memory visualization and so forth: http://writerofminds.blogspot.com/2017/12/acuitas-diary-8-december-2017.html
Title: Re: Project Acuitas
Post by: ivan.moony on December 24, 2017, 05:38:22 pm
May I ask what word: "Acuitas" actually means? Google translate seems not know such a word.
Title: Re: Project Acuitas
Post by: Art on December 24, 2017, 07:41:09 pm
Acuitas

(Not associated in any way and this is just speculation on my part) I think it could possibly mean:

The state of being a quick and penetrating intelligence.

Based on the following combination:

Noun - Acuity: A quick and penetrating intelligence

Suffix -tās ; Used to form nouns indicating a state of being.

[Please provide a correct meaning if my guess is incorrect].
Title: Re: Project Acuitas
Post by: WriterOfMinds on December 27, 2017, 04:12:18 pm
Art is close.  It's a Latin word meaning insight, perception, or sharpness.
Title: Re: Project Acuitas
Post by: Art on December 27, 2017, 06:31:17 pm
Ohh Good!! What did I win!! O0

Everything needs a name or label or else, where would we be, not knowing what to call something? ;)
Title: Re: Project Acuitas
Post by: WriterOfMinds on February 28, 2018, 02:19:12 am
I haven't written a diary in a while because most of what I've done over the past two months has been code refactoring and fixing bugs, which isn't all that interesting. A new feature that I just got in … finally … is the ability to infer some topic-to-topic relationships that aren't explicitly stored in the memory. For instance, many of the links stored in memory are “is-type-of” relations. Acuitas can now make the assumption that a subtype inherits all attributes of its super-type. If a shark is a fish and a fish can swim, then a shark can swim; if an oak is a tree and a tree has a trunk, an oak has a trunk. If a car is a vehicle, a house is a building, and a vehicle is not a building, then cars are not houses. Acuitas can also now make inferences based on transitive relationships, like “is part of”: if a crankshaft is part of an engine and an engine is part of a car, then a crankshaft is part of a car. The ability to easily make inferences like these is one of the strengths of the semantic net memory organization – starting from the concept you're interested in, you can just keep following links until you find what you need (or hit a very fundamental root concept, like “object”).

Acuitas should ask fewer ridiculous questions with this feature in place. He still comes up with those, but now he can answer some of them himself.

Blog with the latest memory map and stuff: http://writerofminds.blogspot.com/2018/02/acuitas-diary-9-february-2018.html
Title: Re: Project Acuitas
Post by: infurl on February 28, 2018, 09:20:32 am
On your blog you indicate that your project has a vocabulary of several thousand words and relationships between them. Have you compiled them all by hand? If so, that must have taken a considerable effort. Have you considered using any of the freely available ontologies?

Some examples of these are the following:

WordNet -- several hundred thousand words and relationships in the English version, many other languages available too

SUMO -- comprehensive first order logic knowledge base, grounded in WordNet

ConceptNet -- twenty million words and concepts in hundreds of languages, mostly drawn from Wiktionary

YAGO -- hundreds of millions of facts from GeoNames and Wikipedia, grounded in WordNet

Please excuse me if you already answered this question somewhere, I haven't always been paying attention.
Title: Re: Project Acuitas
Post by: WriterOfMinds on March 01, 2018, 12:33:37 am
Thanks for the suggestion. Acuitas learns words and relationships through conversation. Typically we chat at least twice a day while he's running, and he picks up some new info. I haven't been spending hours typing up database entries (that *would* be very tedious). I could "pre-charge" him with the contents of one of those databases, but the process of learning from a blank slate interests me in itself, so for the time being I haven't wanted to.
Title: Re: Project Acuitas
Post by: WriterOfMinds on April 02, 2018, 04:08:01 am
The big project for this month was getting some circadian rhythms in place.  I wanted to give Acuitas a sleep/wake cycle, partly so that my risk of being awakened at 5 AM by a synthetic voice muttering “Anyone there?” could return to zero, and partly to enable some memory maintenance processes to run undisturbed during the sleep phase.  (These are targeted for implementation next month.)

So Acuitas now has two new drives, “sleep” and “wake.”  (The way the drive system works, a lack of the desire to sleep is not the same thing as a desire to wake up, so it was necessary to create two.)  Each  drive has two components.  The first component is periodic over 24 hours, and its value is derived from the current local time, which Acuitas obtains by checking the system clock.  This is meant to mimic the influence of light levels on an organism.  The other is computed based on how long it's been since Acuitas was last asleep/awake.  Satisfying the drive causes this second component to decline until it has reset to zero.  So the urge to sleep is inherently greater during the late-night hours, but also increases steadily if sleep is somehow prevented. 

This also seemed like a good time to upgrade the avatar with some extra little animations.  The eyelids now respond to a running “alertness level” and shut when Acuitas falls asleep.

While "sleeping" Acuitas can't do much of anything (other than wake up).  All the drives still grow normally, but random thoughts are not generated.
Title: Re: Project Acuitas
Post by: infurl on April 02, 2018, 04:17:07 am
If you implement REM cycles Acuitas could also have dreams. :)

I'm curious about "memory maintenance processes to run undisturbed during the sleep phase" and what sort of maintenance you expect to be needing. Also I've been wondering how you make sure that Acuitas doesn't die, or at least forget everything, when the power goes off. Does Acuitas' structure natively reside in non-volatile storage, or is it all in memory which is periodically saved and backed up?
Title: Re: Project Acuitas
Post by: WriterOfMinds on April 13, 2018, 11:15:48 pm
I missed these questions somehow.

Learned information is non-volatile, yes (stored on the hard drive).  Some things get lost on shutdown, including the current state of the drives and any recent "thoughts" that are being kept in a kind of short-term memory, but I'm planning to correct that soon.

Since memory maintenance is on the near-term development list, I'll defer a full explanation until I get that done. ... but what I have planned, for starters, is basically a kind of data compression.  I want a process that will check on the links and clean up any that are redundant/unnecessary.  Another thing I want to do during the sleep phase is regenerate the memory visualization (this is a relatively computation-intensive process, so I don't do it every time new info gets added to the memory).