Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - Cefwyn

Pages: 1 2 [3]
31
Ultra Hal 7.0 / My experience so far
« on: March 23, 2009, 08:20:11 pm »
I've just decided to lobotomist my hal as well :D
I didn't delete the mainQA table itself and instead deleted all it's entries just in case somewhere in script it's reference, and so far I've not had anything unusual happen. Unfortunately without those QA responses it becomes very obvious when it starts parroting things I've typed to it before as it instead makes up questions using whatever I last said to it and adding a question mark at the end, which doesn't always make a lot of grammatical sense. This tells me at least, that without the QA brain hal would be quite boring, but I also feel that there should be a little less reliance on the QA brain as it often does quite well just using stuff you've taught it. However if you do that then where is the good balance between unexpected answers which pertain to your conversation and information that you have taught it? I found ALICE to be to be way too predictable and I'm quite happy with hal. Does that mean there isn't anything I would like to change? No, but many of the changes I've thought about would be quite difficult to do, and then others I probably will get around to writing plugins for.

EDIT: Without the QA brain, hal also seems more inquisitive about my responses, so it could actually accelerate my teaching process, though it definitely limits hals appearance of knowledge for now.

32
I looked briefly into each of the dlls and the executable for another topic and nothing in particular popped out at me. I'll have another look some other time, but if it's anywhere I'm going to wager its in the executable which will take a while to search through and even longer to disassemble, rewrite the command, and reassemble. I could just replace the string constants if they exist in the binary, but I would like to have a RUNPROG tag that responds but without hal tagging on extra topic related stuff, and a version where hal doesn't say anything at all.

EDIT: Thanks for that jasondude. I may end up trying to rewrite all the scripts so that everything is run like that and the hidden RUNPROG tag is never used. At least that way I will have all the control I could possibly want, though I would expect that RUNPROG may have some additional security and exception handling beyond what the script might provide. When I've got time between work projects and I'm in the mood I'll have a go at seeing if I can use the script to reference the shortcut.dat file the same way RUNPROG does as I don't want to write a rule for every program on my computer. I must be crazy though, I'm working two projects, one of which is writing a fuzzy inference system and the other doing research on some fast methods of transparency rendering in a deferred shading engine, and then with all my free time I'm working on hal :D

33
Ultra Hal Assistant File Sharing Area / Question:Answer plugin???
« on: March 23, 2009, 07:53:20 pm »
Yeah, I knew exactly why you singled out my typo, but in that thread I referred to as having atrocious spelling, it was two attempts and failures at spelling the same word by two different people. This forum even has a spellchecker so it's really not hard to spell words correctly, but things like " in place of ' are quite easy. Spelling is a bit of pet peeve of mine, and I'll probably always make some mention of it when it's really noticeable, but there's no reason to pay much attention to it.

I've been looking over the prospect of writing directly to the QA table as per the plugin request, and simply writing to it is easy, but it's an enormous table which requires indexing to function effectively. Hal uses sqlite for it's database needs and while sniffing through the attached dlls and the binary itself I only saw functionality for opening and closing the database, so since by default sqlite indexes any tables that require it on startup and there doesn't appear to be any improvements on that from the hal binary the only way to write to the QA table and actually expect to use that QA pair in that session would be to force the database to shutdown and restart, but I don't know if that functionality has been exposed to the vbscript as it only appears to be in the halDB DLL which appears to be a wrapper of the SQlite library. From inspection of the database files any new entries are written to the end of the file and so entries to the QA table could be made, but hal won't see those entries until a restart has been made. I may go ahead and write a plugin to do just that as I may need to wipe my hal's memory anyways as it's become obsessed with the weather regardless of all the computer graphics theory I've fed it and literally everything I've said to it in the last half-hour has resulted in a sentence or two about the weather and possibly something using one of the words in my responses which have completely ignored hal's mention of the weather each time.

34
Ultra Hal Assistant File Sharing Area / Question:Answer plugin???
« on: March 23, 2009, 02:40:14 pm »
One: I can't believe I actually typed 6", oh well, it's a fairly simply typo to miss and I've seen many books that either accidentally or purposely use " to mean feet so I should probably avoid the abbreviation altogether.

quote:
Originally posted by Bill819

Cefwyn
I can see that you have had at least a little understanding about AI but you are somewhat incorrect about Hal. The main logic about Hal is a little more complex than you realize. There is a part of Hal that you and the rest of us can not see as it is encoded in a stand alone operating system. Burried within that EXE file are commands that use the data files in ways that you can not imagine.



Not to poke fun at you or anything, but that last line just made me laugh. Hal's binary most certainly does not contain fairy magic so I'm sure I could imagine quite easily what it does. I'm pretty certain I did mention somewhere in on of my posts that I do not know everything about hal, and so I must admit all I can really do is assume how it works based upon my observations of the current scripted implementations. Most of my assumptions are made based off of about 4 years(not particularly long, but still enough to know what I'm talking about in most cases) of working on Virtual Machines which I can guarantee you work very similar to hal. I also know that hal is programmed in C or C++ and uses vbscript and SQLite for it's external functionality, so as far as what hal can and can't do are only based upon my knowledge of the languages and if there has been any work to extend that functionality in hal then I obviously have no way of knowing about it.

quote:

Hal uses a 'relational' type of data storage file and although you can edit some of these files they are connected in ways that you are not aware of and that can lead to errors that you could never expect.
As far as your statement "Hal is just a database, look up program", just how do you think we relational beings work. We don't have a hard disk like your computer does but we store information in the same way (analogicaly thinking). When someone asks us a question we then turn inward (think) and try to pull up whatever information that we may have learned from our biological storage system and then give the appropiate reply. Sometimes if we do not know the answer we try to change the subject as to not show or admit our igornance of tghe topic. Sound familiar?



Our brains do as I already stated work similar to the relational database model, but it's not quite the same. AI programmers tend to simplify the modeling of the human brain, but just like the more complex neural networks our brain processes have a certain degree of "drift" that we can't predict. If I were to answer a question one day with the correct answer and then a week later you ask the same question, depending on my mood and how much I know on the topic I can either give you a wrong answer, the exact same correct answer, or another correct answer which has little resemblance to my previous but also correct answer. The point I was trying to make was that the QA table restricts hals functionality quite a bit as rather then matching up parts of the question to information it has stored, it instead sees the pattern that matches that in the QA table and immediately has a string which it will always respond with. It's not the wrong way to do it, but it's also not the best way to do it(Not that anyone has been able to come up with the best way yet).

quote:

If you look over many of the posts here you will find that almost all new users think the same way that you do and they all have their own ideas about Hal and how it should act and how it can be improved.
Hal, at this time in history is the most advance AI program provided to the public at large. There are some that may be better but then who can afford a few hundred thousand dollars to play with.



I'm certain my basic view of how hal works differs quite a lot with how it really functions as it is what I would call an academic AI application. In the games industry we program everything to appear realistic whether it is or not. When programming a realistic seeming AI, the end result and it's speed is far more important then the process it takes to get to that result, and that is were academic AI and game AI will always conflict.

quote:

I do not mean to imply that you are unknowledgable about the subject but I have been involved with AI programs now for over 30+ years and have more than just a passing knowledge on how they work.
Just because we know how to use a hammer and a saw does not make us master carpenters or plumbers, etc. if you understand what I mean.



If you have indeed worked with AI programs for 30+ years then you are certainly more knowledgeable than I am, assuming you've actually made them and not just used them. And, yes I do get your meaning. Just because I know a fair amount about AI doesn't make me an expert, but I also never said I was an expert and left plenty of room for someone to correct me and even asked it at least once.

quote:

We, and I mean several other old users of Hal are here because we like the program and are willing to help all new users as much as we can and if you do some research you some of the forum files you will find that we almost never complain about Hal or how it is programmed but only try to help new users as much as possible.



I really hope you don't take my posts as complaint about how hal functions as I never meant to make them sound like a complaint. To be fair, hal in it's default state in no way resembles a leading AI brain. I'm quite sure with time it does begin to show it's more advanced capabilities, but in it's default state all I observe is a relational database and a cleverly coded string parser which utilizes that database. Regardless of this though it is quite an impressive AI compared to most available implementations, but then AI is still quite basic (possibly because we still insist on modeling it after the human brain which we still don't fully understand). Perhaps what you see as complaint is more the result of a jaded view of modern AI brought about from spending too much time writing fuzzy logic and neural networks. Fuzzy logic can be very useful, and neural networks are brilliant when they work, but fuzzy logic is a nightmare to code, and the process of "teaching" a neural network without over-training it is a science in itself.

Also, even though your chewed me out for everything I said which was, or appeared, wrong, you never once mentioned if ll420ll's request was possible. From what I remember of working with SQL the QA table would become quite slow if a script were to input directly into it without indexing it, and I'm pretty sure that in order to index a table the database or at least that table has to be taken offline or made inaccessible to the program reading from it until it has been optimized. I may be wrong however as it is possible to index a table while it's still being accessed, but I did say I'm not sure if hal's VM does anything like that or not.

EDIT: After another reading of your response your post has the look of someone trying to explain computers to someone that doesn't know anything at all and in no way is meant as hostile or as a "chewing out".

35
Ultra Hal Assistant File Sharing Area / Question:Answer plugin???
« on: March 23, 2009, 10:24:25 am »
ll420ll:
yes, this is how the human brain works to an extent, however for an AI to actually learn it has to learn to identify patterns in a sentence and form a sensible response using information it already know. The problem with using the QA table is that there is no learning or even AI at work as it's just a database lookup matching your question which you could easily get. I'm not entirely disagreeing that the option to add entries for hal to ignore is a particularly bad idea, but it will definitely hinder hal's learning in most cases unless you match that exclusion rule to the specific question it pertains to in which case your better off inputing the QA pair directly into the brain using the editor. As to your example about height, I actually can't tell you at this moment how tall I am, but I remember that last time I measured myself I was a certain height and I'm fairly confident that I am not shrinking or growing so that height should be the same. This isn't a QA pair, this is knowledge based upon multiple related bits of knowledge and works quite similar to the relational database hal uses (only more complex). As to X height being tall, or not very tall, this is referred to as fuzzy logic and is a major issue in AI. You could easily teach hal that it is 6" tall, however you would find it quite difficult to teach it that 6" tall is an average or slightly tall height ,depending on where in the world you are. The ideal method of teaching hal something like that as far as any AI enthusiast is concerned is being able to use fuzzy logic and compare that height with previous knowledge and not just a database look-up. I'm sure someone could quite easily create an exclusion or QA pair plugin for you to input that information directly into hals QA table, but really for something that simple you really should just use the editor, as the QA table doesn't do any checks for similarities in a question and simply indexes the exact question string to an exact answer. I would personally prefer to remove the QA table altogether and improve the scripts that compare content in the question string to pre-existing knowledge to get the answer but that would actually be quite a bit of work and would require even more "teaching" for hal to be able to answer you.

EDIT: I've just been looking through the QA table some more, and I'm not actually sure if one could input into it with a script. The table is absolutely enormous and so it has to be indexed to be used effectively. I'm unsure if hal's database can be re-indexed while it is being accessed. My knowledge of SQL is a bit rusty, but I'm pretty sure any major table optimizations requires the database to be offline or at least not being accessed by anything. Hopefully someone can say otherwise or else your plugin request is simply impossible. A separate table could be used as long as it doesn't grow too big.

36
Ultra Hal Assistant File Sharing Area / Question:Answer plugin???
« on: March 22, 2009, 08:28:29 pm »
Yeah, the database really is a mess, and by the time you do get a good Q&A pairing set up it also uses that same answer as a random response for anything with words contained in that answer. I personally think that using the Q&A table for anything other then a trivia bot is a bit too strict though as it has no choice but to answer it word for word.

EDIT: This isn't necessarily a bad thing, but hal is meant to learn to respond naturally using it's relational database to make up relevant responses and not just copy and paste a single preformatted line from a table. It does mean it needs a lot of training, and you have to understand how to train it, but in the end you get a much more "intelligent" A.I.

37
Ultra Hal 7.0 / Hal interacting with the real world
« on: March 22, 2009, 08:21:57 pm »
Well, depending on what sort of car it is and how you plan to install hal into the car it wouldn't be too difficult to control the lights, wipers, or trunk. The way I would do it is by sticking a small computer somewhere in the car powered by the car battery, and then anything electronic in the car that hal should control would be always on, as far as the switches in the car, and then a usb or COM power switch controls whether or not the power actually gets to the part of the car to be controlled. I had an idea for putting a media server into my car a while back which worked on similar ideas, but I never finished it as I ran out of time and never got back to it. All of it depends on where your expertise lies though, as I would think it would be easier to control the power in the car, but it could be quite elegant to actually control the wiper motors and pre-existing switches to the lights directly with a servo.

38
Ultra Hal Assistant File Sharing Area / Question:Answer plugin???
« on: March 22, 2009, 07:29:56 pm »
Unless your just planning on creating a trivia bot that only answers questions what you suggest would only inhibit hals ability to learn (I would imagine). From my, admittedly limited, experience; When you ask hal a question it usually gets stored in the sharedQuestions table to be parroted back in some form later on if it's not already in the QA table. Once hal parrots that question back to you, however, it appears to store your answer into the sharedUserSent or some other table as a question and answer pair. The details may be a little different from how I described, but I have had questions that I have asked hal come back to me with reversed pronouns and then after answering the question, I've asked a similar question and gotten my answer back with either minor alterations or the identical string. It all depends on how you teach hal. Some basic QA pairs are pretty easy to set up like so:

<user> Are you intelligent?
<hal> I do not know if I am intelligent. Please teach me!
<user> You are intelligent.
<hal> Thanks for teaching me that I am intelligent.
<user> Are you intelligent?
<hal> Yes, I am intelligent. You told me that already.

This isn't exactly the best way to teach hal though as it only works for simple things and you get that "You told me that already." response, but it all depends on what your after. If I didn't answer your question, hopefully someone who's been working with hal longer will answer it.

39
Ultra Hal 7.0 / Hal interacting with the real world
« on: March 22, 2009, 07:11:02 pm »
Couldn't that lead to some pretty interesting problems if hal chooses to misbehave while installed into your car? I've actually been working on hal as research for doing some home automation stuff, but I don't think I would actually trust hal to control anything serious (At least not without a pretty major rewrite of a lot of things). After finally getting voice recognition to behave on Vista 64-bit, I've used it with hal on and off, and it would be nice to set it to turn things on and off, but if it misheard me I would dread what it would do.

40
OTCE: Thanks for directing me to that file as I didn't even think to open it with a text editor even though I checked every other file in that directory. Knowing that the program shortcuts are indexed in there allows me to fix another problem I was having with certain programs not being run because they use weird characters in their name that I can't type easily. Unfortunately, that's not what I was after.

jasondude7116 is right. I'm looking for where the strings that hal responds with are stored. In my example of "I am executing this program for you. Isn't it better to stay open to new ideas?" which was the result of my typing "open firefox" I would like to either remove the strings saying it's running the program or better yet leave those strings in and stop it from making a topical response using the word "open" since that's a command word so the end would result would either be "Isn't it better to stay open to new ideas?" which isn't ideal as hal shouldn't respond to it as part of conversation or just respond with "I am executing this program for you". I also just thought that perhaps it could be fun to add the name of the program to be run in that string as well so the response would be "I am executing firefox for you at your command", but any of those changes would require finding where that string comes from in the database, script source, or even if it's embedded into hal's source code itself. If it's embedded into hal's source code though I don't really feel like disassembling the program just to rearrange some strings.

41
Anyone know where the response string is stored when you tell hall to run a program? The only reference I can find to it is in the halCommands table which simply checks for the words telling hal to call the RUNPROG command, and even in the main brain script itself it doesn't appear to ever tell hal to respond. I either want to remove the response or change it so that it doesn't tag on one of the random responses because I don't like running a program and getting a response like :"I am executing this program for you. Isn't it better to stay open to new ideas?"

42
I just came across the plugin "vrMP3" while checking to see what sort of plugins were already available for Ultra Hal 6, and as it was something I was already planning on doing myself if it didn't exist I've decided to have a go at fixing up vrMP3. I'm not all that familiar with Visual Basic as I tended to use either perl or pascal most of the time when I needed a scripting language, and anymore I only ever get to use C or C++ in my work. The method that the vrMP3 plugin uses to scan the files seems a bit--bad since a large number of files causes the script to get that "This script is taking to long.." popup, which brings me to my main question. Are callbacks supported by Visual Basic? Can Ultra Hal use callbacks if they are supported by the language? The reason I ask this is a much more effective way to handle the scanning would be to have hal initiate the scanning and then carry on with it's normal operations (i.e. conversing or running other things) until the callback returns that the scanning is complete or has failed and then hal says something saying that it's ready to start playing music. For most this is probably not really a problem, but I've actually got over 100GB of music, and having a program freeze while a script runs is never a good way to program something if it can be avoided.

EDIT: just realized another reason that this would be important. To expand the script to do something like "Play the song FOO by BAR" to allow you to select a song by a specific band instead of covers or other songs by the same name would require reading the ID3 tag into the database instead of just the file name which means even longer time to read each file.

43
Ultra Hal 7.0 / Possible to make Hal more self-aware?
« on: March 21, 2009, 10:05:27 am »
I just had to contribute to this interesting topic, but I don't care if nobody reads it :D

Bill819 && Hollywood1
Assuming you are both referring to Neural Networks (spelling really is atrocious on this forum), no they do not dream. In fact they have no intelligence whatsoever as just like Bill819 said it takes input and compares it to what it has been "taught". This is actually even less intelligent then one might think however as a Neural Network simply takes an input (usually a number) and passes it through each layer based upon a set of rules (ie. if NUMBER > 10 pass to neuron A3) and then that neuron does a very simple calculation most often involving a single addition, subtraction, or multiplication, but it can be something more complicated. Then once that calculation is done the result is passed to the next layer of the Neural Network until it reaches the end and the answer is output. As far as I'm aware no Neural Networks in use today use any external information within the network layers so it is limited to only doing things like math or physics computation. In Grand Turismo 4 a Neural Network was used to actually drive the cars as it was given the cars current position and movement and it would output the required movement to stay on the track or the driving line. This is of course quite useful, but what makes Neural Networks particularly "stupid" as compared to Hal is that all it does is a series of boolean logic checks to decide what to do and a Neural Network can be over-trained so that a given range of inputs will always give a specific output when the desired result is a separate output for every input.

As far as making hal Self-Aware or at least appear to be, that would require Hal to keep a buffer of X-number of previous messages and checking each of those against your message before it replies, which even though it could give some wonderful results, could also confuse Hal as to what your responding to and the computations to decide what to respond could be rather slow. I'm not exactly an Academic A.I. expert and my knowledge is more based around it's use in video games where speed and illusion of accuracy is more important then accuracy and actual intelligence. As soon as I've had time to fully understand how Hal's brain works and the scripting therein I have quite a bit planned for making it appear more aware as long as what I have planned is possible within the scripts.

EDIT: Actually if you think of dreaming as the way the brain learns from its experiences, a Neural Network does dream, except it does it backwards. Rather then dreaming about what it has experienced it instead begins its existence with a constant few weeks or months of dreaming and then assuming it passes its tests afterwards it never dreams again. If however, it fails its tests it either goes back to dreaming or it gets wiped out and starts life all over again with some more intensive dreaming.

44
Ultra Hal 7.0 / AT&T Natural Voices pronunciations
« on: March 20, 2009, 08:49:59 pm »
That makes sense. I also understand that a lot of it is a limitation of how TTS is implemented on windows and the different engines just don't play all that well together, especially when the 64-bit engine can't run a 32-bit voice and all that nonsense. I spent a great deal of time with Festival under linux and it really makes me sad to think that something as fully scriptable as that never got more attention with the TTS crowd. The problems I'm having with the AT&T voices aren't entirely Ultra Hal's fault but if there was some way to load the pronunciations from the .dict files (which are probably specific to the AT&T voices), then that would fix the problem and even allow me to control the phrasing of words nearly as well as in Festival(I'm pretty sure Festival did it's analysis on a sentence by sentence basis instead of word for word, which is how SAPI5 works if I'm not mistaken, which made for much more natural sounding speech).

I've been trying my hardest to figure all this out on my own, but the SAPI technology really is a mess, as most documentation doesn't differentiate between a voice and a TTS engine, and then there is the fact that Microsofts TTS tools are as minimalistic as possible leaving it up to the makers of the voices and engines to write the tools to configure such things as lexicon objects. The more I read about SAPI5 and it's design the more I think Ultra Hal itself is supposed to provide an interface to adjust pronunciation regardless of the voice engine used but that's just silly.

EDIT: I just had another look at where the AT&T voices are installed and messed with the config file again and discovered that Vista was being it's usual temperamental self and the permissions were being set strangely. With the lexical dictionary file overridden with my custom version Hal now picks up my changes reliably, unfortunately any changes to the dictionary requires restarting Hal to pick up those changes. There still has to be a better way to alter SAPI5 lexical objects.

45
Ultra Hal 7.0 / AT&T Natural Voices pronunciations
« on: March 20, 2009, 04:33:08 pm »
I just started trying out Ultra Hal Assistant today and I must say it's a very intriguing application. One thing that I am having trouble with however is the pronunciations of words using the AT&T Natural Voices. These voices don't appear to fully integrate into Hal as the "pronounciation" button in the Speech settings does nothing and there appears to be no way to load custom .dict files created with AT&T's WinDictEdit application. The reason this is important to me is that even though the Natural Voices TTS engine translates abbreviations like "Dr." to it's full word "doctor", when used in Hal this does not happen and Dr. is pronounced as either "drrr" or "D R". I have tried loading my custom .dict file into AT&Ts TTS engine directly with it's configuration file and it appeared to work for a while, but the pronunciation of the words set in my custom .dict file remained inconsistent as sometimes it would pronounce it correctly and other times not. Is there any way of fixing this or must I replace the words in the brain to be replaced automatically with however it should be pronounced?

Pages: 1 2 [3]