Particle filters

Per https://www.ai-class.com/course/video/quizquestion/272

The basic loop to implement particle filtering resampling is:

- Look at measurements
- Compute weights
- Sample (with noise)
- Forward prediction

Posted in Uncategorized | Leave a comment

Game strategy

Stanford AI course notes:

Dominant: a player does better than any other strategy (choice) regardless what the other player does

Pareto optimal: no outcome the other players would prefer

Equilibrium: an outcome s.t. no player can benefit from switching assuming the others stick w/ their strategies

Posted in Uncategorized | Leave a comment

Considering grad school in Computer Science?

Joel on the Joel on Software blog presents a case for computer programmers not to go to graduate school in computer science, but rather to remain in their trade.

Not long ago I faced this decision, and while the experience is fresh I want to share some of it with you. Students attend graduate school for many reasons; surely some of my initial motivations originally drawing me there will come to light here, but others will surely differ in myriad ways.

Mr. Spolsky’s case for programming for life has its merits; he presents what he counts virtues of this life: good pay, stability and a degree of enjoyment. Without altogether discounting those, for some of we intrepid grad students the thrill of coding to spec eventually faded and we want to try something different without abandoning computing altogether. What followed the decision to return to school was an amazing adventure that paid of in spades, in so many ways.

Certainly programmers are needed; as long the U.S. DoD continues to need software for its adversaries to break into, it will need U.S. citizens with security clearances to write it, and at least a few good programmers who do not get into too much trouble with the law will be able to find jobs somewhere on U.S. soil. Whether or not you just finished your CS degree, if you have not tried programming as a trade and it piques your interest, go for it.

Just understand that some of we who ended up in grad school for CS are developers who simply longed for something more interesting to do after a few years of doing things like wrestling someone’s requirements into a working system or interface, learning the very latest coding tools and techniques, debugging other people’s code, etc.

Before going any further, to address the misconception that Computer Science is “all theory and no practice.” A few (and I am happy that I say most CS students I have encountered do not feel this way) express this perspective. On the contrary there is little in CS that is not being put into practice, most researchers even are working on practical applications since that is where the funding is heaviest; take for example dynamic logic, which Joel mentions. Automated theorem provers have been developed and are used in industry for example to validate circuit designs (which are specified in part by a specialized “programming” language). Thanks to this technology, our computers crash less. Surely many unrealized applications remain. CS is a very applied field; the focus is not so much on the latest web technology or mobile platform but there is much more to it that the casual observer (and thousands of programmers) risk overlooking.

Without even discussing a terminal degree, consider that many departments offer two MS programs: research focused (for the Phd bound) and non-research (for the practitioner), to be chosen according to one’s goals. Both propel students deeper into computing and tend to be oriented around undeniably practical subjects such as information security, software engineering, bioinformatics, machine learning, etc. Some of these are really not accessible without advanced training only available from researchers in those fields. Sure you can read their books and papers, but the training is best had directly from them. Most likely an MS will not make you a better programmer of web/database applications and user interfaces (that can be had from books, vendor seminars, open source conferences), but it may help you transition from programming to broader CS, opening up a stunning new world in which programming is a mere tool to apply bigger better ideas.

An MS in CS at a top school can be had while working with a family (I am a living example of this). If you can freelance for a while and dedicate more time to your studies you may get more out of the experience. Dedication and genuine enthusiasm will carry anyone of reasonable intelligence and preparation through this process. Many companies will pay for the tuition, although I have heard of firms ending that benefit lately, citing their economic difficulties. For the effort, I believe the MS in CS is far more worthwhile than tinkering around like so many of we techies tend to do. If it makes a difference to you, wages tend to be higher for anyone with an MS; this is true to a greater extent in our field since as of 2011 A.D. demand is high.

So if you ever feel similarly disengaged, try obtaining some advanced training in CS from your local university (or—plug—come to Hawai`i) before giving up on computing altogether. When I finished school the last thing I wanted to see was the inside of another classroom. Various experiencing and perhaps a maturing process brought me back, and it was right for me. I had the option of continuing in industry, and I chose to pursue the Phd. If you find yourself wanting a deeper connection with your field and its applications or just a new challenge I urge you to consider graduate school as part of your professional development.

Have any thoughts or a response? Feel free to comment.

Posted in Grad School | Leave a comment

Perceptron simulations

These are didactic perceptron animations, which I created because I could not find any that I was satisfied with, and we might need some for this course. They are intended to supplement some explanation of how a perceptron works.

Case 1: Perceptron converges. mp4
Case 2: Perceptron fails to converge because samples are not linearly separable. mp4
Case 3: Perceptron fails to converge due to high learning rate. mp4

The underlying simulation consists of, with minor changes, this code from grad student Dale Patterson at UM, who amusingly requests that nobody attribute the code to him. (I did not notice until after I had run these that he provides some sample data of his own as well.)

MATLAB’s Neural Network Toolbox apparently implements this and other algorithms, but mainly for performance reasons MATLAB does not seem like the right tool for large quantities of data.

Posted in Uncategorized | Leave a comment