Prometheus A.I. News and Development Updates

  • 59 Replies
  • 22377 Views
*

Bragi

  • Trusty Member
  • ********
  • Replicant
  • *
  • 564
    • Neural network design blog
Re: Prometheus A.I. News and Development Updates
« Reply #45 on: June 29, 2010, 06:25:20 pm »
I now what you mean. I do the same thing: off-site backups. Something I picked up from my previous job.
Quote
Of course, now that I've solved the problem once through I'm fairly confident it wouldn't be too hard for me to get to the solution again.
Ye, but, do you like to do that? :P

*

lrh9

  • Trusty Member
  • *******
  • Starship Trooper
  • *
  • 282
  • Rome wasn't built in a day.
Re: Prometheus A.I. News and Development Updates
« Reply #46 on: June 29, 2010, 06:50:11 pm »
No. But it is a nice option to have.

The beginnings of the diagram I've been working on using the diagram designer I mentioned at http://aidreams.co.uk/forum/index.php?topic=3642.msg15246


*

lrh9

  • Trusty Member
  • *******
  • Starship Trooper
  • *
  • 282
  • Rome wasn't built in a day.
Re: Prometheus A.I. News and Development Updates
« Reply #47 on: June 29, 2010, 07:03:56 pm »
Sorry it kept the whitespace at the bottom of the page. I'll take the time to crop it next time.

*

TrueAndroids

  • Trusty Member
  • ****
  • Electric Dreamer
  • *
  • 120
Re: Prometheus A.I. News and Development Updates
« Reply #48 on: June 29, 2010, 08:23:54 pm »
Hi, nice design. Diagram easy to understand. So is the Prometheus A.I. the A.I. in the diagram? I'm wondering about data storage - will the 'appropriate actions' and 'goals' be stored in a database, along with their rules as part of the A.I.? Anyway just wondering and this was my first thought as I looked at it.

*

lrh9

  • Trusty Member
  • *******
  • Starship Trooper
  • *
  • 282
  • Rome wasn't built in a day.
Re: Prometheus A.I. News and Development Updates
« Reply #49 on: June 29, 2010, 08:38:53 pm »
The diagram was intended to be more conceptual than a schematic of an implementation, but I suppose as ideas become clearer and more refined then it may be the implementation. Regardless, it should be representative of what I'm trying to do.

Hopefully one thing that will give my model and implementation strength is that I always try to draw parallels in my mind between robot and computing systems and a person.

For instance, our skeletal system is our platform, and some of our sensors (what we use to obtain information about our environment) are our eyes, ears, nose, tongue, and touch. Our actuators (what controls our body) are our central nervous system and muscles.

Hopefully by drawing these parallels and thinking about intelligence and consciousness in terms of psychology I'll be able to get a clear concept of what needs to be implemented in the a.i., what needs to emerge, and what needs to be learned.

I do think I will need to implement some type of generic goal software object. I think that even simple instincts could qualify as goals to be fulfilled. (Eating, sleeping, reproduction.) We are born with instincts, which I would say in computing analogy is being preprogrammed. (By genetics in our case and by software in the case of robots and a.i.)

Obviously those exact instincts won't be implemented in a robot system, but again parallels can be drawn in the form of obtaining proper power supply, conserving energy, obtaining software updates, performing maintenance, and replicating both the platform and/or the software if so instructed.

My next step with the diagram is to draw a bubble coming out from the a.i. bubble and then work on filling that in.

*

sunama

  • Trusty Member
  • ****
  • Electric Dreamer
  • *
  • 109
    • ai project
Re: Prometheus A.I. News and Development Updates
« Reply #50 on: February 13, 2011, 12:15:56 am »
Hi,

Do you have a website for your project?

sunama
www.aiproject.co.uk
Natural Language Processing

*

Freddy

  • Administrator
  • **********************
  • Colossus
  • *
  • 6860
  • Mostly Harmless
Re: Prometheus A.I. News and Development Updates
« Reply #51 on: February 13, 2011, 01:08:12 pm »
Larry hasn't been on the board for a while now, I suggest trying to send him a private message as that will send him a notification via email.

*

lrh9

  • Trusty Member
  • *******
  • Starship Trooper
  • *
  • 282
  • Rome wasn't built in a day.
Re: Prometheus A.I. News and Development Updates
« Reply #52 on: March 09, 2011, 04:21:56 am »
I don't have a website.

I'm waiting to achieve tangible results before I find a permanent home.

Even then I wouldn't fully publish until I had reached what I consider to be "completion".

I'm still in the theory and design stage at the moment.

I may be suffering from "analysis paralysis". Letting indecisiveness get in the way of acting.

However, I'm working on a framework for developing and experimenting with a.i.

I think virtual agents in a virtual environment will be a cheap but effective way to test and experiment with ideas.

When you have agents interacting with each other and the environment, they need a way to gain information.

I'm writing a message based event system so that agents can be informed. Events are more efficient than agents polling for information themselves, because events only run when they occur. Polling is constant.

I have the basic message system complete, and I need to decide whether I want agents and the environment to update iteratively (each agent or object acts one after another, and conflicting changes are mediated after every update) or continuously using concurrency. (Where programming changes in agents and objects is much more natural, but has the extra overhead of locking critical sections.)

I've written the concurrent system. Now I need to think on how the iterative system would work.

*

lrh9

  • Trusty Member
  • *******
  • Starship Trooper
  • *
  • 282
  • Rome wasn't built in a day.
Re: Prometheus A.I. News and Development Updates
« Reply #53 on: July 28, 2011, 05:35:33 am »
Long time, no update.

I wrote a frame based event and task system.

I was inspired by the Panda3D rendering and simulation engine manual, but I didn't get the engine itself until after I finished my implementation.

It's nearly identical to the Panda3D implementation, so I'm leery of publishing what I coded for fear intellectual property issues.

I've come away with a stronger understanding of events and task handling though.

I'm strongly considering the Panda3D engine for my a.i. frameworks and simulations.

It provides my primary prerequisites for simulations, and it features rendering, sound,  and several libraries (such as physics and collision detection) from day 0. Things I would have had tremendous difficulty adding or integrating to my own system by myself.

Now that I have finally found a technology that I'm confident can handle simulations and virtual environments, it is time for me to get back on track in deciding what to simulate and how to simulate it.

*

Freddy

  • Administrator
  • **********************
  • Colossus
  • *
  • 6860
  • Mostly Harmless
Re: Prometheus A.I. News and Development Updates
« Reply #54 on: July 29, 2011, 12:42:02 pm »
Long time indeed but welcome back.

I'm very interested in 3D engines at the moment, I have tried lots.  At the moment I am working with MS XNA.  My focus at the moment is on an creating an avatar, but I am held back by my inexperience in C#

I was just wondering what other engines you tried.  I guess the Python aspect is a big reason ?

What kind of environments will you be creating and what do you hope your AI will learn from them ?

This AI Life project might interest you : Grandroids

*

lrh9

  • Trusty Member
  • *******
  • Starship Trooper
  • *
  • 282
  • Rome wasn't built in a day.
Re: Prometheus A.I. News and Development Updates
« Reply #55 on: July 30, 2011, 04:17:31 am »
Thank you for the welcome back, Freddy.

The Grandroids project does interest me.

I read about it the last time I was visiting aidreams when user bruce wilcox notified us about it.

I'm glad Dr. Grand exceeded his funding goals.

I would like to see my own efforts produce something for use in human education and entertainment.

I chose Panda3D because it is free to use freely, it seems good, and it has a Python API.

I can't say I have given due diligence to researching other options, but I have browsed the Blender and Python-Ogre sites.

I need more time to think about agency, environments, and my efforts before I can continue our discussion.

*

Freddy

  • Administrator
  • **********************
  • Colossus
  • *
  • 6860
  • Mostly Harmless
Re: Prometheus A.I. News and Development Updates
« Reply #56 on: July 30, 2011, 12:21:49 pm »
Yes Steve Grand did amazingly well in raising funds, very impressive indeed.

Ogre has a .NET version called Mogre, which you probably already knew.  I got it working and may well go back to it as they seem quite helpful there. I'm sticking to XNA for the time being as it will help me learn C#.  And that's free too.

Fair enough about needing more time, don't be a stranger  :)

*

lrh9

  • Trusty Member
  • *******
  • Starship Trooper
  • *
  • 282
  • Rome wasn't built in a day.
Re: Prometheus A.I. News and Development Updates
« Reply #57 on: August 02, 2011, 03:47:12 pm »
My end goal of my efforts has always been agent software with applications in virtual and physical environments.

(With additional requirements of artificial intelligence such as autonomy and learning capabilities. Otherwise it would be better to write domain specific software.)

To that end, I'll test my agents against environments that model the intended domains as realistically as possible.

(The web and games for virtual applications, and a physical simulation for physical applications.)

If my theories and implementation are correct, successes in tests should carry over to success in applications.

(If not I will have to go back to the drawing board.)

I think I will be starting small though. I can do some small preliminary tests on an idea or agent implementation.

For instance, if I wanted to implement an agent with a short-term/long-term memory model, I could simply populate a virtual environment with any virtual objects.

Code can check that the agent remembers or forgets objects it has encountered as appropriate.

As I flesh out the agent, I'd create more complex environments in the hopes of eliciting desired emergent behaviors.

For instance, an agent that remembered every object in a building or area might quickly run out of memory. However, if a challenge in my environment required the agent to know what was in a room I'd hope that my agent would take appropriate steps to solve the problem without me having to dictate its action. For instance, I'd hope it would return to the room in question or initiate contact with an agent that does know what is in the room. Desirably, this behavior would emerge out of its basic artificial intelligence systems.

That was just an example. It may be too high level, but I hope it conveys my early thoughts and I hope my plan is right.

*

lrh9

  • Trusty Member
  • *******
  • Starship Trooper
  • *
  • 282
  • Rome wasn't built in a day.
Re: Prometheus A.I. News and Development Updates
« Reply #58 on: September 04, 2011, 11:14:25 am »
I've decided to implement a Python library for existing a.i. techniques while I am working on my theory of intelligence.

It may happen that my theory will incorporate some of the techniques, and even if it does not I will at least have proof positive that I understand them. I will also release my library. Hopefully we will see more people involved in implementing a.i. theories and applications.

I'm starting off with fuzzy logic.

http://en.wikipedia.org/wiki/Fuzzy_logic

At the moment I have implemented fuzzy sets, but I still need to implement fuzzy linguistic variables, advanced inference, defuzzification, and the Combs method.

It's possible to create a fuzzy set from a membership function, get elements' memberships in the set, get the complement of the set, the intersection of sets, the union of sets, modify the set, and the implication of two sets.

P.S. I have all ready thought of a potential refactoring that may increase flexibility. Software development (especially my software development  :P) is an iterative process of refinement.

Existing Python 3.1 code:

Code
# encoding: utf-8

##The MIT License
##
##Copyright (c) 2011 Larry Haskins
##
##Permission is hereby granted, free of charge, to any person obtaining a copy
##of this software and associated documentation files (the "Software"), to deal
##in the Software without restriction, including without limitation the rights
##to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
##copies of the Software, and to permit persons to whom the Software is
##furnished to do so, subject to the following conditions:
##
##The above copyright notice and this permission notice shall be included in
##all copies or substantial portions of the Software.
##
##THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
##IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
##FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
##AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
##LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
##OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
##THE SOFTWARE.

"""A module for fuzzification, defuzzification, and fuzzy knowledge
categorization, representation, and decision making."""


import math
import weakref

__author__ = "Larry Haskins"
__version__ = "1.0"
__all__ = ['never',
           'very',
           'extremely',
           'more_or_less',
           'slightly',
           'FuzzySet',
           'nothing',
           'everything',
           'always']


#TODO: Refactor sufficiently similar code to functions.


def never(element):
    """Special case membership function.

    Only fuzzy sets with this membership function are empty.
    """
    return 0

#COMMON MODIFIER FUNCTIONS

def very(value):
    return value ** 2

def extremely(value):
    return value ** 3

def more_or_less(value):
    return math.sqrt(value)

def slightly(value):
    return value ** (1/3)

#END COMMON MODIFIER FUNCTIONS


class FuzzySet(object):

    """Represents the mapping of items in the universe to their degree of
    membership in the set."""

    #NOTE: Fuzzy set theory differs from classical (or Boolean) set theory.

    _complement_functions = weakref.WeakValueDictionary()
    _intersection_functions = weakref.WeakValueDictionary()
    _union_functions = weakref.WeakValueDictionary()
    _modifier_functions = weakref.WeakValueDictionary()
    _implication_functions = weakref.WeakValueDictionary()
   
    def __init__(self, membership_function):
        """The membership function calculates an element's degree of membership
        in this set.

        Membership functions must always return a value on the
        interval [0, 1], with 0 meaning the element is not in the set, and 1
        meaning the element is fully in the set. Intermediate values indicate
        partial membership.
        """
        super(FuzzySet, self).__init__()
        self._membership_function = membership_function

    @property
    def membership_function(self):
        return self._membership_function

    def complement(self):
        """Returns the complement set.

        Conceptually, the complement is the logical opposite of the original.
        If an element has a high degree of membership in the original, it will
        have a low degree of membership in the complement. If an element has a
        low degree of membership in the original, it will have a high degree of
        membership in the complement.
       
        Note: The complement of a complement is equal to the original.
        """
        cls = self.__class__
        membership_function = self._membership_function
        try:
            complement_function = cls._complement_functions[membership_function]
        except KeyError:
            def complement_function(element):
                return 1 - membership_function(element)
            cls._complement_functions.update({membership_function: complement_function,
                                              complement_function: membership_function})
        return cls(complement_function)

    def __hash__(self):
        return hash(self._membership_function)

    def __getitem__(self, element):
        return self._membership_function(element)

    def __eq__(self, other):
        """Two sets are equal if and only if the two membership functions are
        the same for all elements in both.

        It is impossible to check all
        elements. Checking a finite collection of elements is incorrect. The
        membership functions may differ for elements not explicitly checked.
       
        ATTENTION: If you know a better way to compare functions please inform
        me.
        """
        return self._membership_function == other._membership_function

    def __bool__(self):
        """A set is empty if and only if the membership value is always 0."""
        return self._membership_function != never

    def intersection(self, *others):
        """Returns the intersection of this set and the others.

        The intersection returns the minimum of all membership functions for
        any given element. Conceptually, the intersection is like the English
        word "and". If an element has a high degree of membership in one set
        "and" the others, it will have a high degree of membership in the
        intersection.
        """
        cls = self.__class__
        participants = set(others)
        participants.add(self)
        membership_functions = frozenset(participant._membership_function for participant in participants)
        try:
            intersection_function = cls._intersection_functions[membership_functions]
        except KeyError:
            def intersection_function(element):
                return min(membership_function(element) for membership_function in membership_functions)
            cls._intersection_functions[membership_functions] = intersection_function
        return cls(intersection_function)

    def union(self, *others):
        """Returns the union of this set and the others.

        The union returns the maximum of all membership functions for any given
        element. Conceptually, the union is like the English word "or". If an
        element has a high degree of membership in one set "or" the others, it
        will have a high degree of membership in the union.
        """
        cls = self.__class__
        participants = set(others)
        participants.add(self)
        membership_functions = frozenset(participant._membership_function for participant in participants)
        try:
            union_function = cls._union_functions[membership_functions]
        except KeyError:
            def union_function(element):
                return max(membership_function(element) for membership_function in membership_functions)
            cls._union_functions[membership_functions] = union_function
        return cls(union_function)

    def modify(self, modifier_function):
        """Returns the modification of this set.

        A modifier changes an element's degree of membership in the modified
        set.
       
        Note: A programmer or knowledge engineer must implement the modifier.
        This merely returns the set that applies the modifier.
        """
        cls = self.__class__
        membership_function = self._membership_function
        key = (membership_function, modifier_function)
        try:
            modified_function = cls._modifier_functions[key]
        except KeyError:
            def modified_function(element):
                return modifier_function(membership_function(element))
            cls._modifier_functions[key] = modified_function
        return cls(modified_function)

    def implies(self, other):
        """Returns the implication between this set and the other.

        Conceptually, an implication is a link. An element's degree of
        membership in one set may be low, but if its membership in the other is
        sufficiently high the implication will recognize the link.
       
        Note: Implication is commutative. If one set implies another, the other
        implies it. In real life implication may not always be commutative (at
        least to the same degree). Take this with a grain of salt.
        """
        cls = self.__class__
        key = frozenset((self._membership_function, other._membership_function))
        try:
            implication_function = cls._implication_functions[key]
        except KeyError:
            def implication_function(element):
                return max((0, self._membership_function(element) + other._membership_function(element) - 1))
            cls._implication_functions[key] = implication_function
        return cls(implication_function)

    def fuzzify(self, *elements):
        """Returns the mapping of elements to their degree of membership in
        this set."""
        return dict((element, self._membership_function(element)) for element in elements)


nothing = FuzzySet(never)
everything = nothing.complement()
always = everything.membership_function #opposite of never


if __name__ == '__main__':
    pass
« Last Edit: September 04, 2011, 11:31:50 am by lrh9 »

*

DaveMorton

  • Trusty Member
  • ********
  • Replicant
  • *
  • 636
  • Safe, Reliable Insanity, Since 1961
    • Geek Cave Creations
Re: Prometheus A.I. News and Development Updates
« Reply #59 on: September 04, 2011, 03:36:46 pm »
Ah, so that's an "L", not an "I". I understand now. :)

Good stuff, lrh9! (I'd say "Larry", but you hadn't given your name before, so...) I'm not familiar with Python (though I do have it installed, for Blender, if nothing else), but I'm sure someone here will find the code useful. Thanks for posting it. :)
Comforting the Disturbed, Disturbing the Comfortable
Chat with Morti!
LinkedIn Profile
CAPTCHA4us

 


LLaMA2 Meta's chatbot released
by spydaz (AI News )
August 24, 2024, 02:58:36 pm
ollama and llama3
by spydaz (AI News )
August 24, 2024, 02:55:13 pm
AI controlled F-16, for real!
by frankinstien (AI News )
June 15, 2024, 05:40:28 am
Open AI GPT-4o - audio, vision, text combined reasoning
by MikeB (AI News )
May 14, 2024, 05:46:48 am
OpenAI Speech-to-Speech Reasoning Demo
by MikeB (AI News )
March 31, 2024, 01:00:53 pm
Say good-bye to GPUs...
by MikeB (AI News )
March 23, 2024, 09:23:52 am
Google Bard report
by ivan.moony (AI News )
February 14, 2024, 04:42:23 pm
Elon Musk's xAI Grok Chatbot
by MikeB (AI News )
December 11, 2023, 06:26:33 am

Users Online

433 Guests, 1 User

Most Online Today: 443. Most Online Ever: 2369 (November 21, 2020, 04:08:13 pm)

Articles