Tag: programming

MuZero talk - ICAPS 2020

I gave a detailed talk about MuZero at ICAPS 2020, at the workshop "Bridging the Gap Between AI Planning and Reinforcement Learning".

In addition to giving an overview of the algorithm in general, I also went into more detail about reanalyse - the technique that allows MuZero to use the model based search to repeatedly learn more from the same episode data.

I hope you find the talk useful! I've also uploaded my slides for easy reference.


Static & Dynamic Typing

I've written and been paid to write code in a wide variety of languages - functional and imperative, statically and dynamically typed, verbose and concise. Over time, I came to appreciate the benefits of certain language features.

The one I want to talk about today is static typing. My programs in statically typed languages seem to be systematically more likely to work correctly on the first try, more robust against bugs introduced by refactoring or adding new features, and easier to reason about. In fact, the benefits are so large that I now use pytype even for Python scripts with just …


A simple way to run Rust WebAssembly in a browser

The [cached]Rust WebAssemply book has a detailed introduction to WebAssembly in Rust; unfortunately it's example setup is somewhat complicated and requires the use of npm just to run show a simple Hello World! message in the browser.

Luckily, there's a simpler way to get started if you don't care about npm modules.

First, follow the [cached]setup instructions to install the rust toolchain, wasm-pack and cargo-generate. You don't need npm.

Clone the example project template:

cargo generate --git https://github.com/rustwasm/wasm-pack-template

which will prompt you for a project name, in the following we'll assume you used browser-wasm …


Getting into Machine Learning - 2020

My previous Getting into Machine Learning post is one of my most popular; since then much has changed.

There's a new kid on the block: [cached]JAX. A thin, but powerful layer over Autograd and XLA, it makes it easy to concisely express algorithms with the same syntax as numpy while getting the full performance of TPUs and GPUs.

Especially in combination with higher level libraries such as [cached]Haiku, JAX makes it fun and easy to try new ideas. I've migrated all my own research to JAX and can only recommend it!

The resources I recommended in my previous …


MuZero - Mastering Atari, Go, Chess and Shogi by Planning with a Learned Model

I'm excited to finally share some more details on what we've been working on since AlphaZero.

Recently, we made our latest paper - Mastering Atari, Go, Chess and Shogi by Planning with a Learned Model, aka MuZero - available on arXiv:

Constructing agents with planning capabilities has long been one of the main challenges in the pursuit of artificial intelligence. Tree-based planning methods have enjoyed huge success in challenging domains, such as chess and Go, where a perfect simulator is available. However, in real-world problems the dynamics governing the environment are often complex and unknown. In this work we present the MuZero …


Debugging Android devices with adb on Ubuntu

Just some notes for myself next time.

Either download the [cached]Platform Tools package or directly install adb from the repository:

sudo apt install adb

If you are running Ubuntu, make sure that you are in the plugdev group (sudo usermod -aG plugdev $LOGNAME [cached]if not). You may have to create a udev rule to ensure the device is mounted under the right group.

To do so, create a file /etc/udev/rules.d/51-android.rules:

SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="d002", MODE="0660",
GROUP="plugdev", SYMLINK+="android%n"

Where vendor and product id must match your …


Lonely Planet on Kindle - The Cheap Way

Lonely Planet guidebooks are nice to get a quick overview of a place, or find some things worth seeing and doing around where you are traveling. However, lobbing around an extra half a kilo or more isn't great.

I'm already carrying my e-reader, so wouldn't it be great if I could just save the relevant sections there?

However, while they do sell an official Kindle edition, I prefer using the paperback versions when planning my trip. So instead of buying it twice, I simple scanned the relevant pages at the office, then cropped them into a single paged pdf with …


Getting into Machine Learning

Update: I've published a newer version of this post.

If you are interested in getting started with Machine Learning, the [cached]TensorFlow Playground is a good way of building some intuition.

For a first introduction to the field, I recommend [cached]Neural Networks and Deep Learning, followed by the [cached]Deep Learning book.

To dive into a specific topic quickly, the [cached]TensorFlow tutorials are also great, Dive into Deep Learning has a lot of detail as well.

For Reinforcement Learning specifically, the standard text is [cached]Reinforcement Learning: An Introduction. Dave's [cached]UCL Course on RL is great too …


AlphaGo Zero

Usually in software, version numbers tend to go up, not down. With AlphaGo Zero, we did the opposite - by taking out handcrafted human knowledge, we ended up with both a simpler and more beautiful algorithm and a stronger Go program.

We provide a full description in our paper, Mastering the game of Go without human knowledge, which you can also read online.

At the core is a self-improvement loop based on self-play and Monte Carlo Tree Search (MCTS): We start with a randomly initialized network, then use this network in the MCTS to play the first games. The network is …


AlphaGo in China

You might have heard about our [cached]recent games with AlphaGo in China, at the Future of Go summit. No only did we play the legendary Ke Jie, but there were also two new and exciting formats: Team Go and Pair Go.

This match was also very exciting on the technical side because we had improved AlphaGo to the point where we ran it on [cached]a single machine in the Google Cloud - that's [cached]one tenth of the computation power compared to the distributed version we used in the last match!

Personally, I also really enjoyed the Pair Go …

© Julian Schrittwieser. Built using Pelican. Theme by Giulio Fidente on github. .