|
Post by Abram Orion Demski on Oct 11, 2006 14:31:41 GMT -5
You mention on the AI forum that all conventional systems have some basic limitation that keeps them from being general. This is probably true (although I'd like to hear some of the arguments-- how is Prolog limited, for starters?). But I think I can claim that your system also has a fatal limitation:
Since input to the system is in the form of single nodes that activate according to the environment, input cannot include a connection between different input nodes. You cannot tell the system how the inputs are connected. How, for example, would you input a picture? A single picture would be very difficult to input, because we define a picture partly with spatial connections.
I'll leave the argument there and let you respond.
|
|
|
Post by tkorrovi on Oct 11, 2006 17:05:35 GMT -5
Prolog is a programming language, like a Turing machine, it enables to create any system manually, and runs it, but it isn't by itself a system which can develop to anything by itself.
No the input is not a limitation, but to the contrary the most general. Yes we certainly cannot input connections between things, neither can we input them to the human brain, where all we have is a huge amount of receptors, and every receptor can input only pulses. Yes maybe it seems a bit too general, as there really are no spatial connections between input nodes in the start structure, though somehow these all must be connected to each other, for a system to start to work. And this certainly makes input of images complicated, as some way the system must learn the spatial connections between input nodes. But this is also a kind of price which we pay for generality, then such system can learn to have any inputs, and any outputs, and theoretically can work even in an environment with more dimensions than 3, so it really is the most general. Nobody knows how it is exactly done in the brain, but there is an evidence that human brain too can learn connections between receptors, and these are therefore not fixed. Don't know about vision, but about hearing, when there is no other possibility to restore hearing, then an operation would be done when into the spiral where are the hearing receptors, a small cable (or how it should be called) would be mounted, which concists of thin platinum wires, each of which has a contact with different area in the spiral (again don't remember what was the medical word for that spiral). Different places in that spiral react to different frequencies. Now it is not possible to put the cable and its connections inside the spiral so that every wire would connect to a pre-determined place. And therefore, at first the pacient would hear only a noise, with frequencies mixed. But in time he will learn to hear the voices correctly, and then to recognize speech. So at least to some extent, human brain is capable to learn "spatial" connections, and it is therefore not the most basic mechanism for them to be fixed. But of course, brain has a structure, how the neurons are connected, and this certainly helps to establish spatial connections. But then, every neuron may still have a system like ADS, where spatial connections are not fixed, there also may be some cells with fixed functionality among other neurons, which also help to establish fixed connections, or any other fixed functionality. If it is so, creating such system would be at first much too complicated, so it's necessary to start from a study of the most general part of it, something like that which is inside the neuron, where spatial connections are not fixed, and study how such system works and learns. Then we most likely would know also a lot about all the rest. We then should start from that which is the most basic, and most general, and study it even if it at first is not capable to learn a very complicated functionality. This would be similar to a theoretical research, like physicists don't create big machines for practical purposes, and then by studying how these machines work, make conclusions about physical processes. But this is a lot how many suppose the AI research must be done. But physicists study the most basic elements of what there is, particles, sometimes a simple particle, and how it behaves, or how two particles interact.
|
|
|
Post by tkorrovi on Oct 12, 2006 12:05:12 GMT -5
That input cannot include a connection between different input nodes is a fatal limitation? No at least this argument is wrong. For a system not to have limitations, there must be something general to spatially arranged input like vision and logical input, like for logical games, regulators or other control systems. The most general is certainly not for example a 2d array of all receptors or sensors. Peculiar to vision, but not for other sensors, which at best may be arranged in some system, say like sensors in different parts of some equipment, but also fixed spatial, or more generally fixed connections in some system, cannot be the general case, in general the system must be able to find itself, how the sensors are related to each other. Concerning vision, in a smaller system it is possible to find the spatial connections, like by inputting some regular patterns, and the system would find the spatial connections when it would detect these patterns, in more complicated systems with vision there likely should be some prewired environmend, like some network of connected systems, which would not make the whole system less general, but would help to determine the spatial connections more quickly. Of course, for the most general system, the vision is the most complicated case, and logical input, say for logical games, would be the easiest case. Therefore for such systems, it would be necessary to start training them some logical tasks like logical games, which is the most general functionality.
Now a totally different question is, whether some particular system like ADS can do everything without prewired spatial connections. Cannot see any theoretical reasons why not, but then this is why we need the research, to find out things which we don't know yet. But it's certainly necessary to start from the most general case, to find out the most general first. ADS is a system which was intended to be the most general, so something from which it is possible to start from, and then find the possible faults, if there are these, and as a result of the knowledge we get, create a further system without these faults, which still has a maximum generality. This is a general logic of every (good) research -- from the most basic to more complicated. But the most basic here is something which, in spite that it is minimal, still has a maximum generality, because only from such can we go further, without being stopped by limits. It's something like , we couldn't study nature properly. when we had wrong assumptions about the very basic parts of it, like when we did assume, that everything does not consist of particles. In physics, such research would be the most unscientific and no one would rely on the results of it. But in AI, this is what is often done, ie proceeding from some "simplified" model of the basic things, but really not just simplified but essentially faulty and incomplete model, and then go further from that to the most complicated systems, and make conclusions about everything based on that. So I don't want to force to anyone from what to proceed, but one thing which I can say is that we should proceed from the most general. It is finally a matter of research, what this general should be, if someone can propose a better working system with maximum generality than ADS, it's fine, but I still think that even then many concepts on which the ADS is based, would be the most useful. If someone would find an indeed better solution, I would certainly accept it, but I think then ADS and that solution would merge into some single knowledge. At least I would say, ADS is an attempt to create something as general as possible, so at least it would not be necessary to go deeper than that any more, the bottom is there. And from that bottom, we should start to go up. But go up by research, to understand these things really better one day, not by immediately starting to create complicated systems based on the knowledge which we would have. Certainly, sych things "in the bottom", like ADS, need the deepest philosophy, and cannot be developed or understood without such, it's natural because the most important things like thinking, certainly must be based exactly on such deepest concepts, but again this is the deepest which we ever need, once having that knowledge, we can go further with much more simple logic.
But this is all about true AC. Certainly we don't have to think so deeply philosophically, if we say only want to create a genetic algorithm for some particular task. Therefore such common AI is more like computer programming, which would then certainly be the biggest part of the work. But this is more like a purely technical work, not really science. In true AC, the fundamental theoretical research is certainly much more important.
|
|
|
Post by tkorrovi on Oct 13, 2006 17:55:20 GMT -5
And then about, why to use ADS mechanism, and say, not generate just a random program or then Turing machine code. First because, ADS may develop by itself to anything, we don't need any additional code to generate random programs, which also must include the criterias etc, which would again restrict generality. ADS also should itself be Turing complete, we may suggest it because a cellular automaton is Turing complete, and ADS has some similarities with cellular automaton, tough it is like cellular automaton "in reverse". Then, ADS is also like an universal programming language, though somewhat more universal, as it works itself massively simultaneously, and therefore enables to naturaly code processes which happen simultaneously, no need to threads or such additional constructs for that. And second, generating random code, say in some programming language, is very inefficient, in the most cases the code would not work at all, and also generating one code successfully doesnt give any basis to generate further code, or a slightly different code. Also, that which emerges as a result of the development of ADS system, mostly always works and does something, different from randomly generated code in some programming language or Turing machine code.
|
|
|
Post by tkorrovi on Oct 13, 2006 18:01:03 GMT -5
Saying it again in short, ADS is like an universal programming language, which in addition should develop by itself to anything. This is what a programming language doesn't do, and also a cellular automaton evidently doesn't do.
|
|
|
Post by Orion on Oct 13, 2006 20:54:49 GMT -5
Thanks for responding. I'll have more in the way of response later. I've been doing some thinking also about what your system would do in specific cases...
2 interlinked nodes, 1 is activated: the other will get deleted.
3 interlinked nodes, 1 is activated: the other two will get deleted.
4 interlinked nodes, 1 is acctivated: things suddenly become more complicated....
|
|
|
Post by Orion on Oct 14, 2006 13:16:09 GMT -5
You're right, it doesn't exactly make sense to call it a "restriction" to be so general. Generality is not a restriction. But I'm trying to develop my system in a way that allows generality to be reduced by preprogramming whatever is desired, like spatial connections. This doesn't prevent the program from finding different and better spatial connections, like the patient with the artificial ear learning a new frequency scale when their inborn one isn't sufficient, but rather tells the program where to look first. Another good example would be telling a universal AI the rules of grammer taught in school. It shouldn't hard-wire it to that outlook, but it should help it by giving it some idea of what grammer is like.
On the other hand, I imagine that there are many people who would really like your system and get into it if they heard about it. It can't do anything practical right away, which makes it hard to get published and accepted by the majority of the AI community. But I think a good-sized minority would really like it, so I'll continue to mention it to people (I mentioned it to an AI grad student at my school, but I don't know if he went to your website).
Since you mentioned genetic algorithms.... I think I've come up with an interesting way to expand on them. Since everything else is being mutated and evolving, why not evolve the rules for mutation themselves? Perhaps the system could learn to actually combine useful algorithms in a smart way, instead of just "crossing genes" at random. This could be applied particularly well to "classsifier systemss", in which lots of rules for behavior compete with eachother. If rules for behavior were allowed to create new rules as part of their behavior, then the genetic algorithm could be encoded as just another rule in there competing with the rest. It could possibly mutate itself and come up with smarter algorithms.
|
|
|
Post by tkorrovi on Oct 14, 2006 16:01:37 GMT -5
I personally doubt that there can be any middle solution, so a true AC really is so... difficult. Yes I think there certainly can be such solution, but in a system with something similar to ADS as part of it, and then wiring together separate systems, and using systems with a fixed functionality in the middle, something how I see it is in the brain, but this would unfortunately be not easier than ADS, but more complicated... But I certainly leave open to everyone thinking about different possibilities, it's possible that one may find something new that way. Though I certainly think that there are two distinct things to deal with -- whether to try to make a true AC, or just trying to make a practical AI system for some special purpose. In the latter case it's better not to worry so much about generality, it's better to be simple, and there would not be much theory involved. I appreciate the efforts in both of these approaches, but I don't think that these two approaches can anyhow be put together, these are two very different things to deal with, something like research in physics, and making cars, sure there are things common, but this doesn't make these two activities one and the same. But at least I think that it would not be useful to go much further with any solution which is anyhow restricted, as I think such work is more or less useless, and just increases the already big number of abandoned projects, where still in most of them, people had many ideas, and did a lot of work to implement them... Again, I don't want to suggest anyone what to work with, and I really appreciate every effort, also I possibly cannot say for certain, what the final solution, which would bring as much further in research, would exactly look like, I only want everyone to consider all that. Finally I, once also wanted to find that ultimate solution, and ADS was that which I ended with, so many solutions which would give more easily controllable fuctionality, I had to abandon... I have my old notebooks as well, though understanding was somewhat more primitive then, a long time ago, but I started from systems wich could find connections between words, and such. And certainly wanted that such system could do something spectacular at once, why not also being useful for something. But then I found, that spectacular there, is not what the system would actually do, because any system which can in the reality do much enough at once, would be too restricted, and its functionality much too predictable to be interesting, at least longer time. But I found spectacular the theory itself, how a system which is really unrestricted, should really look like. And I found that this is something so general, to everything, that knowing it would help to understand most things in the world... Anyway, if you once would find something, even the smallest thing, how, say, enhance ADS, or create some similar system, which is as general as ADS, but much more easily controllable or something, I would gladly put it up in the ADS project site. Though I so far, everything which I could come up with, which could make ADS more easily manageable, every time I found that such solution would just restrict ADS, and with these, it could theoretically never develop to anything more advanced, that it would then not be the solution intended for, a true AC, and therefore not worth the effort...
|
|
|
Post by Abram Orion Demski on Oct 17, 2006 17:23:20 GMT -5
Well, my basic vision is that the "emergence" of a system should happen not because we can't see the logic, but because that logic is applied to guide and predict itself so that results are unpredictable. Such systems should be easy to restrict, by not letting the logic apply to itself in certain ways, and likewize easy to make unrestricted, by allowing the logic to fold over itself in as many ways as it likes. (Again, the idea is that if a system is limited than logically we can say what's limited about it and make that same system better-- even if we change it fairly drastically, it still holds what was logically good from before, while adding in the logical deficits.)
But to examine further.
2 interlinked nodes, 1 is activated: the other will get deleted. 2 interlinked nodes, 2 are active: 1 of the 2 will be deleted.
3 interlinked nodes, 1 is activated: the other two will get deleted. 3 interlinked nodes, 2 are activated: more difficult. One will be iterated, and so will the other; this causes all three to have at least one single activated node floating off of them. All three will be deleted, unless the second node is deleted before it iterates. Then the first will remain.
4 interlinked nodes, 1 is activated: For each pair of two inactive nodes, an active node will be created linking to that pair. (So 3 nodes are created.) When each activates, they will create single detatched active nodes for each node in their pair. If everything activates in an orderely way, all but the initial node will be destroyed by these floating singles. If a floating single is activated before one of the pairs, it will take out it's base, turning the yet-to-be-activated pair(s) into floating singles, which destroy their base. So in the end everything gets deleted anyway. 4 interlinked nodes, 2 are activated: Each of the two creates the pairs, just as before. If the pairs all activate before any of the new nodes they create, they will make floating singles, as before. Everything goes up in smoke. If not, things are more complicated, but it seems like everything goes up in smoke anyway.
5 interlinked nodes, 1 is activated: The four triplets that can be selected from the inactive nodes each get a new node linking to them. If everything activates in order, then each triplet-node will create a single floater to destroy each original base node except the initially activated one, as before.
Hmm. This is far from a proof, but there is a definite pattern here. Am I interpreting the rules correctly?
|
|
|
Post by tkorrovi on Oct 17, 2006 18:31:34 GMT -5
I think you do, try to put the system in, see what exactly happens.
|
|
|
Post by Abram on Oct 19, 2006 16:16:51 GMT -5
I wrote ADS in Lisp:
(defun update-ads (nodes) (setq nodes2 nodes) (dolist (node nodes nodes2) (if (not (cdr (symbol-value node))) (setq nodes2 (remove-if #'(lambda (item) (eq item node)) nodes2))) (if (car (symbol-value node)) (dolist (neighbor (cdr (symbol-value node)) nil) (setq common-nodes (intersection (cdr (symbol-value node)) (cdr (symbol-value neighbor)))) (if common-nodes (progn (setf newnode (gensym)) (setq nodes2 (cons newnode nodes2)) (setf (symbol-value newnode) (cons t common-nodes)) (dolist (common-node common-nodes nil) (setf (symbol-value common-node) (cons (car (symbol-value common-node)) (cons newnode (cdr (symbol-value common-node))))))) (progn (dolist (node nodes2 nil) (setf (symbol-value node) (remove-if #'(lambda (connection) (eq connection neighbor)) (symbol-value node)))) (setf nodes2 (remove-if #'(lambda (item) (eq item neighbor)) nodes2))))))))
|
|
|
Post by tkorrovi on Oct 19, 2006 18:12:22 GMT -5
Oh that's soooooooo nice!!!!! It seems to be without input/output, and without all these special cases, but important as it shows the main mechanism. I can register you as developer, but for that you should first resgister as a SourceForge user, and then say me your user name. Then, a short code should probably be put in wiki, but for longer one you can make a file release, you will have any rights whatsoever. And/or commit to CVS, ohh, maybe I already a long time had to convert it to subversion... If you would ever want...
|
|
|
Post by tkorrovi on Oct 19, 2006 18:37:37 GMT -5
And then, if there would be whatever, what completely works in Linux, this would make it possible to put the whole thing also in Freshmeat, where it would be seen by much more people, as especially bigger geeks often look only in Freshmeat, where also are much smaller number of projects. There are not though all these developing resources as in SourceForge, so most commonly there is a project in SourceForge, and files would also be released in Freshmeat. This code is still a bit small for that, but some a bit longer code would already be enough for that.
|
|
|
Post by Abram on Oct 20, 2006 8:38:50 GMT -5
I made one more function, to create the fully-connected networks of N nodes, and tested my hypothesis that such networks always delete themselves. It seems to be the case (I tested up to 6, but the processing starts taking longer and longer at bigger sizes.)
;function definition (defun fully-connect (n) (setq nodes nil) (loop (setq nodes (cons (gensym) nodes)) (setf (symbol-value (car nodes)) (cdr nodes)) (dolist (oldnode (cdr nodes)) (setf (symbol-value oldnode) (cons (car nodes) (symbol-value oldnode)))) (if (= n (length nodes)) (return))) (dolist (node nodes nodes) (setf (symbol-value node) (cons nil (symbol-value node)))))
|
|
|
Post by Abram on Oct 20, 2006 8:43:37 GMT -5
;make net (setq ads (fully-connect 5)) ;activate a single node (setf (car (symbol-value (car ads))) t)
|
|