2,004 karma · joined March 17, 2010
Then I joined Harmonix Music Systems, where I did code and game design on a bunch of music games, including Guitar Hero and Rock Band.
Most recently I did machine learning research in the Algorithmic Systems Group at Analog Garage, a division of Analog Devices.
I learned a ridiculous amount from reading the source code to TeX (https://www.amazon.com/Computers-Typesetting-B-TeX-Program/d...) but it is written in a very 1970s style.
In exactly the same way that adding more terms to a polynomial fit causes more problems. The is one of the most fundamental results in the theory of statistical learning in general; don't blame Deep Learning for it.
It is possible that they fed it some pro games after the Fan Hui games but before the Lee Sedol games, but that would be weird; at that point it was already learning from self-play rather than trying to match human moves.
That said, I don't think that Master's better performance comes from being trained on pro games. The AlphaGo version that played Lee Sedol played much more like a human pro than Master does.
"I am sketching out territory while attacking an opponent group."
"I am making my group safe so that I will not have to worry about its life while I accomplish other strategic goals."
"I am making a very strong group so that I can use it to make it harder for my opponent to accomplish anything."
Master, on the other hand, will sometimes seemingly just plop stones down in the middle of the board in a way that is hard to assign a narrative to. One can list a bunch of ways that the stone might come in handy in various futures, but it's too "vague" a move to be played with confidence by a human professional go player.
Of course, human strategies may change in response...
It really is a bit scary to see. I would not have guessed that human strategy was that deficient. Computer chess programs still tend to play with human-like strategy (partially because humans have coded their evaluation functions!) but godlike tactics. Master is not really playing like a human at all.
is not really the best way to try to convince me with statistics.
I spent 5 minutes poking around the internet and nobody seems to have the actual study, just summaries of it. The closest I could find to a real discussion was at [1]. One survey with data there said that 12% of college graduates had not read a book in the last 12 months, which is very different from 42% not reading a book ever.
[1] http://skeptics.stackexchange.com/questions/9446/do-33-of-hi...
The fundamental problem is that there are two independent delays that both depend on your individual system: the delay from the time that the console produces a video frame to the time that the user sees it, and the delay from the time that the console produces a sound to the time that the user hears it. In a beatmatching game, you really need the user's perceptions to be in sync, which means delaying either the video or the audio. Of course, the more you delay one or the other, the more the repercussions you run into.
In a regular video game, it's not a big deal if you fire a gun and hear the shot 50ms later, but in a beatmatching game, that delay is really noticeable.
When I worked on Guitar Hero and Rock Band, we worried about sub-frame latency (timing is more important when you're hitting a drum than when you're firing a gun).
The version of AlphaGo that beat Fan Hui won 77% of games against the strong engine Crazy Stone giving a 4-stone handicap, even when running on a single machine. Crazy Stone has improved since then, though.
It is true that software engineers often treat bugs as unfortunate but unavoidable noise in the system; when one pops up, you fix it and move on. But it's really worth thinking them as an inherent part of the process of software development, one which you can improve and learn from, just like anything else.
http://iaindunning.com/blog/julia-unicode.html (note: 2 years old)
"Nice-sounding" intervals have small integer frequency ratios.
It so happens that 3/2 = 1.5 is very close to 2^(7/12) = 1.498, 4/3 = 1.333 is very close to 2^(5/12) = 1.335, and 5/4 = 1.25 is very close to 2^(4/12) = 1.260. So 12 works very well as the number of pitches to divide an octave into.
The fact that 12 is highly divisible is handy for certain aspects of music composition. For example, if you have a diminished seventh chord, which consists of every third pitch, due to its symmetry you can think of it as being in any of four different keys. So it is easy to use it to pivot from one key to another. But none of that has to do with the reasons that it sounds good.
I forgot to mention that we actually found a lot of bugs by seeing a playback diverge from the original recording; this was often due to uninitialized variables or reading from random memory. We could generally see when the divergence happened because we computed a checksum of the state of the world every frame and stored it in the recording as well.