Bryn Mawr College
CS 372: Artificial Intelligence
Fall 2000
Written Work: Week#14 (December 5 & 7)

Sharon Rose Alterman

I thought that this week was very interesting, as it lined up in an interesting manner with what we were concentrating on this week in my syntax class. Deepak put two sentences on the board one about "ink in the pen" and the other about "pigs in the pen" and out of habit I started diagraming the sentences. I realized in my diagram that I was using a syntactic structure that has no phonological realization; that is to say, something that is not spoken aloud, but is understood. We had been talking in Syntax about how to identify these non-verbalized entities. Basically, the only way that we can do it is by having a "meta-understanding" of the language; that is to say, fiddling around with it until it works. Computers can't do "meta-understanding" so that makes their ability to understand complex sentences even more amazing. In Syntax, we have to account for lots of structures that are not obvious in the dialect, and it was interesting to see how the computer can account for these as well.


Rohit Apte

The Konane competition this week was very interesting. Deepak had given us the basic algorithm for the game-playing program. All we really had to write was the static evaluation function. While coding, I had taken a look at code written by others and since it was so similar to mine, I expected the results to be the same. We all had the same static evaluation and I therefore expected that, given the same opening move, each program would play the same move. I was pleasantly surprised. Our programs differed in small ways ­ the way we searched for valid moves, etc and this landed up making quite a big difference in the way our programs played the Game. I realized that small tweaking of the program could make it exceptionally better at playing the game ­ for example, doing a static evaluation of each of the successors for a certain board position and ordering them in ascending order would yield better cutoffs.

My program also happened to be one of those to lose to a human (in the quarter final round) and I was able to witness first hand how she beat it. As the game approached the end, the computer appeared to have the advantage. I'm still trying to find out how it lost.


Durell Bouchard

 


Brianne Brown

 


Grace Chou


Dan Crown

The results we got from our Konane tournament on Thursday night had many interesting aspects. First of all, I think in most cases humans fared a little better than computers. This could be attributed to a number of things. Most likely, though, the fact that none of the programmers were experts at Konane held the greatest weight. Since none of us had a time-tested strategy, no one really knew what would work best as a static evaluation. The fact that we were playing only on level 4 also had a pretty big affect, and I'm sure our programs would have done better on a higher level.

The thing that I found most interesting, though, was the randomness of the results. In many cases, programs with the exact same static evaluations fared very differently in the tournament. For instance, my static evaluation caused my program to lose twice in a row, while others that had the same static evaluation won multiple times before losing. In these cases, the structure of our programs, the data structures we used, and other things that seemed like they would be in the background when we were programming, made the difference. Sometimes, whether your program picks the first or last best move it finds can make all the difference.


Renee Findley

The remaining lectures in class have been on or will be on natural language capabilities of AI robots and the problems involved with teaching robots.

According to the lectures and reading, there are about seven steps in the reasoning behind the usage of the language, reminding me of everything Stu Shapiro spoke about at the beginning of the semester with Cassie.

So what interested me was the definition and creation of the knowledge base for the robot, or the dictionary that it posesses. Cassie had a dictionary of several thousand words, but when the robot is first formed, how big of a dictionary do you begin with, and what kind of words do you pick first? Is the point for the robot to already understand and reason, or simply to reply rotely to greetings and very simply sentences?

The second part of the knowledge creation that interested me was the whole idea behind grammar. It was more of an aesthetic point, that grammar is normally misconstrued by whoever is using it, and I wonder if there are any classic examples of a robot going grammatically wrong or even programmed incorrectly in grammar.


Scott Goldstein

 


Maria Hristova

The material that we covered last week had some important points that were made in the reading as well. I think that it is important to understand the difference between CFGs, RTNs and ATNs and how much of the world they can represent. CFGs are really simple and that's why they only specify very general rules about the world and things that exist in it. This however allows the existence of sentences that do not have agreements between the subject and the verb. RTNs present systems that can allow a number of networks to be combined together by referencing each other thus producing a complex system to represent the world. RTNs can be as complicated and complex as the world that one can represent. This produces some search problems but guaranties that the world will be described in as much detail as it is possible by generating a number of possible sentences about it. ATNs are just like RTNs only that they have been improved to carry information about the words that end up being popped. The registers that this information is stored can be referenced thus giving the system the ability to produce agreements between subjects and verbs, tenses,
etc. The last important point that the reading made was the difference between top-down and bottom-up parsing. Top-down involves going from the general structure of the sentence down to every word which is represented by the tree leaves in the search tree while bottom-up starts with the words themselves and then matches them with the categories that they belong to thus producing the sentence. The rest of the reading was a bunch of examples explained in the most confusing and convoluted way.


Agata Jose-Ivanina

 


Archana Joshee

This week's lecture was interesting and very different from anything I
have ever learnt before. It makes me appreciate the complexities in our
natural languages which we seem to take for granted most of the time. I
am just curious as to how different the approach would be if we were to
look at this subject as a speaker of a different natural language.

Also can you please remind us again as to whether our exam is in class on
Thursday or whether you are making it a take home.


Kip Lewis

Well the Konane tournament was certainly fun. It was interesting to see humans have some success against the computers. I wonder what depth level we would need to go to to make the playing the computer just too difficult.

Getting my alpha-beta cutoffs to work correctly reminded how important it can be to go step by step with the computer to see what it is doing. For a while, it was only making cutoffs at the lowest level, and I couldn't figure out why until I went step by step through the process using the example from the last exam (which happened to be depth level four as well).

I'm really enjoying all the natural language understanding material. I've had parsing before, and we did finite automata stuff in Theory of Computation, but we didn't try and apply it to natural languages, like we are now. I assume it would be extremely frustrating to try and make this work for the whole English language, because of all the irregularities. I think it would be really fun, however, to make a parser for a limited lexicon.


Creence Lin

I liked the examples in class and in the readings that illustrate the subtlies of langauage. One of the examples was about speech recognition and the ability to distinguish "It's easy to recognize speech," from "It's easy to wreck a nice beach." It seems to me that one of the reasons why we can tell which is which is that we know the context. When the computer hears individual words, it has to decide which sense of the word is most appropriate based on the context. It seems that this could be done for whole sentences as well. If the topic is about vandalism and someone says something that sounds like, "It's easy to recognize speech," you know its not right based on the context. It's not the right sense of the combination of sounds (or range of things it might sound like). If you were to list all the sentences that the sounds might possibly be, you could probably guess which is most appropriate.

The idea of translating something into some universal logical form and then translating into the desired language seems to be an effective concept that carries over into other fields. For example companies like Fed Ex send all their packages to one central place and then sorting the packages and sending them out again. (So if I want to send a package from X to Y, my package goes from X to Fed Ex headquarters to Y.) It also seems that even when we talk about parsing we don't get away from depth first and breath first searching (at least when we talk about top-down techniques), and such searching methods seem to have a lot of appications.

I'm so proud of Brianne for beating so many computers in the Koanane lab. I have one question though. If two computers played a game where they both searched the same depth, and then played another game with each other would it be the same game as before provided the start conditions were the same?


Martin Lukac

The context free grammers and transition networks that we started looking at towards the end of class seem really interesting. I've seen a bit of similar stuff in computer organization. I believe we called them discrete finite automata or state diagrams to be able to convert our tables state tables ad functions into actual circuits with state. Now that i've seen the transition networks, it seem like these sort of diagrams can be used to spell out almost any algorithm. It seems like you can describe any algorithm with these. They definatly make it easier to understand how a natural language parser might work. Its unfortunate that we only get to spend a few days on these (unless there isn't anything more to say about them) so we could get used to using them.

I enjoyed making the konane program. But i was reminded of how little coding experience i actually have (thus the messy code... the fact that i couldn't print it well didn't help either). Still it was a good excercise, and i plan on improving/cleaning up my program when i get a chance or two. The tournament made me realize even more that its not only the static evaluation that makes peoples programs behave differently. Using a strict greater than or less ( > or < ) as oppsed to greater than or equal and less than or equal ( >= or <= ) made a difference in which moves the computer chose, and thus resulted in patterns of movement. For example mine will always make the best move that is closer to the top left because since two seperate moves might return the same value, and i used the strict comparisons, my way of stepping through the board will always use the first best move it comes across (the best moves being all the best moves at a certain node that return the same value). I think it is pretty hard to remove these sort of behaviors from the program, but it is do able. prehaps a random sort on the possible moves array. What would be even more interesting is if the program could pick up on paterns that the user has when planing. The neural net that peter built into his program probably does this to some effect.


Reshma Menghani

 


Todd Miller

I would have preferred to have programmed a familiar game, so that we could have had a real contest -- as it stands, everyone who coded minimaxAB used the same static evaluator, so the winner in computer vs computer battles was whoever moved first. I think more understanding of AI issues would have been gained had we been able to come up with more sophisticated evaluators. What would have been very interesting is to have provided a framework for a game like Risk, and had us code minimaxAB and try out different evaluators, or a simpler game and try to have the computer learn an evaluation function.


Maria Pace

 


Heather Palmeter

 


Megan Rutter

One thing that stood out in my mind while reading the packets was the discussion of ELIZA.

I like what James Allen had to say about ELIZA. He made some good points that I had not considered before. Had I not taken this class, I would have thought that ELIZA was the coolest thing in the world. I also would have thought that she really represented machine intelligence. My whole understanding of machine intelligence has changed drastically since September, (as I would hope the case would be, seeing as I am currently studying Artificial Intelligence.)

The discussion of ELIZA reminds me of the talk by Stu Shapiro. Had he changed his robot repsonses a little, adding a couple of cool phrases here and there, we would be a lot more impressed. But the real artificial intelligence (is that possible?) lies in what we don't see. At first, we think that a machine is intelligent because we give meaning to its statements. While ELIZA may have said some things that sounded like she really understood the conversation and what she was saying, she didn't really understand anything. On the other hand, Stu's robot didn't seem as intelligent at first because of the type of responses he had programmed into her, yet she is the one who is intelligent.

Allen makes a good point in saying out that people assume that ELIZA understands just because her responses make sense. People assume that she understands because they put meaning into her sentances and assume that she meant that meaning, whereas she was just following the patterns and randomly picking a preselected response.

To sum it up, I'll conclude by saying that you can't judge a robot by her responses.


Brian Simms

This past week I was very interested in the parsing techniques used by computers to try to understand natural language. I have to agree with the general idea presented in class...there is no readily apparent way to parse true natural language. It constantly evolves and meanings change all the time, often without conscious knowledge of that fact. Additionally, computers are by nature digital machines. Intermediate values are still difficult for computers to break down.

A more concrete evaluation of this past week: I was very upset with my inability to get the AI working on my Konane
program. It's frustrating that syntax and language-specific problems suck up so much time. I agreed with the basic sentiment expressed in class (knowing the syntax well enough for it not to be a problem) but I don't see how it's possible for any of us to get the experience we need for this to occur in any language, let alone multiple languages! Regardless, I enjoyed getting all other aspects of the program implemented, and feel confident now that I've picked up the new edition of Programming Perl that I will eventually get the program working the way I want it.


Matthew Spigleman


Andreas Voellmy

 


Nicholas Yee


Back to CS 372 Course Materials | Back to Written Work Main Page